зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1509989 - Factor out nsRange security checks. r=mats
Differential Revision: https://phabricator.services.mozilla.com/D13069 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
8965794e05
Коммит
c10bb786b1
|
@ -1251,11 +1251,19 @@ nsRange::SetStartJS(nsINode& aNode, uint32_t aOffset, ErrorResult& aErr)
|
|||
SetStart(aNode, aOffset, aErr);
|
||||
}
|
||||
|
||||
bool
|
||||
nsRange::CanAccess(const nsINode& aNode) const
|
||||
{
|
||||
if (nsContentUtils::LegacyIsCallerNativeCode()) {
|
||||
return true;
|
||||
}
|
||||
return nsContentUtils::CanCallerAccess(&aNode);
|
||||
}
|
||||
|
||||
void
|
||||
nsRange::SetStart(nsINode& aNode, uint32_t aOffset, ErrorResult& aRv)
|
||||
{
|
||||
if (!nsContentUtils::LegacyIsCallerNativeCode() &&
|
||||
!nsContentUtils::CanCallerAccess(&aNode)) {
|
||||
if (!CanAccess(aNode)) {
|
||||
aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
|
||||
return;
|
||||
}
|
||||
|
@ -1300,8 +1308,7 @@ nsRange::SetStartBeforeJS(nsINode& aNode, ErrorResult& aErr)
|
|||
void
|
||||
nsRange::SetStartBefore(nsINode& aNode, ErrorResult& aRv)
|
||||
{
|
||||
if (!nsContentUtils::LegacyIsCallerNativeCode() &&
|
||||
!nsContentUtils::CanCallerAccess(&aNode)) {
|
||||
if (!CanAccess(aNode)) {
|
||||
aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
|
||||
return;
|
||||
}
|
||||
|
@ -1326,8 +1333,7 @@ nsRange::SetStartAfterJS(nsINode& aNode, ErrorResult& aErr)
|
|||
void
|
||||
nsRange::SetStartAfter(nsINode& aNode, ErrorResult& aRv)
|
||||
{
|
||||
if (!nsContentUtils::LegacyIsCallerNativeCode() &&
|
||||
!nsContentUtils::CanCallerAccess(&aNode)) {
|
||||
if (!CanAccess(aNode)) {
|
||||
aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
|
||||
return;
|
||||
}
|
||||
|
@ -1352,8 +1358,7 @@ nsRange::SetEndJS(nsINode& aNode, uint32_t aOffset, ErrorResult& aErr)
|
|||
void
|
||||
nsRange::SetEnd(nsINode& aNode, uint32_t aOffset, ErrorResult& aRv)
|
||||
{
|
||||
if (!nsContentUtils::LegacyIsCallerNativeCode() &&
|
||||
!nsContentUtils::CanCallerAccess(&aNode)) {
|
||||
if (!CanAccess(aNode)) {
|
||||
aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
|
||||
return;
|
||||
}
|
||||
|
@ -1476,8 +1481,7 @@ nsRange::SetEndBeforeJS(nsINode& aNode, ErrorResult& aErr)
|
|||
void
|
||||
nsRange::SetEndBefore(nsINode& aNode, ErrorResult& aRv)
|
||||
{
|
||||
if (!nsContentUtils::LegacyIsCallerNativeCode() &&
|
||||
!nsContentUtils::CanCallerAccess(&aNode)) {
|
||||
if (!CanAccess(aNode)) {
|
||||
aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
|
||||
return;
|
||||
}
|
||||
|
@ -1502,8 +1506,7 @@ nsRange::SetEndAfterJS(nsINode& aNode, ErrorResult& aErr)
|
|||
void
|
||||
nsRange::SetEndAfter(nsINode& aNode, ErrorResult& aRv)
|
||||
{
|
||||
if (!nsContentUtils::LegacyIsCallerNativeCode() &&
|
||||
!nsContentUtils::CanCallerAccess(&aNode)) {
|
||||
if (!CanAccess(aNode)) {
|
||||
aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
|
||||
return;
|
||||
}
|
||||
|
@ -1550,8 +1553,7 @@ nsRange::SelectNodeJS(nsINode& aNode, ErrorResult& aErr)
|
|||
void
|
||||
nsRange::SelectNode(nsINode& aNode, ErrorResult& aRv)
|
||||
{
|
||||
if (!nsContentUtils::LegacyIsCallerNativeCode() &&
|
||||
!nsContentUtils::CanCallerAccess(&aNode)) {
|
||||
if (!CanAccess(aNode)) {
|
||||
aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
|
||||
return;
|
||||
}
|
||||
|
@ -1591,8 +1593,7 @@ nsRange::SelectNodeContentsJS(nsINode& aNode, ErrorResult& aErr)
|
|||
void
|
||||
nsRange::SelectNodeContents(nsINode& aNode, ErrorResult& aRv)
|
||||
{
|
||||
if (!nsContentUtils::LegacyIsCallerNativeCode() &&
|
||||
!nsContentUtils::CanCallerAccess(&aNode)) {
|
||||
if (!CanAccess(aNode)) {
|
||||
aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
|
||||
return;
|
||||
}
|
||||
|
@ -2611,8 +2612,7 @@ nsRange::CloneRange() const
|
|||
void
|
||||
nsRange::InsertNode(nsINode& aNode, ErrorResult& aRv)
|
||||
{
|
||||
if (!nsContentUtils::LegacyIsCallerNativeCode() &&
|
||||
!nsContentUtils::CanCallerAccess(&aNode)) {
|
||||
if (!CanAccess(aNode)) {
|
||||
aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
|
||||
return;
|
||||
}
|
||||
|
@ -2704,8 +2704,7 @@ nsRange::InsertNode(nsINode& aNode, ErrorResult& aRv)
|
|||
void
|
||||
nsRange::SurroundContents(nsINode& aNewParent, ErrorResult& aRv)
|
||||
{
|
||||
if (!nsContentUtils::LegacyIsCallerNativeCode() &&
|
||||
!nsContentUtils::CanCallerAccess(&aNewParent)) {
|
||||
if (!CanAccess(aNewParent)) {
|
||||
aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -392,6 +392,11 @@ private:
|
|||
nsINode** aClosestAncestor,
|
||||
nsINode** aFarthestAncestor);
|
||||
|
||||
/**
|
||||
* Returns whether a node is safe to be accessed by the current caller.
|
||||
*/
|
||||
bool CanAccess(const nsINode&) const;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Compute the root node of aNode for initializing range classes.
|
||||
|
|
Загрузка…
Ссылка в новой задаче