Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpredis/phpredis.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavlo Yatsukhnenko <yatsukhnenko@gmail.com>2017-08-28 16:14:42 +0300
committerPavlo Yatsukhnenko <yatsukhnenko@gmail.com>2017-08-28 16:17:05 +0300
commit4a0a46b4cba01e870638abf095a47cb429e9c756 (patch)
tree98a423aac0ae4b658c2b0714534782e339019b5b /redis_array.c
parente5660be4c62d8afbae1fd2305e674f7711926098 (diff)
Check number of elements in incoming array-argument
Diffstat (limited to 'redis_array.c')
-rw-r--r--redis_array.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/redis_array.c b/redis_array.c
index ead1da2a..73dad311 100644
--- a/redis_array.c
+++ b/redis_array.c
@@ -394,7 +394,9 @@ ra_forward_call(INTERNAL_FUNCTION_PARAMETERS, RedisArray *ra, const char *cmd, i
zend_bool b_write_cmd = 0;
h_args = Z_ARRVAL_P(z_args);
- argc = zend_hash_num_elements(h_args);
+ if ((argc = zend_hash_num_elements(h_args)) == 0) {
+ RETURN_FALSE;
+ }
if(ra->z_multi_exec) {
redis_inst = ra->z_multi_exec; /* we already have the instance */
@@ -935,7 +937,9 @@ PHP_METHOD(RedisArray, mget)
/* init data structures */
h_keys = Z_ARRVAL_P(z_keys);
- argc = zend_hash_num_elements(h_keys);
+ if ((argc = zend_hash_num_elements(h_keys)) == 0) {
+ RETURN_FALSE;
+ }
argv = emalloc(argc * sizeof(zval*));
pos = emalloc(argc * sizeof(int));
@@ -1087,7 +1091,9 @@ PHP_METHOD(RedisArray, mset)
/* init data structures */
h_keys = Z_ARRVAL_P(z_keys);
- argc = zend_hash_num_elements(h_keys);
+ if ((argc = zend_hash_num_elements(h_keys)) == 0) {
+ RETURN_FALSE;
+ }
argv = emalloc(argc * sizeof(zval*));
pos = emalloc(argc * sizeof(int));
keys = emalloc(argc * sizeof(char*));
@@ -1234,7 +1240,11 @@ PHP_METHOD(RedisArray, del)
/* init data structures */
h_keys = Z_ARRVAL(z_keys);
- argc = zend_hash_num_elements(h_keys);
+ if ((argc = zend_hash_num_elements(h_keys)) == 0) {
+ if (free_zkeys) zval_dtor(&z_keys);
+ efree(z_args);
+ RETURN_FALSE;
+ }
argv = emalloc(argc * sizeof(zval*));
pos = emalloc(argc * sizeof(int));