summaryrefslogtreecommitdiff
path: root/libmysql
diff options
context:
space:
mode:
authorunknown <andrey@lmy004.>2006-02-01 20:35:16 +0100
committerunknown <andrey@lmy004.>2006-02-01 20:35:16 +0100
commit1e686ae7702d297cc9fd261c42864653f4fdd7b3 (patch)
tree59375d95c601aec43e46d08deb88028599227821 /libmysql
parentc98077d6101c7dc2b364e0536b1e675dc76d8f0f (diff)
downloadmariadb-git-1e686ae7702d297cc9fd261c42864653f4fdd7b3.tar.gz
fix for bug #12744 (MYSQL_STMT operations cause seg fault after connection reset)
libmysql/libmysql.c: stmt->mysql could be 0x0 if the connection has failed between prepare and execute or any other operation. thus if the user decides to use mysql_stmt_reset() we should not segfault. tests/mysql_client_test.c: test for bug #12744 (MYSQL_STMT operations cause seg fault after connection reset)
Diffstat (limited to 'libmysql')
-rw-r--r--libmysql/libmysql.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c
index 921f042922a..498881aa947 100644
--- a/libmysql/libmysql.c
+++ b/libmysql/libmysql.c
@@ -4628,6 +4628,12 @@ my_bool STDCALL mysql_stmt_reset(MYSQL_STMT *stmt)
/* If statement hasnt been prepared there is nothing to reset */
if ((int) stmt->state < (int) MYSQL_STMT_PREPARE_DONE)
DBUG_RETURN(0);
+ if (!stmt->mysql)
+ {
+ /* mysql can be reset in mysql_close called from mysql_reconnect */
+ set_stmt_error(stmt, CR_SERVER_LOST, unknown_sqlstate);
+ DBUG_RETURN(1);
+ }
mysql= stmt->mysql->last_used_con;
int4store(buff, stmt->stmt_id); /* Send stmt id to server */