summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPieter Noordhuis <pcnoordhuis@gmail.com>2014-01-14 17:18:57 -0800
committerPieter Noordhuis <pcnoordhuis@gmail.com>2014-01-14 17:18:57 -0800
commit065e90557c2f2bce6205c5006144bec75638836f (patch)
treebcac62c132c39cdf803530164c2c2c1dcbcaae9a
parentcc3ee4532533179c589d3f15feb0c76bed96cdb2 (diff)
parent070da2162364100c4069a1842b2641ab95b46a1a (diff)
Merge pull request #215 from charliesome/fix-bugs
Fix a couple of bugs uncovered by the Clang static analyzer
-rw-r--r--async.c7
-rw-r--r--sds.c6
2 files changed, 11 insertions, 2 deletions
diff --git a/async.c b/async.c
index 6532712..923a329 100644
--- a/async.c
+++ b/async.c
@@ -174,6 +174,11 @@ redisAsyncContext *redisAsyncConnectUnix(const char *path) {
return NULL;
ac = redisAsyncInitialize(c);
+ if (ac == NULL) {
+ redisFree(c);
+ return NULL;
+ }
+
__redisAsyncCopyError(ac);
return ac;
}
@@ -398,7 +403,7 @@ void redisProcessCallbacks(redisAsyncContext *ac) {
__redisAsyncDisconnect(ac);
return;
}
-
+
/* If monitor mode, repush callback */
if(c->flags & REDIS_MONITORING) {
__redisPushCallback(&ac->replies,&cb);
diff --git a/sds.c b/sds.c
index 9226799..998564d 100644
--- a/sds.c
+++ b/sds.c
@@ -295,7 +295,11 @@ sds *sdssplitlen(char *s, int len, char *sep, int seplen, int *count) {
#ifdef SDS_ABORT_ON_OOM
if (tokens == NULL) sdsOomAbort();
#endif
- if (seplen < 1 || len < 0 || tokens == NULL) return NULL;
+ if (tokens == NULL) return NULL;
+ if (seplen < 1 || len < 0) {
+ free(tokens);
+ return NULL;
+ }
if (len == 0) {
*count = 0;
return tokens;