mesa: properly report the length of truncated log messages
authorMark Janes <mark.a.janes@intel.com>
Fri, 7 Dec 2018 00:35:42 +0000 (16:35 -0800)
committerMark Janes <mark.a.janes@intel.com>
Thu, 14 Mar 2019 19:56:19 +0000 (12:56 -0700)
_mesa_log_msg must provide the length of the string passed into the
KHR_debug api.  When the string formatted by _mesa_gl_vdebugf exceeds
MAX_DEBUG_MESSAGE_LENGTH, the length is incorrectly set to the number
of characters that would have been written if enough space had been
available.

Fixes: 30256805784450b8bb9d4dabfb56226271ca9d24
       ("mesa: Add support for GL_ARB_debug_output with dynamic ID allocation.")

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
src/mesa/main/errors.c

index a9687913627a3aab0644e7f49e1dfdcde02a0479..30560ba047ec377c31c3b14110eda5f7b332e4e5 100644 (file)
@@ -231,6 +231,9 @@ _mesa_gl_vdebug(struct gl_context *ctx,
    _mesa_debug_get_id(id);
 
    len = _mesa_vsnprintf(s, MAX_DEBUG_MESSAGE_LENGTH, fmtString, args);
+   if (len >= MAX_DEBUG_MESSAGE_LENGTH)
+      /* message was truncated */
+      len = MAX_DEBUG_MESSAGE_LENGTH - 1;
 
    _mesa_log_msg(ctx, source, type, *id, severity, len, s);
 }