Streams: trap more errors in stream loading + RDB check type name.

This commit is contained in:
antirez 2018-02-21 11:17:46 +01:00
parent 8727b4845b
commit f7d4c3acdf
2 changed files with 10 additions and 1 deletions

View File

@ -1624,6 +1624,10 @@ robj *rdbLoadObject(int rdbtype, rio *rdb) {
* we read more data. */ * we read more data. */
streamID cg_id; streamID cg_id;
sds cgname = rdbGenericLoadStringObject(rdb,RDB_LOAD_SDS,NULL); sds cgname = rdbGenericLoadStringObject(rdb,RDB_LOAD_SDS,NULL);
if (cgname == NULL) {
rdbExitReportCorruptRDB(
"Error reading the consumer group name from Stream");
}
cg_id.ms = rdbLoadLen(rdb,NULL); cg_id.ms = rdbLoadLen(rdb,NULL);
cg_id.seq = rdbLoadLen(rdb,NULL); cg_id.seq = rdbLoadLen(rdb,NULL);
streamCG *cgroup = streamCreateCG(s,cgname,sdslen(cgname),&cg_id); streamCG *cgroup = streamCreateCG(s,cgname,sdslen(cgname),&cg_id);
@ -1654,6 +1658,10 @@ robj *rdbLoadObject(int rdbtype, rio *rdb) {
size_t consumers_num = rdbLoadLen(rdb,NULL); size_t consumers_num = rdbLoadLen(rdb,NULL);
while(consumers_num--) { while(consumers_num--) {
sds cname = rdbGenericLoadStringObject(rdb,RDB_LOAD_SDS,NULL); sds cname = rdbGenericLoadStringObject(rdb,RDB_LOAD_SDS,NULL);
if (cname == NULL) {
rdbExitReportCorruptRDB(
"Error reading the consumer name from Stream group");
}
streamConsumer *consumer = streamLookupConsumer(cgroup,cname, streamConsumer *consumer = streamLookupConsumer(cgroup,cname,
1); 1);
sdsfree(cname); sdsfree(cname);

View File

@ -85,7 +85,8 @@ char *rdb_type_string[] = {
"set-intset", "set-intset",
"zset-ziplist", "zset-ziplist",
"hash-ziplist", "hash-ziplist",
"quicklist" "quicklist",
"stream"
}; };
/* Show a few stats collected into 'rdbstate' */ /* Show a few stats collected into 'rdbstate' */