From: Pieter Noordhuis Date: Fri, 20 Aug 2010 11:42:42 +0000 (+0200) Subject: Check if stroll return value was clamped X-Git-Url: https://git.saurik.com/redis.git/commitdiff_plain/87c74dfaa81d204d47ca9ae9e3f76ea521ca8460?hp=aaada3f962a9f87fb239e55e3d26c1e794d411d5 Check if stroll return value was clamped --- diff --git a/src/object.c b/src/object.c index 45dde52b..b16123eb 100644 --- a/src/object.c +++ b/src/object.c @@ -375,6 +375,7 @@ int getLongLongFromObject(robj *o, long long *target) { redisAssert(o->type == REDIS_STRING); if (o->encoding == REDIS_ENCODING_RAW) { value = strtoll(o->ptr, &eptr, 10); + if (errno == ERANGE) return REDIS_ERR; if (eptr[0] != '\0') return REDIS_ERR; } else if (o->encoding == REDIS_ENCODING_INT) { value = (long)o->ptr; diff --git a/tests/unit/type/set.tcl b/tests/unit/type/set.tcl index a1b655ef..056ed27c 100644 --- a/tests/unit/type/set.tcl +++ b/tests/unit/type/set.tcl @@ -45,6 +45,12 @@ start_server { assert_encoding hashtable myset } + test "SADD an integer larger than 64 bits" { + create_set myset {213244124402402314402033402} + assert_encoding hashtable myset + assert_equal 1 [r sismember myset 213244124402402314402033402] + } + test "SADD overflows the maximum allowed integers in an intset" { r del myset for {set i 0} {$i < 512} {incr i} { r sadd myset $i }