Commit e030e351 authored by chendianqiang's avatar chendianqiang Committed by Oran Agra
Browse files

fix hincrbyfloat not to create a key if the new value is invalid (#11149)



Check the validity of the value before performing the create operation,
prevents new data from being generated even if the request fails to execute.
Co-authored-by: default avatarOran Agra <oran@redislabs.com>
Co-authored-by: default avatarchendianqiang <chendianqiang@meituan.com>
Co-authored-by: default avatarBinbin <binloveplay1314@qq.com>
(cherry picked from commit bc7fe41e)
(cherry picked from commit 606a385935363ea46c0df4f40f8a949d85f7a20a)
parent 720ea82e
......@@ -729,6 +729,10 @@ void hincrbyfloatCommand(client *c) {
unsigned int vlen;
if (getLongDoubleFromObjectOrReply(c,c->argv[3],&incr,NULL) != C_OK) return;
if (isnan(incr) || isinf(incr)) {
addReplyError(c,"value is NaN or Infinity");
return;
}
if ((o = hashTypeLookupWriteOrCreate(c,c->argv[1])) == NULL) return;
if (hashTypeGetValue(o,c->argv[2]->ptr,&vstr,&vlen,&ll) == C_OK) {
if (vstr) {
......
......@@ -801,4 +801,8 @@ start_server {tags {"hash"}} {
set _ $k
} {ZIP_INT_8B 127 ZIP_INT_16B 32767 ZIP_INT_32B 2147483647 ZIP_INT_64B 9223372036854775808 ZIP_INT_IMM_MIN 0 ZIP_INT_IMM_MAX 12}
test {HINCRBYFLOAT does not allow NaN or Infinity} {
assert_error "*value is NaN or Infinity*" {r hincrbyfloat hfoo field +inf}
assert_equal 0 [r exists hfoo]
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment