diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index f68c4d862d5..95ed97bda05 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -5450,7 +5450,8 @@ bool write_log_add_change_partition(ALTER_PARTITION_PARAM_TYPE *lpt) { partition_info *part_info= lpt->part_info; - TABLE_LOG_MEMORY_ENTRY *log_entry, *exec_log_entry; + TABLE_LOG_MEMORY_ENTRY *log_entry; + TABLE_LOG_MEMORY_ENTRY *exec_log_entry= NULL; char tmp_path[FN_LEN]; char path[FN_LEN]; uint next_entry= 0; @@ -5779,7 +5780,7 @@ uint fast_alter_partition_table(THD *thd, TABLE *table, ERROR_INJECT_CRASH("crash_drop_partition_2") || write_log_drop_partition(lpt) || ERROR_INJECT_CRASH("crash_drop_partition_3") || - (not_completed= FALSE) || + ((not_completed= FALSE), FALSE) || abort_and_upgrade_lock(lpt) || ((!thd->lex->no_write_to_binlog) && (write_bin_log(thd, FALSE, @@ -5796,6 +5797,7 @@ uint fast_alter_partition_table(THD *thd, TABLE *table, ERROR_INJECT_CRASH("crash_drop_partition_8") || (mysql_wait_completed_table(lpt, table), FALSE)) { + abort(); if (!not_completed) abort(); fast_alter_partition_error_handler(lpt); @@ -5845,7 +5847,7 @@ uint fast_alter_partition_table(THD *thd, TABLE *table, thd->query, thd->query_length), FALSE)) || ERROR_INJECT_CRASH("crash_add_partition_4") || write_log_rename_frm(lpt) || - (not_completed= FALSE) || + ((not_completed= FALSE), FALSE) || ERROR_INJECT_CRASH("crash_add_partition_5") || mysql_write_frm(lpt, WFRM_INSTALL_SHADOW) || ERROR_INJECT_CRASH("crash_add_partition_6") || @@ -5853,6 +5855,7 @@ uint fast_alter_partition_table(THD *thd, TABLE *table, write_log_completed(lpt) || ERROR_INJECT_CRASH("crash_add_partition_7")) { + abort(); if (!not_completed) abort(); fast_alter_partition_error_handler(lpt); @@ -5923,7 +5926,7 @@ uint fast_alter_partition_table(THD *thd, TABLE *table, ERROR_INJECT_CRASH("crash_change_partition_3") || write_log_final_change_partition(lpt) || ERROR_INJECT_CRASH("crash_change_partition_4") || - (not_completed= FALSE) || + ((not_completed= FALSE), FALSE) || abort_and_upgrade_lock(lpt) || ((!thd->lex->no_write_to_binlog) && (write_bin_log(thd, FALSE, @@ -5943,6 +5946,7 @@ uint fast_alter_partition_table(THD *thd, TABLE *table, ERROR_INJECT_CRASH("crash_change_partition_11") || (mysql_wait_completed_table(lpt, table), FALSE)) { + abort(); if (!not_completed) abort(); fast_alter_partition_error_handler(lpt); diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 4568b6a92ae..260d1650f20 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -641,14 +641,19 @@ write_table_log_entry(TABLE_LOG_ENTRY *table_log_entry, global_table_log.file_entry[1]= table_log_entry->action_type; int4store(&global_table_log.file_entry[2], table_log_entry->next_entry); - strcpy(&global_table_log.file_entry[6], table_log_entry->name); + DBUG_ASSERT(strlen(table_log_entry->name) < FN_LEN); + strncpy(&global_table_log.file_entry[6], table_log_entry->name, FN_LEN); if (table_log_entry->action_type == 'r') - strcpy(&global_table_log.file_entry[6 + FN_LEN], - table_log_entry->from_name); + { + DBUG_ASSERT(strlen(table_log_entry->from_name) < FN_LEN); + strncpy(&global_table_log.file_entry[6 + FN_LEN], + table_log_entry->from_name, FN_LEN); + } else global_table_log.file_entry[6 + FN_LEN]= 0; - strcpy(&global_table_log.file_entry[6 + (2*FN_LEN)], - table_log_entry->handler_type); + DBUG_ASSERT(strlen(table_log_entry->handler_type) < FN_LEN); + strncpy(&global_table_log.file_entry[6 + (2*FN_LEN)], + table_log_entry->handler_type, FN_LEN); if (get_free_table_log_entry(active_entry, &write_header)) { DBUG_RETURN(TRUE);