Fixed potential race condition in per-tab configuration cookie hack.

This commit is contained in:
hackademix 2018-10-13 23:13:58 +02:00
parent ae5704dcf9
commit f9703b2bcb
2 changed files with 6 additions and 4 deletions

View File

@ -105,9 +105,10 @@
var ChildPolicies = {
addTabInfoCookie(request, info) {
let {tabId, frameId} = request;
let h = {
name: "Set-Cookie",
value: `${marker}=${JSON.stringify(info)}`
value: `${marker}_${tabId}_${frameId}=${JSON.stringify(info)}`
};
let {responseHeaders} = request;
if (responseHeaders.some(({value, name}) => h.value === value && h.name === name)) {

View File

@ -52,13 +52,14 @@
// (before any content can access it)
if (this.config.MARKER = MARKER) {
let cookieRx = new RegExp(`(?:^|;\\s*)${MARKER}=([^;]*)`);
let cookieRx = new RegExp(`(?:^|;\\s*)(${MARKER}(?:_\\d+){2})=([^;]*)`);
let match = document.cookie.match(cookieRx);
if (match) {
let [cookie, cookieName, cookieValue] = match;
// delete cookie NOW
document.cookie = `${MARKER}=;expires=${new Date(Date.now() - 31536000000).toGMTString()}`;
document.cookie = `${cookieName}=;expires=${new Date(Date.now() - 31536000000).toGMTString()}`;
try {
this.config.tabInfo = JSON.parse(decodeURIComponent(match[1]));
this.config.tabInfo = JSON.parse(decodeURIComponent(cookieValue));
} catch (e) {
error(e);
}