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

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


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

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

vkd3d-shader: Avoid reading past the end of the buffer in vkd3d_shader_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/trace.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/libs/vkd3d-shader/trace.c b/libs/vkd3d-shader/trace.c
index 9b49ca1..e9c462e 100644
--- a/libs/vkd3d-shader/trace.c
+++ b/libs/vkd3d-shader/trace.c
@@ -1618,16 +1618,17 @@ enum vkd3d_result vkd3d_dxbc_binary_to_text(void *data, struct vkd3d_shader_code
 
 void vkd3d_shader_trace(void *data)
 {
-    const char *p, *q;
+    const char *p, *q, *end;
     struct vkd3d_shader_code code;
 
     if (vkd3d_dxbc_binary_to_text(data, &code) != VKD3D_OK)
         return;
 
-    for (p = code.code; *p; p = q)
+    end = (const char *)code.code + code.size;
+    for (p = code.code; p < end; p = q)
     {
-        if (!(q = strstr(p, "\n")))
-            q = p + strlen(p);
+        if (!(q = memchr(p, '\n', end - p)))
+            q = end;
         else
             ++q;
         TRACE("    %.*s", (int)(q - p), p);




More information about the wine-cvs mailing list