]> Cypherpunks repositories - gostls13.git/commitdiff
internal/runtime/cgroup: simplify escapePath in test
author胡玮文 <huweiwen.hww@alibaba-inc.com>
Sat, 22 Nov 2025 09:15:04 +0000 (17:15 +0800)
committerGopher Robot <gobot@golang.org>
Thu, 27 Nov 2025 05:51:52 +0000 (21:51 -0800)
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>
src/internal/runtime/cgroup/cgroup_test.go

index d47fe4206749dcd0f18c38e48b0ae6f3871884f4..a4ffdf3ba1728ebf77404149e8318b25925a7520 100644 (file)
@@ -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) {