From b8134dbfa734426c43741e8cd50bbdc5a7295dd1 Mon Sep 17 00:00:00 2001 From: antirez Date: Thu, 6 Dec 2018 11:29:53 +0100 Subject: RESP3: hiredis: fix double implementation. --- deps/hiredis/read.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'deps/hiredis') 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; -- cgit v1.2.1