Assert on output buffer overflow.

diff --git a/dlls/ntdll/debugtools.c b/dlls/ntdll/debugtools.c
index 9cc73b7..1e5ae58 100644
--- a/dlls/ntdll/debugtools.c
+++ b/dlls/ntdll/debugtools.c
@@ -2,6 +2,7 @@
  * Debugging functions
  */
 
+#include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -198,9 +199,17 @@
 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 );
+
+    /* make sure we didn't exceed the buffer length
+     * the two asserts are due to glibc changes in vsnprintfs return value */
+    assert( ret != -1 );
+    assert( ret < sizeof(info->output) - (info->out_pos - info->output) );
+
+    p = strrchr( info->out_pos, '\n' );
     if (!p) info->out_pos += ret;
     else
     {