mirror of
https://github.com/php/php-src.git
synced 2024-09-23 02:47:26 +00:00
Fix a segfault when using a mysqli object after unsuccesssful connect, the
handle should have been allocated with mysqli_init().
This commit is contained in:
parent
42c14bf473
commit
293ba72451
@ -69,6 +69,7 @@ void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_conne
|
||||
zend_bool new_connection = FALSE;
|
||||
zend_rsrc_list_entry *le;
|
||||
mysqli_plist_entry *plist = NULL;
|
||||
zend_bool self_alloced = 0;
|
||||
|
||||
|
||||
#if !defined(MYSQL_USE_MYSQLND)
|
||||
@ -99,6 +100,7 @@ void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_conne
|
||||
}
|
||||
if (!mysql) {
|
||||
mysql = (MY_MYSQL *) ecalloc(1, sizeof(MY_MYSQL));
|
||||
self_alloced = 1;
|
||||
}
|
||||
flags |= CLIENT_MULTI_RESULTS; /* needed for mysql_multi_query() */
|
||||
} else {
|
||||
@ -243,6 +245,7 @@ void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_conne
|
||||
if (!is_real_connect) {
|
||||
/* free mysql structure */
|
||||
mysqli_close(mysql->mysql, MYSQLI_CLOSE_DISCONNECTED);
|
||||
mysql->mysql = NULL;
|
||||
}
|
||||
goto err;
|
||||
}
|
||||
@ -292,7 +295,7 @@ err:
|
||||
mysql->hash_key = NULL;
|
||||
mysql->persistent = FALSE;
|
||||
}
|
||||
if (!is_real_connect) {
|
||||
if (!is_real_connect && self_alloced) {
|
||||
efree(mysql);
|
||||
}
|
||||
RETVAL_FALSE;
|
||||
|
@ -268,7 +268,7 @@ void php_mysqlnd_rowp_read_text_protocol(MYSQLND_MEMORY_POOL_CHUNK * row_buffer,
|
||||
|
||||
|
||||
PHPAPI MYSQLND_PROTOCOL * mysqlnd_protocol_init(zend_bool persistent TSRMLS_DC);
|
||||
PHPAPI void mysqlnd_protocol_free(MYSQLND_PROTOCOL * const protocol TSRMLS_DC)
|
||||
PHPAPI void mysqlnd_protocol_free(MYSQLND_PROTOCOL * const protocol TSRMLS_DC);
|
||||
|
||||
|
||||
#endif /* MYSQLND_WIREPROTOCOL_H */
|
||||
|
Loading…
Reference in New Issue
Block a user