fix: preserve = padding in parsed cookies (#6789)

This commit is contained in:
Shridhar Deshmukh
2025-12-16 04:54:40 +00:00
committed by github-actions[bot]
parent dc6afbc8a1
commit f32d2baf08
2 changed files with 37 additions and 2 deletions
@@ -1,6 +1,11 @@
import type { BetterAuthOptions } from "@better-auth/core";
import { describe, expect, it } from "vitest";
import { getCookieCache, getCookies, getSessionCookie } from "../cookies";
import {
getCookieCache,
getCookies,
getSessionCookie,
parseCookies,
} from "../cookies";
import { parseUserOutput } from "../db/schema";
import { getTestInstance } from "../test-utils/test-instance";
import { parseSetCookieHeader } from "./cookie-utils";
@@ -1102,3 +1107,33 @@ describe("Cookie Chunking", () => {
expect(cache?.user?.email).toEqual(testUser.email);
});
});
describe("parse cookies", () => {
it("should parse cookies into key-value map", () => {
const cookieHeader =
"better-auth.session_token=session-token.signature; better-auth.session_data=session-data.signature";
const parsedCookies = parseCookies(cookieHeader);
expect(parsedCookies.get("better-auth.session_token")).toBe(
"session-token.signature",
);
expect(parsedCookies.get("better-auth.session_data")).toBe(
"session-data.signature",
);
});
it("should securely parse the signed cookies with padding", () => {
const cookieHeader =
"better-auth.session_token=session-token.signature=; better-auth.session_data=session-data.signature=";
const parsedCookies = parseCookies(cookieHeader);
expect(parsedCookies.get("better-auth.session_token")).toBe(
"session-token.signature=",
);
expect(parsedCookies.get("better-auth.session_data")).toBe(
"session-data.signature=",
);
});
});
+1 -1
View File
@@ -352,7 +352,7 @@ export function parseCookies(cookieHeader: string) {
const cookieMap = new Map<string, string>();
cookies.forEach((cookie) => {
const [name, value] = cookie.split("=");
const [name, value] = cookie.split(/=(.*)/s);
cookieMap.set(name!, value!);
});
return cookieMap;