summaryrefslogtreecommitdiffstats
path: root/dom
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@wolfbeast.com>2019-03-23 12:52:39 +0100
committerwolfbeast <mcwerewolf@wolfbeast.com>2019-03-23 12:52:39 +0100
commit36fbcc6300ee57bc5ac56c88be8a134e09d10b13 (patch)
tree0b52657b6cf0da49233dba692f2e798e73ffdedc /dom
parent10982181db01134d2369aa000b3adde69e1e495d (diff)
downloadUXP-36fbcc6300ee57bc5ac56c88be8a134e09d10b13.tar
UXP-36fbcc6300ee57bc5ac56c88be8a134e09d10b13.tar.gz
UXP-36fbcc6300ee57bc5ac56c88be8a134e09d10b13.tar.lz
UXP-36fbcc6300ee57bc5ac56c88be8a134e09d10b13.tar.xz
UXP-36fbcc6300ee57bc5ac56c88be8a134e09d10b13.zip
Disallow getUserMedia on null principals.
Diffstat (limited to 'dom')
-rw-r--r--dom/media/MediaManager.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/dom/media/MediaManager.cpp b/dom/media/MediaManager.cpp
index 288f2e74d..979cb64c7 100644
--- a/dom/media/MediaManager.cpp
+++ b/dom/media/MediaManager.cpp
@@ -2049,6 +2049,16 @@ MediaManager::GetUserMedia(nsPIDOMWindowInner* aWindow,
return rv;
}
+ // Disallow access to null principal pages
+ nsCOMPtr<nsIPrincipal> principal = aWindow->GetExtantDoc()->NodePrincipal();
+ if (principal->GetIsNullPrincipal()) {
+ RefPtr<MediaStreamError> error =
+ new MediaStreamError(aWindow,
+ NS_LITERAL_STRING("NotAllowedError"));
+ onFailure->OnError(error);
+ return NS_OK;
+ }
+
if (!Preferences::GetBool("media.navigator.video.enabled", true)) {
c.mVideo.SetAsBoolean() = false;
}
@@ -2188,7 +2198,6 @@ MediaManager::GetUserMedia(nsPIDOMWindowInner* aWindow,
StreamListeners* listeners = AddWindowID(windowID);
// Create a disabled listener to act as a placeholder
- nsIPrincipal* principal = aWindow->GetExtantDoc()->NodePrincipal();
RefPtr<GetUserMediaCallbackMediaStreamListener> listener =
new GetUserMediaCallbackMediaStreamListener(mMediaThread, windowID,
MakePrincipalHandle(principal));