diff options
Diffstat (limited to 'src/redis-check-rdb.c')
-rw-r--r-- | src/redis-check-rdb.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/redis-check-rdb.c b/src/redis-check-rdb.c index accdc35b0..959768991 100644 --- a/src/redis-check-rdb.c +++ b/src/redis-check-rdb.c @@ -283,7 +283,10 @@ int redis_check_rdb(char *rdbfilename, FILE *fp) { robj *auxkey, *auxval; rdbstate.doing = RDB_CHECK_DOING_READ_AUX; if ((auxkey = rdbLoadStringObject(&rdb)) == NULL) goto eoferr; - if ((auxval = rdbLoadStringObject(&rdb)) == NULL) goto eoferr; + if ((auxval = rdbLoadStringObject(&rdb)) == NULL) { + decrRefCount(auxkey); + goto eoferr; + } rdbCheckInfo("AUX FIELD %s = '%s'", (char*)auxkey->ptr, (char*)auxval->ptr); @@ -297,6 +300,10 @@ int redis_check_rdb(char *rdbfilename, FILE *fp) { if ((moduleid = rdbLoadLen(&rdb,NULL)) == RDB_LENERR) goto eoferr; if ((when_opcode = rdbLoadLen(&rdb,NULL)) == RDB_LENERR) goto eoferr; if ((when = rdbLoadLen(&rdb,NULL)) == RDB_LENERR) goto eoferr; + if (when_opcode != RDB_MODULE_OPCODE_UINT) { + rdbCheckError("bad when_opcode"); + goto err; + } char name[10]; moduleTypeNameByID(name,moduleid); |