]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
memmod: do not use IsBadReadPtr
authorJason A. Donenfeld <Jason@zx2c4.com>
Wed, 3 Mar 2021 13:38:26 +0000 (14:38 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Tue, 9 Mar 2021 04:04:09 +0000 (21:04 -0700)
It should be enough to check for the trailing zero name.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
tun/wintun/memmod/memmod_windows.go
tun/wintun/memmod/mksyscall.go [deleted file]
tun/wintun/memmod/syscall_windows.go
tun/wintun/memmod/zsyscall_windows.go [deleted file]

index a9514c400c2a06366a3a32cdf665d235983760ec..c75de5adee4cb8cff16aeaeb7c558afcde76f806 100644 (file)
@@ -312,7 +312,7 @@ func (module *Module) buildImportTable() error {
 
        module.modules = make([]windows.Handle, 0, 16)
        importDesc := (*IMAGE_IMPORT_DESCRIPTOR)(a2p(module.codeBase + uintptr(directory.VirtualAddress)))
-       for !isBadReadPtr(uintptr(unsafe.Pointer(importDesc)), unsafe.Sizeof(*importDesc)) && importDesc.Name != 0 {
+       for importDesc.Name != 0 {
                handle, err := windows.LoadLibraryEx(windows.BytePtrToString((*byte)(a2p(module.codeBase+uintptr(importDesc.Name)))), 0, windows.LOAD_LIBRARY_SEARCH_SYSTEM32)
                if err != nil {
                        return fmt.Errorf("Error loading module: %w", err)
diff --git a/tun/wintun/memmod/mksyscall.go b/tun/wintun/memmod/mksyscall.go
deleted file mode 100644 (file)
index a78f613..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/* SPDX-License-Identifier: MIT
- *
- * Copyright (C) 2017-2021 WireGuard LLC. All Rights Reserved.
- */
-
-package memmod
-
-//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go syscall_windows.go
index 11715c03b0863c2991198b7346803ffaa01f79be..31dd0b5d9b665405426f1a8b2b7e1dd427040431 100644 (file)
@@ -324,8 +324,6 @@ const (
        DLL_PROCESS_DETACH = 0
 )
 
-//sys  isBadReadPtr(addr uintptr, ucb uintptr) (ret bool) = kernel32.IsBadReadPtr
-
 type SYSTEM_INFO struct {
        ProcessorArchitecture     uint16
        Reserved                  uint16
diff --git a/tun/wintun/memmod/zsyscall_windows.go b/tun/wintun/memmod/zsyscall_windows.go
deleted file mode 100644 (file)
index 6a5b76f..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-// Code generated by 'go generate'; DO NOT EDIT.
-
-package memmod
-
-import (
-       "syscall"
-       "unsafe"
-
-       "golang.org/x/sys/windows"
-)
-
-var _ unsafe.Pointer
-
-// Do the interface allocations only once for common
-// Errno values.
-const (
-       errnoERROR_IO_PENDING = 997
-)
-
-var (
-       errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)
-       errERROR_EINVAL     error = syscall.EINVAL
-)
-
-// errnoErr returns common boxed Errno values, to prevent
-// allocations at runtime.
-func errnoErr(e syscall.Errno) error {
-       switch e {
-       case 0:
-               return errERROR_EINVAL
-       case errnoERROR_IO_PENDING:
-               return errERROR_IO_PENDING
-       }
-       // TODO: add more here, after collecting data on the common
-       // error values see on Windows. (perhaps when running
-       // all.bat?)
-       return e
-}
-
-var (
-       modkernel32 = windows.NewLazySystemDLL("kernel32.dll")
-
-       procIsBadReadPtr = modkernel32.NewProc("IsBadReadPtr")
-)
-
-func isBadReadPtr(addr uintptr, ucb uintptr) (ret bool) {
-       r0, _, _ := syscall.Syscall(procIsBadReadPtr.Addr(), 2, uintptr(addr), uintptr(ucb), 0)
-       ret = r0 != 0
-       return
-}