10000 Merge branch 'hotfix/serializer_leak' into develop · jrtkcoder/phpredis@b2a57c1 · GitHub
[go: up one dir, main page]

Skip to content

Commit b2a57c1

Browse files
Merge branch 'hotfix/serializer_leak' into develop
2 parents 4fd6acd + a4627bb commit b2a57c1

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

library.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -937,7 +937,7 @@ PHPAPI void redis_string_response(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis
937937
}
938938
} else {
939939
if(redis_unserialize(redis_sock, response, response_len, & 8000 return_value TSRMLS_CC) == 0) {
940-
RETURN_STRINGL(response, response_len, 0);
940+
RETURN_STRINGL(response, response_len, 0);
941941
} else {
942942
efree(response);
943943
}
@@ -1497,7 +1497,7 @@ PHPAPI int
14971497
redis_unserialize(RedisSock *redis_sock, const char *val, int val_len, zval **return_value TSRMLS_DC) {
14981498

14991499
php_unserialize_data_t var_hash;
1500-
int ret;
1500+
int ret, rv_free = 0;
15011501

15021502
switch(redis_sock->serializer) {
15031503
case REDIS_SERIALIZER_NONE:
@@ -1506,6 +1506,7 @@ redis_unserialize(RedisSock *redis_sock, const char *val, int val_len, zval **re
15061506
case REDIS_SERIALIZER_PHP:
15071507
if(!*return_value) {
15081508
MAKE_STD_ZVAL(*return_value);
1509+
rv_free = 1;
15091510
}
15101511
#if ZEND_MODULE_API_NO >= 20100000
15111512
PHP_VAR_UNSERIALIZE_INIT(var_hash);
@@ -1514,7 +1515,7 @@ redis_unserialize(RedisSock *redis_sock, const char *val, int val_len, zval **re
15141515
#endif
15151516
if(!php_var_unserialize(return_value, (const unsigned char**)&val,
15161517
(const unsigned char*)val + val_len, &var_hash TSRMLS_CC)) {
1517-
efree(*return_value);
1518+
if(rv_free==1) efree(*return_value);
15181519
ret = 0;
15191520
} else {
15201521
ret = 1;

0 commit comments

Comments
 (0)
0