aboutsummaryrefslogtreecommitdiff
path: root/src/internal
diff options
context:
space:
mode:
author胡玮文 <huweiwen.hww@alibaba-inc.com>2025-11-22 17:15:04 +0800
committerGopher Robot <gobot@golang.org>2025-11-26 21:51:52 -0800
commit6be5de4bc4e30ac0e2843c781393235d78e384a8 (patch)
tree3bcc632eb34d7f34b93c9c4e2d6967243de03b6f /src/internal
parent481c6df7b9006e59febbb24689ab8bf686695e9d (diff)
downloadgo-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.go22
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) {