From f31b0405f0023d8916efac3aa9b0c16d4db69fc4 Mon Sep 17 00:00:00 2001 From: Oran Agra Date: Tue, 19 Jun 2018 16:54:22 +0300 Subject: fix redis-rdb-check to provide proper arguments to rdbLoadMillisecondTime due to incorrect forward declaration, it didn't provide all arguments. this lead to random value being read from the stack and return of incorrect time, which in this case doesn't matter since no one uses it. --- src/rdb.h | 2 ++ src/redis-check-rdb.c | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/rdb.h b/src/rdb.h index 3c46a2737..7b9486169 100644 --- a/src/rdb.h +++ b/src/rdb.h @@ -129,6 +129,8 @@ int rdbLoadType(rio *rdb); int rdbSaveTime(rio *rdb, time_t t); time_t rdbLoadTime(rio *rdb); int rdbSaveLen(rio *rdb, uint64_t len); +int rdbSaveMillisecondTime(rio *rdb, long long t); +long long rdbLoadMillisecondTime(rio *rdb, int rdbver); uint64_t rdbLoadLen(rio *rdb, int *isencoded); int rdbLoadLenByRef(rio *rdb, int *isencoded, uint64_t *lenptr); int rdbSaveObjectType(rio *rdb, robj *o); diff --git a/src/redis-check-rdb.c b/src/redis-check-rdb.c index 6283e93d8..50854be0c 100644 --- a/src/redis-check-rdb.c +++ b/src/redis-check-rdb.c @@ -34,7 +34,6 @@ void createSharedObjects(void); void rdbLoadProgressCallback(rio *r, const void *buf, size_t len); -long long rdbLoadMillisecondTime(rio *rdb); int rdbCheckMode = 0; struct { @@ -224,7 +223,7 @@ int redis_check_rdb(char *rdbfilename, FILE *fp) { /* EXPIRETIME_MS: milliseconds precision expire times introduced * with RDB v3. Like EXPIRETIME but no with more precision. */ rdbstate.doing = RDB_CHECK_DOING_READ_EXPIRE; - if ((expiretime = rdbLoadMillisecondTime(&rdb)) == -1) goto eoferr; + if ((expiretime = rdbLoadMillisecondTime(&rdb, rdbver)) == -1) goto eoferr; continue; /* Read next opcode. */ } else if (type == RDB_OPCODE_FREQ) { /* FREQ: LFU frequency. */ -- cgit v1.2.1