diff --git a/lib/set-cookie.js b/lib/set-cookie.js index 7d4aa62..a0c25c9 100644 --- a/lib/set-cookie.js +++ b/lib/set-cookie.js @@ -21,6 +21,9 @@ function parseString(setCookieValue, options) { var parts = setCookieValue.split(";").filter(isNonEmptyString); var nameValuePairStr = parts.shift(); + if (!nameValuePairStr) { + return null; + } var parsed = parseNameValuePair(nameValuePairStr); var name = parsed.name; var value = parsed.value; diff --git a/test/set-cookie-parser.js b/test/set-cookie-parser.js index 6437923..c15cb48 100644 --- a/test/set-cookie-parser.js +++ b/test/set-cookie-parser.js @@ -233,6 +233,15 @@ describe("set-cookie-parser", function () { assert.deepEqual(actual, expected); }); + it("should ignore a set-cookie string with no name-value-pair instead of throwing", function () { + assert.deepEqual(parseSetCookie(";"), []); + assert.deepEqual(parseSetCookie(" ; "), []); + assert.deepEqual(parseSetCookie([";", "foo=bar"]), [ + { name: "foo", value: "bar" }, + ]); + assert.deepEqual(parseSetCookie(";", { map: true }), {}); + }); + it("should skip cookies that could pollute the object prototype", function () { var actual = parseSetCookie("__proto__=test;"); var expected = [];