From d3a69998e4e513b799fcf72a2d13bb8ec883c30f Mon Sep 17 00:00:00 2001 From: John Sully Date: Sun, 16 Feb 2020 18:41:29 -0500 Subject: [PATCH] Fix memory leak in RDB load Former-commit-id: 06ad1c15d719a34fed36244b12a593f749bbb8a6 --- src/rdb.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/rdb.cpp b/src/rdb.cpp index 48205f430..5b316a4a8 100644 --- a/src/rdb.cpp +++ b/src/rdb.cpp @@ -1545,9 +1545,15 @@ robj *rdbLoadObject(int rdbtype, rio *rdb, robj *key, uint64_t mvcc_tstamp) { == NULL) return NULL; if (rdbtype == RDB_TYPE_ZSET_2) { - if (rdbLoadBinaryDoubleValue(rdb,&score) == -1) return NULL; + if (rdbLoadBinaryDoubleValue(rdb,&score) == -1) { + sdsfree(sdsele); + return NULL; + } } else { - if (rdbLoadDoubleValue(rdb,&score) == -1) return NULL; + if (rdbLoadDoubleValue(rdb,&score) == -1) { + sdsfree(sdsele); + return NULL; + } } /* Don't care about integer-encoded strings. */ @@ -2181,6 +2187,8 @@ int rdbLoadRio(rio *rdb, rdbSaveInfo *rsi, int loading_aof) { decrRefCount(val); val = nullptr; } + decrRefCount(key); + key = nullptr; } /* Reset the state that is key-specified and is populated by