diff options
| author | Georg Richter <georg@php.net> | 2004-08-13 16:25:29 +0000 |
|---|---|---|
| committer | Georg Richter <georg@php.net> | 2004-08-13 16:25:29 +0000 |
| commit | 1593aa0e5e962067887caa277752454adabb4a0f (patch) | |
| tree | 0360f42fd54df8f840fe1fc5aabd4f536c8d37fd /ext/mysqli/mysqli.c | |
| parent | e511b57e2a95f894be59d1a0a6b784ee45b16e0b (diff) | |
| download | php-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.c | 21 |
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); |
