7
7
"strconv"
8
8
"strings"
9
9
10
- "golang.org/x/sys/unix"
11
-
12
10
"github.com/hanwen/go-fuse/v2/fuse"
13
11
)
14
12
@@ -29,25 +27,28 @@ func asUser(f func() (int, error), context *fuse.Context) (int, error) {
29
27
// syscall.{Setgroups,Setregid,Setreuid} affects all threads, which
30
28
// is exactly what we not want.
31
29
//
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.
33
34
34
- err := unix . Setgroups (getSupplementaryGroups (context .Pid ))
35
+ err := Setgroups (getSupplementaryGroups (context .Pid ))
35
36
if err != nil {
36
37
return - 1 , err
37
38
}
38
- defer unix . Setgroups (nil )
39
+ defer SetgroupsPanic (nil )
39
40
40
- err = unix . Setregid (- 1 , int (context .Owner .Gid ))
41
+ err = Setregid (- 1 , int (context .Owner .Gid ))
41
42
if err != nil {
42
43
return - 1 , err
43
44
}
44
- defer unix . Setregid (- 1 , 0 )
45
+ defer SetregidPanic (- 1 , 0 )
45
46
46
- err = unix . Setreuid (- 1 , int (context .Owner .Uid ))
47
+ err = Setreuid (- 1 , int (context .Owner .Uid ))
47
48
if err != nil {
48
49
return - 1 , err
49
50
}
50
- defer unix . Setreuid (- 1 , 0 )
51
+ defer SetreuidPanic (- 1 , 0 )
51
52
52
53
return f ()
53
54
}
0 commit comments