Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions scapy/asn1fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -1085,4 +1085,6 @@ def __init__(self,
def m2i(self, pkt, s): # type: ignore
# type: (ASN1_Packet, bytes) -> Tuple[ASN1_Packet, bytes]
val = super(ASN1F_STRING_ENCAPS, self).m2i(pkt, s)
if not val[0].val:
return val[0], val[1] # type: ignore
return self.cls(val[0].val, _underlayer=pkt), val[1]
2 changes: 2 additions & 0 deletions scapy/layers/spnego.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,8 @@ def i2m(self, pkt, x):

def m2i(self, pkt, s):
dat, r = super(_SPNEGO_Token_Field, self).m2i(pkt, s)
if not dat.val:
return dat, r
types = None
if isinstance(pkt.underlayer, SPNEGO_negTokenInit):
types = pkt.underlayer.mechTypes
Expand Down
13 changes: 13 additions & 0 deletions test/scapy/layers/spnego.uts
Original file line number Diff line number Diff line change
Expand Up @@ -437,3 +437,16 @@ try:
assert False, "Should have failed !"
except ValueError:
pass

+ SPNEGO packets

= SPNEGO_Token - build and dissect empty payloads

pkt = SPNEGO_Token()
assert raw(pkt) == b"\x04\x00"
assert raw(SPNEGO_Token(raw(pkt))) == raw(pkt)
assert not SPNEGO_Token(raw(pkt)).value

pkt = SPNEGO_MechListMIC()
assert raw(pkt) == b"\x04\x00"
assert raw(SPNEGO_MechListMIC(raw(pkt))) == raw(pkt)
Loading