Skip to content
Snippets Groups Projects
Commit 4d25ecd9 authored by Guillaume Valadon's avatar Guillaume Valadon
Browse files

Merged in p-l/scapy/fix-padding-after-pull-request-18 (pull request #88)

Fix Padding() packet class (broken after pull request #18)
parents a0a0a3e0 82ff9fc3
No related branches found
No related tags found
No related merge requests found
...@@ -17,6 +17,8 @@ class ASN1_Packet(Packet): ...@@ -17,6 +17,8 @@ class ASN1_Packet(Packet):
self.do_init_fields(flist) self.do_init_fields(flist)
self.fields_desc = flist self.fields_desc = flist
def self_build(self): def self_build(self):
if self.raw_packet_cache is not None:
return self.raw_packet_cache
return self.ASN1_root.build(self) return self.ASN1_root.build(self)
def do_dissect(self, x): def do_dissect(self, x):
return self.ASN1_root.dissect(self, x) return self.ASN1_root.dissect(self, x)
......
...@@ -296,6 +296,8 @@ class Packet(BasePacket): ...@@ -296,6 +296,8 @@ class Packet(BasePacket):
def __len__(self): def __len__(self):
return len(self.__str__()) return len(self.__str__())
def self_build(self, field_pos_list=None): def self_build(self, field_pos_list=None):
if self.raw_packet_cache is not None:
return self.raw_packet_cache
p="" p=""
for f in self.fields_desc: for f in self.fields_desc:
val = self.getfieldval(f.name) val = self.getfieldval(f.name)
...@@ -314,10 +316,7 @@ class Packet(BasePacket): ...@@ -314,10 +316,7 @@ class Packet(BasePacket):
def do_build(self): def do_build(self):
if not self.explicit: if not self.explicit:
self = self.__iter__().next() self = self.__iter__().next()
if self.raw_packet_cache is None: pkt = self.self_build()
pkt = self.self_build()
else:
pkt = self.raw_packet_cache
for t in self.post_transforms: for t in self.post_transforms:
pkt = t(pkt) pkt = t(pkt)
pay = self.do_build_payload() pay = self.do_build_payload()
...@@ -1148,7 +1147,8 @@ class Padding(Raw): ...@@ -1148,7 +1147,8 @@ class Padding(Raw):
def self_build(self): def self_build(self):
return "" return ""
def build_padding(self): def build_padding(self):
return self.load+self.payload.build_padding() return (self.load if self.raw_packet_cache is None
else self.raw_packet_cache) + self.payload.build_padding()
conf.raw_layer = Raw conf.raw_layer = Raw
conf.padding_layer = Padding conf.padding_layer = Padding
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment