summaryrefslogtreecommitdiff
path: root/tools/parse_xml2skinny_dissector.py
diff options
context:
space:
mode:
authorDiederik de Groot <dkgroot@talon.nl>2017-02-19 18:05:20 +0100
committerAnders Broman <a.broman58@gmail.com>2017-02-22 05:39:53 +0000
commit73ac6974c4db73846c37d811a02d17c1436eab47 (patch)
tree55a3d0c58ef60af9cb8ac88df4752be882822c14 /tools/parse_xml2skinny_dissector.py
parenta4d7793b4cfc2e6d578bf4723fd334f24cf453ec (diff)
downloadwireshark-73ac6974c4db73846c37d811a02d17c1436eab47.tar.gz
[skinny]: Fix tvb struct size guard value
The struct size guard value was used incorrectly, causing message with short content to be only partially dissected. Minor: - Renamed OffHookWithCgpn to OffHookWithCalingPartyNumber - Added SetHookFlashDetect Message - Removed some of the debug logging when parse_xml2skinny_dissector.py:debug=0 Change-Id: If4f20d2412f8775fac3d0a2979200e8369cea6f2 Reviewed-on: https://code.wireshark.org/review/20186 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'tools/parse_xml2skinny_dissector.py')
-rwxr-xr-xtools/parse_xml2skinny_dissector.py74
1 files changed, 36 insertions, 38 deletions
diff --git a/tools/parse_xml2skinny_dissector.py b/tools/parse_xml2skinny_dissector.py
index 8acb50fdba..3af2abe169 100755
--- a/tools/parse_xml2skinny_dissector.py
+++ b/tools/parse_xml2skinny_dissector.py
@@ -222,22 +222,22 @@ def xml2obj(src):
if declarations > 1:
ret += "\n"
- if (self.fields is not None):
+ if self.fields is not None:
for fields in self.fields:
ret += '%s' %fields.dissect()
# setup request/response
if self.msgtype == "request":
- if req_resp_keys and req_resp_keys[0] != '':
- ret += self.indent_out('skinny_reqrep_add_request(cursor, pinfo, skinny_conv, %s ^ %s);\n' %(self.opcode, req_resp_keys[0]))
- else:
- ret += self.indent_out('skinny_reqrep_add_request(cursor, pinfo, skinny_conv, %s);\n' %(self.opcode))
+ if req_resp_keys and req_resp_keys[0] != '':
+ ret += self.indent_out('skinny_reqrep_add_request(cursor, pinfo, skinny_conv, %s ^ %s);\n' %(self.opcode, req_resp_keys[0]))
+ else:
+ ret += self.indent_out('skinny_reqrep_add_request(cursor, pinfo, skinny_conv, %s);\n' %(self.opcode))
if self.msgtype == "response":
- if req_resp_keys and req_resp_keys[0] != '':
- ret += self.indent_out('skinny_reqrep_add_response(cursor, pinfo, skinny_conv, %s ^ %s);\n' %(self.request, req_resp_keys[0]))
- else:
- ret += self.indent_out('skinny_reqrep_add_response(cursor, pinfo, skinny_conv, %s);\n' %(self.request))
+ if req_resp_keys and req_resp_keys[0] != '':
+ ret += self.indent_out('skinny_reqrep_add_response(cursor, pinfo, skinny_conv, %s ^ %s);\n' %(self.request, req_resp_keys[0]))
+ else:
+ ret += self.indent_out('skinny_reqrep_add_response(cursor, pinfo, skinny_conv, %s);\n' %(self.request))
self.decr_indent()
@@ -257,8 +257,6 @@ def xml2obj(src):
def declaration(self):
ret = ''
- #ret += '/* Fields Declaration */'
-
for field in self._children:
ret += '%s' %(field.declaration())
self.intsize += field.intsize
@@ -352,14 +350,14 @@ def xml2obj(src):
if size:
if self.size_fieldname:
- ret += self.indent_out('if (%s <= %s) { /* tvb integer size guard */\n' %(self.size_fieldname, size))
+ ret += self.indent_out('if (%s <= %s) {%s\n' %(self.size_fieldname, size, ' /* tvb integer size guard */' if debug else ''))
else:
ret += self.indent_out('{\n')
self.incr_indent()
variable = 'counter_%d' %indentation
ret += self.indent_out('guint32 %s = 0;\n' %(variable));
if self.size_fieldname:
- ret += self.indent_out('ptvcursor_add_text_with_subtree(cursor, SUBTREE_UNDEFINED_LENGTH, ett_skinny_tree, "%s [ref: %s = %%d, max:%s]", %s);\n' %(self.name, self.size_fieldname, size, self.size_fieldname))
+ ret += self.indent_out('ptvcursor_add_text_with_subtree(cursor, SUBTREE_UNDEFINED_LENGTH, ett_skinny_tree, "%s [ref:%s = %%d, max:%s]", %s);\n' %(self.name, self.size_fieldname, size, self.size_fieldname))
else:
ret += self.indent_out('ptvcursor_add_text_with_subtree(cursor, SUBTREE_UNDEFINED_LENGTH, ett_skinny_tree, "%s [max:%s]");\n' %(self.name, size))
ret += self.indent_out('for (%s = 0; %s < %s; %s++) {\n' %(variable, variable, size, variable));
@@ -386,9 +384,9 @@ def xml2obj(src):
if self.name in si_fields.keys():
if self.endianness == "big":
- ret += self.indent_out('%s = tvb_get_ntohs(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));\n' %(si_fields[self.name]))
+ ret += self.indent_out('%s = tvb_get_ntohs(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));\n' %(si_fields[self.name]))
else:
- ret += self.indent_out('%s = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));\n' %(si_fields[self.name]))
+ ret += self.indent_out('%s = tvb_get_letohl(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));\n' %(si_fields[self.name]))
ret += self.indent_out('ptvcursor_add(cursor, hf_skinny_%s, %d, %s);\n' %(self.name, self.intsize, self.endian))
@@ -400,12 +398,15 @@ def xml2obj(src):
ret += self.indent_out('}\n')
self.decr_indent()
ret += self.indent_out('}\n')
- ret += self.indent_out('ptvcursor_pop_subtree(cursor); /* end for loop tree: %s */\n' %self.name)
+ if debug:
+ ret += self.indent_out('ptvcursor_pop_subtree(cursor); /* end for loop tree: %s */\n' %(self.name))
+ else:
+ ret += self.indent_out('ptvcursor_pop_subtree(cursor);\n')
self.decr_indent()
if self.size_fieldname:
ret += self.indent_out('} else {\n')
self.incr_indent()
- ret += self.indent_out('ptvcursor_advance(cursor, (%s * %s)); /* guard kicked in -> skip the rest */;\n' %(size, self.intsize))
+ ret += self.indent_out('ptvcursor_advance(cursor, (%s * %s));%s\n' %(size, self.intsize, ' /* guard kicked in -> skip the rest */;' if debug else ''))
self.decr_indent()
ret += self.indent_out('}\n')
return ret
@@ -489,7 +490,10 @@ def xml2obj(src):
ret += self.indent_out('}\n')
self.decr_indent()
ret += self.indent_out('}\n')
- ret += self.indent_out('ptvcursor_pop_subtree(cursor); /* end for loop tree: %s */\n' %self.name)
+ if debug:
+ ret += self.indent_out('ptvcursor_pop_subtree(cursor); /* end for loop tree: %s */\n' %(self.name))
+ else:
+ ret += self.indent_out('ptvcursor_pop_subtree(cursor);\n')
self.decr_indent()
if self.size_fieldname:
ret += self.indent_out('} else {\n')
@@ -753,8 +757,8 @@ def xml2obj(src):
self.basemessage.declared.append("hdr_version")
for fields in self.fields:
ret += '%s' %fields.declaration()
- self.intsize += fields.intsize
-
+ #self.intsize += fields.intsize
+ self.intsize = fields.intsize
return ret
def dissect(self):
@@ -763,29 +767,29 @@ def xml2obj(src):
size = 0
if self.size_fieldname:
- if self.basemessage.dynamic == "yes":
- size = self.size_fieldname
- else:
- size = self.maxsize
+ #if self.basemessage.dynamic == "yes":
+ # size = self.size_fieldname
+ #else:
+ # size = self.maxsize
+ size = self.maxsize
elif self.size:
size = self.size
if size:
if self.size_fieldname:
- ret += self.indent_out('if (%s <= %s) { /* tvb struct size guard */\n' %(self.size_fieldname, self.intsize))
+ ret += self.indent_out('if (%s <= %s) {%s\n' %(self.size_fieldname, size, ' /* tvb struct size guard */' if debug else ''))
else:
ret += self.indent_out('{\n')
self.incr_indent()
if debug:
ret += self.indent_out('/* start struct : %s / size: %d */\n' %(self.name, self.intsize))
- #self.incr_indent()
ret += self.indent_out('guint32 %s = 0;\n' %(variable));
if self.size_fieldname:
- ret += self.indent_out('ptvcursor_add_text_with_subtree(cursor, SUBTREE_UNDEFINED_LENGTH, ett_skinny_tree, "%s [ref: %s = %%d, max:%s]", %s);\n' %(self.name, self.size_fieldname, self.maxsize, self.size_fieldname))
+ ret += self.indent_out('ptvcursor_add_text_with_subtree(cursor, SUBTREE_UNDEFINED_LENGTH, ett_skinny_tree, "%s [ref:%s = %%d, max:%s]", %s);\n' %(self.name, self.size_fieldname, self.maxsize, self.size_fieldname))
if self.maxsize:
- ret += self.indent_out('if (%s && tvb_get_letohl(ptvcursor_tvbuff(cursor), 0) + 8 >= ptvcursor_current_offset(cursor) + (%s * %s) && %s <= %s) { /* tvb counter size guard */\n' %(self.size_fieldname, self.size_fieldname, self.intsize, self.size_fieldname, self.maxsize))
+ ret += self.indent_out('if (%s && tvb_get_letohl(ptvcursor_tvbuff(cursor), 0) + 8 >= ptvcursor_current_offset(cursor) + (%s * %s) && %s <= %s) {%s\n' %(self.size_fieldname, self.size_fieldname, self.intsize, self.size_fieldname, self.maxsize, '/* tvb counter size guard */' if debug else ''))
else:
- ret += self.indent_out('if (%s && tvb_get_letohl(ptvcursor_tvbuff(cursor), 0) + 8 >= ptvcursor_current_offset(cursor) + (%s * %s)) { /* tvb counter size guard */\n' %(self.size_fieldname, self.size_fieldname, self.intsize))
+ ret += self.indent_out('if (%s && tvb_get_letohl(ptvcursor_tvbuff(cursor), 0) + 8 >= ptvcursor_current_offset(cursor) + (%s * %s)) {%s\n' %(self.size_fieldname, self.size_fieldname, self.intsize, '/* tvb counter size guard */' if debug else ''))
self.incr_indent()
else:
ret += self.indent_out('ptvcursor_add_text_with_subtree(cursor, SUBTREE_UNDEFINED_LENGTH, ett_skinny_tree, "%s [max:%s]");\n' %(self.name, size))
@@ -828,10 +832,7 @@ def xml2obj(src):
ret += self.indent_out('}\n')
if self.size_fieldname:
self.decr_indent()
- if debug:
- ret += self.indent_out('} /* end counter tvb size guard */\n')
- else:
- ret += self.indent_out('}\n')
+ ret += self.indent_out('} /* end counter tvb size guard */\n' if debug else '}\n')
ret += self.indent_out('ptvcursor_pop_subtree(cursor);\n')
if debug:
@@ -840,12 +841,9 @@ def xml2obj(src):
if self.size_fieldname:
ret += self.indent_out('} else {\n')
self.incr_indent()
- ret += self.indent_out('ptvcursor_advance(cursor, (%s * %s)); /* guard kicked in -> skip the rest */;\n' %(self.size_fieldname, self.intsize));
+ ret += self.indent_out('ptvcursor_advance(cursor, (%s * %s));%s\n' %(self.size_fieldname, self.intsize, ' /* guard kicked in -> skip the rest */' if debug else ''));
self.decr_indent()
- if debug:
- ret += self.indent_out('} /* end struct size guard */\n')
- else:
- ret += self.indent_out('}\n')
+ ret += self.indent_out('} /* end struct size guard */\n' if debug else '}\n')
return ret