Bug 1407428: Hand out a const array reference for expanded principal whiteList. r=krizsa
The current API makes the life time and ownership of the result array unclear without careful reading. The result array is always owned by the principal, and its lifetime tied to the lifetime of the principal itself. Returning a const array reference makes this clear, and should prevent callers from accidentally modifying the returned array. MozReview-Commit-ID: 3f8mhynkKAj
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
#include "nspr.h"
|
||||
#include "nsJSPrincipals.h"
|
||||
#include "mozilla/BasePrincipal.h"
|
||||
#include "ExpandedPrincipal.h"
|
||||
#include "SystemPrincipal.h"
|
||||
#include "NullPrincipal.h"
|
||||
#include "DomainPolicy.h"
|
||||
@@ -668,12 +669,11 @@ nsScriptSecurityManager::CheckLoadURIWithPrincipal(nsIPrincipal* aPrincipal,
|
||||
nsCOMPtr<nsIURI> sourceURI;
|
||||
aPrincipal->GetURI(getter_AddRefs(sourceURI));
|
||||
if (!sourceURI) {
|
||||
nsCOMPtr<nsIExpandedPrincipal> expanded = do_QueryInterface(aPrincipal);
|
||||
if (expanded) {
|
||||
nsTArray< nsCOMPtr<nsIPrincipal> > *whiteList;
|
||||
expanded->GetWhiteList(&whiteList);
|
||||
for (uint32_t i = 0; i < whiteList->Length(); ++i) {
|
||||
nsresult rv = CheckLoadURIWithPrincipal((*whiteList)[i],
|
||||
auto* basePrin = BasePrincipal::Cast(aPrincipal);
|
||||
if (basePrin->Is<ExpandedPrincipal>()) {
|
||||
auto expanded = basePrin->As<ExpandedPrincipal>();
|
||||
for (auto& prin : expanded->WhiteList()) {
|
||||
nsresult rv = CheckLoadURIWithPrincipal(prin,
|
||||
aTargetURI,
|
||||
aFlags);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
|
||||
Reference in New Issue
Block a user