From 85ff99087b33995f15de968e2e89c81ef446d8d6 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Fri, 28 Feb 2014 09:54:37 +0100 Subject: PHP duplicate 5.5 tree for 5.6 --- php-5.5.10-bug66762.patch | 97 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 php-5.5.10-bug66762.patch (limited to 'php-5.5.10-bug66762.patch') diff --git a/php-5.5.10-bug66762.patch b/php-5.5.10-bug66762.patch new file mode 100644 index 0000000..f45f44f --- /dev/null +++ b/php-5.5.10-bug66762.patch @@ -0,0 +1,97 @@ +diff -up ext/mysqli/mysqli_api.c.orig ext/mysqli/mysqli_api.c +--- ext/mysqli/mysqli_api.c.orig 2014-02-05 11:00:36.000000000 +0100 ++++ ext/mysqli/mysqli_api.c 2014-02-25 08:16:43.597710792 +0100 +@@ -1869,6 +1869,10 @@ PHP_FUNCTION(mysqli_prepare) + efree(stmt); + RETURN_FALSE; + } ++#ifndef MYSQLI_USE_MYSQLND ++ stmt->link_handle = Z_OBJ_HANDLE(*mysql_link); ++ zend_objects_store_add_ref_by_handle(stmt->link_handle TSRMLS_CC); ++#endif + + mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); + mysqli_resource->ptr = (void *)stmt; +@@ -2413,6 +2417,10 @@ PHP_FUNCTION(mysqli_stmt_init) + efree(stmt); + RETURN_FALSE; + } ++#ifndef MYSQLI_USE_MYSQLND ++ stmt->link_handle = Z_OBJ_HANDLE(*mysql_link); ++ zend_objects_store_add_ref_by_handle(stmt->link_handle TSRMLS_CC); ++#endif + + mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); + mysqli_resource->status = MYSQLI_STATUS_INITIALIZED; +diff -up ext/mysqli/mysqli.c.orig ext/mysqli/mysqli.c +--- ext/mysqli/mysqli.c.orig 2014-02-05 11:00:36.000000000 +0100 ++++ ext/mysqli/mysqli.c 2014-02-25 08:21:37.336860837 +0100 +@@ -176,8 +176,11 @@ void php_clear_stmt_bind(MY_STMT *stmt T + php_free_stmt_bind_buffer(stmt->param, FETCH_SIMPLE); + /* Clean output bind */ + php_free_stmt_bind_buffer(stmt->result, FETCH_RESULT); +-#endif + ++ if (stmt->link_handle) { ++ zend_objects_store_del_ref_by_handle(stmt->link_handle TSRMLS_CC); ++ } ++#endif + if (stmt->query) { + efree(stmt->query); + } +@@ -1069,6 +1072,10 @@ PHP_FUNCTION(mysqli_stmt_construct) + efree(stmt); + RETURN_FALSE; + } ++#ifndef MYSQLI_USE_MYSQLND ++ stmt->link_handle = Z_OBJ_HANDLE(*mysql_link); ++ zend_objects_store_add_ref_by_handle(stmt->link_handle TSRMLS_CC); ++#endif + + mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); + mysqli_resource->ptr = (void *)stmt; +diff -up ext/mysqli/php_mysqli_structs.h.orig ext/mysqli/php_mysqli_structs.h +--- ext/mysqli/php_mysqli_structs.h.orig 2014-02-05 11:00:36.000000000 +0100 ++++ ext/mysqli/php_mysqli_structs.h 2014-02-25 08:16:43.598710795 +0100 +@@ -116,6 +116,10 @@ typedef struct { + BIND_BUFFER param; + BIND_BUFFER result; + char *query; ++#ifndef MYSQLI_USE_MYSQLND ++ /* used to manage refcount with libmysql (already implement in mysqlnd) */ ++ zend_object_handle link_handle; ++#endif + } MY_STMT; + + typedef struct { +diff -up ext/mysqli/tests/bug66762.phpt.orig ext/mysqli/tests/bug66762.phpt +--- ext/mysqli/tests/bug66762.phpt.orig 2014-02-25 08:16:17.118619251 +0100 ++++ ext/mysqli/tests/bug66762.phpt 2014-02-25 08:31:33.252385139 +0100 +@@ -0,0 +1,26 @@ ++--TEST-- ++Bug #66762 mysqli@libmysql segfault in mysqli_stmt::bind_result() when link closed ++--SKIPIF-- ++ ++--FILE-- ++prepare("SELECT 1"); ++ ++ var_dump($read_stmt->bind_result($data)); ++ ++ unset($mysqli); ++ var_dump($read_stmt->bind_result($data)); ++ ++?> ++done! ++--EXPECT-- ++bool(true) ++bool(true) ++done! +\ Pas de fin de ligne à la fin du fichier -- cgit