aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2020-11-14 00:39:14 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2020-11-16 18:17:05 +0100
commit3e294f9c63fd6fea6981c8f4cc265cfea6570f02 (patch)
tree6e64060b1c3dc40f88eefc91b929a47b39301117
parentbuild: llvm doesnt like dashes (diff)
downloadwireguard-windows-3e294f9c63fd6fea6981c8f4cc265cfea6570f02.tar.xz
wireguard-windows-3e294f9c63fd6fea6981c8f4cc265cfea6570f02.zip
mod: bump x/sys for IsWow64Process2
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r--go.mod2
-rw-r--r--go.sum4
-rw-r--r--main.go22
-rw-r--r--updater/syscall_windows.go19
-rw-r--r--updater/versions_arm.go23
-rw-r--r--updater/zsyscall_windows.go52
6 files changed, 14 insertions, 108 deletions
diff --git a/go.mod b/go.mod
index 8a6b3d99..f87e943e 100644
--- a/go.mod
+++ b/go.mod
@@ -7,7 +7,7 @@ require (
github.com/lxn/win v0.0.0-20201111105847-2a20daff6a55
golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b
- golang.org/x/sys v0.0.0-20201112073958-5cba982894dd
+ golang.org/x/sys v0.0.0-20201113233024-12cec1faf1ba
golang.org/x/text v0.3.4
golang.zx2c4.com/wireguard v0.0.20200321-0.20201111175144-60b3766b89b9
)
diff --git a/go.sum b/go.sum
index 62ac6436..7d737ee1 100644
--- a/go.sum
+++ b/go.sum
@@ -12,8 +12,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201107080550-4d91cf3a1aaf/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201112073958-5cba982894dd h1:5CtCZbICpIOFdgO940moixOPjc0178IU44m4EjOO5IY=
-golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201113233024-12cec1faf1ba h1:xmhUJGQGbxlod18iJGqVEp9cHIPLl7QiX2aA3to708s=
+golang.org/x/sys v0.0.0-20201113233024-12cec1faf1ba/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc=
diff --git a/main.go b/main.go
index 0c12ce93..868be5d0 100644
--- a/main.go
+++ b/main.go
@@ -7,15 +7,14 @@ package main
import (
"debug/pe"
+ "errors"
"fmt"
"log"
"os"
"runtime"
"strconv"
"strings"
- "syscall"
"time"
- "unsafe"
"golang.org/x/sys/windows"
"golang.zx2c4.com/wireguard/tun"
@@ -64,25 +63,10 @@ func usage() {
os.Exit(1)
}
-//TODO: replace with https://go-review.googlesource.com/c/sys/+/269077 once merged
-func isWow64Process2(handle windows.Handle, processMachine *uint16, nativeMachine *uint16) (err error) {
- p := windows.NewLazySystemDLL("kernel32.dll").NewProc("IsWow64Process2")
- err = p.Find()
- if err != nil {
- return
- }
- ret, _, e := syscall.Syscall(p.Addr(), 3, uintptr(handle), uintptr(unsafe.Pointer(processMachine)), uintptr(unsafe.Pointer(nativeMachine)))
- if ret == 0 {
- err = e
- return err
- }
- return
-}
-
func checkForWow64() {
b, err := func() (bool, error) {
var processMachine, nativeMachine uint16
- err := isWow64Process2(windows.CurrentProcess(), &processMachine, &nativeMachine)
+ err := windows.IsWow64Process2(windows.CurrentProcess(), &processMachine, &nativeMachine)
if err == nil {
if nativeMachine == pe.IMAGE_FILE_MACHINE_ARM64 && runtime.GOARCH == "arm" {
//TODO: remove this exception when Go supports arm64
@@ -90,7 +74,7 @@ func checkForWow64() {
}
return processMachine != pe.IMAGE_FILE_MACHINE_UNKNOWN, nil
}
- if _, isDllErr := err.(*windows.DLLError); !isDllErr {
+ if !errors.Is(err, windows.ERROR_PROC_NOT_FOUND) {
return false, err
}
var b bool
diff --git a/updater/syscall_windows.go b/updater/syscall_windows.go
deleted file mode 100644
index 074ec164..00000000
--- a/updater/syscall_windows.go
+++ /dev/null
@@ -1,19 +0,0 @@
-/* SPDX-License-Identifier: MIT
- *
- * Copyright (C) 2019-2020 WireGuard LLC. All Rights Reserved.
- */
-
-package updater
-
-import "golang.org/x/sys/windows"
-
-//sys isWow64Process2Internal(process windows.Handle, processMachine *uint16, nativeMachine *uint16) (err error) = kernel32.IsWow64Process2
-
-func isWow64Process2(process windows.Handle) (processMachine, nativeMachine uint16, err error) {
- err = procIsWow64Process2.Find()
- if err != nil {
- return
- }
- err = isWow64Process2Internal(process, &processMachine, &nativeMachine)
- return
-}
diff --git a/updater/versions_arm.go b/updater/versions_arm.go
index f3e43ec3..45b53be5 100644
--- a/updater/versions_arm.go
+++ b/updater/versions_arm.go
@@ -12,24 +12,17 @@ import (
"golang.org/x/sys/windows"
)
-func findArch() (arch string, err error) {
- process := windows.CurrentProcess()
- _, nativeMachine, err2 := isWow64Process2(process)
- if err2 != nil {
- var isWow64 bool
- if windows.IsWow64Process(process, &isWow64) != nil || !isWow64 {
- nativeMachine = pe.IMAGE_FILE_MACHINE_ARMNT
- } else {
- nativeMachine = pe.IMAGE_FILE_MACHINE_ARM64
- }
+func findArch() (string, error) {
+ var processMachine, nativeMachine uint16
+ err := windows.IsWow64Process2(windows.CurrentProcess(), &processMachine, &nativeMachine)
+ if err != nil {
+ return "", err
}
switch nativeMachine {
case pe.IMAGE_FILE_MACHINE_ARM64:
- arch = "arm64"
+ return "arm64", nil
case pe.IMAGE_FILE_MACHINE_ARMNT:
- arch = "arm"
- default:
- err = errors.New("Invalid GOARCH")
+ return "arm", nil
}
- return
+ return "", errors.New("Invalid GOARCH")
}
diff --git a/updater/zsyscall_windows.go b/updater/zsyscall_windows.go
deleted file mode 100644
index a2d32cc9..00000000
--- a/updater/zsyscall_windows.go
+++ /dev/null
@@ -1,52 +0,0 @@
-// Code generated by 'go generate'; DO NOT EDIT.
-
-package updater
-
-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")
-
- procIsWow64Process2 = modkernel32.NewProc("IsWow64Process2")
-)
-
-func isWow64Process2Internal(process windows.Handle, processMachine *uint16, nativeMachine *uint16) (err error) {
- r1, _, e1 := syscall.Syscall(procIsWow64Process2.Addr(), 3, uintptr(process), uintptr(unsafe.Pointer(processMachine)), uintptr(unsafe.Pointer(nativeMachine)))
- if r1 == 0 {
- err = errnoErr(e1)
- }
- return
-}