global: switch to using %w instead of %v for Errorf
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
parent
c192b2eeec
commit
82128c47d9
@ -287,7 +287,7 @@ func CreateTUN(name string, mtu int) (Device, error) {
|
|||||||
if errno != 0 {
|
if errno != 0 {
|
||||||
tunFile.Close()
|
tunFile.Close()
|
||||||
tunDestroy(assignedName)
|
tunDestroy(assignedName)
|
||||||
return nil, fmt.Errorf("Unable to put into IFHEAD mode: %v", errno)
|
return nil, fmt.Errorf("Unable to put into IFHEAD mode: %w", errno)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open control sockets
|
// Open control sockets
|
||||||
@ -328,7 +328,7 @@ func CreateTUN(name string, mtu int) (Device, error) {
|
|||||||
if errno != 0 {
|
if errno != 0 {
|
||||||
tunFile.Close()
|
tunFile.Close()
|
||||||
tunDestroy(assignedName)
|
tunDestroy(assignedName)
|
||||||
return nil, fmt.Errorf("Unable to get nd6 flags for %s: %v", assignedName, errno)
|
return nil, fmt.Errorf("Unable to get nd6 flags for %s: %w", assignedName, errno)
|
||||||
}
|
}
|
||||||
ndireq.Flags = ndireq.Flags &^ ND6_IFF_AUTO_LINKLOCAL
|
ndireq.Flags = ndireq.Flags &^ ND6_IFF_AUTO_LINKLOCAL
|
||||||
ndireq.Flags = ndireq.Flags | ND6_IFF_NO_DAD
|
ndireq.Flags = ndireq.Flags | ND6_IFF_NO_DAD
|
||||||
@ -341,7 +341,7 @@ func CreateTUN(name string, mtu int) (Device, error) {
|
|||||||
if errno != 0 {
|
if errno != 0 {
|
||||||
tunFile.Close()
|
tunFile.Close()
|
||||||
tunDestroy(assignedName)
|
tunDestroy(assignedName)
|
||||||
return nil, fmt.Errorf("Unable to set nd6 flags for %s: %v", assignedName, errno)
|
return nil, fmt.Errorf("Unable to set nd6 flags for %s: %w", assignedName, errno)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Rename the interface
|
// Rename the interface
|
||||||
@ -359,7 +359,7 @@ func CreateTUN(name string, mtu int) (Device, error) {
|
|||||||
if errno != 0 {
|
if errno != 0 {
|
||||||
tunFile.Close()
|
tunFile.Close()
|
||||||
tunDestroy(assignedName)
|
tunDestroy(assignedName)
|
||||||
return nil, fmt.Errorf("Failed to rename %s to %s: %v", assignedName, name, errno)
|
return nil, fmt.Errorf("Failed to rename %s to %s: %w", assignedName, name, errno)
|
||||||
}
|
}
|
||||||
|
|
||||||
return CreateTUNFromFile(tunFile, mtu)
|
return CreateTUNFromFile(tunFile, mtu)
|
||||||
|
@ -49,7 +49,7 @@ func init() {
|
|||||||
var err error
|
var err error
|
||||||
WintunPool, err = wintun.MakePool("WireGuard")
|
WintunPool, err = wintun.MakePool("WireGuard")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(fmt.Errorf("Failed to make pool: %v", err))
|
panic(fmt.Errorf("Failed to make pool: %w", err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,12 +81,12 @@ func CreateTUNWithRequestedGUID(ifname string, requestedGUID *windows.GUID, mtu
|
|||||||
// If so, we delete it, in case it has weird residual configuration.
|
// If so, we delete it, in case it has weird residual configuration.
|
||||||
_, err = wt.Delete(true)
|
_, err = wt.Delete(true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Error deleting already existing interface: %v", err)
|
return nil, fmt.Errorf("Error deleting already existing interface: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wt, _, err = WintunPool.CreateAdapter(ifname, requestedGUID)
|
wt, _, err = WintunPool.CreateAdapter(ifname, requestedGUID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Error creating interface: %v", err)
|
return nil, fmt.Errorf("Error creating interface: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
forcedMTU := 1420
|
forcedMTU := 1420
|
||||||
@ -106,7 +106,7 @@ func CreateTUNWithRequestedGUID(ifname string, requestedGUID *windows.GUID, mtu
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
_, err = tun.wt.Delete(false)
|
_, err = tun.wt.Delete(false)
|
||||||
close(tun.events)
|
close(tun.events)
|
||||||
return nil, fmt.Errorf("Error starting session: %v", err)
|
return nil, fmt.Errorf("Error starting session: %w", err)
|
||||||
}
|
}
|
||||||
tun.readWait = tun.session.ReadWaitEvent()
|
tun.readWait = tun.session.ReadWaitEvent()
|
||||||
return tun, nil
|
return tun, nil
|
||||||
@ -179,7 +179,7 @@ retry:
|
|||||||
case windows.ERROR_INVALID_DATA:
|
case windows.ERROR_INVALID_DATA:
|
||||||
return 0, errors.New("Send ring corrupt")
|
return 0, errors.New("Send ring corrupt")
|
||||||
}
|
}
|
||||||
return 0, fmt.Errorf("Read failed: %v", err)
|
return 0, fmt.Errorf("Read failed: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,7 +207,7 @@ func (tun *NativeTun) Write(buff []byte, offset int) (int, error) {
|
|||||||
case windows.ERROR_BUFFER_OVERFLOW:
|
case windows.ERROR_BUFFER_OVERFLOW:
|
||||||
return 0, nil // Dropping when ring is full.
|
return 0, nil // Dropping when ring is full.
|
||||||
}
|
}
|
||||||
return 0, fmt.Errorf("Write failed: %v", err)
|
return 0, fmt.Errorf("Write failed: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// LUID returns Windows interface instance ID.
|
// LUID returns Windows interface instance ID.
|
||||||
|
@ -39,15 +39,15 @@ func (d *lazyDLL) Load() error {
|
|||||||
const ourModule windows.Handle = 0
|
const ourModule windows.Handle = 0
|
||||||
resInfo, err := resource.FindByName(ourModule, d.Name, resource.RT_RCDATA)
|
resInfo, err := resource.FindByName(ourModule, d.Name, resource.RT_RCDATA)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Unable to find \"%v\" RCDATA resource: %v", d.Name, err)
|
return fmt.Errorf("Unable to find \"%v\" RCDATA resource: %w", d.Name, err)
|
||||||
}
|
}
|
||||||
data, err := resource.Load(ourModule, resInfo)
|
data, err := resource.Load(ourModule, resInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Unable to load resource: %v", err)
|
return fmt.Errorf("Unable to load resource: %w", err)
|
||||||
}
|
}
|
||||||
module, err := memmod.LoadLibrary(data)
|
module, err := memmod.LoadLibrary(data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Unable to load library: %v", err)
|
return fmt.Errorf("Unable to load library: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&d.module)), unsafe.Pointer(module))
|
atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&d.module)), unsafe.Pointer(module))
|
||||||
@ -77,11 +77,11 @@ func (p *lazyProc) Find() error {
|
|||||||
|
|
||||||
err := p.dll.Load()
|
err := p.dll.Load()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Error loading %v DLL: %v", p.dll.Name, err)
|
return fmt.Errorf("Error loading %v DLL: %w", p.dll.Name, err)
|
||||||
}
|
}
|
||||||
addr, err := p.dll.module.ProcAddressByName(p.Name)
|
addr, err := p.dll.module.ProcAddressByName(p.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Error getting %v address: %v", p.Name, err)
|
return fmt.Errorf("Error getting %v address: %w", p.Name, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&p.addr)), unsafe.Pointer(addr))
|
atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&p.addr)), unsafe.Pointer(addr))
|
||||||
|
@ -55,7 +55,7 @@ func (module *Module) copySections(address uintptr, size uintptr, old_headers *I
|
|||||||
windows.MEM_COMMIT,
|
windows.MEM_COMMIT,
|
||||||
windows.PAGE_READWRITE)
|
windows.PAGE_READWRITE)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Error allocating section: %v", err)
|
return fmt.Errorf("Error allocating section: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Always use position from file to support alignments smaller than page size (allocation above will align to page size).
|
// Always use position from file to support alignments smaller than page size (allocation above will align to page size).
|
||||||
@ -80,7 +80,7 @@ func (module *Module) copySections(address uintptr, size uintptr, old_headers *I
|
|||||||
windows.MEM_COMMIT,
|
windows.MEM_COMMIT,
|
||||||
windows.PAGE_READWRITE)
|
windows.PAGE_READWRITE)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Error allocating memory block: %v", err)
|
return fmt.Errorf("Error allocating memory block: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Always use position from file to support alignments smaller than page size (allocation above will align to page size).
|
// Always use position from file to support alignments smaller than page size (allocation above will align to page size).
|
||||||
@ -153,7 +153,7 @@ func (module *Module) finalizeSection(sectionData *sectionFinalizeData) error {
|
|||||||
var oldProtect uint32
|
var oldProtect uint32
|
||||||
err := windows.VirtualProtect(sectionData.address, sectionData.size, protect, &oldProtect)
|
err := windows.VirtualProtect(sectionData.address, sectionData.size, protect, &oldProtect)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Error protecting memory page: %v", err)
|
return fmt.Errorf("Error protecting memory page: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -188,7 +188,7 @@ func (module *Module) finalizeSections() error {
|
|||||||
|
|
||||||
err := module.finalizeSection(§ionData)
|
err := module.finalizeSection(§ionData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Error finalizing section: %v", err)
|
return fmt.Errorf("Error finalizing section: %w", err)
|
||||||
}
|
}
|
||||||
sectionData.address = sectionAddress
|
sectionData.address = sectionAddress
|
||||||
sectionData.alignedAddress = alignedAddress
|
sectionData.alignedAddress = alignedAddress
|
||||||
@ -198,7 +198,7 @@ func (module *Module) finalizeSections() error {
|
|||||||
sectionData.last = true
|
sectionData.last = true
|
||||||
err := module.finalizeSection(§ionData)
|
err := module.finalizeSection(§ionData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Error finalizing section: %v", err)
|
return fmt.Errorf("Error finalizing section: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -294,7 +294,7 @@ func (module *Module) performBaseRelocation(delta uintptr) (relocated bool, err
|
|||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false, fmt.Errorf("Unsupported relocation: %v", relType)
|
return false, fmt.Errorf("Unsupported relocation: %w", relType)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -315,7 +315,7 @@ func (module *Module) buildImportTable() error {
|
|||||||
for !isBadReadPtr(uintptr(unsafe.Pointer(importDesc)), unsafe.Sizeof(*importDesc)) && importDesc.Name != 0 {
|
for !isBadReadPtr(uintptr(unsafe.Pointer(importDesc)), unsafe.Sizeof(*importDesc)) && importDesc.Name != 0 {
|
||||||
handle, err := loadLibraryA((*byte)(a2p(module.codeBase + uintptr(importDesc.Name))))
|
handle, err := loadLibraryA((*byte)(a2p(module.codeBase + uintptr(importDesc.Name))))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Error loading module: %v", err)
|
return fmt.Errorf("Error loading module: %w", err)
|
||||||
}
|
}
|
||||||
var thunkRef, funcRef *uintptr
|
var thunkRef, funcRef *uintptr
|
||||||
if importDesc.OriginalFirstThunk() != 0 {
|
if importDesc.OriginalFirstThunk() != 0 {
|
||||||
@ -335,7 +335,7 @@ func (module *Module) buildImportTable() error {
|
|||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
windows.FreeLibrary(handle)
|
windows.FreeLibrary(handle)
|
||||||
return fmt.Errorf("Error getting function address: %v", err)
|
return fmt.Errorf("Error getting function address: %w", err)
|
||||||
}
|
}
|
||||||
thunkRef = (*uintptr)(a2p(uintptr(unsafe.Pointer(thunkRef)) + unsafe.Sizeof(*thunkRef)))
|
thunkRef = (*uintptr)(a2p(uintptr(unsafe.Pointer(thunkRef)) + unsafe.Sizeof(*thunkRef)))
|
||||||
funcRef = (*uintptr)(a2p(uintptr(unsafe.Pointer(funcRef)) + unsafe.Sizeof(*funcRef)))
|
funcRef = (*uintptr)(a2p(uintptr(unsafe.Pointer(funcRef)) + unsafe.Sizeof(*funcRef)))
|
||||||
@ -435,13 +435,13 @@ func LoadLibrary(data []byte) (module *Module, err error) {
|
|||||||
windows.MEM_RESERVE|windows.MEM_COMMIT,
|
windows.MEM_RESERVE|windows.MEM_COMMIT,
|
||||||
windows.PAGE_READWRITE)
|
windows.PAGE_READWRITE)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = fmt.Errorf("Error allocating code: %v", err)
|
err = fmt.Errorf("Error allocating code: %w", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
err = module.check4GBBoundaries(alignedImageSize)
|
err = module.check4GBBoundaries(alignedImageSize)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = fmt.Errorf("Error reallocating code: %v", err)
|
err = fmt.Errorf("Error reallocating code: %w", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -455,7 +455,7 @@ func LoadLibrary(data []byte) (module *Module, err error) {
|
|||||||
windows.MEM_COMMIT,
|
windows.MEM_COMMIT,
|
||||||
windows.PAGE_READWRITE)
|
windows.PAGE_READWRITE)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = fmt.Errorf("Error allocating headers: %v", err)
|
err = fmt.Errorf("Error allocating headers: %w", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// Copy PE header to code.
|
// Copy PE header to code.
|
||||||
@ -468,7 +468,7 @@ func LoadLibrary(data []byte) (module *Module, err error) {
|
|||||||
// Copy sections from DLL file block to new memory location.
|
// Copy sections from DLL file block to new memory location.
|
||||||
err = module.copySections(addr, size, oldHeader)
|
err = module.copySections(addr, size, oldHeader)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = fmt.Errorf("Error copying sections: %v", err)
|
err = fmt.Errorf("Error copying sections: %w", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -477,7 +477,7 @@ func LoadLibrary(data []byte) (module *Module, err error) {
|
|||||||
if locationDelta != 0 {
|
if locationDelta != 0 {
|
||||||
module.isRelocated, err = module.performBaseRelocation(locationDelta)
|
module.isRelocated, err = module.performBaseRelocation(locationDelta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = fmt.Errorf("Error relocating module: %v", err)
|
err = fmt.Errorf("Error relocating module: %w", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -487,14 +487,14 @@ func LoadLibrary(data []byte) (module *Module, err error) {
|
|||||||
// Load required dlls and adjust function table of imports.
|
// Load required dlls and adjust function table of imports.
|
||||||
err = module.buildImportTable()
|
err = module.buildImportTable()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = fmt.Errorf("Error building import table: %v", err)
|
err = fmt.Errorf("Error building import table: %w", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mark memory pages depending on section headers and release sections that are marked as "discardable".
|
// Mark memory pages depending on section headers and release sections that are marked as "discardable".
|
||||||
err = module.finalizeSections()
|
err = module.finalizeSections()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = fmt.Errorf("Error finalizing sections: %v", err)
|
err = fmt.Errorf("Error finalizing sections: %w", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ func (module *Module) check4GBBoundaries(alignedImageSize uintptr) (err error) {
|
|||||||
windows.MEM_RESERVE|windows.MEM_COMMIT,
|
windows.MEM_RESERVE|windows.MEM_COMMIT,
|
||||||
windows.PAGE_READWRITE)
|
windows.PAGE_READWRITE)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Error allocating memory block: %v", err)
|
return fmt.Errorf("Error allocating memory block: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
@ -74,17 +74,17 @@ func FindByName(module windows.Handle, name string, resType *uint16) (resInfo wi
|
|||||||
func Load(module, resInfo windows.Handle) (data []byte, err error) {
|
func Load(module, resInfo windows.Handle) (data []byte, err error) {
|
||||||
size, err := sizeofResource(module, resInfo)
|
size, err := sizeofResource(module, resInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = fmt.Errorf("Unable to size resource: %v", err)
|
err = fmt.Errorf("Unable to size resource: %w", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
resData, err := loadResource(module, resInfo)
|
resData, err := loadResource(module, resInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = fmt.Errorf("Unable to load resource: %v", err)
|
err = fmt.Errorf("Unable to load resource: %w", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ptr, err := lockResource(resData)
|
ptr, err := lockResource(resData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = fmt.Errorf("Unable to lock resource: %v", err)
|
err = fmt.Errorf("Unable to lock resource: %w", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
unsafeSlice(unsafe.Pointer(&data), unsafe.Pointer(ptr), int(size))
|
unsafeSlice(unsafe.Pointer(&data), unsafe.Pointer(ptr), int(size))
|
||||||
|
Loading…
Reference in New Issue
Block a user