summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS2
-rw-r--r--ext/standard/array.c6
2 files changed, 7 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index d5f65faaf8..477e7c7f61 100644
--- a/NEWS
+++ b/NEWS
@@ -43,6 +43,8 @@ PHP NEWS
- Fixed bug #41717 (imagepolygon does not respect thickness). (Pierre)
- Fixed bug #41686 (Omitting length param in array_slice not possible).
(Ilia)
+- Fixed bug #41685 (array_push() fails to warn when next index is already
+ occupied). (Ilia)
- Fixed bug #41655 (open_basedir bypass via glob()). (Ilia)
- Fixed bug #41640 (get_class_vars produces error on class constants).
(Johannes)
diff --git a/ext/standard/array.c b/ext/standard/array.c
index b698ead1ee..3ac7a2ae75 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -1957,7 +1957,11 @@ PHP_FUNCTION(array_push)
new_var = *args[i];
new_var->refcount++;
- zend_hash_next_index_insert(Z_ARRVAL_P(stack), &new_var, sizeof(zval *), NULL);
+ if (zend_hash_next_index_insert(Z_ARRVAL_P(stack), &new_var, sizeof(zval *), NULL) == FAILURE) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ efree(args);
+ RETURN_FALSE;
+ }
}
/* Clean up and return the number of values in the stack */