Bug 1209662 - Support multiple entries in network.http.signed-packages.trusted-origin pref r?valentin
--- a/netwerk/protocol/http/PackagedAppVerifier.cpp
+++ b/netwerk/protocol/http/PackagedAppVerifier.cpp
@@ -78,18 +78,40 @@ NS_IMETHODIMP PackagedAppVerifier::Init(
mState = STATE_UNKNOWN;
mSignature = aSignature;
mIsPackageSigned = false;
mPackageCacheEntry = aPackageCacheEntry;
mIsFirstResource = true;
mManifest = EmptyCString();
NeckoOriginAttributes().PopulateFromOrigin(aPackageOrigin, mPackageOrigin);
- mBypassVerification = (mPackageOrigin ==
- Preferences::GetCString("network.http.signed-packages.trusted-origin"));
+
+ mBypassVerification = false;
+ nsAdoptingCString trustedOrigins =
+ Preferences::GetCString("network.http.signed-packages.trusted-origin");
+ trustedOrigins.StripWhitespace();
+
+ if (!trustedOrigins.IsEmpty()) {
+ uint32_t begin = 0;
+ uint32_t end = 0;
+
+ // Test each origin in the comma separated list
+ do {
+ end = trustedOrigins.FindChar(',', begin);
+ if (end == (uint32_t)-1) {
+ // Last or only origin in the comma separated list
+ end = trustedOrigins.Length();
+ }
+ if (mPackageOrigin == Substring(trustedOrigins, begin, end - begin)) {
+ mBypassVerification = true;
+ break;
+ }
+ begin = end + 1;
+ } while (end < trustedOrigins.Length());
+ }
LOG(("mBypassVerification = %d\n", mBypassVerification));
LOG(("mPackageOrigin = %s\n", mPackageOrigin.get()));
nsresult rv;
mPackagedAppUtils = do_CreateInstance(NS_PACKAGEDAPPUTILS_CONTRACTID, &rv);
if (NS_FAILED(rv)) {
LOG(("create packaged app utils failed"));