diff options
author | antirez <antirez@gmail.com> | 2018-12-06 11:29:53 +0100 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2018-12-21 11:42:51 +0100 |
commit | 43dbf7091d31fb4452dd15ab5e879f58eceab8e2 (patch) | |
tree | d88bf36cc35460e0183a9b580e95ef05757fd118 /deps | |
parent | ed62551335fac8dc61f9f6777c56c07ffdb7e532 (diff) | |
download | redis-43dbf7091d31fb4452dd15ab5e879f58eceab8e2.tar.gz |
RESP3: hiredis: fix double implementation.
Diffstat (limited to 'deps')
-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; |