PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? Nov 2007 , PHP 5.2.5
+- Fixed bug #43196 (array_intersect_assoc() crashes with non-array input).
+ (Jani)
01 Nov 2007, PHP 5.2.5RC2
- Added ability to control memory consumption between request using
intersect_data_compare_func = zval_compare;
}
+ if (Z_TYPE_PP(args[0]) != IS_ARRAY) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #1 is not an array");
+ RETVAL_NULL();
+ goto out;
+ }
+
array_init(return_value);
for (p = Z_ARRVAL_PP(args[0])->pListHead; p != NULL; p = p->pListNext) {
if (p->nKeyLength == 0) {
ok = 1;
for (i = 1; i < argc; i++) {
- if (zend_hash_index_find(Z_ARRVAL_PP(args[i]), p->h, (void**)&data) == FAILURE ||
+ if (Z_TYPE_PP(args[i]) != IS_ARRAY) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #%d is not an array", i + 1);
+ zval_dtor(return_value);
+ RETVAL_NULL();
+ goto out;
+ } else if (zend_hash_index_find(Z_ARRVAL_PP(args[i]), p->h, (void**)&data) == FAILURE ||
(intersect_data_compare_func &&
intersect_data_compare_func((zval**)p->pData, data TSRMLS_CC) != 0)) {
ok = 0;
} else {
ok = 1;
for (i = 1; i < argc; i++) {
- if (zend_hash_quick_find(Z_ARRVAL_PP(args[i]), p->arKey, p->nKeyLength, p->h, (void**)&data) == FAILURE ||
+ if (Z_TYPE_PP(args[i]) != IS_ARRAY) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #%d is not an array", i + 1);
+ zval_dtor(return_value);
+ RETVAL_NULL();
+ goto out;
+ } else if (zend_hash_quick_find(Z_ARRVAL_PP(args[i]), p->arKey, p->nKeyLength, p->h, (void**)&data) == FAILURE ||
(intersect_data_compare_func &&
intersect_data_compare_func((zval**)p->pData, data TSRMLS_CC) != 0)) {
ok = 0;
}
}
}
+out:
efree(args);
}
/* }}} */
diff_data_compare_func = zval_compare;
}
+ if (Z_TYPE_PP(args[0]) != IS_ARRAY) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #1 is not an array");
+ RETVAL_NULL();
+ goto out;
+ }
+
array_init(return_value);
for (p = Z_ARRVAL_PP(args[0])->pListHead; p != NULL; p = p->pListNext) {
if (p->nKeyLength == 0) {
ok = 1;
for (i = 1; i < argc; i++) {
- if (zend_hash_index_find(Z_ARRVAL_PP(args[i]), p->h, (void**)&data) == SUCCESS &&
+ if (Z_TYPE_PP(args[i]) != IS_ARRAY) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #%d is not an array", i + 1);
+ zval_dtor(return_value);
+ RETVAL_NULL();
+ goto out;
+ } else if (zend_hash_index_find(Z_ARRVAL_PP(args[i]), p->h, (void**)&data) == SUCCESS &&
(!diff_data_compare_func ||
diff_data_compare_func((zval**)p->pData, data TSRMLS_CC) == 0)) {
ok = 0;
} else {
ok = 1;
for (i = 1; i < argc; i++) {
- if (zend_hash_quick_find(Z_ARRVAL_PP(args[i]), p->arKey, p->nKeyLength, p->h, (void**)&data) == SUCCESS &&
+ if (Z_TYPE_PP(args[i]) != IS_ARRAY) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #%d is not an array", i + 1);
+ zval_dtor(return_value);
+ RETVAL_NULL();
+ goto out;
+ } else if (zend_hash_quick_find(Z_ARRVAL_PP(args[i]), p->arKey, p->nKeyLength, p->h, (void**)&data) == SUCCESS &&
(!diff_data_compare_func ||
diff_data_compare_func((zval**)p->pData, data TSRMLS_CC) == 0)) {
ok = 0;
}
}
}
+out:
efree(args);
}
/* }}} */
echo "Done";
?>
--EXPECTF--
-*** Testing array_intersect() : Passing non-array values to $arr1 argument ***
+*** Testing array_intersect_assoc() : Passing non-array values to $arr1 argument ***
--- Iterator 1 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 1 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 2 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 2 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 3 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 3 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 4 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 4 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 5 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 5 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 6 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 6 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 7 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 7 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 8 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 8 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 9 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 9 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 10 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 10 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 11 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 11 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 12 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 12 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 13 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 13 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 14 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 14 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 15 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 15 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 16 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 16 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 17 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 17 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 18 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 18 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 19 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 19 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 20 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 20 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 21 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 21 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 22 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 22 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 23 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 23 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
--- Iterator 24 --
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+-- Iteration 24 --
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #1 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #1 is not an array in %s on line %d
NULL
Done
-
echo "Done";
?>
--EXPECTF--
-*** Testing array_intersect() : Passing non-array values to $arr2 argument ***
+*** Testing array_intersect_assoc() : Passing non-array values to $arr2 argument ***
--- Iterator 1 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 1 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 2 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 2 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 3 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 3 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 4 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 4 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 5 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 5 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 6 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 6 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 7 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 7 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 8 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 8 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 9 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 9 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 10 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 10 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 11 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 11 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 12 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 12 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 13 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 13 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 14 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 14 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 15 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 15 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 16 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 16 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 17 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 17 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 18 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 18 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 19 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 19 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 20 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 20 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 21 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 21 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 22 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 22 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 23 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 23 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
--- Iterator 24 --
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+-- Iteration 24 --
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
-Warning: array_intersect(): Argument #2 is not an array in %s on line %d
+Warning: array_intersect_assoc(): Argument #2 is not an array in %s on line %d
NULL
Done
-