This look ok to everyone? ChangeLog entry: *dlls/ntdll/debugtools.c: Chris Morgan <[EMAIL PROTECTED]> Prevent buffer overflows in wine_dbg_vprintf.
Index: dlls/ntdll/debugtools.c =================================================================== RCS file: /home/wine/wine/dlls/ntdll/debugtools.c,v retrieving revision 1.4 diff -u -r1.4 debugtools.c --- dlls/ntdll/debugtools.c 2000/12/20 18:43:42 1.4 +++ dlls/ntdll/debugtools.c 2001/01/27 19:18:20 @@ -198,9 +198,19 @@ int wine_dbg_vprintf( const char *format, va_list args ) { struct debug_info *info = get_info(); + char *p; - int ret = vsprintf( info->out_pos, format, args ); - char *p = strrchr( info->out_pos, '\n' ); + int ret = vsnprintf( info->out_pos, sizeof(info->output) - + (info->out_pos - info->output), format, args); + + while((ret == -1) || (ret > (sizeof(info->output) - (info->out_pos - + info->output) - 1))) { + write(2, info->output, info->out_pos - info->output); + info->out_pos = info->output; + ret = vsnprintf(info->out_pos, sizeof(info->output), format, args); + } + + p = strrchr( info->out_pos, '\n' ); if (!p) info->out_pos += ret; else {