]> granicus.if.org Git - php/commitdiff
Fixed overflow check
authorDmitry Stogov <dmitry@zend.com>
Fri, 5 Sep 2014 12:13:06 +0000 (16:13 +0400)
committerDmitry Stogov <dmitry@zend.com>
Fri, 5 Sep 2014 12:13:06 +0000 (16:13 +0400)
Zend/zend_arena.h

index 12c5db6dbe48e55dac070204c612cd97c5b0f8e2..8988eb4ab5c4ea932fe7b09c44cbd8236c33a61f 100644 (file)
@@ -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;