From 32c3fbba663e5b1da38bdd2d84b0a9a78271ddfa Mon Sep 17 00:00:00 2001 From: Ondřej Surý Date: Tue, 27 May 2014 16:54:58 +0200 Subject: New upstream version 5.6.0~beta3+dfsg --- ext/spl/spl_fixedarray.c | 2 +- ext/spl/tests/bug67247.phpt | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 ext/spl/tests/bug67247.phpt (limited to 'ext/spl') diff --git a/ext/spl/spl_fixedarray.c b/ext/spl/spl_fixedarray.c index 0519edaa2..2ad50359f 100644 --- a/ext/spl/spl_fixedarray.c +++ b/ext/spl/spl_fixedarray.c @@ -116,7 +116,7 @@ static void spl_fixedarray_resize(spl_fixedarray *array, long size TSRMLS_DC) /* array->elements = NULL; } } else if (size > array->size) { - array->elements = erealloc(array->elements, sizeof(zval *) * size); + array->elements = safe_erealloc(array->elements, size, sizeof(zval *), 0); memset(array->elements + array->size, '\0', sizeof(zval *) * (size - array->size)); } else { /* size < array->size */ long i; diff --git a/ext/spl/tests/bug67247.phpt b/ext/spl/tests/bug67247.phpt new file mode 100644 index 000000000..cb71445d7 --- /dev/null +++ b/ext/spl/tests/bug67247.phpt @@ -0,0 +1,13 @@ +--TEST-- +Bug #67247 (spl_fixedarray_resize integer overflow) +--FILE-- +getSize()."\n"; +$ar->setSize((PHP_INT_SIZE==8)?0x2000000000000001:0x40000001); +echo "size: ".$ar->getSize()."\n"; +?> +--EXPECTF-- +size: 1 + +Fatal error: Possible integer overflow in memory allocation (%d * %d + 0) in %s on line %d -- cgit v1.2.3