MCPcopy Index your code
hub / github.com/secdev/scapy / _read_block

Method _read_block

scapy/utils.py:1663–1690  ·  view source on GitHub ↗
(self, size=MTU)

Source from the content-addressed store, hash-verified

1661 )
1662
1663 def _read_block(self, size=MTU):
1664 # type: (int) -> Optional[Tuple[bytes, RawPcapNgReader.PacketMetadata]] # noqa: E501
1665 try:
1666 blocktype = struct.unpack(self.endian + "I", self.f.read(4))[0]
1667 except struct.error:
1668 raise EOFError
1669 if blocktype == 0x0A0D0D0A:
1670 # This function updates the endianness based on the block content.
1671 self._read_block_shb()
1672 return None
1673 try:
1674 blocklen = struct.unpack(self.endian + "I", self.f.read(4))[0]
1675 except struct.error:
1676 warning("PcapNg: Error reading blocklen before block body")
1677 raise EOFError
1678 if blocklen < 12:
1679 warning("PcapNg: Invalid block length !")
1680 raise EOFError
1681
1682 _block_body_length = blocklen - 12
1683 block = self.f.read(_block_body_length)
1684 if len(block) != _block_body_length:
1685 raise Scapy_Exception("PcapNg: Invalid Block body length "
1686 "(too short)")
1687 self._read_block_tail(blocklen)
1688 if blocktype in self.blocktypes:
1689 return self.blocktypes[blocktype](block, size)
1690 return None
1691
1692 def _read_block_tail(self, blocklen):
1693 # type: (int) -> None

Callers 1

_read_packetMethod · 0.95

Calls 5

_read_block_shbMethod · 0.95
_read_block_tailMethod · 0.95
warningFunction · 0.90
Scapy_ExceptionClass · 0.90
readMethod · 0.45

Tested by

no test coverage detected