diff options
author | Justin Brewer <jzb0012@auburn.edu> | 2018-05-17 18:29:31 -0500 |
---|---|---|
committer | michael-grunder <michael.grunder@gmail.com> | 2018-05-19 10:48:14 -0700 |
commit | 93421f9d84868989ab0e401fb3be7b31c7a9c181 (patch) | |
tree | 2a05f03ad312e70938d5b3c9cbf4dd7a8b1365c3 /test.c | |
parent | dbde4f68cf2bef809dca5cb108e2827690d556b0 (diff) |
Properly detect integer parse errors
Badly formatted or out-of-range integers are now protocol errors.
Signed-off-by: Justin Brewer <jzb0012@auburn.edu>
Diffstat (limited to 'test.c')
-rw-r--r-- | test.c | 38 |
1 files changed, 38 insertions, 0 deletions
@@ -302,6 +302,44 @@ static void test_reply_reader(void) { strncasecmp(reader->errstr,"No support for",14) == 0); redisReaderFree(reader); + test("Correctly parses LLONG_MAX: "); + reader = redisReaderCreate(); + redisReaderFeed(reader, ":9223372036854775807\r\n",22); + ret = redisReaderGetReply(reader,&reply); + test_cond(ret == REDIS_OK && + ((redisReply*)reply)->type == REDIS_REPLY_INTEGER && + ((redisReply*)reply)->integer == LLONG_MAX); + freeReplyObject(reply); + redisReaderFree(reader); + + test("Set error when > LLONG_MAX: "); + reader = redisReaderCreate(); + redisReaderFeed(reader, ":9223372036854775808\r\n",22); + ret = redisReaderGetReply(reader,&reply); + test_cond(ret == REDIS_ERR && + strcasecmp(reader->errstr,"Bad integer value") == 0); + freeReplyObject(reply); + redisReaderFree(reader); + + test("Correctly parses LLONG_MIN: "); + reader = redisReaderCreate(); + redisReaderFeed(reader, ":-9223372036854775808\r\n",23); + ret = redisReaderGetReply(reader,&reply); + test_cond(ret == REDIS_OK && + ((redisReply*)reply)->type == REDIS_REPLY_INTEGER && + ((redisReply*)reply)->integer == LLONG_MIN); + freeReplyObject(reply); + redisReaderFree(reader); + + test("Set error when < LLONG_MIN: "); + reader = redisReaderCreate(); + redisReaderFeed(reader, ":-9223372036854775809\r\n",23); + ret = redisReaderGetReply(reader,&reply); + test_cond(ret == REDIS_ERR && + strcasecmp(reader->errstr,"Bad integer value") == 0); + freeReplyObject(reply); + redisReaderFree(reader); + test("Works with NULL functions for reply: "); reader = redisReaderCreate(); reader->fn = NULL; |