]> Cypherpunks.ru repositories - gostls13.git/commitdiff
syscall: don't check non-existent return code in GetStartupInfo
authorTobias Klauser <tklauser@distanz.ch>
Wed, 16 Aug 2023 22:03:13 +0000 (00:03 +0200)
committerGopher Robot <gobot@golang.org>
Thu, 17 Aug 2023 16:33:09 +0000 (16:33 +0000)
Fixes #31316

Change-Id: I1ca5968836e7bcad91496e4ed3cf1a0caf1375f1
Reviewed-on: https://go-review.googlesource.com/c/go/+/520275
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Tobias Klauser <tobias.klauser@gmail.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
src/syscall/syscall_windows.go
src/syscall/syscall_windows_test.go
src/syscall/zsyscall_windows.go

index e348905abfe3c19cae83faf57caa156145d1d3e1..28091f769055645c13cc35ed7f59c5ebab1d4e21 100644 (file)
@@ -264,7 +264,7 @@ func NewCallbackCDecl(fn any) uintptr {
 //sys  OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err error)
 //sys  TerminateProcess(handle Handle, exitcode uint32) (err error)
 //sys  GetExitCodeProcess(handle Handle, exitcode *uint32) (err error)
-//sys  GetStartupInfo(startupInfo *StartupInfo) (err error) = GetStartupInfoW
+//sys  getStartupInfo(startupInfo *StartupInfo) = GetStartupInfoW
 //sys  GetCurrentProcess() (pseudoHandle Handle, err error)
 //sys  GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error)
 //sys  DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error)
@@ -1437,3 +1437,8 @@ func newProcThreadAttributeList(maxAttrCount uint32) (*_PROC_THREAD_ATTRIBUTE_LI
 func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) {
        return regEnumKeyEx(key, index, name, nameLen, reserved, class, classLen, lastWriteTime)
 }
+
+func GetStartupInfo(startupInfo *StartupInfo) error {
+       getStartupInfo(startupInfo)
+       return nil
+}
index 81285e9a3811d7a390eafaa6cc6061d4696dccbb..f67e8991591601526d6f7fd31975be2297a7226f 100644 (file)
@@ -204,6 +204,15 @@ func TestGetwd_DoesNotPanicWhenPathIsLong(t *testing.T) {
        syscall.Getwd()
 }
 
+func TestGetStartupInfo(t *testing.T) {
+       var si syscall.StartupInfo
+       err := syscall.GetStartupInfo(&si)
+       if err != nil {
+               // see https://go.dev/issue/31316
+               t.Fatalf("GetStartupInfo: got error %v, want nil", err)
+       }
+}
+
 func FuzzUTF16FromString(f *testing.F) {
        f.Add("hi")           // ASCII
        f.Add("รข")            // latin1
index 68c29d809e949ef7126488ffca8f497ff2dde84d..630270812db49d28ace56d84b877b979c0a12be4 100644 (file)
@@ -858,11 +858,8 @@ func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uin
        return
 }
 
-func GetStartupInfo(startupInfo *StartupInfo) (err error) {
-       r1, _, e1 := Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0)
-       if r1 == 0 {
-               err = errnoErr(e1)
-       }
+func getStartupInfo(startupInfo *StartupInfo) {
+       Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0)
        return
 }