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