summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
authorunknown <serg@serg.mylan>2004-05-11 12:39:00 +0200
committerunknown <serg@serg.mylan>2004-05-11 12:39:00 +0200
commita11e04c88bf94b669601163a794169d789bf7354 (patch)
treed5f6b8644b0907855e0dc918cc1ac8118b389d61 /sql/field.cc
parent75a87de04cdc8562f1259a0874eb41f28026c8f2 (diff)
downloadmariadb-git-a11e04c88bf94b669601163a794169d789bf7354.tar.gz
out-of-bound array access fixed
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/sql/field.cc b/sql/field.cc
index fdf314972c8..edaa29dbaa0 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -2307,7 +2307,8 @@ int Field_float::store(double nr)
}
else
{
- max_value= (log_10[field_length]-1)/log_10[dec];
+ uint tmp=min(field_length,array_elements(log_10)-1);
+ max_value= (log_10[tmp]-1)/log_10[dec];
/*
The following comparison is needed to not get an overflow if nr
is close to FLT_MAX
@@ -2607,7 +2608,8 @@ int Field_double::store(double nr)
}
else
{
- max_value= (log_10[field_length]-1)/log_10[dec];
+ uint tmp=min(field_length,array_elements(log_10)-1);
+ max_value= (log_10[tmp]-1)/log_10[dec];
if (fabs(nr) < DBL_MAX/10.0e+32)
nr= floor(nr*log_10[dec]+0.5)/log_10[dec];
}