[dom] Remove attributes from descendants when setting sanitized style.

This avoids a number of problems with incomplete sanitation.
This commit is contained in:
Henri Sivonen 2020-11-19 19:06:03 +00:00 committed by roytam1
commit 9de5e02cbf
2 changed files with 19 additions and 0 deletions

View file

@ -1384,6 +1384,8 @@ nsTreeSanitizer::SanitizeChildren(nsINode* aRoot)
nsAutoString styleText;
nsContentUtils::GetNodeTextContent(node, false, styleText);
RemoveAllAttributesFromDescendants(elt);
nsAutoString sanitizedStyle;
nsCOMPtr<nsIURI> baseURI = node->GetBaseURI();
if (SanitizeStyleSheet(styleText,
@ -1479,6 +1481,17 @@ nsTreeSanitizer::RemoveAllAttributes(nsIContent* aElement)
}
}
void nsTreeSanitizer::RemoveAllAttributesFromDescendants(mozilla::dom::Element* aElement) {
nsIContent* node = aElement->GetFirstChild();
while (node) {
if (node->IsElement()) {
mozilla::dom::Element* elt = node->AsElement();
RemoveAllAttributes(elt);
}
node = node->GetNextNode(aElement);
}
}
void
nsTreeSanitizer::InitializeStatics()
{