aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/manager/service.go
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2020-03-06 21:42:18 +0800
committerJason A. Donenfeld <Jason@zx2c4.com>2020-03-15 14:49:27 -0600
commit90dc5ae520daf59acc6ee9214c1c05b4372374ef (patch)
treed023896235de6c17b8bdbae754e43d5209b162b2 /manager/service.go
parentmod: use x/text master branch (diff)
downloadwireguard-windows-90dc5ae520daf59acc6ee9214c1c05b4372374ef.tar.xz
wireguard-windows-90dc5ae520daf59acc6ee9214c1c05b4372374ef.zip
manager: chdir into unelevated profile before execing
Otherwise we wind up in \Windows\System32 in the import dialog's default directory. Reported-by: Kai Haberzettl <khaberz@gmail.com> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to '')
-rw-r--r--manager/service.go2
1 files changed, 2 insertions, 0 deletions
diff --git a/manager/service.go b/manager/service.go
index e493e7cb..dacb7864 100644
--- a/manager/service.go
+++ b/manager/service.go
@@ -124,6 +124,7 @@ func (service *managerService) Execute(args []string, r <-chan svc.ChangeRequest
userToken.Close()
return
}
+ userProfileDirectory, _ := userToken.GetUserProfileDirectory()
var elevatedToken windows.Token
if userToken.IsElevated() {
elevatedToken = userToken
@@ -188,6 +189,7 @@ func (service *managerService) Execute(args []string, r <-chan svc.ChangeRequest
Token: syscall.Token(elevatedToken),
},
Files: []*os.File{devNull, devNull, devNull},
+ Dir: userProfileDirectory,
}
procsLock.Lock()
var proc *os.Process