summaryrefslogtreecommitdiff
path: root/ext/mysqli/mysqli.c
diff options
context:
space:
mode:
authorGeorg Richter <georg@php.net>2004-08-13 16:25:29 +0000
committerGeorg Richter <georg@php.net>2004-08-13 16:25:29 +0000
commit1593aa0e5e962067887caa277752454adabb4a0f (patch)
tree0360f42fd54df8f840fe1fc5aabd4f536c8d37fd /ext/mysqli/mysqli.c
parente511b57e2a95f894be59d1a0a6b784ee45b16e0b (diff)
downloadphp-git-1593aa0e5e962067887caa277752454adabb4a0f.tar.gz
fixed bug #29656 (segfault on result and statement properties)
Diffstat (limited to 'ext/mysqli/mysqli.c')
-rw-r--r--ext/mysqli/mysqli.c21
1 files 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);