summaryrefslogtreecommitdiff
path: root/ext/bg
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2019-09-05 19:21:50 -0400
committertoasted-nutbread <toasted-nutbread@users.noreply.github.com>2019-09-05 20:57:52 -0400
commit1c767711bb553fa828596f95f8ed9e91a3e13b5d (patch)
tree99b1ab125b59ae63a0a757fe0c055246451efec8 /ext/bg
parentbc7759d94c4d4bbe2480e5328a4c3488ff29e493 (diff)
Prevent infinite loops for corrupt options
Diffstat (limited to 'ext/bg')
-rw-r--r--ext/bg/js/options.js13
1 files changed, 9 insertions, 4 deletions
diff --git a/ext/bg/js/options.js b/ext/bg/js/options.js
index df95aae9..d903250e 100644
--- a/ext/bg/js/options.js
+++ b/ext/bg/js/options.js
@@ -305,14 +305,19 @@ function optionsVersion(options) {
];
optionsSetDefaults(options);
- if (!options.hasOwnProperty('version')) {
- options.version = fixups.length;
+
+ let version = options.version;
+ if (typeof version !== 'number' || !Number.isFinite(version)) {
+ version = fixups.length;
+ } else {
+ version = Math.max(0, Math.floor(version));
}
- while (options.version < fixups.length) {
- fixups[options.version++]();
+ for (; version < fixups.length; ++version) {
+ fixups[version]();
}
+ options.version = version;
return options;
}