This is an automatic generated email to let you know that the following patch 
were queued at the 
http://git.linuxtv.org/cgit.cgi/v4l-utils.git tree:

Subject: edid-decode: fix buffer overread on displayid block parsing
Author:  Maciej Miszczyk <mmiszc...@logitech.com>
Date:    Fri Dec 13 11:16:34 2024 +0100

Fix buffer overread on displayid block parsing.

Signed-off-by: Maciej Miszczyk <mmiszc...@logitech.com>
Signed-off-by: Hans Verkuil <hverk...@xs4all.nl>

 utils/edid-decode/parse-displayid-block.cpp | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

---

http://git.linuxtv.org/cgit.cgi/v4l-utils.git/commit/?id=5858354467771eee50a4efb02698a75891ad8701
diff --git a/utils/edid-decode/parse-displayid-block.cpp 
b/utils/edid-decode/parse-displayid-block.cpp
index b4165921b893..21590246f8c4 100644
--- a/utils/edid-decode/parse-displayid-block.cpp
+++ b/utils/edid-decode/parse-displayid-block.cpp
@@ -2159,6 +2159,7 @@ void edid_state::parse_displayid_block(const unsigned 
char *x)
        }
 
        unsigned len;
+       unsigned saved_length = length;
        for (const unsigned char *y = x + 5; length > 0; y += len) {
                len = displayid_block(version, y, length);
                length -= len;
@@ -2170,10 +2171,10 @@ void edid_state::parse_displayid_block(const unsigned 
char *x)
         * (excluding DisplayID-in-EDID magic byte)
         */
        data_block.clear();
-       do_checksum("  ", x + 1, x[2] + 5, x[2] + 4);
+       do_checksum("  ", x + 1, saved_length, x[2] + 4);
 
-       unused_bytes = 0x7f - (1 + x[2] + 5);
-       if (!memchk(x + 1 + x[2] + 5, unused_bytes)) {
+       unused_bytes = 0x7f - (1 + saved_length + 5);
+       if (!memchk(x + 1 + saved_length + 5, unused_bytes)) {
                data_block = "Padding";
                fail("Contains non-zero bytes.\n");
        }

Reply via email to