diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-03-16 02:50:33 -0600 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-03-16 02:56:50 -0600 |
commit | ca5505be0b85fd9da382ff75b81bb5d05a92378f (patch) | |
tree | 4c27f79345b61bc66a2b4baea4958bd490a05d71 /service | |
parent | tunnel: tell wggo about mtu changes (diff) | |
download | wireguard-windows-ca5505be0b85fd9da382ff75b81bb5d05a92378f.tar.xz wireguard-windows-ca5505be0b85fd9da382ff75b81bb5d05a92378f.zip |
manager: CreateWellKnownSid is upstreamed now
Diffstat (limited to 'service')
-rw-r--r-- | service/service_manager.go | 26 | ||||
-rw-r--r-- | service/zsyscall_windows.go | 13 |
2 files changed, 1 insertions, 38 deletions
diff --git a/service/service_manager.go b/service/service_manager.go index 91bb593d..5f9758ec 100644 --- a/service/service_manager.go +++ b/service/service_manager.go @@ -53,33 +53,9 @@ type wtsSessionInfo struct { type wellKnownSidType uint32 -const ( - winBuiltinAdministratorsSid wellKnownSidType = 26 -) - //sys wtfQueryUserToken(session uint32, token *windows.Token) (err error) = wtsapi32.WTSQueryUserToken //sys wtsEnumerateSessions(handle windows.Handle, reserved uint32, version uint32, sessions **wtsSessionInfo, count *uint32) (err error) = wtsapi32.WTSEnumerateSessionsW //sys wtsFreeMemory(ptr uintptr) = wtsapi32.WTSFreeMemory -//sys createWellKnownSid(sidType wellKnownSidType, domainSid *windows.SID, sid *windows.SID, sizeSid *uint32) (err error) = advapi32.CreateWellKnownSid - -//TODO: Upstream this to x/sys/windows -func localWellKnownSid(sidType wellKnownSidType) (*windows.SID, error) { - n := uint32(50) - for { - b := make([]byte, n) - sid := (*windows.SID)(unsafe.Pointer(&b[0])) - err := createWellKnownSid(sidType, nil, sid, &n) - if err == nil { - return sid, nil - } - if err != windows.ERROR_INSUFFICIENT_BUFFER { - return nil, err - } - if n <= uint32(len(b)) { - return nil, err - } - } -} type managerService struct{} @@ -135,7 +111,7 @@ func (service *managerService) Execute(args []string, r <-chan svc.ChangeRequest return } - adminSid, err := localWellKnownSid(winBuiltinAdministratorsSid) + adminSid, err := windows.CreateWellKnownSid(windows.WinBuiltinAdministratorsSid) if err != nil { serviceError = ErrorFindAdministratorsSID return diff --git a/service/zsyscall_windows.go b/service/zsyscall_windows.go index edae1999..d3ca8ddd 100644 --- a/service/zsyscall_windows.go +++ b/service/zsyscall_windows.go @@ -44,7 +44,6 @@ var ( procWTSQueryUserToken = modwtsapi32.NewProc("WTSQueryUserToken") procWTSEnumerateSessionsW = modwtsapi32.NewProc("WTSEnumerateSessionsW") procWTSFreeMemory = modwtsapi32.NewProc("WTSFreeMemory") - procCreateWellKnownSid = modadvapi32.NewProc("CreateWellKnownSid") procNotifyServiceStatusChangeW = modadvapi32.NewProc("NotifyServiceStatusChangeW") procSleepEx = modkernel32.NewProc("SleepEx") ) @@ -78,18 +77,6 @@ func wtsFreeMemory(ptr uintptr) { return } -func createWellKnownSid(sidType wellKnownSidType, domainSid *windows.SID, sid *windows.SID, sizeSid *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procCreateWellKnownSid.Addr(), 4, uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - func notifyServiceStatusChange(service windows.Handle, notifyMask uint32, notifyBuffer uintptr) (status uint32) { r0, _, _ := syscall.Syscall(procNotifyServiceStatusChangeW.Addr(), 3, uintptr(service), uintptr(notifyMask), uintptr(notifyBuffer)) status = uint32(r0) |