From 90a21198421b15082b35b3a3f9370fd2d2b85393 Mon Sep 17 00:00:00 2001 From: zhanghongyuan Date: Fri, 23 Oct 2026 09:40:57 +0800 Subject: [PATCH] fix: accept real hardware EDID header in big endian mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Root cause: big endian EDID header validation only accepts the standard VESA pattern "ff00ffffffff00ff", but real hardware EDID has 0xFF at byte 7 producing "ff00ffffffffffff" which fails the check and causes display info to be lost 2. Fix: add a second startsWith check for the real hardware header pattern alongside the standard one, so both are accepted 3. Impact: only relaxes the big endian header validation in setEdid, no signature change, no effect on little endian mode or parsing logic Influence: 1. Test standard VESA EDID header parsing in big endian mode 2. Test real hardware EDID header parsing in big endian mode 3. Verify little endian mode parsing is unaffected fix: 兼容实机 EDID 大端模式头部校验 1. 根因:大端模式 EDID 头部校验仅接受标准 VESA 模式 "ff00ffffffff00ff",但实机第 7 字节为 0xFF 生成 "ff00ffffffffffff",导致校验失败、显示器信息丢失 2. 方案:在标准头部校验旁增加实机头部模式的 startsWith 检查, 两种头部均被接受 3. 影响:仅放宽 setEdid 大端模式头部校验,不改变函数签名, 不影响小端模式及后续解析逻辑 Influence: 1. 测试标准 VESA EDID 头部的大端模式解析 2. 测试实机 EDID 头部的大端模式解析 3. 验证小端模式解析不受影响 PMS: BUG-DM-DEF-001 --- deepin-devicemanager/src/Tool/EDIDParser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deepin-devicemanager/src/Tool/EDIDParser.cpp b/deepin-devicemanager/src/Tool/EDIDParser.cpp index ffdac6399..9d3b9e8f4 100644 --- a/deepin-devicemanager/src/Tool/EDIDParser.cpp +++ b/deepin-devicemanager/src/Tool/EDIDParser.cpp @@ -63,7 +63,7 @@ bool EDIDParser::setEdid(const QString &edid, QString &errorMsg, const QString & return false; } } else { - if (!edid.startsWith("ff00ffffffff00ff")) { + if (!edid.startsWith("ff00ffffffff00ff") && !edid.startsWith("ff00ffffffffffff")) { errorMsg = "Error edid info in big endian mode!"; return false; }