1
0
mirror of https://github.com/php/php-src.git synced 2026-03-28 10:12:18 +01:00

fix #36420 (segfault when access result->num_rows after calling result->close())

This commit is contained in:
Antony Dovgal
2006-02-16 16:08:52 +00:00
parent 2b24ddb6a3
commit 29d3ee55d5
2 changed files with 48 additions and 2 deletions

View File

@@ -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; \

View File

@@ -0,0 +1,25 @@
--TEST--
bug #36420 (segfault when access result->num_rows after calling result->close())
--SKIPIF--
<?php require_once('skipif.inc'); ?>
--FILE--
<?php
include "connect.inc";
$mysqli = mysqli_connect($host, $user, $passwd);
$result = $mysqli->query('select 1');
$result->close();
echo $result->num_rows;
$mysqli->close();
echo $result->num_rows;
echo "Done\n";
?>
--EXPECTF--
Warning: main(): Couldn't fetch mysqli_result in %s on line %d
Warning: main(): Couldn't fetch mysqli_result in %s on line %d
Done