Skip to content

Commit 6b1ba58

Browse files
committed
syscallcompat: use our own Setgroups/Setregid/Setreuid wrappers
x/sys v0.1.0 (golang/sys@d0df966) breaks our usecase. Switch to our own wrappers. Relates-to: #892 Relates-to: #893
1 parent 07b1bd7 commit 6b1ba58

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

internal/syscallcompat/asuser_linux.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ import (
77
"strconv"
88
"strings"
99

10-
"golang.org/x/sys/unix"
11-
1210
"github.com/hanwen/go-fuse/v2/fuse"
1311
)
1412

@@ -29,25 +27,28 @@ func asUser(f func() (int, error), context *fuse.Context) (int, error) {
2927
// syscall.{Setgroups,Setregid,Setreuid} affects all threads, which
3028
// is exactly what we not want.
3129
//
32-
// We now use unix.{Setgroups,Setregid,Setreuid} instead.
30+
// And unix.{Setgroups,Setregid,Setreuid} also changed to this behavoir in
31+
// v0.1.0 (commit d0df966e6959f00dc1c74363e537872647352d51 ,
32+
// https://go-review.googlesource.com/c/sys/+/428174 ), so we use
33+
// our own syscall wrappers.
3334

34-
err := unix.Setgroups(getSupplementaryGroups(context.Pid))
35+
err := Setgroups(getSupplementaryGroups(context.Pid))
3536
if err != nil {
3637
return -1, err
3738
}
38-
defer unix.Setgroups(nil)
39+
defer SetgroupsPanic(nil)
3940

40-
err = unix.Setregid(-1, int(context.Owner.Gid))
41+
err = Setregid(-1, int(context.Owner.Gid))
4142
if err != nil {
4243
return -1, err
4344
}
44-
defer unix.Setregid(-1, 0)
45+
defer SetregidPanic(-1, 0)
4546

46-
err = unix.Setreuid(-1, int(context.Owner.Uid))
47+
err = Setreuid(-1, int(context.Owner.Uid))
4748
if err != nil {
4849
return -1, err
4950
}
50-
defer unix.Setreuid(-1, 0)
51+
defer SetreuidPanic(-1, 0)
5152

5253
return f()
5354
}

0 commit comments

Comments
 (0)