aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2017-04-14 19:58:13 -0400
committerMichael Mann <mmann78@netscape.net>2017-04-15 16:52:18 +0000
commit731d6e504dbf509b605d98fd35f4837a36ed695e (patch)
tree17a7234a11b3ca097d0b6957b456e59785654b5b /tools
parent7e002ed84f844661159e3584b8ce376e8fd792dc (diff)
x11: proto_tree_add_uint_format -> proto_tree_add_uint_format_value
Change-Id: Ib8b80b2c4a79941cf56d8add783c88d1078f079a Reviewed-on: https://code.wireshark.org/review/21104 Petri-Dish: Michael Mann <mmann78@netscape.net> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'tools')
-rwxr-xr-xtools/process-x11-xcb.pl26
1 files changed, 18 insertions, 8 deletions
diff --git a/tools/process-x11-xcb.pl b/tools/process-x11-xcb.pl
index 18f4db8aa3..6e6b48b19e 100755
--- a/tools/process-x11-xcb.pl
+++ b/tools/process-x11-xcb.pl
@@ -723,7 +723,7 @@ sub register_element($$$$;$)
}
print $decl "static int $regname = -1;\n";
- if ($e->name() eq 'list' and $info->{'size'} > 1) {
+ if ($e->name() eq 'list' and defined $info->{'size'} and $info->{'size'} > 1) {
print $reg "{ &$regname, { \"$fieldname\", \"$humanname\", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},\n";
$regname .= '_item';
print $decl "static int $regname = -1;\n";
@@ -841,8 +841,13 @@ sub dissect_element($$$$$;$$)
my $type = $e->att('type');
my $info = getinfo($type);
- my $lencalc = "(length - $length) / $info->{'size'}";
+ my $lencalc;
my $lentype = $e->first_child();
+ if (defined $info->{'size'}) {
+ $lencalc = "(length - $length) / $info->{'size'}";
+ } else {
+ $lencalc = "(length - $length)";
+ }
if (defined $lentype) {
given ($lentype->name()) {
when ('value') { $lencalc = $lentype->text(); }
@@ -879,13 +884,18 @@ sub dissect_element($$$$$;$$)
print $impl $indent."struct_$info->{'name'}(tvb, offsetp, t, byte_order, $lencalc$prefs);\n";
} else {
- die ("Unrecognized type: $type\n");
+ # TODO: Fix unrecognized type. Comment out for now to generate dissector
+ # die ("Unrecognized type: $type\n");
}
if ($adjustlength && defined($lentype)) {
# Some requests end with a list of unspecified length
# Adjust the length field here so that the next $lencalc will be accurate
- say $impl $indent."length -= $lencalc * $info->{'size'};";
+ if (defined $info->{'size'}) {
+ say $impl $indent."length -= $lencalc * $info->{'size'};";
+ } else {
+ say $impl $indent."length -= $lencalc * 1;";
+ }
}
}
when ('switch') {
@@ -1418,8 +1428,8 @@ eot
if ($first) {
$first = 0;
say $impl ' sequence_number = VALUE16(tvb, *offsetp);';
- say $impl ' proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,';
- say $impl ' "sequencenumber: %d ('.$header.'-'.$name.')", sequence_number);';
+ say $impl ' proto_tree_add_uint_format_value(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number,';
+ say $impl ' "%d ('.$header.'-'.$name.')", sequence_number);';
say $impl ' *offsetp += 2;';
if ($refs->{field}{length}) {
@@ -1554,8 +1564,8 @@ eot
}
if ($xge) {
- say $impl " proto_tree_add_uint_format(t, hf_x11_minor_opcode, tvb, *offsetp, 2, $number,";
- say $impl " \"opcode: $name ($number)\");";
+ say $impl " proto_tree_add_uint_format_value(t, hf_x11_minor_opcode, tvb, *offsetp, 2, $number,";
+ say $impl " \"$name ($number)\");";
foreach my $e (@elements) {
$length = dissect_element($e, $varpat, $humanpat, $length, $refs);
}