From 91b9e42f17e81189196422ee73aea7ec593115ba Mon Sep 17 00:00:00 2001 From: SEONGHYUN HONG Date: Sun, 21 Jun 2026 23:23:45 +0900 Subject: [PATCH] fix: sanitize all invalid characters in checksum filenames (#2886) --- internal/fingerprint/sources_checksum.go | 2 +- internal/fingerprint/sources_checksum_test.go | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/internal/fingerprint/sources_checksum.go b/internal/fingerprint/sources_checksum.go index f1108e11..3afd7b0a 100644 --- a/internal/fingerprint/sources_checksum.go +++ b/internal/fingerprint/sources_checksum.go @@ -119,7 +119,7 @@ func (checker *ChecksumChecker) checksumFilePath(t *ast.Task) string { return filepath.Join(checker.tempDir, "checksum", normalizeFilename(t.Name())) } -var checksumFilenameRegexp = regexp.MustCompile("[^A-z0-9]") +var checksumFilenameRegexp = regexp.MustCompile("[^[:alnum:]]") // replaces invalid characters on filenames with "-" func normalizeFilename(f string) string { diff --git a/internal/fingerprint/sources_checksum_test.go b/internal/fingerprint/sources_checksum_test.go index a2b35cd3..a8e4b253 100644 --- a/internal/fingerprint/sources_checksum_test.go +++ b/internal/fingerprint/sources_checksum_test.go @@ -16,6 +16,10 @@ func TestNormalizeFilename(t *testing.T) { {"foo/bar/baz", "foo-bar-baz"}, {"foo@bar/baz", "foo-bar-baz"}, {"foo1bar2baz3", "foo1bar2baz3"}, + {"foo\\bar", "foo-bar"}, + {"foo_bar", "foo-bar"}, + {"foo[bar]baz", "foo-bar-baz"}, + {"foo^bar`baz", "foo-bar-baz"}, } for _, test := range tests { assert.Equal(t, test.Out, normalizeFilename(test.In))