[PATCH] ntdll: Check for debug output buffer overflow in __wine_dbg_output().
Józef Kucia
jkucia at codeweavers.com
Mon May 13 04:00:50 CDT 2019
This makes __wine_dbg_output() slightly more robust. The change prevents the
debug output buffer overflow when __wine_dbg_output() is called repeatedly
with small strings.
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
Supersedes patch 164513.
---
dlls/ntdll/debugtools.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/debugtools.c b/dlls/ntdll/debugtools.c
index 64355ab3b841..027ca0236051 100644
--- a/dlls/ntdll/debugtools.c
+++ b/dlls/ntdll/debugtools.c
@@ -235,6 +235,7 @@ int __cdecl __wine_dbg_output( const char *str )
struct debug_info *info = get_info();
const char *end = strrchr( str, '\n' );
int ret = 0;
+ size_t n;
if (end)
{
@@ -243,7 +244,16 @@ int __cdecl __wine_dbg_output( const char *str )
info->out_pos = 0;
str = end + 1;
}
- if (*str) ret += append_output( info, str, strlen( str ));
+ if (*str)
+ {
+ n = strlen( str );
+ if (n >= sizeof(info->output) - info->out_pos && info->out_pos)
+ {
+ write( 2, info->output, info->out_pos );
+ info->out_pos = 0;
+ }
+ ret += append_output( info, str, n );
+ }
return ret;
}
--
2.21.0
More information about the wine-devel
mailing list