[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