From 958b86ddbbf0e5104fc2aacbb49c9e5e04e5760a Mon Sep 17 00:00:00 2001 From: John Sully Date: Thu, 30 Jan 2020 17:57:10 -0500 Subject: [PATCH] RDB memory leaks Former-commit-id: 6208118b133c7f4209fd0a55d2a75341407e3e2c --- src/rdb.cpp | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/rdb.cpp b/src/rdb.cpp index 8ae4a0651..a3351fe59 100644 --- a/src/rdb.cpp +++ b/src/rdb.cpp @@ -1632,9 +1632,17 @@ robj *rdbLoadObject(int rdbtype, rio *rdb, robj *key, uint64_t mvcc_tstamp) { len--; /* Load raw strings */ if ((field = (sds)rdbGenericLoadStringObject(rdb,RDB_LOAD_SDS,NULL)) - == NULL) return NULL; + == NULL) + { + decrRefCount(o); + return NULL; + } if ((value = (sds)rdbGenericLoadStringObject(rdb,RDB_LOAD_SDS,NULL)) - == NULL) return NULL; + == NULL) + { + decrRefCount(o); + return NULL; + } /* Add pair to ziplist */ o->m_ptr = ziplistPush((unsigned char*)ptrFromObj(o), (unsigned char*)field, @@ -1663,9 +1671,17 @@ robj *rdbLoadObject(int rdbtype, rio *rdb, robj *key, uint64_t mvcc_tstamp) { len--; /* Load encoded strings */ if ((field = (sds)rdbGenericLoadStringObject(rdb,RDB_LOAD_SDS,NULL)) - == NULL) return NULL; + == NULL) + { + decrRefCount(o); + return NULL; + } if ((value = (sds)rdbGenericLoadStringObject(rdb,RDB_LOAD_SDS,NULL)) - == NULL) return NULL; + == NULL) + { + decrRefCount(o); + return NULL; + } /* Add pair to hash table */ ret = dictAdd((dict*)ptrFromObj(o), field, value);