Kouhei Sutou
null+****@clear*****
Thu Oct 4 10:48:52 JST 2012
Kouhei Sutou 2012-03-07 19:33:44 +0900 (Wed, 07 Mar 2012) New Revision: a5393e7d7541eaab984351ed438c52af567c8710 https://github.com/mroonga/mroonga/commit/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) ) { -------------- next part -------------- HTML����������������������������...Download