summaryrefslogtreecommitdiff
path: root/Zend/zend_arena.h
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-09-05 16:13:06 +0400
committerDmitry Stogov <dmitry@zend.com>2014-09-05 16:13:06 +0400
commit7d0416f4018103f95c4f06daabe60769310ffa6e (patch)
tree17dcafc469a1391bcab8bf454c4f87e332033538 /Zend/zend_arena.h
parent828fe353817c78cec2ceb7c42ff0644069f46ba7 (diff)
downloadphp-git-7d0416f4018103f95c4f06daabe60769310ffa6e.tar.gz
Fixed overflow check
Diffstat (limited to 'Zend/zend_arena.h')
-rw-r--r--Zend/zend_arena.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/Zend/zend_arena.h b/Zend/zend_arena.h
index 12c5db6dbe..8988eb4ab5 100644
--- a/Zend/zend_arena.h
+++ b/Zend/zend_arena.h
@@ -80,10 +80,13 @@ static zend_always_inline void* zend_arena_alloc(zend_arena **arena_ptr, size_t
static zend_always_inline void* zend_arena_calloc(zend_arena **arena_ptr, size_t count, size_t unit_size)
{
- size_t size = unit_size * count;
+ zend_long overflow;
+ double d;
+ size_t size;
void *ret;
- ZEND_ASSERT(size >= unit_size && size >= count);
+ ZEND_SIGNED_MULTIPLY_LONG(unit_size, count, size, d, overflow);
+ ZEND_ASSERT(overflow == 0);
ret = zend_arena_alloc(arena_ptr, size);
memset(ret, 0, size);
return ret;