Incorrectly treats spaces in text as invalid in EDID Other Monitor Descriptors

Bug #1752978 reported by TJ
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
edid-decode (Ubuntu)
Confirmed
Undecided
Unassigned

Bug Description

Whilst hacking to identify and correct a binary EDID that reported:

...
Serial number: A9LMIZ002968
Monitor ranges (GTF): 55-75Hz V, 30-85kHz H, max dotclock 190MHz
Monitor name: ASUS
Checksum: 0xfa (should be 0x59)
EDID block does NOT conform to EDID 1.3!
        Detailed block string not properly terminated
EDID block does not conform at all!
        Block has broken checksum

I discovered the "Detailed block string not properly terminated" is apparently not correct. By adding debug code it reported the exact cause:

...
extract_string(0xb2305d, 13) A9LMIZ002968
Serial number: A9LMIZ002968
Monitor ranges (GTF): 55-75Hz V, 30-85kHz H, max dotclock 190MHz
extract_string(0x608640, 13) ASUS VW227
  Invalid termination @ 4: no newline
Monitor name: ASUS
Checksum: 0xfa (should be 0x59)
EDID block does NOT conform to EDID 1.3!
        Detailed block string not properly terminated
EDID block does not conform at all!
        Block has broken checksum

in the Monitor Name descriptor the space in "ASUS VW227" is treated as illegal.

From reading the specification at

https://en.wikipedia.org/wiki/Extended_Display_Identification_Data#EDID_1.4_data_format

"EDID Other Monitor Descriptors" >
"5–17 Defined by descriptor type. If text, code page 437 text, terminated (if less than 13 bytes) with LF and padded with SP."

it appears that spaces are allowed.

In 16.04 the problem is:

 if (isalnum(x[i])) {

and in later versions and currently upstream:

 if (isgraph(x[i])) {

because both these functions treat spaces as not being part of their set.

Upstream has a bug report at:

https://bugs.freedesktop.org/show_bug.cgi?id=100350

and a fix:

commit 57c73067385e0bd29d0a67fd73db4ebecc8fb084
Author: Adam Jackson <email address hidden>
Date: Tue Mar 28 11:21:36 2017 -0400

    Fix valid termination check

TJ (tj)
description: updated
TJ (tj)
Changed in edid-decode (Ubuntu):
status: New → Confirmed
TJ (tj)
description: updated
Revision history for this message
Floyd42 (axelheider) wrote :

I have the same issue, it prints:

    Monitor name: DELL

while the data actually is "... 44 45 4C 4C 20 55 32 34 31 35 0A 20 20 " and it should print "DELL U2415"

Package: read-edid
Versions:
3.0.2-1build1

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.