From 8caecc9ab466011fd1432c0a7e2dc51ae8797629 Mon Sep 17 00:00:00 2001 From: antirez Date: Mon, 10 Mar 2014 15:44:41 +0100 Subject: Fixed memory leak in SORT LIMIT option argument parsing on error. --- src/sort.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/sort.c') diff --git a/src/sort.c b/src/sort.c index d90cf2c2d..300060942 100644 --- a/src/sort.c +++ b/src/sort.c @@ -231,8 +231,15 @@ void sortCommand(redisClient *c) { } else if (!strcasecmp(c->argv[j]->ptr,"alpha")) { alpha = 1; } else if (!strcasecmp(c->argv[j]->ptr,"limit") && leftargs >= 2) { - if ((getLongFromObjectOrReply(c, c->argv[j+1], &limit_start, NULL) != REDIS_OK) || - (getLongFromObjectOrReply(c, c->argv[j+2], &limit_count, NULL) != REDIS_OK)) return; + if ((getLongFromObjectOrReply(c, c->argv[j+1], &limit_start, NULL) + != REDIS_OK) || + (getLongFromObjectOrReply(c, c->argv[j+2], &limit_count, NULL) + != REDIS_OK)) + { + decrRefCount(sortval); + listRelease(operations); + return; + } j+=2; } else if (!strcasecmp(c->argv[j]->ptr,"store") && leftargs >= 1) { storekey = c->argv[j+1]; -- cgit v1.2.1