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:
Andrea Marchesini 2019-06-04 02:42:57 +00:00
parent 3176c749f5
commit 176b3f8e39
16 changed files with 49 additions and 44 deletions

View File

@ -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"],

View File

@ -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"],

View File

@ -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"],

View File

@ -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"],

View File

@ -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"),
],
],
]);

View File

@ -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([
[

View File

@ -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"],

View File

@ -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"),
],
],
]);

View File

@ -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([
[

View File

@ -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"}}))},

View File

@ -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: {

View File

@ -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,

View File

@ -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"),
],
},
},

View File

@ -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;

View File

@ -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;
}

View File

@ -1,4 +0,0 @@
[default.html]
[Test for default cookie path]
expected: FAIL