summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/aof.c5
-rw-r--r--src/cluster.c25
-rw-r--r--src/hyperloglog.c1
3 files changed, 25 insertions, 6 deletions
diff --git a/src/aof.c b/src/aof.c
index 63b34b43f..efdd68efa 100644
--- a/src/aof.c
+++ b/src/aof.c
@@ -1149,7 +1149,10 @@ int rioWriteBulkStreamID(rio *r,streamID *id) {
int retval;
sds replyid = sdscatfmt(sdsempty(),"%U-%U",id->ms,id->seq);
- if ((retval = rioWriteBulkString(r,replyid,sdslen(replyid))) == 0) return 0;
+ if ((retval = rioWriteBulkString(r,replyid,sdslen(replyid))) == 0) {
+ sdsfree(replyid);
+ return 0;
+ }
sdsfree(replyid);
return retval;
}
diff --git a/src/cluster.c b/src/cluster.c
index f603361cd..f9d8ae151 100644
--- a/src/cluster.c
+++ b/src/cluster.c
@@ -157,7 +157,10 @@ int clusterLoadConfig(char *filename) {
}
/* Regular config lines have at least eight fields */
- if (argc < 8) goto fmterr;
+ if (argc < 8) {
+ sdsfreesplitres(argv,argc);
+ goto fmterr;
+ }
/* Create this node if it does not exist */
n = clusterLookupNode(argv[0]);
@@ -166,7 +169,10 @@ int clusterLoadConfig(char *filename) {
clusterAddNode(n);
}
/* Address and port */
- if ((p = strrchr(argv[1],':')) == NULL) goto fmterr;
+ if ((p = strrchr(argv[1],':')) == NULL) {
+ sdsfreesplitres(argv,argc);
+ goto fmterr;
+ }
*p = '\0';
memcpy(n->ip,argv[1],strlen(argv[1])+1);
char *port = p+1;
@@ -247,7 +253,10 @@ int clusterLoadConfig(char *filename) {
*p = '\0';
direction = p[1]; /* Either '>' or '<' */
slot = atoi(argv[j]+1);
- if (slot < 0 || slot >= CLUSTER_SLOTS) goto fmterr;
+ if (slot < 0 || slot >= CLUSTER_SLOTS) {
+ sdsfreesplitres(argv,argc);
+ goto fmterr;
+ }
p += 3;
cn = clusterLookupNode(p);
if (!cn) {
@@ -267,8 +276,14 @@ int clusterLoadConfig(char *filename) {
} else {
start = stop = atoi(argv[j]);
}
- if (start < 0 || start >= CLUSTER_SLOTS) goto fmterr;
- if (stop < 0 || stop >= CLUSTER_SLOTS) goto fmterr;
+ if (start < 0 || start >= CLUSTER_SLOTS) {
+ sdsfreesplitres(argv,argc);
+ goto fmterr;
+ }
+ if (stop < 0 || stop >= CLUSTER_SLOTS) {
+ sdsfreesplitres(argv,argc);
+ goto fmterr;
+ }
while(start <= stop) clusterAddSlot(n, start++);
}
diff --git a/src/hyperloglog.c b/src/hyperloglog.c
index a44d15646..facd99743 100644
--- a/src/hyperloglog.c
+++ b/src/hyperloglog.c
@@ -1535,6 +1535,7 @@ void pfdebugCommand(client *c) {
sds decoded = sdsempty();
if (hdr->encoding != HLL_SPARSE) {
+ sdsfree(decoded);
addReplyError(c,"HLL encoding is not sparse");
return;
}