Commit Graph
7 Commits
Author SHA1 Message Date
Jason A. Donenfeld 70f5298506 windows/svc: safely load system DLLs
These DLLs, well advapi32.dll in particular, are vulnerable to classic
DLL directory injection attacks. The rest of x/sys/windows moved over to
the safe system loader, but apparently the svc package was forgotten.
This tidies up that oversight.

Change-Id: I330fa752cf2d49ccc5cf1bd60fb4bd612bd2b6b0
Reviewed-on: https://go-review.googlesource.com/c/sys/+/165758
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2019-03-06 17:15:55 +00:00
Alex Brainman b6889370fb windows/svc: align ctlHandler parameters
ctlHandler is passed to RegisterServiceCtrlHandlerEx as a callback
function. But all ctlHandler parameters have to be uintptr aligned
regardless of their type.

Adjust ctlHandler parameters, so they are aligned accordingly.

Also uncomment part of TestExample that verifies passing of
ChangeRequest.Context.

Fixes golang/go#25660

Change-Id: Ie96fa5c78b911ad9df6775f5c49e7f6d56464f6b
Reviewed-on: https://go-review.googlesource.com/c/158698
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2019-03-02 02:57:03 +00:00
Alex Brainman 12036c158a windows/svc: add Context to ChangeRequest
New Context field will be used in the following CL to test
ctlHandler parameter alignments.

Also adjust TestExample to pass hard coded Context value of 123456
to test service, and verify that correct value is logged. Final
part of the test is commented out, and will be adjusted in the next
CL.

Updates golang/go#25660

Change-Id: Iad2896ae497ee1edc0d62655eaf08671ec2651c5
Reviewed-on: https://go-review.googlesource.com/c/158697
Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2019-03-02 02:54:30 +00:00
Hana (Hyang-Ah) Kim 7dfd1290c7 windows: address vet reports
Found in https://storage.googleapis.com/go-build-log/300ed876/misc-vet-vetall_dd96a388.log

cmd/vendor/golang.org/x/sys/windows/asm_windows_386.s:9: [386] getprocaddress: wrong argument size 8; expected $...-16
cmd/vendor/golang.org/x/sys/windows/asm_windows_386.s:12: [386] loadlibrary: wrong argument size 4; expected $...-12
cmd/vendor/golang.org/x/sys/windows/svc/service.go:337: cmd/vendor/golang.org/x/sys/windows.SERVICE_TABLE_ENTRY composite literal uses unkeyed fields
cmd/vendor/golang.org/x/sys/windows/svc/service.go:338: cmd/vendor/golang.org/x/sys/windows.SERVICE_TABLE_ENTRY composite literal uses unkeyed fields
cmd/vendor/golang.org/x/sys/windows/svc/debug/service.go:34: cmd/vendor/golang.org/x/sys/windows/svc.ChangeRequest composite literal uses unkeyed fields
cmd/vendor/golang.org/x/sys/windows/svc/mgr/config.go:124: cmd/vendor/golang.org/x/sys/windows.SERVICE_DESCRIPTION composite literal uses unkeyed fields

Change-Id: Ic08cfcc802aac89cfa1eb98661ec556c844e8013
Reviewed-on: https://go-review.googlesource.com/112557
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2018-05-10 03:28:50 +00:00
Tyler Treat f7928cfef4 windows/svc: add missing Accept commands
Add the remaining AcceptX commands (AcceptParamChange,
AcceptNetBindChange, AcceptHardwareProfileChange, AcceptPowerEvent, and
AcceptSessionChange) to the windows/svc package. Also add support for
these to updateStatus such that a service can actually accept these
commands.

Change-Id: I11191e7798489b3222a3e76ba55129f10fd202ab
Reviewed-on: https://go-review.googlesource.com/46722
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-06-27 01:25:38 +00:00
Julian Pastarmov e62c3de784 windows: use RegisterServiceCtrlHandlerEx to allow for advanced notifications
This allows services written with this library to register for more
advanced notifications like SERVICE_CONTROL_DEVICEEVENT for example.

Also the code now exposes the service status handle through a new
api call, because the handle is needed to register for such
notifications and can not be obtained by any other means.

Change-Id: I80796e1dd9d94ec9d6c236d0413b17288c67fe1f
Reviewed-on: https://go-review.googlesource.com/42812
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-05-18 05:52:01 +00:00
Alex Brainman 65705ef9e9 windows/svc: add new package to help create and manage Windows services
Change-Id: I58bb446aaa387b31d8a9ff4217793a170b96a7e2
Reviewed-on: https://go-review.googlesource.com/9104
Reviewed-by: Rob Pike <r@golang.org>
2015-05-01 05:26:56 +00:00