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

Method getfield

scapy/layers/dcerpc.py:1720–1742  ·  view source on GitHub ↗
(self, pkt, s)

Source from the content-addressed store, hash-verified

1718 self.default = None
1719
1720 def getfield(self, pkt, s):
1721 fmt = _e(pkt.ndrendian) + ["I", "Q"][pkt.ndr64]
1722 remain, referent_id = NDRAlign(Field("", 0, fmt=fmt), align=(4, 8)).getfield(
1723 pkt, s
1724 )
1725
1726 # No value
1727 if referent_id == 0 and not self.EMBEDDED_REF:
1728 return remain, None
1729
1730 # With value
1731 if self.EMBEDDED:
1732 # deferred
1733 ptr = NDRPointer(
1734 ndr64=pkt.ndr64, ndrendian=pkt.ndrendian, referent_id=referent_id
1735 )
1736 pkt.deferred_pointers.append((ptr, partial(self.fld.getfield, pkt)))
1737 return remain, ptr
1738
1739 remain, val = self.fld.getfield(pkt, remain)
1740 return remain, NDRPointer(
1741 ndr64=pkt.ndr64, ndrendian=pkt.ndrendian, referent_id=referent_id, value=val
1742 )
1743
1744 def addfield(self, pkt, s, val):
1745 if val is not None and not isinstance(val, NDRPointer):

Callers

nothing calls this directly

Calls 6

FieldClass · 0.90
_eFunction · 0.85
NDRAlignClass · 0.85
NDRPointerClass · 0.85
getfieldMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected