diff options
| author | 胡玮文 <huweiwen.hww@alibaba-inc.com> | 2025-11-22 17:15:04 +0800 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2025-11-26 21:51:52 -0800 |
| commit | 6be5de4bc4e30ac0e2843c781393235d78e384a8 (patch) | |
| tree | 3bcc632eb34d7f34b93c9c4e2d6967243de03b6f /src/internal | |
| parent | 481c6df7b9006e59febbb24689ab8bf686695e9d (diff) | |
| download | go-6be5de4bc4e30ac0e2843c781393235d78e384a8.tar.xz | |
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 <mpratt@google.com>
Auto-Submit: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Diffstat (limited to 'src/internal')
| -rw-r--r-- | src/internal/runtime/cgroup/cgroup_test.go | 22 |
1 files 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) { |
