summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <monty@narttu.mysql.fi>2003-04-03 13:07:42 +0300
committerunknown <monty@narttu.mysql.fi>2003-04-03 13:07:42 +0300
commit2090bc6e4347fe69189302a5b520ae3051785746 (patch)
treeca9fb70f9dfcab0d4ec8417433c20b4c46587b71
parent68fc04c4236b57a3a83d5731fb991329d6be95ef (diff)
downloadmariadb-git-2090bc6e4347fe69189302a5b520ae3051785746.tar.gz
Fixed bug in memory allocation that could affect 64 bit systems (affected hammer)
mysys/my_vsnprintf.c: safety fix sql/log.cc: safety fix
-rw-r--r--mysys/my_vsnprintf.c9
-rw-r--r--sql/ha_myisam.cc2
-rw-r--r--sql/log.cc1
3 files changed, 10 insertions, 2 deletions
diff --git a/mysys/my_vsnprintf.c b/mysys/my_vsnprintf.c
index ab8edec4d7b..9bc33e28ba1 100644
--- a/mysys/my_vsnprintf.c
+++ b/mysys/my_vsnprintf.c
@@ -21,13 +21,18 @@
#include <stdarg.h>
#include <m_ctype.h>
+
int my_snprintf(char* to, size_t n, const char* fmt, ...)
{
+ int result;
va_list args;
va_start(args,fmt);
- return my_vsnprintf(to, n, fmt, args);
+ result= my_vsnprintf(to, n, fmt, args);
+ va_end(args);
+ return result;
}
+
int my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap)
{
char *start=to, *end=to+n-1;
@@ -79,6 +84,7 @@ int my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap)
return (uint) (to - start);
}
+
#ifdef MAIN
static void my_printf(const char * fmt, ...)
{
@@ -92,6 +98,7 @@ static void my_printf(const char * fmt, ...)
va_end(ar);
}
+
int main()
{
diff --git a/sql/ha_myisam.cc b/sql/ha_myisam.cc
index 895558320fd..d0d68156bac 100644
--- a/sql/ha_myisam.cc
+++ b/sql/ha_myisam.cc
@@ -953,7 +953,7 @@ int ha_myisam::create(const char *name, register TABLE *form,
&keydef, form->keys*sizeof(MI_KEYDEF),
&keyseg,
((form->key_parts + form->keys) * sizeof(MI_KEYSEG)),
- 0)))
+ NullS)))
DBUG_RETURN(1);
pos=form->key_info;
diff --git a/sql/log.cc b/sql/log.cc
index f72917427b7..d189f1f1fe3 100644
--- a/sql/log.cc
+++ b/sql/log.cc
@@ -1067,6 +1067,7 @@ void sql_print_error(const char *format,...)
char buff[1024];
my_vsnprintf(buff,sizeof(buff)-1,format,args);
DBUG_PRINT("error",("%s",buff));
+ va_end(args);
va_start(args,format);
}
#endif