From 77a1f62979979cb3eae1601f61b2f8650cbfdb30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sami=20V=C3=A4nttinen?= Date: Sat, 6 Sep 2025 14:34:39 +0300 Subject: [PATCH] Protect against form overlays (#2676) Protect against form overlays --- keepassxc-browser/content/fields.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/keepassxc-browser/content/fields.js b/keepassxc-browser/content/fields.js index c559d7d..47ffe0d 100644 --- a/keepassxc-browser/content/fields.js +++ b/keepassxc-browser/content/fields.js @@ -439,11 +439,19 @@ kpxcFields.isTopElement = function(elem, rect) { } // Check for popup overlays - const overlays = document.querySelectorAll(':popover-open'); - for (const overlay of overlays) { - const overlayRect = overlay?.getBoundingClientRect(); - if (overlayRect && elementsOverlap(rect, overlayRect)) { - return false; + try { + // :popover-open selector is supported only with Firefox >= 125 and Chrome >= 114 + const overlays = document.querySelectorAll(':popover-open, [popover]'); + for (const overlay of overlays) { + const overlayRect = overlay?.getBoundingClientRect(); + if (overlayRect && elementsOverlap(rect, overlayRect)) { + return false; + } + } + } catch (e) { + // Ignore SyntaxError (e.g., unsupported selector) + if (!(e instanceof SyntaxError)) { + logError(e); } }