diff options
author | antirez <antirez@gmail.com> | 2018-12-06 11:29:53 +0100 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2019-01-09 17:00:30 +0100 |
commit | b8134dbfa734426c43741e8cd50bbdc5a7295dd1 (patch) | |
tree | 4e0c7ea4fffd1560bf1eac7c77cf583b559814b8 | |
parent | a2b2d88f384c4ad3e812cceccd4720a9c650207c (diff) | |
download | redis-b8134dbfa734426c43741e8cd50bbdc5a7295dd1.tar.gz |
RESP3: hiredis: fix double implementation.
-rw-r--r-- | deps/hiredis/read.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/deps/hiredis/read.c b/deps/hiredis/read.c index d6a479741..2726d4481 100644 --- a/deps/hiredis/read.c +++ b/deps/hiredis/read.c @@ -283,14 +283,14 @@ static int processLineItem(redisReader *r) { char buf[326], *eptr; double d; - if ((size_t)len-1 >= sizeof(buf)) { + if ((size_t)len >= sizeof(buf)) { __redisReaderSetError(r,REDIS_ERR_PROTOCOL, "Double value is too large"); return REDIS_ERR; } - memcpy(buf,p+1,len-1); - buf[len-1] = '\0'; + memcpy(buf,p,len); + buf[len] = '\0'; if (strcasecmp(buf,",inf") == 0) { d = 1.0/0.0; /* Positive infinite. */ @@ -298,7 +298,7 @@ static int processLineItem(redisReader *r) { d = -1.0/0.0; /* Nevative infinite. */ } else { d = strtod((char*)buf,&eptr); - if (eptr[0] != '\0' || isnan(d)) { + if (buf[0] == '\0' || eptr[0] != '\0' || isnan(d)) { __redisReaderSetError(r,REDIS_ERR_PROTOCOL, "Bad double value"); return REDIS_ERR; |