From 945115968ce614fd55941dba6efa506ad35da436 Mon Sep 17 00:00:00 2001 From: Georg Richter Date: Fri, 13 Aug 2004 16:27:35 +0000 Subject: [PATCH] fixed bug #29656 (segfault on result and statement properties) --- NEWS | 1 + ext/mysqli/mysqli.c | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/NEWS b/NEWS index a1d9bd528c..bf3f615ec2 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,7 @@ PHP NEWS ?? ??? 2004, PHP 5.0.2 - Added PHP_EOL constant that contains the OS way of representing newlines. (Paul Hudson, Derick) +- Fixed bug #29656 (segfault on result and statement properties) (Georg) 12 Aug 2004, PHP 5.0.1 - Changed destructor mechanism so that destructors are called prior to request diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c index ea3e116379..4e01044e6f 100644 --- a/ext/mysqli/mysqli.c +++ b/ext/mysqli/mysqli.c @@ -200,11 +200,21 @@ zval *mysqli_read_property(zval *object, zval *member, int type TSRMLS_DC) ret = zend_hash_find(obj->prop_handler, Z_STRVAL_P(member), Z_STRLEN_P(member)+1, (void **) &hnd); } if (ret == SUCCESS) { - /* check if connection is still valid */ - if (!obj->ptr || - !((MYSQL *)((MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->mysql)->thread_id) { - retval = EG(uninitialized_zval_ptr); - return(retval); + /* check if mysqli object is still valid */ + if (!strcmp(obj->zo.ce->name, "mysqli")) { + if (!obj->ptr || + !((MYSQL *)((MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->mysql)->thread_id) { + retval = EG(uninitialized_zval_ptr); + return(retval); + } + } else + /* check if stmt object is still valid */ + if (!strcmp(obj->zo.ce->name, "mysqli_stmt")) { + if (!obj->ptr || + !((MYSQL_STMT *)((MY_STMT *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->stmt)->mysql) { + retval = EG(uninitialized_zval_ptr); + return(retval); + } } ret = hnd->read_func(obj, &retval TSRMLS_CC); -- 2.40.0