Bug 1342348 part 1 - Don't check fragment url in tree sanitizer. r?hsivonen draft
authorXidorn Quan <me@upsuper.org>
Tue, 28 Feb 2017 10:21:33 +1100
changeset 490285 625fb46bd4748c27725f62b30717e9982cd14fce
parent 489866 bb906e721c81334a58c0da46ffe12f1dafba208e
child 490286 bc13431849ba1ad2d2e365ef92729545deb665af
push id47051
push userxquan@mozilla.com
push dateTue, 28 Feb 2017 01:07:01 +0000
reviewershsivonen
bugs1342348
milestone54.0a1
Bug 1342348 part 1 - Don't check fragment url in tree sanitizer. r?hsivonen MozReview-Commit-ID: 8tIiMtexHxd
dom/base/nsTreeSanitizer.cpp
--- a/dom/base/nsTreeSanitizer.cpp
+++ b/dom/base/nsTreeSanitizer.cpp
@@ -1276,16 +1276,20 @@ nsTreeSanitizer::SanitizeURL(mozilla::do
 {
   nsAutoString value;
   aElement->GetAttr(aNamespace, aLocalName, value);
 
   // Get value and remove mandatory quotes
   static const char* kWhitespace = "\n\r\t\b";
   const nsAString& v =
     nsContentUtils::TrimCharsInSet(kWhitespace, value);
+  // Fragment-only url cannot be harmful.
+  if (!v.IsEmpty() && v.First() == u'#') {
+    return false;
+  }
 
   nsIScriptSecurityManager* secMan = nsContentUtils::GetSecurityManager();
   uint32_t flags = nsIScriptSecurityManager::DISALLOW_INHERIT_PRINCIPAL;
 
   nsCOMPtr<nsIURI> baseURI = aElement->GetBaseURI();
   nsCOMPtr<nsIURI> attrURI;
   nsresult rv = NS_NewURI(getter_AddRefs(attrURI), v, nullptr, baseURI);
   if (NS_SUCCEEDED(rv)) {