Fix: potential PCB buffer overflow on bsd systems (#941)

This commit is contained in:
icpz 2020-09-03 10:27:20 +08:00 committed by GitHub
parent 7631bcc99e
commit 02d9169b5d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 5 deletions

View file

@ -127,8 +127,8 @@ func getExecPathFromAddress(metadata *C.Metadata) (string, error) {
// rup8(sizeof(xtcpcb_n))
itemSize += 208
}
// skip the first and last xinpgen(24 bytes) block
for i := 24; i < len(buf)-24; i += itemSize {
// skip the first xinpgen(24 bytes) block
for i := 24; i+itemSize <= len(buf); i += itemSize {
// offset of xinpcb_n and xsocket_n
inp, so := i, i+104

View file

@ -95,7 +95,7 @@ func searchSocketPid(socket uint64) (uint32, error) {
// struct xfile
itemSize := 128
for i := 0; i < len(buf); i += itemSize {
for i := 0; i+itemSize <= len(buf); i += itemSize {
// xfile.xf_data
data := binary.BigEndian.Uint64(buf[i+56 : i+64])
if data == socket {
@ -141,8 +141,8 @@ func getExecPathFromAddress(metadata *C.Metadata) (string, error) {
buf := []byte(value)
// skip the first and last xinpgen(64 bytes) block
for i := 64; i < len(buf)-64; i += itemSize {
// skip the first xinpgen(64 bytes) block
for i := 64; i+itemSize <= len(buf); i += itemSize {
inp := i + inpOffset
srcPort := binary.BigEndian.Uint16(buf[inp+254 : inp+256])