mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 23:04:20 +01:00
Add test case for BUG#27592: stack overrun when storing datetime
value using prepared statements.
This commit is contained in:
parent
b9a3431048
commit
6dce2955f1
1 changed files with 54 additions and 0 deletions
|
@ -15623,6 +15623,59 @@ static void test_bug27876()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Bug#27592 (stack overrun when storing datetime value using prepared statements)
|
||||||
|
*/
|
||||||
|
|
||||||
|
static void test_bug27592()
|
||||||
|
{
|
||||||
|
const int NUM_ITERATIONS= 40;
|
||||||
|
int i;
|
||||||
|
int rc;
|
||||||
|
MYSQL_STMT *stmt= NULL;
|
||||||
|
MYSQL_BIND bind[1];
|
||||||
|
MYSQL_TIME time_val;
|
||||||
|
|
||||||
|
DBUG_ENTER("test_bug27592");
|
||||||
|
myheader("test_bug27592");
|
||||||
|
|
||||||
|
mysql_query(mysql, "DROP TABLE IF EXISTS t1");
|
||||||
|
mysql_query(mysql, "CREATE TABLE t1(c2 DATETIME)");
|
||||||
|
|
||||||
|
stmt= mysql_simple_prepare(mysql, "INSERT INTO t1 VALUES (?)");
|
||||||
|
DIE_UNLESS(stmt);
|
||||||
|
|
||||||
|
memset(bind, 0, sizeof(bind));
|
||||||
|
|
||||||
|
bind[0].buffer_type= MYSQL_TYPE_DATETIME;
|
||||||
|
bind[0].buffer= (char *) &time_val;
|
||||||
|
bind[0].length= NULL;
|
||||||
|
|
||||||
|
for (i= 0; i < NUM_ITERATIONS; i++)
|
||||||
|
{
|
||||||
|
time_val.year=1000+lrand48()%1000;
|
||||||
|
time_val.month=1+lrand48()%12;
|
||||||
|
time_val.day=1+lrand48()%31;
|
||||||
|
time_val.hour=lrand48()%23;
|
||||||
|
time_val.minute=lrand48()%59;
|
||||||
|
time_val.second=lrand48()%59;
|
||||||
|
|
||||||
|
time_val.second_part=0;
|
||||||
|
time_val.neg=0;
|
||||||
|
|
||||||
|
rc= mysql_stmt_bind_param(stmt, bind);
|
||||||
|
check_execute(stmt, rc);
|
||||||
|
|
||||||
|
rc= mysql_stmt_execute(stmt);
|
||||||
|
check_execute(stmt, rc);
|
||||||
|
}
|
||||||
|
|
||||||
|
mysql_stmt_close(stmt);
|
||||||
|
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Read and parse arguments and MySQL options from my.cnf
|
Read and parse arguments and MySQL options from my.cnf
|
||||||
*/
|
*/
|
||||||
|
@ -15904,6 +15957,7 @@ static struct my_tests_st my_tests[]= {
|
||||||
{ "test_bug21635", test_bug21635 },
|
{ "test_bug21635", test_bug21635 },
|
||||||
{ "test_bug24179", test_bug24179 },
|
{ "test_bug24179", test_bug24179 },
|
||||||
{ "test_bug27876", test_bug27876 },
|
{ "test_bug27876", test_bug27876 },
|
||||||
|
{ "test_bug27592", test_bug27592 },
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue