summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@wolfbeast.com>2019-03-23 12:52:39 +0100
committerwolfbeast <mcwerewolf@wolfbeast.com>2019-03-23 13:56:48 +0100
commitcee1324f0fb9b7fd989f7479b696c999493ed8af (patch)
treee8053a1abd457f78474a131845efb3d21692e4d8
parentb4a65a3e0191fa92bfee04d2b88f6a7baa3cb492 (diff)
downloadUXP-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.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));