null+****@clear*****
null+****@clear*****
2012年 3月 7日 (水) 19:33:44 JST
Kouhei Sutou 2012-03-07 19:33:44 +0900 (Wed, 07 Mar 2012)
New Revision: a5393e7d7541eaab984351ed438c52af567c8710
Log:
mariadb: fix crash
refs #1304
Reported by Kazuhiko Shiozaki. Thanks!!!
Modified files:
ha_mroonga.cc
mrn_table.cc
Modified: ha_mroonga.cc (+4 -2)
===================================================================
--- ha_mroonga.cc 2012-03-07 11:53:30 +0900 (5e4634b)
+++ ha_mroonga.cc 2012-03-07 19:33:44 +0900 (46ccddc)
@@ -2053,8 +2053,10 @@ int ha_mroonga::create_share_for_create() const
memset(&table_share_for_create, 0, sizeof(TABLE_SHARE));
init_alloc_root(&mem_root_for_create, 1024, 0);
analyzed_for_create = TRUE;
- share_for_create.table_name = table_list->table_name;
- share_for_create.table_name_length = table_list->table_name_length;
+ if (table_list) {
+ share_for_create.table_name = table_list->table_name;
+ share_for_create.table_name_length = table_list->table_name_length;
+ }
share_for_create.table_share = &table_share_for_create;
table_share_for_create.comment = create_info->comment;
table_share_for_create.connect_string = create_info->connect_string;
Modified: mrn_table.cc (+5 -3)
===================================================================
--- mrn_table.cc 2012-03-07 11:53:30 +0900 (f74584a)
+++ mrn_table.cc 2012-03-07 19:33:44 +0900 (eb511c2)
@@ -177,7 +177,7 @@ void mrn_get_partition_info(const char *table_name, uint table_name_length,
if (!part_info)
DBUG_VOID_RETURN;
- if (!memcmp(table_name + table_name_length - 5, "#TMP#", 5))
+ if (table_name && !memcmp(table_name + table_name_length - 5, "#TMP#", 5))
tmp_flg = TRUE;
DBUG_PRINT("info", ("mroonga table_name=%s", table_name));
@@ -193,10 +193,11 @@ void mrn_get_partition_info(const char *table_name, uint table_name_length,
(*part_elem)->partition_name, (*sub_elem)->partition_name,
NORMAL_PART_NAME);
DBUG_PRINT("info", ("mroonga tmp_name=%s", tmp_name));
- if (!memcmp(table_name, tmp_name, table_name_length + 1))
+ if (table_name && !memcmp(table_name, tmp_name, table_name_length + 1))
DBUG_VOID_RETURN;
if (
tmp_flg &&
+ table_name &&
*(tmp_name + table_name_length - 5) == '\0' &&
!memcmp(table_name, tmp_name, table_name_length - 5)
) {
@@ -210,10 +211,11 @@ void mrn_get_partition_info(const char *table_name, uint table_name_length,
create_partition_name(tmp_name, table->s->path.str,
(*part_elem)->partition_name, NORMAL_PART_NAME, TRUE);
DBUG_PRINT("info", ("mroonga tmp_name=%s", tmp_name));
- if (!memcmp(table_name, tmp_name, table_name_length + 1))
+ if (table_name && !memcmp(table_name, tmp_name, table_name_length + 1))
DBUG_VOID_RETURN;
if (
tmp_flg &&
+ table_name &&
*(tmp_name + table_name_length - 5) == '\0' &&
!memcmp(table_name, tmp_name, table_name_length - 5)
) {