Skip to content

Instantly share code, notes, and snippets.

/73832.diff Secret

Created January 3, 2017 04:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/9fbe5ccbe8e18659bec11ac963fd07a3 to your computer and use it in GitHub Desktop.
Save anonymous/9fbe5ccbe8e18659bec11ac963fd07a3 to your computer and use it in GitHub Desktop.
Patch for 73832
commit 4cc0286f2f3780abc6084bcdae5dce595daa3c12
Author: Stanislav Malyshev <stas@php.net>
Date: Mon Jan 2 20:14:05 2017 -0800
Fix #73832 - leave the table in a safe state if the size is too big.
diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c
index 322422d..8b54a39 100644
--- a/Zend/zend_hash.c
+++ b/Zend/zend_hash.c
@@ -175,7 +175,6 @@ ZEND_API void ZEND_FASTCALL _zend_hash_init(HashTable *ht, uint32_t nSize, dtor_
GC_REFCOUNT(ht) = 1;
GC_TYPE_INFO(ht) = IS_ARRAY;
ht->u.flags = (persistent ? HASH_FLAG_PERSISTENT : 0) | HASH_FLAG_APPLY_PROTECTION | HASH_FLAG_STATIC_KEYS;
- ht->nTableSize = zend_hash_check_size(nSize);
ht->nTableMask = HT_MIN_MASK;
HT_SET_DATA_ADDR(ht, &uninitialized_bucket);
ht->nNumUsed = 0;
@@ -183,6 +182,7 @@ ZEND_API void ZEND_FASTCALL _zend_hash_init(HashTable *ht, uint32_t nSize, dtor_
ht->nInternalPointer = HT_INVALID_IDX;
ht->nNextFreeElement = 0;
ht->pDestructor = pDestructor;
+ ht->nTableSize = zend_hash_check_size(nSize);
}
static void ZEND_FASTCALL zend_hash_packed_grow(HashTable *ht)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment