mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-01 05:48:26 +00:00
Bug 1556419 - cookie path should not contain the last '/', r=Ehsan
Differential Revision: https://phabricator.services.mozilla.com/D33500 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
3176c749f5
commit
176b3f8e39
@ -42,9 +42,9 @@ const testCases = [
|
||||
getCookieId("cs2", ".example.org", "/"),
|
||||
getCookieId("c4", ".example.org", "/"),
|
||||
getCookieId("sc1", "sectest1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
getCookieId("sc2", "sectest1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
],
|
||||
],
|
||||
[["localStorage", "http://test1.example.org"],
|
||||
|
@ -27,9 +27,9 @@ const testCases = [
|
||||
getCookieId("cs2", ".example.org", "/"),
|
||||
getCookieId("c4", ".example.org", "/"),
|
||||
getCookieId("sc1", "sectest1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
getCookieId("sc2", "sectest1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
],
|
||||
],
|
||||
[["localStorage", "http://test1.example.org"],
|
||||
|
@ -23,7 +23,7 @@ const testCasesUserContextId = [
|
||||
getCookieId("uc1uc1", ".example.org", "/"),
|
||||
getCookieId("cs2uc1", ".example.org", "/"),
|
||||
getCookieId("sc1uc1", "sectest1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
],
|
||||
],
|
||||
[["localStorage", "http://test1.example.org"],
|
||||
|
@ -45,9 +45,9 @@ const testCases = [
|
||||
getCookieId("uc2", ".example.org", "/"),
|
||||
getCookieId("cs2", ".example.org", "/"),
|
||||
getCookieId("sc1", "sectest1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
getCookieId("sc2", "sectest1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
],
|
||||
],
|
||||
[["localStorage", "http://test1.example.org"],
|
||||
|
@ -66,9 +66,9 @@ add_task(async function() {
|
||||
getCookieId("cs2", ".example.org", "/"),
|
||||
getCookieId("c4", ".example.org", "/"),
|
||||
getCookieId("sc1", "sectest1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
getCookieId("sc2", "sectest1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
getCookieId("uc1", ".example.org", "/"),
|
||||
getCookieId("uc2", ".example.org", "/"),
|
||||
],
|
||||
@ -100,9 +100,9 @@ add_task(async function() {
|
||||
getCookieId("uc1", ".example.org", "/"),
|
||||
getCookieId("uc2", ".example.org", "/"),
|
||||
getCookieId("sc1", "sectest1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
getCookieId("sc2", "sectest1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
],
|
||||
],
|
||||
]);
|
||||
@ -129,7 +129,7 @@ add_task(async function() {
|
||||
getCookieId("c4", ".example.org", "/"),
|
||||
getCookieId("uc2", ".example.org", "/"),
|
||||
getCookieId("sc2", "sectest1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
],
|
||||
],
|
||||
]);
|
||||
|
@ -12,11 +12,11 @@ add_task(async function() {
|
||||
await openTabAndSetupStorage(MAIN_DOMAIN + "storage-cookies-samesite.html");
|
||||
|
||||
const id1 = getCookieId("test1", "test1.example.org",
|
||||
"/browser/devtools/client/storage/test/");
|
||||
"/browser/devtools/client/storage/test");
|
||||
const id2 = getCookieId("test2", "test1.example.org",
|
||||
"/browser/devtools/client/storage/test/");
|
||||
"/browser/devtools/client/storage/test");
|
||||
const id3 = getCookieId("test3", "test1.example.org",
|
||||
"/browser/devtools/client/storage/test/");
|
||||
"/browser/devtools/client/storage/test");
|
||||
|
||||
await checkState([
|
||||
[
|
||||
|
@ -45,9 +45,9 @@ const storageItemsForDefault = [
|
||||
getCookieId("cs2", ".example.org", "/"),
|
||||
getCookieId("c4", ".example.org", "/"),
|
||||
getCookieId("sc1", "sectest1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
getCookieId("sc2", "sectest1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
],
|
||||
],
|
||||
[["localStorage", "http://test1.example.org"],
|
||||
|
@ -87,12 +87,12 @@ add_task(async function() {
|
||||
getCookieId("c1", "test1.example.org", "/browser"),
|
||||
getCookieId("c2", "test1.example.org", "/browser"),
|
||||
getCookieId("c3", "test1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
],
|
||||
],
|
||||
]);
|
||||
const c3id = getCookieId("c3", "test1.example.org",
|
||||
"/browser/devtools/client/storage/test/");
|
||||
"/browser/devtools/client/storage/test");
|
||||
checkCell(c3id, "value", "booyeah");
|
||||
|
||||
// Add another
|
||||
@ -107,14 +107,14 @@ add_task(async function() {
|
||||
getCookieId("c1", "test1.example.org", "/browser"),
|
||||
getCookieId("c2", "test1.example.org", "/browser"),
|
||||
getCookieId("c3", "test1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
getCookieId("c4", "test1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
],
|
||||
],
|
||||
]);
|
||||
const c4id = getCookieId("c4", "test1.example.org",
|
||||
"/browser/devtools/client/storage/test/");
|
||||
"/browser/devtools/client/storage/test");
|
||||
checkCell(c4id, "value", "booyeah");
|
||||
|
||||
// Removing cookies
|
||||
@ -128,9 +128,9 @@ add_task(async function() {
|
||||
[
|
||||
getCookieId("c2", "test1.example.org", "/browser"),
|
||||
getCookieId("c3", "test1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
getCookieId("c4", "test1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
],
|
||||
],
|
||||
]);
|
||||
@ -151,7 +151,7 @@ add_task(async function() {
|
||||
[
|
||||
getCookieId("c2", "test1.example.org", "/browser"),
|
||||
getCookieId("c4", "test1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
],
|
||||
],
|
||||
]);
|
||||
@ -168,7 +168,7 @@ add_task(async function() {
|
||||
["cookies", "http://test1.example.org"],
|
||||
[
|
||||
getCookieId("c4", "test1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
],
|
||||
],
|
||||
]);
|
||||
|
@ -39,7 +39,7 @@ add_task(async function() {
|
||||
return content.document.location.href;
|
||||
});
|
||||
|
||||
const cookiePath = actualPath.substr(0, actualPath.lastIndexOf("/") + 1)
|
||||
const cookiePath = actualPath.substr(0, actualPath.lastIndexOf("/"))
|
||||
.replace(/file:\/\//g, "");
|
||||
await checkState([
|
||||
[
|
||||
|
@ -44,7 +44,7 @@ const testCases = [
|
||||
], true],
|
||||
[
|
||||
getCookieId("c_encoded", "test1.example.org",
|
||||
"/browser/devtools/client/storage/test/"),
|
||||
"/browser/devtools/client/storage/test"),
|
||||
[
|
||||
{name: "c_encoded",
|
||||
value: encodeURIComponent(JSON.stringify({foo: {foo1: "bar"}}))},
|
||||
|
@ -41,11 +41,11 @@ const afterIframeAdded = {
|
||||
"https://sectest1.example.org": [
|
||||
getCookieId("cs2", ".example.org", "/"),
|
||||
getCookieId("sc1", "sectest1.example.org",
|
||||
"/browser/devtools/server/tests/browser/"),
|
||||
"/browser/devtools/server/tests/browser"),
|
||||
],
|
||||
"http://sectest1.example.org": [
|
||||
getCookieId("sc1", "sectest1.example.org",
|
||||
"/browser/devtools/server/tests/browser/"),
|
||||
"/browser/devtools/server/tests/browser"),
|
||||
],
|
||||
},
|
||||
indexedDB: {
|
||||
|
@ -52,7 +52,7 @@ const storeMap = {
|
||||
{
|
||||
name: "sc1",
|
||||
value: "foobar",
|
||||
path: "/browser/devtools/server/tests/browser/",
|
||||
path: "/browser/devtools/server/tests/browser",
|
||||
host: "sectest1.example.org",
|
||||
expires: 0,
|
||||
hostOnly: true,
|
||||
@ -82,7 +82,7 @@ const storeMap = {
|
||||
{
|
||||
name: "sc1",
|
||||
value: "foobar",
|
||||
path: "/browser/devtools/server/tests/browser/",
|
||||
path: "/browser/devtools/server/tests/browser",
|
||||
host: "sectest1.example.org",
|
||||
expires: 0,
|
||||
hostOnly: true,
|
||||
|
@ -22,9 +22,9 @@ const TESTS = [
|
||||
cookies: {
|
||||
"http://test1.example.org": [
|
||||
getCookieId("c1", "test1.example.org",
|
||||
"/browser/devtools/server/tests/browser/"),
|
||||
"/browser/devtools/server/tests/browser"),
|
||||
getCookieId("c2", "test1.example.org",
|
||||
"/browser/devtools/server/tests/browser/"),
|
||||
"/browser/devtools/server/tests/browser"),
|
||||
],
|
||||
},
|
||||
localStorage: {
|
||||
@ -48,7 +48,7 @@ const TESTS = [
|
||||
cookies: {
|
||||
"http://test1.example.org": [
|
||||
getCookieId("c1", "test1.example.org",
|
||||
"/browser/devtools/server/tests/browser/"),
|
||||
"/browser/devtools/server/tests/browser"),
|
||||
],
|
||||
},
|
||||
},
|
||||
@ -77,7 +77,7 @@ const TESTS = [
|
||||
cookies: {
|
||||
"http://test1.example.org": [
|
||||
getCookieId("c2", "test1.example.org",
|
||||
"/browser/devtools/server/tests/browser/"),
|
||||
"/browser/devtools/server/tests/browser"),
|
||||
],
|
||||
},
|
||||
localStorage: {
|
||||
@ -118,7 +118,7 @@ const TESTS = [
|
||||
cookies: {
|
||||
"http://test1.example.org": [
|
||||
getCookieId("c3", "test1.example.org",
|
||||
"/browser/devtools/server/tests/browser/"),
|
||||
"/browser/devtools/server/tests/browser"),
|
||||
],
|
||||
},
|
||||
sessionStorage: {
|
||||
@ -134,7 +134,7 @@ const TESTS = [
|
||||
cookies: {
|
||||
"http://test1.example.org": [
|
||||
getCookieId("c1", "test1.example.org",
|
||||
"/browser/devtools/server/tests/browser/"),
|
||||
"/browser/devtools/server/tests/browser"),
|
||||
],
|
||||
},
|
||||
localStorage: {
|
||||
@ -170,7 +170,7 @@ const TESTS = [
|
||||
cookies: {
|
||||
"http://test1.example.org": [
|
||||
getCookieId("c3", "test1.example.org",
|
||||
"/browser/devtools/server/tests/browser/"),
|
||||
"/browser/devtools/server/tests/browser"),
|
||||
],
|
||||
},
|
||||
},
|
||||
|
@ -2,7 +2,7 @@ addMessageListener("getCookieFromManager", ({ host, path }) => {
|
||||
let cm = Cc["@mozilla.org/cookiemanager;1"]
|
||||
.getService(Ci.nsICookieManager);
|
||||
let values = [];
|
||||
path = path.substring(0, path.lastIndexOf("/") + 1);
|
||||
path = path.substring(0, path.lastIndexOf("/"));
|
||||
for (let cookie of cm.enumerator) {
|
||||
if (!cookie) {
|
||||
break;
|
||||
|
@ -4096,6 +4096,15 @@ nsAutoCString nsCookieService::GetPathFromURI(nsIURI* aHostURI) {
|
||||
path.Truncate(slash + 1);
|
||||
}
|
||||
}
|
||||
|
||||
// strip the right-most %x2F ("/") if the path doesn't contain only 1 '/'.
|
||||
int32_t lastSlash = path.RFindChar('/');
|
||||
int32_t firstSlash = path.FindChar('/');
|
||||
if (lastSlash != firstSlash && lastSlash != kNotFound &&
|
||||
lastSlash == (int32_t)(path.Length() - 1)) {
|
||||
path.Truncate(lastSlash);
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
|
@ -1,4 +0,0 @@
|
||||
[default.html]
|
||||
[Test for default cookie path]
|
||||
expected: FAIL
|
||||
|
Loading…
x
Reference in New Issue
Block a user