Merge pull request #6739 from trevor211/fixMemoryLeak

Fix potential memory leak of rioWriteBulkStreamID().
This commit is contained in:
Salvatore Sanfilippo 2020-01-13 13:23:49 +01:00 committed by GitHub
commit 520a0a6b75
3 changed files with 25 additions and 6 deletions

View File

@ -1149,7 +1149,10 @@ int rioWriteBulkStreamID(rio *r,streamID *id) {
int retval; int retval;
sds replyid = sdscatfmt(sdsempty(),"%U-%U",id->ms,id->seq); 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); sdsfree(replyid);
return retval; return retval;
} }

View File

@ -157,7 +157,10 @@ int clusterLoadConfig(char *filename) {
} }
/* Regular config lines have at least eight fields */ /* 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 */ /* Create this node if it does not exist */
n = clusterLookupNode(argv[0]); n = clusterLookupNode(argv[0]);
@ -166,7 +169,10 @@ int clusterLoadConfig(char *filename) {
clusterAddNode(n); clusterAddNode(n);
} }
/* Address and port */ /* Address and port */
if ((p = strrchr(argv[1],':')) == NULL) goto fmterr; if ((p = strrchr(argv[1],':')) == NULL) {
sdsfreesplitres(argv,argc);
goto fmterr;
}
*p = '\0'; *p = '\0';
memcpy(n->ip,argv[1],strlen(argv[1])+1); memcpy(n->ip,argv[1],strlen(argv[1])+1);
char *port = p+1; char *port = p+1;
@ -247,7 +253,10 @@ int clusterLoadConfig(char *filename) {
*p = '\0'; *p = '\0';
direction = p[1]; /* Either '>' or '<' */ direction = p[1]; /* Either '>' or '<' */
slot = atoi(argv[j]+1); 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; p += 3;
cn = clusterLookupNode(p); cn = clusterLookupNode(p);
if (!cn) { if (!cn) {
@ -267,8 +276,14 @@ int clusterLoadConfig(char *filename) {
} else { } else {
start = stop = atoi(argv[j]); start = stop = atoi(argv[j]);
} }
if (start < 0 || start >= CLUSTER_SLOTS) goto fmterr; if (start < 0 || start >= CLUSTER_SLOTS) {
if (stop < 0 || stop >= CLUSTER_SLOTS) goto fmterr; sdsfreesplitres(argv,argc);
goto fmterr;
}
if (stop < 0 || stop >= CLUSTER_SLOTS) {
sdsfreesplitres(argv,argc);
goto fmterr;
}
while(start <= stop) clusterAddSlot(n, start++); while(start <= stop) clusterAddSlot(n, start++);
} }

View File

@ -1535,6 +1535,7 @@ void pfdebugCommand(client *c) {
sds decoded = sdsempty(); sds decoded = sdsempty();
if (hdr->encoding != HLL_SPARSE) { if (hdr->encoding != HLL_SPARSE) {
sdsfree(decoded);
addReplyError(c,"HLL encoding is not sparse"); addReplyError(c,"HLL encoding is not sparse");
return; return;
} }