diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-01-11 16:21:43 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-01-11 16:21:43 +0000 |
commit | 83034f4027106b76d3458d911619d53479c85ea5 (patch) | |
tree | c1d1c11b4b557efb212d3f51b7cb54628d27c290 | |
parent | d543bb540db79872e3fdf676d3aa1b858894b265 (diff) | |
download | rspamd-83034f4027106b76d3458d911619d53479c85ea5.tar.gz rspamd-83034f4027106b76d3458d911619d53479c85ea5.zip |
Fix GNU version of strerror_r (hiredis is broken)
-rw-r--r-- | contrib/hiredis/hiredis.h | 3 | ||||
-rw-r--r-- | contrib/hiredis/net.c | 4 |
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); } |