[tor-browser/tor-browser-38.4.0esr-5.5-1] fixup! Bug 15646: Prevent keyboard layout fingerprinting in KeyboardEvent

commit 62ad9e1b780579ad459823253bcb8b47fefdd414 Author: Arthur Edelstein <arthuredelstein@gmail.com> Date: Mon Sep 7 22:49:25 2015 -0700 fixup! Bug 15646: Prevent keyboard layout fingerprinting in KeyboardEvent --- dom/events/KeyboardEvent.cpp | 12 +++++++----- dom/events/KeyboardEvent.h | 11 +++++++++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/dom/events/KeyboardEvent.cpp b/dom/events/KeyboardEvent.cpp index 19d4e73..3977da8 100644 --- a/dom/events/KeyboardEvent.cpp +++ b/dom/events/KeyboardEvent.cpp @@ -12,11 +12,6 @@ namespace mozilla { namespace dom { -static bool ResistFingerprinting() { - return nsContentUtils::ResistFingerprinting() && - !nsContentUtils::ThreadsafeIsCallerChrome(); -} - KeyboardEvent::KeyboardEvent(EventTarget* aOwner, nsPresContext* aPresContext, WidgetKeyboardEvent* aEvent) @@ -44,6 +39,13 @@ NS_INTERFACE_MAP_BEGIN(KeyboardEvent) NS_INTERFACE_MAP_END_INHERITING(UIEvent) bool +KeyboardEvent::ResistFingerprinting() { + return nsContentUtils::ResistFingerprinting() && + nsContentUtils::GetCurrentJSContextForThread() && + !nsContentUtils::ThreadsafeIsCallerChrome(); +} + +bool KeyboardEvent::AltKey() { bool altState = mEvent->AsKeyboardEvent()->IsAlt(); diff --git a/dom/events/KeyboardEvent.h b/dom/events/KeyboardEvent.h index d5b5ae1..af95e84 100644 --- a/dom/events/KeyboardEvent.h +++ b/dom/events/KeyboardEvent.h @@ -53,6 +53,15 @@ public: bool GetModifierState(const nsAString& aKey) { + if (ResistFingerprinting()) { + if (aKey.Equals(NS_LITERAL_STRING("Alt")) || + aKey.Equals(NS_LITERAL_STRING("AltGraph"))) { + return AltKey(); + } + if (aKey.Equals(NS_LITERAL_STRING("Shift"))) { + return ShiftKey(); + } + } return GetModifierStateInternal(aKey); } @@ -85,6 +94,8 @@ protected: ErrorResult& aRv); private: + bool ResistFingerprinting(); + // True, if the instance is created with Constructor(). bool mInitializedByCtor;
participants (1)
-
gk@torproject.org