mirror of
https://github.com/golang/sys.git
synced 2026-02-08 19:56:04 +03:00
windows/svc/mgr: fetch service sid type in Config()
Currently, doing s.UpdateConfig(s.Config()) will destroy the service, because s.Config() fails to populate the SidType member, but UpdateConfig will set the SidType, so that expression effectively zeros out the SidType. Fix this by having Config() fetch the SidType in the same way that it fetches the other additional fields there, such as DelayedStartUp. Change-Id: Idb917ef1e942020499b411b7777b995c29f0e7d2 Reviewed-on: https://go-review.googlesource.com/c/sys/+/270897 Trust: Jason A. Donenfeld <Jason@zx2c4.com> Run-TryBot: Jason A. Donenfeld <Jason@zx2c4.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
@@ -98,6 +98,12 @@ func (s *Service) Config() (Config, error) {
|
||||
delayedStart = true
|
||||
}
|
||||
|
||||
b, err = s.queryServiceConfig2(windows.SERVICE_CONFIG_SERVICE_SID_INFO)
|
||||
if err != nil {
|
||||
return Config{}, err
|
||||
}
|
||||
sidType := *(*uint32)(unsafe.Pointer(&b[0]))
|
||||
|
||||
return Config{
|
||||
ServiceType: p.ServiceType,
|
||||
StartType: p.StartType,
|
||||
@@ -110,6 +116,7 @@ func (s *Service) Config() (Config, error) {
|
||||
DisplayName: windows.UTF16PtrToString(p.DisplayName),
|
||||
Description: windows.UTF16PtrToString(p2.Description),
|
||||
DelayedAutoStart: delayedStart,
|
||||
SidType: sidType,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user