Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 00233a3

Browse files
Merge branch 'hotfix/setex_long_expires'
Incorporate @zined and @s0enke commits to properly handle long timeout values and not overrun our buffer. Addresses phpredis#385
2 parents 853f86b + 0f003bc commit 00233a3

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

redis.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -890,7 +890,7 @@ PHP_METHOD(Redis, set) {
890890
val, val_len, set_type, 2);
891891
} else if(expire > 0) {
892892
/* Backward compatible SETEX redirection */
893-
cmd_len = redis_cmd_format_static(&cmd, "SETEX", "sds", key, key_len,
893+
cmd_len = redis_cmd_format_static(&cmd, "SETEX", "sls", key, key_len,
894894
expire, val, val_len);
895895
} else {
896896
/* SET <key> <value> */
@@ -932,7 +932,7 @@ PHPAPI void redis_generic_setex(INTERNAL_FUNCTION_PARAMETERS, char *keyword) {
932932

933933
val_free = redis_serialize(redis_sock, z_value, &val, &val_len TSRMLS_CC);
934934
key_free = redis_key_prefix(redis_sock, &key, &key_len TSRMLS_CC);
935-
cmd_len = redis_cmd_format_static(&cmd, keyword, "sds", key, key_len, expire, val, val_len);
935+
cmd_len = redis_cmd_format_static(&cmd, keyword, "sls", key, key_len, expire, val, val_len);
936936
if(val_free) efree(val);
937937
if(key_free) efree(key);
938938

tests/TestRedis.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,13 @@ public function testSetNX() {
408408
$this->assertTrue($this->redis->get('key') === '42');
409409
}
410410

411+
public function testExpireAtWithLong() {
412+
$longExpiryTimeExceedingInt = 3153600000;
413+
$this->redis->delete('key');
414+
$this->assertTrue($this->redis->setex('key', $longExpiryTimeExceedingInt, 'val') === TRUE);
415+
$this->assertTrue($this->redis->ttl('key') === $longExpiryTimeExceedingInt);
416+
}
417+
411418
public function testIncr()
412419
{
413420
$this->redis->set('key', 0);

0 commit comments

Comments
 (0)