Bug 1371741 - Disallow getUserMedia on nullprincipals (sandboxed iframes, top-level data urls). draft
authorJan-Ivar Bruaroey <jib@mozilla.com>
Fri, 09 Jun 2017 12:12:04 -0400
changeset 591912 a7806c834d16e43c32eb5dd7f3db37f6931cb208
parent 589544 4dd1d17ba22660b8f5869a707f2e4e9f9dd5be5b
child 592725 c54f337340658f21cb6dffd4df3e3ae86beda619
child 592822 52ef199d77fcf8c8b89763df2ed1c79c7c44535a
push id63208
push userjbruaroey@mozilla.com
push dateFri, 09 Jun 2017 17:25:05 +0000
bugs1371741
milestone55.0a1
Bug 1371741 - Disallow getUserMedia on nullprincipals (sandboxed iframes, top-level data urls). MozReview-Commit-ID: 7VWpTFa2kMm
dom/media/MediaManager.cpp
--- a/dom/media/MediaManager.cpp
+++ b/dom/media/MediaManager.cpp
@@ -2164,16 +2164,24 @@ MediaManager::GetUserMedia(nsPIDOMWindow
   // 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;
   }
 
+  if (principalInfo.type() == ipc::PrincipalInfo::TNullPrincipalInfo) {
+    RefPtr<MediaStreamError> error =
+        new MediaStreamError(aWindow,
+                             NS_LITERAL_STRING("SecurityError"));
+    onFailure->OnError(error);
+    return NS_OK;
+  }
+
   if (!Preferences::GetBool("media.navigator.video.enabled", true)) {
     c.mVideo.SetAsBoolean() = false;
   }
 
   MediaSourceEnum videoType = MediaSourceEnum::Other; // none
   MediaSourceEnum audioType = MediaSourceEnum::Other; // none
 
   if (c.mVideo.IsMediaTrackConstraints()) {