[PATCH vkd3d 1/2] vkd3d-shader: Avoid reading past the end of the buffer in vkd3d_shader_trace() (Valgrind).

Zebediah Figura zfigura at codeweavers.com
Thu Oct 15 10:44:44 CDT 2020


Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
 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 9b49ca1d..e9c462e5 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);
-- 
2.28.0




More information about the wine-devel mailing list