From 668d24673563de099d5140cbdb5581d5c1adbb95 Mon Sep 17 00:00:00 2001 From: Benign X <1341398182@qq.com> Date: Sat, 27 Sep 2025 21:00:27 +0800 Subject: [PATCH] fix(gdb/draw_buf): validate and correct expected data size for pixel buffer (#8944) --- scripts/gdb/lvglgdb/lvgl/draw/lv_draw_buf.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/gdb/lvglgdb/lvgl/draw/lv_draw_buf.py b/scripts/gdb/lvglgdb/lvgl/draw/lv_draw_buf.py index a587bc5ffe..a1c6840878 100644 --- a/scripts/gdb/lvglgdb/lvgl/draw/lv_draw_buf.py +++ b/scripts/gdb/lvglgdb/lvgl/draw/lv_draw_buf.py @@ -99,6 +99,7 @@ class LVDrawBuf(Value): data_ptr = self.super_value("data") data_size = int(self.super_value("data_size")) width = (stride * 8) // cf_info["bpp"] if cf_info["bpp"] else 0 + expected_data_size = stride * height # Validate buffer data if not data_ptr: @@ -107,10 +108,14 @@ class LVDrawBuf(Value): raise ValueError(f"Invalid dimensions: {width}x{height}") if data_size <= 0: raise ValueError(f"Invalid data size: {data_size}") + if data_size < expected_data_size: + raise ValueError(f"Data size mismatch: expected {expected_data_size}, got {data_size}") + elif data_size > expected_data_size: + gdb.write(f"\033[93mData size mismatch: expected {expected_data_size}, got {data_size}\033[0m\n") # Read pixel data pixel_data = ( - gdb.selected_inferior().read_memory(int(data_ptr), data_size).tobytes() + gdb.selected_inferior().read_memory(int(data_ptr), expected_data_size).tobytes() ) if not pixel_data: raise ValueError("Failed to read pixel data")