aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Unterwurzacher2025-02-26 21:28:07 +0100
committerJakob Unterwurzacher2025-02-26 21:28:07 +0100
commita540b0ea1bf5e9742773784600033bcb466e8a04 (patch)
treec13e3ac0791ef213853060163c961cb609932894
parent987ced003ec2971797e8969e0cf0a37a751ebc84 (diff)
syscallcompat: move getSupplementaryGroups to suser_linux.go
It's only used there, so move it.
-rw-r--r--internal/syscallcompat/asuser_linux.go30
-rw-r--r--internal/syscallcompat/sys_linux.go29
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)