S1005403_RisCC/tests/test_sfp_transport_errors.py

29 lines
1.0 KiB
Python

from target_simulator.core.sfp_transport import SfpTransport
from target_simulator.core.sfp_structures import SFPHeader
def test_small_packet_ignored():
s = SfpTransport("127.0.0.1", 0, {})
# pass empty data
s._process_packet(b"", ("1.2.3.4", 1000))
def test_bad_header_handled(monkeypatch):
s = SfpTransport("127.0.0.1", 0, {})
# craft short data smaller than header
s._process_packet(b"123", ("1.2.3.4", 1000))
def test_buffer_overflow_logged():
s = SfpTransport("127.0.0.1", 0, {})
# Build a header with tiny total_size but offset/pl_size that would overflow
hdr = bytearray(SFPHeader.size())
hdr[SFPHeader.get_field_offset("SFP_FLOW")] = ord("M")
hdr[SFPHeader.get_field_offset("SFP_TID")] = 1
hdr[SFPHeader.get_field_offset("SFP_TOTFRGAS")] = 1
hdr[SFPHeader.get_field_offset("SFP_TOTSIZE")] = 1
hdr[SFPHeader.get_field_offset("SFP_PLSIZE")] = 10
hdr[SFPHeader.get_field_offset("SFP_PLOFFSET")] = 0
data = bytes(hdr) + b"1234567890"
s._process_packet(data, ("1.2.3.4", 1000))