cap the file name before normalization

This commit is contained in:
Gani Georgiev
2025-12-19 16:58:08 +02:00
parent c2d6530065
commit d08da7594a
2 changed files with 10 additions and 2 deletions

View File

@@ -193,6 +193,13 @@ var extInvalidCharsRegex = regexp.MustCompile(`[^\w\.\*\-\+\=\#]+`)
const randomAlphabet = "abcdefghijklmnopqrstuvwxyz0123456789"
func normalizeName(fr FileReader, name string) string {
// cut the name even if it is not multibyte safe to avoid operating on too large strings
// ---
originalLength := len(name)
if originalLength > 300 {
name = name[originalLength-300:]
}
// extension
// ---
originalExt := extractExtension(name)

View File

@@ -216,8 +216,9 @@ func TestFileNameNormalizations(t *testing.T) {
{"a.b.c.d.tar.gz", `^a_b_c_d_\w{10}\.tar\.gz$`},
{"abcd", `^abcd_\w{10}\.txt$`},
{".abcd.123.", `^abcd_\w{10}\.123$`},
{"a b! c d . 456", `^a_b_c_d_\w{10}\.456$`}, // normalize spaces
{strings.Repeat("a", 101) + "." + strings.Repeat("b", 21), `^a{100}_\w{10}\.b{20}$`}, // name and extension length trim
{"a b! c d . 456", `^a_b_c_d_\w{10}\.456$`}, // normalize spaces
{strings.Repeat("a", 101) + "." + strings.Repeat("b", 21), `^a{100}_\w{10}\.b{20}$`}, // name and extension length cut
{"abc" + strings.Repeat("d", 290) + "." + strings.Repeat("b", 9), `^d{100}_\w{10}\.b{9}$`}, // initial total lenght cut
}
for i, s := range scenarios {