diff options
author | unknown <monty@mysql.com> | 2004-04-28 03:37:45 +0300 |
---|---|---|
committer | unknown <monty@mysql.com> | 2004-04-28 03:37:45 +0300 |
commit | b0a8fde89732a11475144f0f2ab88acedcebdf86 (patch) | |
tree | 2b509e76781756629036bcda0b2d4095f6d393d6 /sql/table.cc | |
parent | b825d9b023071039dfbda8324427102533319cb4 (diff) | |
download | mariadb-git-b0a8fde89732a11475144f0f2ab88acedcebdf86.tar.gz |
Fixed stack overrun with some INSERT ... SELECT ... GROUP BY queries (Bug #3265)
Ensure that raid_chunks is not set to higher than 255 as this could cause problems with DROP DATABASE. (Bug #3182)
mysql-test/r/raid.result:
Test of raid_chunks > 255
mysql-test/t/raid.test:
Test of raid_chunks > 255
sql/item.cc:
Fixed wrong usage of str_value in Item::save_in_field
This could caused a stack overrun with some very special INSERT ... SELECT ... GROUP BY queries where the GROUP BY value was an expression that generated a NULL value. (Bug #3265)
The Item_copy_string::save_in_field() function is from 4.1 and helps optimized this case a bit
sql/item.h:
Fixed wrong usage of str_value in Item_copy_string::save_in_field
sql/sql_insert.cc:
More debug information
sql/table.cc:
Ensure that raid_chunks is not set to higher than 255 as this could cause problems with DROP DATABASE.
Another problem with values > 255 is that in the .frm file we store the chunks value in one byte.
(Bug #3182)
Diffstat (limited to 'sql/table.cc')
-rw-r--r-- | sql/table.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sql/table.cc b/sql/table.cc index 01a09426634..7e6338a3f3f 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -1040,6 +1040,11 @@ File create_frm(register my_string name, uint reclength, uchar *fileinfo, if (create_info->min_rows > ~(ulong) 0) create_info->min_rows= ~(ulong) 0; #endif + /* + Ensure that raid_chunks can't be larger than 255, as this would cause + problems with drop database + */ + set_if_smaller(create_info->raid_chunks, 255); if ((file=my_create(name,CREATE_MODE,O_RDWR | O_TRUNC,MYF(MY_WME))) >= 0) { |