diff options
author | unknown <gluh@eagle.intranet.mysql.r18.ru> | 2006-03-29 19:52:26 +0500 |
---|---|---|
committer | unknown <gluh@eagle.intranet.mysql.r18.ru> | 2006-03-29 19:52:26 +0500 |
commit | 2aeb42065eb732ce26ab3ceeb74f5497bf506247 (patch) | |
tree | 7fad6f415c7231b1eeb99553dcf4cbaa4218a58e /sql/sql_table.cc | |
parent | 2036db2a40fd6cb9c0266c442fed866011fee690 (diff) | |
download | mariadb-git-2aeb42065eb732ce26ab3ceeb74f5497bf506247.tar.gz |
Fix for bug#15316 SET value having comma not correctly handled
disallow the use of comma in SET members
mysql-test/r/create.result:
Fix for bug#15316 SET value having comma not correctly handled
test case
mysql-test/t/create.test:
Fix for bug#15316 SET value having comma not correctly handled
test case
Diffstat (limited to 'sql/sql_table.cc')
-rw-r--r-- | sql/sql_table.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 616db8b0424..21f597caf94 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -540,6 +540,11 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info, sql_field->interval_list); List_iterator<String> it(sql_field->interval_list); String conv, *tmp; + char comma_buf[2]; + int comma_length= cs->cset->wc_mb(cs, ',', (uchar*) comma_buf, + (uchar*) comma_buf + + sizeof(comma_buf)); + DBUG_ASSERT(comma_length > 0); for (uint i= 0; (tmp= it++); i++) { if (String::needs_conversion(tmp->length(), tmp->charset(), @@ -559,6 +564,18 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info, interval->type_lengths[i]); interval->type_lengths[i]= lengthsp; ((uchar *)interval->type_names[i])[lengthsp]= '\0'; + if (sql_field->sql_type == FIELD_TYPE_SET) + { + if (cs->coll->instr(cs, interval->type_names[i], + interval->type_lengths[i], + comma_buf, comma_length, NULL, 0)) + { + my_printf_error(ER_UNKNOWN_ERROR, + "Illegal %s '%-.64s' value found during parsing", + MYF(0), "set", tmp->ptr()); + DBUG_RETURN(-1); + } + } } sql_field->interval_list.empty(); // Don't need interval_list anymore } |