From 4c6ee6f1d9da99c06526071d9f25fe57ef872051 Mon Sep 17 00:00:00 2001 From: Antony Dovgal Date: Sat, 20 Jan 2007 23:09:42 +0000 Subject: [PATCH] catch overflow right away --- Zend/zend_hash.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index 03b682717f..944743ea7b 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -166,11 +166,16 @@ ZEND_API int _zend_u_hash_init(HashTable *ht, uint nSize, hash_func_t pHashFunct SET_INCONSISTENT(HT_OK); - while ((1U << i) < nSize) { - i++; + if (nSize >= 0x80000000) { + /* prevent overflow */ + ht->nTableSize = 0x80000000; + } else { + while ((1U << i) < nSize) { + i++; + } + ht->nTableSize = 1 << i; } - ht->nTableSize = 1 << i; ht->nTableMask = ht->nTableSize - 1; ht->pDestructor = pDestructor; ht->arBuckets = NULL; -- 2.50.1