From 971fe3f0ec0b529808826a32ccc3698e34421d96 Mon Sep 17 00:00:00 2001 From: Yarchik Date: Thu, 9 Jul 2026 12:11:48 +0100 Subject: [PATCH] fix: don't throw when a set-cookie string has no name-value-pair --- lib/set-cookie.js | 3 +++ test/set-cookie-parser.js | 9 +++++++++ 2 files changed, 12 insertions(+) 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 = [];