From 6be5de4bc4e30ac0e2843c781393235d78e384a8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E8=83=A1=E7=8E=AE=E6=96=87?= Date: Sat, 22 Nov 2025 17:15:04 +0800 Subject: [PATCH] internal/runtime/cgroup: simplify escapePath in test Don't work on rune, kernel does not use utf-8 here. Can be verified like this: # mkdir "$(echo -e "\xff\x20")" # mount -t tmpfs tmpfs "$(echo -e "\xff\x20")" # tail -n 1 /proc/self/mountinfo | xxd 00000000: 3133 3334 2031 3030 2030 3a31 3632 202f 1334 100 0:162 / 00000010: 202f 726f 6f74 2fff 5c30 3430 2072 772c /root/.\040 rw, 00000020: 7265 6c61 7469 6d65 2073 6861 7265 643a relatime shared: 00000030: 3433 3520 2d20 746d 7066 7320 746d 7066 435 - tmpfs tmpf 00000040: 7320 7277 0a s rw. Change-Id: I7468b56eb26f14bc809f8f7580535e6562795c62 Reviewed-on: https://go-review.googlesource.com/c/go/+/723300 Reviewed-by: Michael Pratt Auto-Submit: Michael Pratt LUCI-TryBot-Result: Go LUCI Reviewed-by: Dmitri Shuralyov --- src/internal/runtime/cgroup/cgroup_test.go | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/internal/runtime/cgroup/cgroup_test.go b/src/internal/runtime/cgroup/cgroup_test.go index d47fe42067..a4ffdf3ba1 100644 --- a/src/internal/runtime/cgroup/cgroup_test.go +++ b/src/internal/runtime/cgroup/cgroup_test.go @@ -8,7 +8,6 @@ import ( "fmt" "internal/runtime/cgroup" "io" - "strconv" "strings" "testing" ) @@ -380,21 +379,11 @@ func TestParseCPUMount(t *testing.T) { // That is, '\', ' ', '\t', and '\n' are converted to octal escape sequences, // like '\040' for space. func escapePath(s string) string { - out := make([]rune, 0, len(s)) - for _, c := range s { + out := make([]byte, 0, len(s)) + for _, c := range []byte(s) { switch c { case '\\', ' ', '\t', '\n': - out = append(out, '\\') - cs := strconv.FormatInt(int64(c), 8) - if len(cs) <= 2 { - out = append(out, '0') - } - if len(cs) <= 1 { - out = append(out, '0') - } - for _, csc := range cs { - out = append(out, csc) - } + out = fmt.Appendf(out, "\\%03o", c) default: out = append(out, c) } @@ -444,6 +433,11 @@ b/c`, unescaped: `/a/\`, escaped: `/a/\134`, }, + { + name: "non-utf8", + unescaped: "/a/b\xff\x20/c", + escaped: "/a/b\xff\\040/c", + }, } t.Run("escapePath", func(t *testing.T) { -- 2.52.0