From 2983ad10bc2f2cf28717134d5eef1ff708318b51 Mon Sep 17 00:00:00 2001 From: Luke Wilde Date: Mon, 16 Dec 2024 19:25:24 +0000 Subject: [PATCH] LibWeb/WebGL2: Correctly handle offsets in uniform(Matrix) functions --- .../LibWeb/GenerateWebGLRenderingContext.cpp | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp index 8fdacb6319b..5109c214b63 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp @@ -923,14 +923,16 @@ public: if (webgl_version == 2) { function_impl_generator.append(R"~~~( + if (src_offset + src_length > (count * matrix_size)) { + set_error(GL_INVALID_VALUE); + return; + } + raw_data += src_offset; if (src_length == 0) { count -= src_offset; - } - - if (src_offset + src_length <= count) { - set_error(GL_INVALID_VALUE); - return; + } else { + count = src_length; } )~~~"); } @@ -975,14 +977,16 @@ public: if (webgl_version == 2) { function_impl_generator.append(R"~~~( + if (src_offset + src_length > count) { + set_error(GL_INVALID_VALUE); + return; + } + data += src_offset; if (src_length == 0) { count -= src_offset; - } - - if (src_offset + src_length <= count) { - set_error(GL_INVALID_VALUE); - return; + } else { + count = src_length; } )~~~"); }