From f379cc5bd8dfe2638dbf88d30635e5eee7a0e023 Mon Sep 17 00:00:00 2001 From: akihiro Date: Mon, 23 Mar 2020 18:18:32 +0900 Subject: [PATCH 1/2] Fix errors due to no path This inspection of e.state.path is needed because anyone can call .pushState with an arbitrary state argument. --- page.js | 2 +- page.mjs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/page.js b/page.js index d033af50..a5399920 100644 --- a/page.js +++ b/page.js @@ -847,7 +847,7 @@ pathToRegexp_1.tokensToRegExp = tokensToRegExp_1; return function onpopstate(e) { if (!loaded) return; var page = this; - if (e.state) { + if (e.state && e.state.path) { var path = e.state.path; page.replace(path, e.state); } else if (isLocation) { diff --git a/page.mjs b/page.mjs index bb48775d..ed54551d 100644 --- a/page.mjs +++ b/page.mjs @@ -841,7 +841,7 @@ pathToRegexp_1.tokensToRegExp = tokensToRegExp_1; return function onpopstate(e) { if (!loaded) return; var page = this; - if (e.state) { + if (e.state && e.state.path) { var path = e.state.path; page.replace(path, e.state); } else if (isLocation) { From 6bba5c2481c2281429f46dd3a57cc33e93fa5ba0 Mon Sep 17 00:00:00 2001 From: akihiro Date: Mon, 23 Mar 2020 18:47:29 +0900 Subject: [PATCH 2/2] Consider that e.state may not be an object --- page.js | 2 +- page.mjs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/page.js b/page.js index a5399920..c21e9fc7 100644 --- a/page.js +++ b/page.js @@ -847,7 +847,7 @@ pathToRegexp_1.tokensToRegExp = tokensToRegExp_1; return function onpopstate(e) { if (!loaded) return; var page = this; - if (e.state && e.state.path) { + if (e.state && typeof e.state === 'object' && 'path' in e.state) { var path = e.state.path; page.replace(path, e.state); } else if (isLocation) { diff --git a/page.mjs b/page.mjs index ed54551d..a947621e 100644 --- a/page.mjs +++ b/page.mjs @@ -841,7 +841,7 @@ pathToRegexp_1.tokensToRegExp = tokensToRegExp_1; return function onpopstate(e) { if (!loaded) return; var page = this; - if (e.state && e.state.path) { + if (e.state && typeof e.state === 'object' && 'path' in e.state) { var path = e.state.path; page.replace(path, e.state); } else if (isLocation) {