From eea5b78f9892789d56b786d8bed7d722f6eefae2 Mon Sep 17 00:00:00 2001 From: varjolintu Date: Sun, 20 Aug 2023 10:26:37 +0300 Subject: [PATCH] Prevent multiple password generator requests --- keepassxc-browser/background/keepass.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/keepassxc-browser/background/keepass.js b/keepassxc-browser/background/keepass.js index 7a02908..ab65fac 100755 --- a/keepassxc-browser/background/keepass.js +++ b/keepassxc-browser/background/keepass.js @@ -15,6 +15,7 @@ keepass.latestVersionUrl = 'https://api.github.com/repos/keepassxreboot/keepassx keepass.cacheTimeout = 30 * 1000; // Milliseconds keepass.databaseHash = ''; keepass.previousDatabaseHash = ''; +keepass.passwordRequestSent = false; keepass.reconnectLoop = null; const kpActions = { @@ -168,18 +169,24 @@ keepass.retrieveCredentials = async function(tab, args = []) { keepass.generatePassword = async function(tab) { if (!keepass.isConnected) { - return []; + return ''; + } + + if (keepass.passwordRequestSent) { + return undefined; + } else { + keepass.passwordRequestSent = true; } try { const taResponse = await keepass.testAssociation(tab); if (!taResponse) { browserAction.showDefault(tab); - return []; + return ''; } if (!keepass.compareVersion(keepass.requiredKeePassXC, keepass.currentKeePassXC)) { - return []; + return ''; } let password; @@ -201,10 +208,12 @@ keepass.generatePassword = async function(tab) { logError('generatePassword rejected'); } + keepass.passwordRequestSent = false; return password; } catch (err) { logError(`generatePassword failed: ${err}`); - return []; + keepass.passwordRequestSent = false; + return undefined; } };