summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
authorunknown <cmiller@zippy.cornsilk.net>2008-03-31 14:32:56 -0400
committerunknown <cmiller@zippy.cornsilk.net>2008-03-31 14:32:56 -0400
commitc704e8bdd7d583e86efb7bae7f391a798c871ffa (patch)
tree8312084c71fe1f55eaac7764c3ff21720d9e645c /sql/field.cc
parenta97875e55271324588448139e34e0db928213f15 (diff)
parent73e1c5ae10994373df5d929974be02edffae70e6 (diff)
downloadmariadb-git-c704e8bdd7d583e86efb7bae7f391a798c871ffa.tar.gz
Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my50-bug15776
into zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my51-bug15776 mysql-test/r/type_blob.result: Auto merged mysql-test/t/type_blob.test: Auto merged sql/field.cc: Auto merged sql/unireg.h: Auto merged sql/item_create.cc: Manual merge. sql/share/errmsg.txt: Manual merge. sql/sql_yacc.yy: Manual merge.
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc16
1 files changed, 14 insertions, 2 deletions
diff --git a/sql/field.cc b/sql/field.cc
index 3213f84ee3e..a7a76d6c950 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -8772,8 +8772,20 @@ bool Create_field::init(THD *thd, char *fld_name, enum_field_types fld_type,
(fld_type_modifier & NOT_NULL_FLAG) && fld_type != MYSQL_TYPE_TIMESTAMP)
flags|= NO_DEFAULT_VALUE_FLAG;
- if (fld_length && !(length= (uint) atoi(fld_length)))
- fld_length= 0; /* purecov: inspected */
+ if (fld_length != 0)
+ {
+ errno= 0;
+ length= strtoul(fld_length, NULL, 10);
+ if (errno != 0)
+ {
+ my_error(ER_TOO_BIG_DISPLAYWIDTH, MYF(0), fld_name, MAX_FIELD_BLOBLENGTH);
+ DBUG_RETURN(TRUE);
+ }
+
+ if (length == 0)
+ fld_length= 0; /* purecov: inspected */
+ }
+
sign_len= fld_type_modifier & UNSIGNED_FLAG ? 0 : 1;
switch (fld_type) {