From f3539621eea3e1ba4eb42b579d6945c6bcfa329f Mon Sep 17 00:00:00 2001 From: Richard Hughes Date: Thu, 10 Dec 2020 09:41:26 +0000 Subject: [PATCH] ihex: Do not dump binary out to the terminal for corrupt files --- libfwupdplugin/fu-ihex-firmware.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/libfwupdplugin/fu-ihex-firmware.c b/libfwupdplugin/fu-ihex-firmware.c index 49a9f5095..e4a1d579d 100644 --- a/libfwupdplugin/fu-ihex-firmware.c +++ b/libfwupdplugin/fu-ihex-firmware.c @@ -69,11 +69,24 @@ fu_ihex_firmware_record_new (guint ln, const gchar *line, /* check starting token */ if (line[0] != ':') { - g_set_error (error, - FWUPD_ERROR, - FWUPD_ERROR_INVALID_FILE, - "invalid starting token: %s", - line); + g_autoptr(GString) str = g_string_new (NULL); + for (gsize i = 0; line[i] != '\0' && i < 5; i++) { + if (!g_ascii_isprint (line[i])) + break; + g_string_append_c (str, line[i]); + } + if (str->len > 0) { + g_set_error (error, + FWUPD_ERROR, + FWUPD_ERROR_INVALID_FILE, + "invalid starting token: %s", + str->str); + return NULL; + } + g_set_error_literal (error, + FWUPD_ERROR, + FWUPD_ERROR_INVALID_FILE, + "invalid starting token"); return NULL; }