]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
board: dhelectronics: Use isascii() before isprint() in dh_read_eeprom_id_page()
authorMarek Vasut <marek.vasut@mailbox.org>
Sun, 7 Sep 2025 01:00:47 +0000 (03:00 +0200)
committerTom Rini <trini@konsulko.com>
Wed, 17 Sep 2025 15:06:37 +0000 (09:06 -0600)
The isprint() checks printability across all 256 characters, some of the
upper 128 characters are printable and produce artifacts on UART. Call
isascii() first to only consider the bottom 7bit ASCII characters as
printable, and then check their printability using isprint(). This fixes
a rare misprint in case the ID page content is uninitialized or corrupted.

Signed-off-by: Marek Vasut <marek.vasut@mailbox.org>
Reviewed-by: Christoph Niedermaier <cniedermaier@dh-electronics.com>
board/dhelectronics/common/dh_common.c

index d3a3f0ff11fb3ea0b69381244f707dd4975046c3..6101ecc7ebceece8a99d1cb1bd92a5769921c9f0 100644 (file)
@@ -88,9 +88,9 @@ int dh_read_eeprom_id_page(u8 *eeprom_buffer, const char *alias)
        /* Validate header ID */
        if (eip->hdr.id[0] != 'D' || eip->hdr.id[1] != 'H' || eip->hdr.id[2] != 'E') {
                printf("%s: Error validating header ID! (got %c%c%c (0x%02x 0x%02x 0x%02x) != expected DHE)\n",
-                      __func__, isprint(eip->hdr.id[0]) ? eip->hdr.id[0] : '.',
-                      isprint(eip->hdr.id[1]) ? eip->hdr.id[1] : '.',
-                      isprint(eip->hdr.id[2]) ? eip->hdr.id[2] : '.',
+                      __func__, (isascii(eip->hdr.id[0]) && isprint(eip->hdr.id[0])) ? eip->hdr.id[0] : '.',
+                      (isascii(eip->hdr.id[1]) && isprint(eip->hdr.id[1])) ? eip->hdr.id[1] : '.',
+                      (isascii(eip->hdr.id[2]) && isprint(eip->hdr.id[2])) ? eip->hdr.id[2] : '.',
                       eip->hdr.id[0], eip->hdr.id[1], eip->hdr.id[2]);
                return -EINVAL;
        }