summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rw-r--r--contrib/hiredis/hiredis.h3
-rw-r--r--contrib/hiredis/net.c4
2 files changed, 5 insertions, 2 deletions
diff --git a/contrib/hiredis/hiredis.h b/contrib/hiredis/hiredis.h
index edba65886..62a903c0a 100644
--- a/contrib/hiredis/hiredis.h
+++ b/contrib/hiredis/hiredis.h
@@ -37,6 +37,7 @@
#include <stdarg.h> /* for va_list */
#include <sys/time.h> /* for struct timeval */
#include <stdint.h> /* uintXX_t, etc */
+#include <string.h> /* strerror_r, etc */
#include "sds.h" /* for sds */
#define HIREDIS_MAJOR 0
@@ -98,7 +99,7 @@
* then GNU strerror_r returned an internal static buffer and we \
* need to copy the result into our private buffer. */ \
if (err_str != (buf)) { \
- buf[(len)] = '\0'; \
+ buf[(len)-1] = '\0'; \
strncat((buf), err_str, ((len) - 1)); \
} \
} while (0)
diff --git a/contrib/hiredis/net.c b/contrib/hiredis/net.c
index 60a2dc754..e4aa920ad 100644
--- a/contrib/hiredis/net.c
+++ b/contrib/hiredis/net.c
@@ -66,11 +66,13 @@ static void redisContextCloseFd(redisContext *c) {
static void __redisSetErrorFromErrno(redisContext *c, int type, const char *prefix) {
char buf[128] = { 0 };
+ char *p;
size_t len = 0;
if (prefix != NULL)
len = snprintf(buf,sizeof(buf),"%s: ",prefix);
- __redis_strerror_r(errno, (char *)(buf + len), sizeof(buf) - len);
+ p = buf + len;
+ __redis_strerror_r(errno, p, sizeof(buf) - len);
__redisSetError(c,type,buf);
}