google / google/gopacket

WinPcap (npcap) errorBufferSize is now too small

Open
#756 1 comment 1 reaction 0 assignees View on GitHub
Dominant language
Go
Stars
6.8k
Forks
1.2k
PR merge metrics
No merged PRs in 30d

Description

It looks like newer versions of npcap may require a larger error buffer size. In some cases (mostly concurrent use of the interface), the syscall returns an error:
> `PacketGetAdapterNames: The data area passed to a system call is too small. (122)`

```
func pcapFindAllDevs() (pcapDevices, error) {
var alldevsp pcapDevices
err := LoadWinPCAP()
if err != nil {
return alldevsp, err
}

buf := make([]byte, errorBufferSize)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
ret, _, _ := syscall.Syscall(pcapFindalldevsPtr, 2, uintptr(unsafe.Pointer(&alldevsp.all)), uintptr(unsafe.Pointer(&buf[0])), 0)

if pcapCint(ret) < 0 {
return pcapDevices{}, errors.New(byteSliceToString(buf))
}
return alldevsp, nil
}
```

This comes from `const errorBufferSize = 0x100` created by generate_defs.exe.

Could this buffer size be increased, or the defs regenerated using the current npcap?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.