From 20e59267e4de135690ea7466783dde43bb43e7fd Mon Sep 17 00:00:00 2001 From: varjolintu Date: Fri, 7 Sep 2018 10:14:56 +0300 Subject: [PATCH] Filter out hidden input fields instantly in getInputs() --- keepassxc-browser/keepassxc-browser.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/keepassxc-browser/keepassxc-browser.js b/keepassxc-browser/keepassxc-browser.js index 2285463..629e1f4 100755 --- a/keepassxc-browser/keepassxc-browser.js +++ b/keepassxc-browser/keepassxc-browser.js @@ -1239,17 +1239,27 @@ cipObserverHelper.ignoredNode = function(target) { }; cipObserverHelper.getInputs = function(target) { + // Ignores target element if it's not an element node if (cipObserverHelper.ignoredNode(target)) { return []; } - const input = target.getElementsByTagName('input'); - if (input.length === 0 || input.length > _maximumInputs) { + // Filter out any input fields with type 'hidden' right away + let inputFields = []; + Array.from(target.getElementsByTagName('input')).forEach(e => { + if (e.type !== 'hidden') { + inputFields.push(e); + } + }); + + // Do not allow more visible inputs than _maximumInputs (default value: 100) + if (inputFields.length === 0 || inputFields.length > _maximumInputs) { return []; } + // Only include input fields that match with cipObserverHelper.inputTypes let inputs = []; - for (const i of input) { + for (const i of inputFields) { if (cipObserverHelper.inputTypes.includes(i.getAttribute('type'))) { inputs.push(i); }