From d4ebc65ac4f4a72c0ae1bd9cd5aa1fc7c7f5b22e Mon Sep 17 00:00:00 2001 From: cel Date: Fri, 20 Apr 2018 10:13:30 -1000 Subject: Handle escaped blob ids --- lib/serve.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib/serve.js') diff --git a/lib/serve.js b/lib/serve.js index a68d815..0e497ea 100644 --- a/lib/serve.js +++ b/lib/serve.js @@ -32,7 +32,7 @@ module.exports = Serve var emojiDir = path.join(require.resolve('emoji-named-characters'), '../pngs') var hlCssDir = path.join(require.resolve('highlight.js'), '../../styles') -var urlIdRegex = /^(?:\/+(([%&@]|%25)(?:[A-Za-z0-9\/+]|%2[Ff]|%2[Bb]){43}(?:=|%3D)\.(?:sha256|ed25519))([^?]*)?|(\/.*?))(?:\?(.*))?$/ +var urlIdRegex = /^(?:\/+(([%&@]|%25|%26)(?:[A-Za-z0-9\/+]|%2[Ff]|%2[Bb]){43}(?:=|%3D)\.(?:sha256|ed25519))([^?]*)?|(\/.*?))(?:\?(.*))?$/ function ctype(name) { switch (name && /[^.\/]*$/.exec(name)[0] || 'html') { @@ -282,6 +282,7 @@ Serve.prototype.handle = function () { case '%25': m[2] = '%'; m[1] = decodeURIComponent(m[1]) case '%': return this.id(m[1], m[3]) case '@': return this.userFeed(m[1], m[3]) + case '%26': m[2] = '%'; m[1] = decodeURIComponent(m[1]) case '&': return this.blob(m[1], m[3]) default: return this.path(m[4]) } -- cgit v1.2.3