Bug 424733. Be a little more careful with certificate principals. r+sr=sicking, a=dveditz

git-svn-id: svn://10.0.0.236/trunk@254712 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
bzbarsky%mit.edu 2008-10-21 20:25:48 +00:00
parent e2eb7495da
commit 2b38cfdbd1

View File

@ -1373,7 +1373,21 @@ nsXBLBinding::AllowScripts()
PRBool canExecute;
nsresult rv =
mgr->CanExecuteScripts(cx, ourDocument->NodePrincipal(), &canExecute);
return NS_SUCCEEDED(rv) && canExecute;
if (NS_FAILED(rv) || !canExecute) {
return PR_FALSE;
}
// Now one last check: make sure that we're not allowing a privilege
// escalations here.
PRBool haveCert;
doc->NodePrincipal()->GetHasCertificate(&haveCert);
if (!haveCert) {
return PR_TRUE;
}
PRBool subsumes;
rv = ourDocument->NodePrincipal()->Subsumes(doc->NodePrincipal(), &subsumes);
return NS_SUCCEEDED(rv) && subsumes;
}
void