diff options
-rw-r--r-- | include/config-win.h | 7 | ||||
-rw-r--r-- | sql/field.cc | 6 | ||||
-rw-r--r-- | sql/sql_analyse.cc | 3 | ||||
-rw-r--r-- | sql/sql_string.cc | 3 |
4 files changed, 13 insertions, 6 deletions
diff --git a/include/config-win.h b/include/config-win.h index 4c29f9a0a8c..eca0de680d8 100644 --- a/include/config-win.h +++ b/include/config-win.h @@ -222,8 +222,6 @@ inline double ulonglong2double(ulonglong value) #define HAVE_PERROR #define HAVE_VFPRINT -#define HAVE_SNPRINTF -#define _snprintf snprintf #define HAVE_CHSIZE /* System has chsize() function */ #define HAVE_RENAME /* Have rename() as function */ #define HAVE_BINARY_STREAMS /* Have "b" flag in streams */ @@ -248,6 +246,11 @@ inline double ulonglong2double(ulonglong value) #define HAVE_ALLOCA #define HAVE_COMPRESS +#ifdef NOT_USED +#define HAVE_SNPRINTF /* Gave link error */ +#define _snprintf snprintf +#endif + #ifdef _MSC_VER #define HAVE_LDIV /* The optimizer breaks in zortech for ldiv */ #define HAVE_ANSI_INCLUDE diff --git a/sql/field.cc b/sql/field.cc index 814a36e70a3..ba2362281ce 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -501,7 +501,8 @@ void Field_decimal::store(double nr) fyllchar = zerofill ? (char) '0' : (char) ' '; #ifdef HAVE_SNPRINTF_ - snprintf(buff,sizeof(buff), "%.*f",(int) dec,nr); + buff[sizeof(buff)-1]=0; // Safety + snprintf(buff,sizeof(buff)-1, "%.*f",(int) dec,nr); #else sprintf(buff,"%.*f",dec,nr); #endif @@ -2075,7 +2076,8 @@ String *Field_double::val_str(String *val_buffer, *to++= *pos++; #else #ifdef HAVE_SNPRINTF - snprintf(to,to_length,"%.*f",dec,nr); + buff[to_length-1]=0; // Safety + snprintf(to,to_length-1,"%.*f",dec,nr); #else sprintf(to,"%.*f",dec,nr); #endif diff --git a/sql/sql_analyse.cc b/sql/sql_analyse.cc index 96525822c52..de367e8c052 100644 --- a/sql/sql_analyse.cc +++ b/sql/sql_analyse.cc @@ -359,7 +359,8 @@ void field_real::add() else { #ifdef HAVE_SNPRINTF - snprintf(buff, sizeof(buff), "%-.*f", (int) decs, num); + buff[sizeof(buff)-1]=0; // Safety + snprintf(buff, sizeof(buff)-1, "%-.*f", (int) decs, num); #else sprintf(buff, "%-.*f", (int) decs, num); #endif diff --git a/sql/sql_string.cc b/sql/sql_string.cc index e3cf8cc7abc..83b21af87f5 100644 --- a/sql/sql_string.cc +++ b/sql/sql_string.cc @@ -186,7 +186,8 @@ end: return FALSE; #else #ifdef HAVE_SNPRINTF - snprintf(buff,sizeof(buff), "%.*f",(int) decimals,num); + buff[sizeof(buff)-1]=0; // Safety + snprintf(buff,sizeof(buff)-1, "%.*f",(int) decimals,num); #else sprintf(buff,"%.*f",(int) decimals,num); #endif |