summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSergey Glukhov <Sergey.Glukhov@sun.com>2008-12-10 18:16:21 +0400
committerSergey Glukhov <Sergey.Glukhov@sun.com>2008-12-10 18:16:21 +0400
commit1ca1439270dbb5803d27f3a76d860dc71ddf2b3f (patch)
tree8abe3642a804bb1509dc5b24c92dbcf481901104 /tests
parent83b1f54508d3ae0ba0e7e688c6e8e389718400c5 (diff)
parent84de3b930bcae8af7a7b5613dd8be514afbb8661 (diff)
downloadmariadb-git-1ca1439270dbb5803d27f3a76d860dc71ddf2b3f.tar.gz
5.0-bugteam->5.1-bugteam merge
Diffstat (limited to 'tests')
-rw-r--r--tests/mysql_client_test.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c
index 94ede2a625b..54fd71b6de3 100644
--- a/tests/mysql_client_test.c
+++ b/tests/mysql_client_test.c
@@ -16552,6 +16552,59 @@ static void test_change_user()
DBUG_VOID_RETURN;
}
+/**
+ Bug#37956 memory leak and / or crash with geometry and prepared statements!
+*/
+
+static void test_bug37956(void)
+{
+ const char *query="select point(?,?)";
+ MYSQL_STMT *stmt=NULL;
+ unsigned int val=0;
+ MYSQL_BIND bind_param[2];
+ unsigned char buff[2]= { 134, 211 };
+ DBUG_ENTER("test_bug37956");
+ myheader("test_bug37956");
+
+ stmt= mysql_simple_prepare(mysql, query);
+ check_stmt(stmt);
+
+ val=1;
+ mysql_stmt_attr_set(stmt, STMT_ATTR_UPDATE_MAX_LENGTH, (void *)&val);
+ val=CURSOR_TYPE_READ_ONLY;
+ mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (void *)&val);
+ val=0;
+ mysql_stmt_attr_set(stmt, STMT_ATTR_PREFETCH_ROWS, (void *)&val);
+
+ memset(bind_param, 0, sizeof(bind_param));
+ bind_param[0].buffer_type=MYSQL_TYPE_TINY;
+ bind_param[0].buffer= (void *)buff;
+ bind_param[0].is_null=NULL;
+ bind_param[0].error=NULL;
+ bind_param[0].is_unsigned=1;
+ bind_param[1].buffer_type=MYSQL_TYPE_TINY;
+ bind_param[1].buffer= (void *)(buff+1);
+ bind_param[1].is_null=NULL;
+ bind_param[1].error=NULL;
+ bind_param[1].is_unsigned=1;
+
+ if (mysql_stmt_bind_param(stmt, bind_param))
+ {
+ mysql_stmt_close(stmt);
+ DIE_UNLESS(0);
+ }
+
+ if (mysql_stmt_execute(stmt))
+ {
+ mysql_stmt_close(stmt);
+ DBUG_VOID_RETURN;
+ }
+ /* Should never reach here: execution returns an error. */
+ mysql_stmt_close(stmt);
+ DIE_UNLESS(0);
+ DBUG_VOID_RETURN;
+}
+
/*
Bug#27592 (stack overrun when storing datetime value using prepared statements)
*/
@@ -17967,6 +18020,7 @@ static struct my_tests_st my_tests[]= {
{ "test_wl4166_2", test_wl4166_2 },
{ "test_bug38486", test_bug38486 },
{ "test_bug40365", test_bug40365 },
+ { "test_bug37956", test_bug37956 },
{ 0, 0 }
};