Skip to content
This repository was archived by the owner on Jul 9, 2025. It is now read-only.

Commit 44c81ed

Browse files
committed
Backed out changeset 028bc12edb76 (bug 1688815) for causing ContentPrincipal related xpcshell crashes.
1 parent b398609 commit 44c81ed

File tree

2 files changed

+4
-41
lines changed

2 files changed

+4
-41
lines changed

caps/ContentPrincipal.cpp

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -441,30 +441,16 @@ ContentPrincipal::GetBaseDomain(nsACString& aBaseDomain) {
441441

442442
NS_IMETHODIMP
443443
ContentPrincipal::GetSiteOriginNoSuffix(nsACString& aSiteOrigin) {
444-
nsresult rv = GetOriginNoSuffix(aSiteOrigin);
445-
NS_ENSURE_SUCCESS(rv, rv);
446-
447-
// It is possible for two principals with the same origin to have different
448-
// mURI values. In order to ensure that two principals with matching origins
449-
// also have matching siteOrigins, we derive the siteOrigin entirely from the
450-
// origin string and do not rely on mURI at all here.
451-
nsCOMPtr<nsIURI> origin;
452-
if (NS_FAILED(NS_NewURI(getter_AddRefs(origin), aSiteOrigin))) {
453-
// We got an error parsing the origin as a URI? siteOrigin == origin
454-
// aSiteOrigin was already filled with `OriginNoSuffix`
455-
return NS_OK;
456-
}
457-
458444
// Handle some special URIs first.
459445
nsAutoCString baseDomain;
460446
bool handled;
461-
rv = GetSpecialBaseDomain(origin, &handled, baseDomain);
447+
nsresult rv = GetSpecialBaseDomain(mURI, &handled, baseDomain);
462448
NS_ENSURE_SUCCESS(rv, rv);
463449

464450
if (handled) {
465451
// This is a special URI ("file:", "about:", "view-source:", etc). Just
466452
// return the origin.
467-
return NS_OK;
453+
return GetOriginNoSuffix(aSiteOrigin);
468454
}
469455

470456
// For everything else, we ask the TLD service. Note that, unlike in
@@ -479,7 +465,7 @@ ContentPrincipal::GetSiteOriginNoSuffix(nsACString& aSiteOrigin) {
479465
}
480466

481467
bool gotBaseDomain = false;
482-
rv = tldService->GetBaseDomain(origin, 0, baseDomain);
468+
rv = tldService->GetBaseDomain(mURI, 0, baseDomain);
483469
if (NS_SUCCEEDED(rv)) {
484470
gotBaseDomain = true;
485471
} else {
@@ -494,7 +480,7 @@ ContentPrincipal::GetSiteOriginNoSuffix(nsACString& aSiteOrigin) {
494480
// NOTE: Calling `SetHostPort` with a portless domain is insufficient to clear
495481
// the port, so an extra `SetPort` call has to be made.
496482
nsCOMPtr<nsIURI> siteUri;
497-
NS_MutateURI mutator(origin);
483+
NS_MutateURI mutator(mURI);
498484
mutator.SetUserPass(""_ns).SetPort(-1);
499485
if (gotBaseDomain) {
500486
mutator.SetHost(baseDomain);
@@ -503,7 +489,6 @@ ContentPrincipal::GetSiteOriginNoSuffix(nsACString& aSiteOrigin) {
503489
MOZ_ASSERT(NS_SUCCEEDED(rv), "failed to create siteUri");
504490
NS_ENSURE_SUCCESS(rv, rv);
505491

506-
aSiteOrigin.Truncate();
507492
rv = GenerateOriginNoSuffixFromURI(siteUri, aSiteOrigin);
508493
MOZ_ASSERT(NS_SUCCEEDED(rv), "failed to create siteOriginNoSuffix");
509494
return rv;

caps/tests/unit/test_site_origin.js

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -57,28 +57,6 @@ Assert.equal(aboutPrincipal.originNoSuffix, "about:preferences");
5757
Assert.equal(aboutPrincipal.siteOrigin, "about:preferences^userContextId=66");
5858
Assert.equal(aboutPrincipal.siteOriginNoSuffix, "about:preferences");
5959

60-
let viewSourceURI = Services.io.newURI(
61-
"view-source:https://test1.test2.example.com"
62-
);
63-
let viewSourcePrincipal = scriptSecMan.createContentPrincipal(viewSourceURI, {
64-
userContextId: 101,
65-
});
66-
Assert.ok(viewSourcePrincipal.isContentPrincipal);
67-
Assert.ok(viewSourcePrincipal.schemeIs("view-source"));
68-
Assert.equal(
69-
viewSourcePrincipal.origin,
70-
"https://test1.test2.example.com^userContextId=101"
71-
);
72-
Assert.equal(
73-
viewSourcePrincipal.originNoSuffix,
74-
"https://test1.test2.example.com"
75-
);
76-
Assert.equal(
77-
viewSourcePrincipal.siteOrigin,
78-
"https://example.com^userContextId=101"
79-
);
80-
Assert.equal(viewSourcePrincipal.siteOriginNoSuffix, "https://example.com");
81-
8260
// NullPrincipal checks
8361
let nullPrincipal = scriptSecMan.createNullPrincipal({ userContextId: 33 });
8462
Assert.ok(nullPrincipal.isNullPrincipal);

0 commit comments

Comments
 (0)