summaryrefslogtreecommitdiff
path: root/sql/partition_info.cc
diff options
context:
space:
mode:
authorMattias Jonsson <mattias.jonsson@oracle.com>2013-08-12 11:09:33 +0200
committerMattias Jonsson <mattias.jonsson@oracle.com>2013-08-12 11:09:33 +0200
commit9a132fa76c50c09c77989443d8609b858f634b98 (patch)
treea0025a0649839e34b15b58b01839fde631b906f8 /sql/partition_info.cc
parent343f74b90f61b81a388184536595e790fe98a773 (diff)
downloadmariadb-git-9a132fa76c50c09c77989443d8609b858f634b98.tar.gz
Bug#16860588:CRASH WITH CREATE TABLE ... LIKE ..
AND PARTITION VALUES IN (NULL) The code assumed there was at least one list element in LIST partitioned table. Fixed by checking the number of list elements.
Diffstat (limited to 'sql/partition_info.cc')
-rw-r--r--sql/partition_info.cc5
1 files changed, 2 insertions, 3 deletions
diff --git a/sql/partition_info.cc b/sql/partition_info.cc
index 7272978df1d..958f77f5bd0 100644
--- a/sql/partition_info.cc
+++ b/sql/partition_info.cc
@@ -2214,11 +2214,10 @@ int partition_info::fix_parser_data(THD *thd)
{
part_elem= it++;
List_iterator<part_elem_value> list_val_it(part_elem->list_val_list);
- j= 0;
num_elements= part_elem->list_val_list.elements;
DBUG_ASSERT(part_type == RANGE_PARTITION ?
num_elements == 1U : TRUE);
- do
+ for (j= 0; j < num_elements; j++)
{
part_elem_value *val= list_val_it++;
if (column_list)
@@ -2253,7 +2252,7 @@ int partition_info::fix_parser_data(THD *thd)
list_val_it.remove();
}
}
- } while (++j < num_elements);
+ }
} while (++i < num_parts);
DBUG_RETURN(FALSE);
}