Set error on unexpected nesting of multi bulks
This commit is contained in:
parent
d4058be7b0
commit
257a9d40a9
@ -294,6 +294,13 @@ static int processMultiBulkItem(redisReader *r) {
|
|||||||
long elements;
|
long elements;
|
||||||
int root = 0;
|
int root = 0;
|
||||||
|
|
||||||
|
/* Set error for nested multi bulks with depth > 1 */
|
||||||
|
if (r->ridx == 2) {
|
||||||
|
redisSetReplyReaderError(r,sdscatprintf(sdsempty(),
|
||||||
|
"No support for nested multi bulk replies with depth > 1"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if ((p = readLine(r,NULL)) != NULL) {
|
if ((p = readLine(r,NULL)) != NULL) {
|
||||||
elements = strtol(p,NULL,10);
|
elements = strtol(p,NULL,10);
|
||||||
root = (r->ridx == 0);
|
root = (r->ridx == 0);
|
||||||
|
11
test.c
11
test.c
@ -256,6 +256,17 @@ static void test_reply_reader() {
|
|||||||
strcasecmp(err,"Protocol error, got \"@\" as reply type byte") == 0);
|
strcasecmp(err,"Protocol error, got \"@\" as reply type byte") == 0);
|
||||||
redisReplyReaderFree(reader);
|
redisReplyReaderFree(reader);
|
||||||
|
|
||||||
|
test("Set error on nested multi bulks with depth > 1: ");
|
||||||
|
reader = redisReplyReaderCreate();
|
||||||
|
redisReplyReaderFeed(reader,(char*)"*1\r\n",4);
|
||||||
|
redisReplyReaderFeed(reader,(char*)"*1\r\n",4);
|
||||||
|
redisReplyReaderFeed(reader,(char*)"*1\r\n",4);
|
||||||
|
ret = redisReplyReaderGetReply(reader,NULL);
|
||||||
|
err = redisReplyReaderGetError(reader);
|
||||||
|
test_cond(ret == REDIS_ERR &&
|
||||||
|
strncasecmp(err,"No support for",14) == 0);
|
||||||
|
redisReplyReaderFree(reader);
|
||||||
|
|
||||||
test("Works with NULL functions for reply: ");
|
test("Works with NULL functions for reply: ");
|
||||||
reader = redisReplyReaderCreate();
|
reader = redisReplyReaderCreate();
|
||||||
redisReplyReaderSetReplyObjectFunctions(reader,NULL);
|
redisReplyReaderSetReplyObjectFunctions(reader,NULL);
|
||||||
|
Loading…
Reference in New Issue
Block a user