Zebediah Figura : vkd3d-shader: Avoid reading past the end of the buffer in vkd3d_string_buffer_trace() (Valgrind).

Alexandre Julliard julliard at winehq.org
Fri Oct 16 15:49:15 CDT 2020


Module: vkd3d
Branch: master
Commit: dffff8bdbc97acbbaab8bd0e860190ea4987984c
URL:    https://source.winehq.org/git/vkd3d.git/?a=commit;h=dffff8bdbc97acbbaab8bd0e860190ea4987984c

Author: Zebediah Figura <zfigura at codeweavers.com>
Date:   Thu Oct 15 10:44:45 2020 -0500

vkd3d-shader: Avoid reading past the end of the buffer in vkd3d_string_buffer_trace() (Valgrind).

Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 libs/vkd3d-shader/vkd3d_shader_main.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libs/vkd3d-shader/vkd3d_shader_main.c b/libs/vkd3d-shader/vkd3d_shader_main.c
index 7c3885e..664110e 100644
--- a/libs/vkd3d-shader/vkd3d_shader_main.c
+++ b/libs/vkd3d-shader/vkd3d_shader_main.c
@@ -93,15 +93,15 @@ static int VKD3D_PRINTF_FUNC(2, 3) vkd3d_string_buffer_printf(struct vkd3d_strin
 
 static void vkd3d_string_buffer_trace_(const struct vkd3d_string_buffer *buffer, const char *function)
 {
-    const char *p, *q;
+    const char *p, *q, *end = buffer->buffer + buffer->content_size;
 
     if (!TRACE_ON())
         return;
 
-    for (p = buffer->buffer; *p; p = q)
+    for (p = buffer->buffer; p < end; p = q)
     {
-        if (!(q = strchr(p, '\n')))
-            q = p + strlen(p);
+        if (!(q = memchr(p, '\n', end - p)))
+            q = end;
         else
             ++q;
         vkd3d_dbg_printf(VKD3D_DBG_LEVEL_TRACE, function, "%.*s", (int)(q - p), p);




More information about the wine-cvs mailing list