diff options
author | Jakob Unterwurzacher | 2025-02-26 21:28:07 +0100 |
---|---|---|
committer | Jakob Unterwurzacher | 2025-02-26 21:28:07 +0100 |
commit | a540b0ea1bf5e9742773784600033bcb466e8a04 (patch) | |
tree | c13e3ac0791ef213853060163c961cb609932894 | |
parent | 987ced003ec2971797e8969e0cf0a37a751ebc84 (diff) |
syscallcompat: move getSupplementaryGroups to suser_linux.go
It's only used there, so move it.
-rw-r--r-- | internal/syscallcompat/asuser_linux.go | 30 | ||||
-rw-r--r-- | internal/syscallcompat/sys_linux.go | 29 |
2 files changed, 30 insertions, 29 deletions
diff --git a/internal/syscallcompat/asuser_linux.go b/internal/syscallcompat/asuser_linux.go index dac94f4..d0224bc 100644 --- a/internal/syscallcompat/asuser_linux.go +++ b/internal/syscallcompat/asuser_linux.go @@ -1,7 +1,11 @@ package syscallcompat import ( + "fmt" + "io/ioutil" "runtime" + "strconv" + "strings" "golang.org/x/sys/unix" @@ -47,3 +51,29 @@ func asUser(f func() (int, error), context *fuse.Context) (int, error) { return f() } + +func getSupplementaryGroups(pid uint32) (gids []int) { + procPath := fmt.Sprintf("/proc/%d/task/%d/status", pid, pid) + blob, err := ioutil.ReadFile(procPath) + if err != nil { + return nil + } + + lines := strings.Split(string(blob), "\n") + for _, line := range lines { + if strings.HasPrefix(line, "Groups:") { + f := strings.Fields(line[7:]) + gids = make([]int, len(f)) + for i := range gids { + val, err := strconv.ParseInt(f[i], 10, 32) + if err != nil { + return nil + } + gids[i] = int(val) + } + return gids + } + } + + return nil +} diff --git a/internal/syscallcompat/sys_linux.go b/internal/syscallcompat/sys_linux.go index 6414a64..5a4a4ab 100644 --- a/internal/syscallcompat/sys_linux.go +++ b/internal/syscallcompat/sys_linux.go @@ -3,9 +3,6 @@ package syscallcompat import ( "fmt" - "io/ioutil" - "strconv" - "strings" "sync" "syscall" "time" @@ -66,32 +63,6 @@ func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { return syscall.Fallocate(fd, mode, off, len) } -func getSupplementaryGroups(pid uint32) (gids []int) { - procPath := fmt.Sprintf("/proc/%d/task/%d/status", pid, pid) - blob, err := ioutil.ReadFile(procPath) - if err != nil { - return nil - } - - lines := strings.Split(string(blob), "\n") - for _, line := range lines { - if strings.HasPrefix(line, "Groups:") { - f := strings.Fields(line[7:]) - gids = make([]int, len(f)) - for i := range gids { - val, err := strconv.ParseInt(f[i], 10, 32) - if err != nil { - return nil - } - gids[i] = int(val) - } - return gids - } - } - - return nil -} - // Mknodat wraps the Mknodat syscall. func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { return syscall.Mknodat(dirfd, path, mode, dev) |