fix closing some custom commands on Windows (#3981)

* Bugfix: Rewrote addProcessToGroup. Fixed possible invalid process handle by using windows.OpenProcess instead. Fixes issue: 3980

* run gofumpt

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
This commit is contained in:
Magnus Gule 2025-01-11 20:40:25 +01:00 committed by GitHub
parent 8f04264fe5
commit 8c1ed7254f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -44,13 +44,21 @@ func closeProcessGroup(h windows.Handle) error {
}
func addProcessToGroup(h windows.Handle, p *os.Process) error {
type process struct {
Pid int
Handle uintptr
// Combine the required access rights
access := uint32(windows.PROCESS_SET_QUOTA | windows.PROCESS_TERMINATE)
processHandle, err := windows.OpenProcess(access, false, uint32(p.Pid))
if err != nil {
return fmt.Errorf("failed to open process: %v", err)
}
defer windows.CloseHandle(processHandle)
err = windows.AssignProcessToJobObject(h, processHandle)
if err != nil {
return fmt.Errorf("failed to assign process to job object: %v", err)
}
return windows.AssignProcessToJobObject(h,
windows.Handle((*process)(unsafe.Pointer(p)).Handle))
return nil
}
func (e *Cmd) runOSSpecific(env []string) error {