From: Antony Dovgal Date: Sat, 20 Jan 2007 23:09:42 +0000 (+0000) Subject: catch overflow right away X-Git-Tag: RELEASE_1_0_0RC1~183 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4c6ee6f1d9da99c06526071d9f25fe57ef872051;p=php catch overflow right away --- 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;