Sebastian Lackner : mscoree: Avoid buffer overflow when mono print handler returns huge string at once.

Alexandre Julliard julliard at wine.codeweavers.com
Tue May 3 11:15:33 CDT 2016


Module: wine
Branch: master
Commit: e5404d4bf621c1e8bbdfd47381ce3f609d10b20a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=e5404d4bf621c1e8bbdfd47381ce3f609d10b20a

Author: Sebastian Lackner <sebastian at fds-team.de>
Date:   Fri Apr 29 17:55:43 2016 +0200

mscoree: Avoid buffer overflow when mono print handler returns huge string at once.

Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
Signed-off-by: Vincent Povirk <vincent at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mscoree/metahost.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/dlls/mscoree/metahost.c b/dlls/mscoree/metahost.c
index 252740d..30b9739 100644
--- a/dlls/mscoree/metahost.c
+++ b/dlls/mscoree/metahost.c
@@ -272,7 +272,13 @@ static void CDECL mono_shutdown_callback_fn(MonoProfiler *prof)
 
 static void CDECL mono_print_handler_fn(const char *string, INT is_stdout)
 {
-    wine_dbg_printf("%s", string);
+    const char *p;
+    for (; *string; string = p)
+    {
+        if ((p = strstr(string, "\n"))) p++;
+        else p = string + strlen(string);
+        wine_dbg_printf("%.*s", (int)(p - string), string);
+    }
 }
 
 static HRESULT CLRRuntimeInfo_GetRuntimeHost(CLRRuntimeInfo *This, RuntimeHost **result)




More information about the wine-cvs mailing list