summaryrefslogtreecommitdiff
path: root/deps/hiredis
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2018-12-06 11:29:53 +0100
committerantirez <antirez@gmail.com>2019-01-09 17:00:30 +0100
commitb8134dbfa734426c43741e8cd50bbdc5a7295dd1 (patch)
tree4e0c7ea4fffd1560bf1eac7c77cf583b559814b8 /deps/hiredis
parenta2b2d88f384c4ad3e812cceccd4720a9c650207c (diff)
downloadredis-b8134dbfa734426c43741e8cd50bbdc5a7295dd1.tar.gz
RESP3: hiredis: fix double implementation.
Diffstat (limited to 'deps/hiredis')
-rw-r--r--deps/hiredis/read.c8
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;