summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2018-12-06 11:29:53 +0100
committerantirez <antirez@gmail.com>2018-12-21 11:42:51 +0100
commit43dbf7091d31fb4452dd15ab5e879f58eceab8e2 (patch)
treed88bf36cc35460e0183a9b580e95ef05757fd118
parented62551335fac8dc61f9f6777c56c07ffdb7e532 (diff)
downloadredis-43dbf7091d31fb4452dd15ab5e879f58eceab8e2.tar.gz
RESP3: hiredis: fix double implementation.
-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;