From: Marcus Boerger Date: Sun, 26 Sep 2004 21:47:27 +0000 (+0000) Subject: - Earlier detection of failure X-Git-Tag: PRE_NEW_VM_GEN_PATCH~196 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=abe47301c1df00e9e28f58f6afcadfdb2bca9d2b;p=php - Earlier detection of failure --- diff --git a/ext/standard/var_unserializer.re b/ext/standard/var_unserializer.re index 1f556ade54..c57de7ae03 100644 --- a/ext/standard/var_unserializer.re +++ b/ext/standard/var_unserializer.re @@ -190,6 +190,12 @@ static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, int return 0; } + if (Z_TYPE_P(key) != IS_LONG && Z_TYPE_P(key) != IS_STRING) { + zval_dtor(key); + FREE_ZVAL(key); + return 0; + } + ALLOC_INIT_ZVAL(data); if (!php_var_unserialize(&data, p, max, var_hash TSRMLS_CC)) { @@ -207,12 +213,6 @@ static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, int case IS_STRING: zend_hash_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &data, sizeof(data), NULL); break; - default: - zval_dtor(key); - FREE_ZVAL(key); - zval_dtor(data); - FREE_ZVAL(data); - return 0; } zval_dtor(key);