Bug 1371741 - Disallow getUserMedia on null principals. r=jib draft
authorJohann Hofmann <jhofmann@mozilla.com>
Mon, 27 Nov 2017 14:17:47 +0100
changeset 703681 ff9cd52d2e11a5b370d4bb6a260cfeff831f0bb4
parent 703432 b2200418de0bf215a84d84317d247363536369dd
child 741869 4c2d7161a45108c5ff8591ef5c6f45c6749bfa70
push id90924
push userbmo:jhofmann@mozilla.com
push dateMon, 27 Nov 2017 13:29:04 +0000
reviewersjib
bugs1371741
milestone59.0a1
Bug 1371741 - Disallow getUserMedia on null principals. r=jib MozReview-Commit-ID: Bo9FbFXITyz
dom/media/MediaManager.cpp
--- a/dom/media/MediaManager.cpp
+++ b/dom/media/MediaManager.cpp
@@ -2271,16 +2271,24 @@ MediaManager::GetUserMedia(nsPIDOMWindow
   }
 
   nsCOMPtr<nsIPrincipal> principal =
     nsGlobalWindowInner::Cast(aWindow)->GetPrincipal();
   if (NS_WARN_IF(!principal)) {
     return NS_ERROR_FAILURE;
   }
 
+  // Disallow access to null principal pages.
+  if (principal->GetIsNullPrincipal()) {
+    RefPtr<MediaStreamError> error =
+      new MediaStreamError(aWindow, NS_LITERAL_STRING("SecurityError"));
+    onFailure->OnError(error);
+    return NS_OK;
+  }
+
   // This principal needs to be sent to different threads and so via IPC.
   // For this reason it's better to convert it to PrincipalInfo right now.
   ipc::PrincipalInfo principalInfo;
   rv = PrincipalToPrincipalInfo(principal, &principalInfo);
   if (NS_WARN_IF(NS_FAILED(rv))) {
     return rv;
   }