diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-03-06 21:42:18 +0800 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-03-15 14:49:27 -0600 |
commit | 90dc5ae520daf59acc6ee9214c1c05b4372374ef (patch) | |
tree | d023896235de6c17b8bdbae754e43d5209b162b2 | |
parent | mod: use x/text master branch (diff) | |
download | wireguard-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>
-rw-r--r-- | manager/service.go | 2 |
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 |