summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2025-09-16 16:14:30 -0600
committerTom Rini <[email protected]>2025-09-16 16:14:30 -0600
commita209627ed7921f40669f5c0795570d40e77e4cb7 (patch)
tree7e37ee66622ce0e1cfa8dd4643e6b12f32d1f0c8
parentc6a4b44cdcc11431223a9d9db17de0c587d49c72 (diff)
parentfd396316432ad4a0f2998ea9eee9720be0e5d5f8 (diff)
Merge patch series "board: dhelectronics: Check pointer before access in dh_get_value_from_eeprom_buffer()"
This series from Marek Vasut <[email protected]> cleans up some of the common code between dhelectronics platforms. Link: https://lore.kernel.org/r/[email protected]
-rw-r--r--board/dhelectronics/common/dh_common.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/board/dhelectronics/common/dh_common.c b/board/dhelectronics/common/dh_common.c
index 8c052c45007..6101ecc7ebc 100644
--- a/board/dhelectronics/common/dh_common.c
+++ b/board/dhelectronics/common/dh_common.c
@@ -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;
}
@@ -131,14 +131,17 @@ int dh_read_eeprom_id_page(u8 *eeprom_buffer, const char *alias)
int dh_get_value_from_eeprom_buffer(enum eip_request_values request, u8 *data, int data_len,
struct eeprom_id_page *eip)
{
- const char fin_chr = (eip->pl.item_prefix & DH_ITEM_PREFIX_FIN_BIT) ?
- DH_ITEM_PREFIX_FIN_FLASHED_CHR : DH_ITEM_PREFIX_FIN_HALF_CHR;
- const u8 soc_coded = eip->pl.item_prefix & 0xf;
+ char fin_chr;
+ u8 soc_coded;
char soc_chr;
if (!eip)
return -EINVAL;
+ fin_chr = (eip->pl.item_prefix & DH_ITEM_PREFIX_FIN_BIT) ?
+ DH_ITEM_PREFIX_FIN_FLASHED_CHR : DH_ITEM_PREFIX_FIN_HALF_CHR;
+ soc_coded = eip->pl.item_prefix & 0xf;
+
/* Copy requested data */
switch (request) {
case DH_MAC0: