fix: harden env var substitution parsing (#1044) (thanks @sebslight)

This commit is contained in:
Peter Steinberger
2026-01-17 00:29:08 +00:00
parent 731080375a
commit 25399d39cb
3 changed files with 72 additions and 20 deletions

View File

@@ -129,10 +129,25 @@ describe("resolveConfigEnvVars", () => {
expect(result).toEqual({ key: "resolved/${LITERAL}" });
});
it("handles escaped and unescaped of the same var (escaped first)", () => {
const result = resolveConfigEnvVars({ key: "$${FOO} ${FOO}" }, { FOO: "bar" });
expect(result).toEqual({ key: "${FOO} bar" });
});
it("handles escaped and unescaped of the same var (unescaped first)", () => {
const result = resolveConfigEnvVars({ key: "${FOO} $${FOO}" }, { FOO: "bar" });
expect(result).toEqual({ key: "bar ${FOO}" });
});
it("handles multiple escaped vars", () => {
const result = resolveConfigEnvVars({ key: "$${A}:$${B}" }, {});
expect(result).toEqual({ key: "${A}:${B}" });
});
it("does not unescape $${VAR} sequences from env values", () => {
const result = resolveConfigEnvVars({ key: "${FOO}" }, { FOO: "$${BAR}" });
expect(result).toEqual({ key: "$${BAR}" });
});
});
describe("non-matching patterns unchanged", () => {