testing: limit TempDir name length

Fixes #71742

Change-Id: Ibef8f7f0a36b25f181062c4d2f84279a97e467a4
Reviewed-on: https://go-review.googlesource.com/c/go/+/671577
Reviewed-by: Damien Neil <dneil@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
This commit is contained in:
Sean Liao 2025-05-11 22:36:58 +01:00
parent 8cfcad8da8
commit ac992f2614
2 changed files with 7 additions and 1 deletions

View File

@ -1244,6 +1244,11 @@ func (c *common) TempDir() string {
if nonExistent {
c.Helper()
pattern := c.Name()
// Limit length of file names on disk.
// Invalid runes from slicing are dropped by strings.Map below.
pattern = pattern[:min(len(pattern), 64)]
// Drop unusual characters (such as path separators or
// characters interacting with globs) from the directory name to
// avoid surprising os.MkdirTemp behavior.
@ -1263,7 +1268,7 @@ func (c *common) TempDir() string {
}
return -1
}
pattern := strings.Map(mapper, c.Name())
pattern = strings.Map(mapper, pattern)
c.tempDir, c.tempDirErr = os.MkdirTemp("", pattern)
if c.tempDirErr == nil {
c.Cleanup(func() {

View File

@ -89,6 +89,7 @@ func TestTempDir(t *testing.T) {
t.Run("test[]", testTempDir)
t.Run("test*", testTempDir)
t.Run("äöüéè", testTempDir)
t.Run(strings.Repeat("a", 300), testTempDir)
}
func testTempDir(t *testing.T) {