diff --git a/tabs/firmware_flasher.js b/tabs/firmware_flasher.js index 338402f244..77563666bd 100644 --- a/tabs/firmware_flasher.js +++ b/tabs/firmware_flasher.js @@ -22,27 +22,33 @@ function tab_initialize_firmware_flasher() { fileEntry.file(function(file) { var reader = new FileReader(); - reader.onerror = function (e) { - console.error(e); + reader.onprogress = function(e) { + if (e.total > 1048576) { // 1 MB + // dont allow reading files bigger then 1 MB + console.log('File limit (1 MB) exceeded, aborting'); + reader.abort(); + } }; reader.onloadend = function(e) { - console.log('File loaded'); - - intel_hex = e.target.result; - - parse_hex(intel_hex, function(data) { - parsed_hex = data; + if (e.total != 0 && e.total == e.loaded) { + console.log('File loaded'); - if (parsed_hex) { - STM32.GUI_status('Firmware loaded, ready for flashing'); - $('a.flash_firmware').removeClass('locked'); + intel_hex = e.target.result; + + parse_hex(intel_hex, function(data) { + parsed_hex = data; - $('span.size').html(parsed_hex.bytes + ' bytes'); - } else { - STM32.GUI_status('HEX file appears to be corrupted'); - } - }); + if (parsed_hex) { + STM32.GUI_status('Firmware loaded, ready for flashing'); + $('a.flash_firmware').removeClass('locked'); + + $('span.size').html(parsed_hex.bytes + ' bytes'); + } else { + STM32.GUI_status('HEX file appears to be corrupted'); + } + }); + } }; reader.readAsText(file);