mirror of
https://github.com/MariaDB/server.git
synced 2026-05-06 15:15:34 +02:00
Fix for bug #6081 "Call to deprecated mysql_create_db() function crashes
server".
Altough mysql_create_db()/mysql_drop_db() API calls are deprecated
since 4.0, they should not crash server and should not stall connection
in case of errors.
sql/sql_parse.cc:
Handling of COM_CREATE_DB, COM_DROP_DB:
mysql_create_db() requires from its second parameter to be non-zero.
We also should call send_error() if mysql_create_db or mysql_drop_db
return error (like we do it for SQL versions of these commands).
tests/client_test.c:
Added test for bug #6081 "Execution of deprecated mysql_create_db()
crashes server".
This commit is contained in:
parent
221d51ebb1
commit
07c7aadf44
2 changed files with 36 additions and 2 deletions
|
|
@ -10541,6 +10541,33 @@ static void test_bug5315()
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
Altough mysql_create_db(), mysql_rm_db() are deprecated since 4.0 they
|
||||
should not crash server and should not hang in case of errors.
|
||||
|
||||
Since those functions can't be seen in modern API (unless client library
|
||||
was compiled with USE_OLD_FUNCTIONS define) we use simple_command() macro.
|
||||
*/
|
||||
static void test_bug6081()
|
||||
{
|
||||
int rc;
|
||||
myheader("test_bug6081");
|
||||
|
||||
rc= simple_command(mysql, COM_DROP_DB, current_db,
|
||||
(ulong)strlen(current_db), 0);
|
||||
myquery(rc);
|
||||
rc= simple_command(mysql, COM_DROP_DB, current_db,
|
||||
(ulong)strlen(current_db), 0);
|
||||
myquery_r(rc);
|
||||
rc= simple_command(mysql, COM_CREATE_DB, current_db,
|
||||
(ulong)strlen(current_db), 0);
|
||||
myquery(rc);
|
||||
rc= simple_command(mysql, COM_CREATE_DB, current_db,
|
||||
(ulong)strlen(current_db), 0);
|
||||
myquery_r(rc);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Read and parse arguments and MySQL options from my.cnf
|
||||
*/
|
||||
|
|
@ -10851,6 +10878,7 @@ int main(int argc, char **argv)
|
|||
test_bug5194(); /* bulk inserts in prepared mode */
|
||||
test_bug5315(); /* check that mysql_change_user closes all
|
||||
prepared statements */
|
||||
test_bug6081(); /* test of mysql_create_db()/mysql_rm_db() */
|
||||
/*
|
||||
XXX: PLEASE RUN THIS PROGRAM UNDER VALGRIND AND VERIFY THAT YOUR TEST
|
||||
DOESN'T CONTAIN WARNINGS/ERRORS BEFORE YOU PUSH.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue