Skip to content

Commit

Permalink
Fix handling of snaplen field in pktHdr for packets smaller than snaplen
Browse files Browse the repository at this point in the history
  • Loading branch information
fako1024 committed May 6, 2024
1 parent 13dc2fa commit 94f32c0
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
2 changes: 1 addition & 1 deletion capture/afpacket/afring/afring_mock.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ func (m *MockSource) addPacket(payload []byte, totalLen uint32, pktType, ipLayer
block := m.ringBuffer.ring[thisBlock*m.blockSize : thisBlock*m.blockSize+m.blockSize]

*(*tPacketHeaderV3Mock)(unsafe.Pointer(&block[m.curBlockPos+12])) = tPacketHeaderV3Mock{
snaplen: uint32(m.snapLen),
snaplen: min(uint32(m.snapLen), totalLen), // The snaplen is set to the totalLen if a packet is shorter
pktLen: totalLen,
pktMac: mac,
pktNet: mac + uint16(m.ipLayerOffset),
Expand Down
4 changes: 2 additions & 2 deletions capture/afpacket/afring/afring_zerocopy.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ finalize:
pos := pktHdr.ppos + uint32(hdr.pktMac)

// Return the payload / IP layer subslice & heeader parameters
return unsafe.Slice(&pktHdr.data[pos], hdr.snaplen),
return unsafe.Slice(&pktHdr.data[pos], hdr.snaplen), // #nosec: G103
pktHdr.data[pktHdr.ppos+58],
hdr.pktLen, nil
}
Expand Down Expand Up @@ -150,7 +150,7 @@ finalize:
pos := pktHdr.ppos + uint32(hdr.pktNet)

// Extract the payload (zero-copy) & parameters
return unsafe.Slice(&pktHdr.data[pos], hdr.snaplen-s.ipLayerOffsetNum),
return unsafe.Slice(&pktHdr.data[pos], hdr.snaplen-s.ipLayerOffsetNum), // #nosec: G103
pktHdr.data[pktHdr.ppos+58],
hdr.pktLen, nil
}

0 comments on commit 94f32c0

Please sign in to comment.