diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-03-23 12:52:39 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-03-23 13:56:48 +0100 |
commit | cee1324f0fb9b7fd989f7479b696c999493ed8af (patch) | |
tree | e8053a1abd457f78474a131845efb3d21692e4d8 | |
parent | b4a65a3e0191fa92bfee04d2b88f6a7baa3cb492 (diff) | |
download | UXP-cee1324f0fb9b7fd989f7479b696c999493ed8af.tar UXP-cee1324f0fb9b7fd989f7479b696c999493ed8af.tar.gz UXP-cee1324f0fb9b7fd989f7479b696c999493ed8af.tar.lz UXP-cee1324f0fb9b7fd989f7479b696c999493ed8af.tar.xz UXP-cee1324f0fb9b7fd989f7479b696c999493ed8af.zip |
Disallow getUserMedia on null principals.
-rw-r--r-- | dom/media/MediaManager.cpp | 11 |
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)); |