cvs: Zend / zend_execute.c zend_hash.c
| From: | Stanislav Malyshev | Date: | Thu, 01 Aug 2002 16:03:22 +0000 |
| Subject: | cvs: Zend / zend_execute.c zend_hash.c | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-292@lists.php.net to get a copy of this message | ||
stas Thu Aug 1 12:03:22 2002 EDT
Modified files:
/Zend zend_execute.c zend_hash.c
Log:
fix bug #18140 - check return value of insert and make insert not
wrap around
Index: Zend/zend_execute.c
diff -u Zend/zend_execute.c:1.298 Zend/zend_execute.c:1.299
--- Zend/zend_execute.c:1.298 Tue Jul 30 15:42:20 2002
+++ Zend/zend_execute.c Thu Aug 1 12:03:21 2002
@@ -757,7 +757,11 @@
zval *new_zval = &EG(uninitialized_zval);
new_zval->refcount++;
- zend_hash_next_index_insert(container->value.ht, &new_zval, sizeof(zval *), (void **)
retval);
+ if (zend_hash_next_index_insert(container->value.ht, &new_zval, sizeof(zval *), (void
**) retval) == FAILURE) {
+ zend_error(E_WARNING, "Cannot add element to the array as the nexxt element is already
occupied");
+ *retval = &EG(uninitialized_zval_ptr);
+ new_zval->refcount--;
+ }
} else {
*retval = zend_fetch_dimension_address_inner(container->value.ht, op2, Ts, type TSRMLS_CC);
}
Index: Zend/zend_hash.c
diff -u Zend/zend_hash.c:1.85 Zend/zend_hash.c:1.86
--- Zend/zend_hash.c:1.85 Fri Apr 19 11:40:34 2002
+++ Zend/zend_hash.c Thu Aug 1 12:03:21 2002
@@ -393,7 +393,7 @@
}
UPDATE_DATA(ht, p, pData, nDataSize);
HANDLE_UNBLOCK_INTERRUPTIONS();
- if (h >= ht->nNextFreeElement) {
+ if ((long)h >= (long)ht->nNextFreeElement) { /* comparing signed to avoid wraparounds on
-1 */
ht->nNextFreeElement = h + 1;
}
if (pDest) {
@@ -421,7 +421,7 @@
CONNECT_TO_GLOBAL_DLLIST(p, ht);
HANDLE_UNBLOCK_INTERRUPTIONS();
- if (h >= ht->nNextFreeElement) {
+ if ((long)h >= (long)ht->nNextFreeElement) { /* comparing signed to avoid wraparounds on -1
*/
ht->nNextFreeElement = h + 1;
}
ht->nNumOfElements++;