From 1593aa0e5e962067887caa277752454adabb4a0f Mon Sep 17 00:00:00 2001 From: Georg Richter Date: Fri, 13 Aug 2004 16:25:29 +0000 Subject: [PATCH] fixed bug #29656 (segfault on result and statement properties) --- ext/mysqli/mysqli.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c index 31dad77233..154c249246 100644 --- a/ext/mysqli/mysqli.c +++ b/ext/mysqli/mysqli.c @@ -200,11 +200,22 @@ 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