diff --git a/locales/en/messages.json b/locales/en/messages.json index 2bff6ee2..82bbf005 100644 --- a/locales/en/messages.json +++ b/locales/en/messages.json @@ -2812,6 +2812,9 @@ "firmwareFlasherHexCorrupted": { "message": "HEX file appears to be corrupted" }, + "firmwareFlasherConfigCorrupted": { + "message": "Config file appears to be corrupted, ASCII accepted (chars 0-127)" + }, "firmwareFlasherRemoteFirmwareLoaded": { "message": "Remote Firmware loaded, ready for flashing" }, diff --git a/src/js/tabs/firmware_flasher.js b/src/js/tabs/firmware_flasher.js index f4ceefdb..2fc28445 100644 --- a/src/js/tabs/firmware_flasher.js +++ b/src/js/tabs/firmware_flasher.js @@ -587,6 +587,12 @@ TABS.firmware_flasher.initialize = function (callback) { self.flashingMessage(i18n.getMessage('firmwareFlasherFirmwareLocalLoaded', self.parsed_hex.bytes_total), self.FLASH_MESSAGE_TYPES.NEUTRAL); } } + function checkAsciiLimits(input) { + for (let i=0; i < input.length; i++) { + if (input.charCodeAt(i) > 127) { return false; } + } + return true; + } // UI Hooks $('a.load_file').click(function () { self.enableFlashing(false); @@ -641,10 +647,14 @@ TABS.firmware_flasher.initialize = function (callback) { }); } else { clearBufferedFirmware(); - self.unifiedTargetConfig = e.target.result; - self.unifiedTargetConfigName = file.name; - self.isConfigLocal = true; - flashingMessageLocal(); + if (checkAsciiLimits(e.target.result)) { + self.unifiedTargetConfig = e.target.result; + self.unifiedTargetConfigName = file.name; + self.isConfigLocal = true; + flashingMessageLocal(); + } else { + self.flashingMessage('firmwareFlasherConfigCorrupted', self.FLASH_MESSAGE_TYPES.INVALID); + } } } };