diff options
| author | Antony Dovgal <tony2001@php.net> | 2006-02-16 20:58:59 +0000 |
|---|---|---|
| committer | Antony Dovgal <tony2001@php.net> | 2006-02-16 20:58:59 +0000 |
| commit | 1e8aad5075ff3cdc063fbcbd238f2dce41f6d92a (patch) | |
| tree | 4b12fc6a19047a7da23dd8cff3d95740d547bc84 /ext/mysqli/mysqli_prop.c | |
| parent | ce9dfedc69ab6d45973d38758e253ff64ec87d69 (diff) | |
| download | php-git-1e8aad5075ff3cdc063fbcbd238f2dce41f6d92a.tar.gz | |
MFH: add checks and fix possible reincarnations of bug #36420
Diffstat (limited to 'ext/mysqli/mysqli_prop.c')
| -rw-r--r-- | ext/mysqli/mysqli_prop.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/ext/mysqli/mysqli_prop.c b/ext/mysqli/mysqli_prop.c index 3318944cc7..19db5bc1de 100644 --- a/ext/mysqli/mysqli_prop.c +++ b/ext/mysqli/mysqli_prop.c @@ -40,13 +40,34 @@ MYSQL *p; \ ALLOC_ZVAL(*retval);\ CHECK_OBJECT();\ -p = (MYSQL *)((MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->mysql; +if (!obj->ptr || !(MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr) { \ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", obj->zo.ce->name);\ + ZVAL_NULL(*retval);\ + return SUCCESS; \ +} else if (!obj->valid) { \ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid resource %s", obj->zo.ce->name);\ + ZVAL_NULL(*retval);\ + return SUCCESS; \ +} else { \ + p = (MYSQL *)((MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->mysql; \ +} #define MYSQLI_GET_RESULT() \ MYSQL_RES *p; \ ALLOC_ZVAL(*retval);\ CHECK_OBJECT();\ -p = (MYSQL_RES *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr +if (!obj->ptr) { \ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", obj->zo.ce->name);\ + ZVAL_NULL(*retval);\ + return SUCCESS; \ +} else if (!obj->valid) { \ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid resource %s", obj->zo.ce->name);\ + ZVAL_NULL(*retval);\ + return SUCCESS; \ +} else { \ + p = (MYSQL_RES *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr; \ +} + #define MYSQLI_GET_STMT() \ MYSQL_STMT *p; \ |
