[wcmd] prevent buffer overruns

Rein Klazes wijn at wanadoo.nl
Thu Dec 1 06:53:16 CST 2005


Hi,

Changelog:
programs/wcmd		: builtins.c, wcmdmain.c
Don't use formatted output in WCMD_setshow_sortenv;
Don't use unsafe vsprintf in WCMD_output.

Rein.
-------------- next part --------------
--- wine/programs/wcmd/builtins.c	2005-08-19 15:34:36.000000000 +0200
+++ mywine/programs/wcmd/builtins.c	2005-12-01 13:42:51.000000000 +0100
@@ -792,8 +792,10 @@ static void WCMD_setshow_sortenv(const c
   qsort( str, count, sizeof (char*), WCMD_compare );
 
   /* print it */
-  for( i=0; i<count; i++ )
-    WCMD_output("%s\n", str[i] );
+  for( i=0; i<count; i++ ) {
+      WCMD_output_asis(str[i]);
+      WCMD_output_asis("\n");
+  }
 
   LocalFree( str );
 }
--- wine/programs/wcmd/wcmdmain.c	2005-11-30 18:22:08.000000000 +0100
+++ mywine/programs/wcmd/wcmdmain.c	2005-12-01 13:39:50.000000000 +0100
@@ -789,10 +789,15 @@ void WCMD_output (const char *format, ..
 
 va_list ap;
 char string[1024];
+int ret;
 
   va_start(ap,format);
-  vsprintf (string, format, ap);
+  ret = vsnprintf (string, sizeof( string), format, ap);
   va_end(ap);
+  if( ret >= sizeof( string)) {
+       WCMD_output_asis("ERR: output truncated in WCMD_output\n" );
+       string[sizeof( string) -1] = '\0';
+  }
   WCMD_output_asis(string);
 }
 


More information about the wine-patches mailing list