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);