summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAlexey Kopytov <alexeyk@mysql.com>2008-12-10 19:16:40 +0300
committerAlexey Kopytov <alexeyk@mysql.com>2008-12-10 19:16:40 +0300
commita81a01583175d84a138e48eda6fddbc5ec85c9d5 (patch)
tree90f8c868d5fd39e1416743401976c0c8b11cfc23 /tests
parent684218b004760e6c4d7140be85373c234a51176e (diff)
parent84de3b930bcae8af7a7b5613dd8be514afbb8661 (diff)
downloadmariadb-git-a81a01583175d84a138e48eda6fddbc5ec85c9d5.tar.gz
Pull from mysql-5.0-bugteam.
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 ee3a053f8bd..ea4d363bdac 100644
--- a/tests/mysql_client_test.c
+++ b/tests/mysql_client_test.c
@@ -15899,6 +15899,59 @@ static void test_bug28934()
}
+/**
+ 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)
*/
@@ -16595,6 +16648,7 @@ static struct my_tests_st my_tests[]= {
{ "test_bug32265", test_bug32265 },
{ "test_bug38486", test_bug38486 },
{ "test_bug40365", test_bug40365 },
+ { "test_bug37956", test_bug37956 },
{ 0, 0 }
};