diff options
author | gkodinov/kgeorge@magare.gmz <> | 2007-07-05 18:24:48 +0300 |
---|---|---|
committer | gkodinov/kgeorge@magare.gmz <> | 2007-07-05 18:24:48 +0300 |
commit | 1532452a00e49a71880707f4ae279d19aab14724 (patch) | |
tree | 6e27b6c33885046dbc55c5dac0b78be8aee3489c /sql | |
parent | eb454f85d96666f2116e683c2e016d6dfcf83854 (diff) | |
download | mariadb-git-1532452a00e49a71880707f4ae279d19aab14724.tar.gz |
Bug #29166:
AsText() needs to know the maximum number of
characters a IEEE double precision value can
occupy to make sure there's enough buffer space.
The number was too small to hold all possible
values and this caused buffer overruns.
Fixed by correcting the calculation of the
maximum digits in a string representation of an
IEEE double precision value as printed by
String::qs_append(double).
Diffstat (limited to 'sql')
-rw-r--r-- | sql/spatial.cc | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/sql/spatial.cc b/sql/spatial.cc index 939e7d2a3b4..69d0c15748a 100644 --- a/sql/spatial.cc +++ b/sql/spatial.cc @@ -17,7 +17,28 @@ #ifdef HAVE_SPATIAL -#define MAX_DIGITS_IN_DOUBLE 16 +/* + exponential notation : + 1 sign + 1 number before the decimal point + 1 decimal point + 14 number of significant digits (see String::qs_append(double)) + 1 'e' sign + 1 exponent sign + 3 exponent digits + == + 22 + + "f" notation : + 1 optional 0 + 1 sign + 14 number significant digits (see String::qs_append(double) ) + 1 decimal point + == + 17 +*/ + +#define MAX_DIGITS_IN_DOUBLE 22 /***************************** Gis_class_info *******************************/ |