Ethereal-dev: [Ethereal-dev] [PATCH] [ISUP] Certain ISUP messages are reported as malformed
Hi,
ISUP messages without parameters like BLO, BLA and UBL are incorrectly
reported as malformed. The patch below fixes this problem. It also renames
the protocol to ISUP as this looks better in the default layout.
Regards, Martin.
--- packet-isup.c.prev 2004-04-04 21:53:40.000000000 +0200
+++ packet-isup.c 2004-06-27 11:35:32.968750000 +0200
@@ -5215,7 +5215,8 @@
tap_queue_packet(isup_tap, pinfo, &tap_rec);
- bufferlength = tvb_ensure_length_remaining(message_tvb, offset);
+ // bufferlength = tvb_ensure_length_remaining(message_tvb, offset); // MvdW: Messages without parameters (eg BLO) have no
remaining length.
+ bufferlength = tvb_length_remaining(message_tvb, offset); // Don't use the ensure variant of
tvb_length_remaining
parameter_tvb = tvb_new_subset(message_tvb, offset, bufferlength, bufferlength);
/* distinguish between message types:*/
@@ -5440,7 +5441,7 @@
/* Make entries in Protocol column and Info column on summary display */
if (check_col(pinfo->cinfo, COL_PROTOCOL))
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISUP (ITU)");
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISUP");
/* Extract message type field */
message_type = tvb_get_guint8(tvb, CIC_OFFSET + CIC_LENGTH);
@@ -5455,7 +5456,7 @@
if (check_col(pinfo->cinfo, COL_INFO))
{
if (isup_show_cic_in_info)
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s(CIC %u) ", val_to_str(message_type, isup_message_type_value_acro, "reserved"), cic);
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s (CIC %u) ", val_to_str(message_type, isup_message_type_value_acro, "reserved"), cic);
else
col_add_fstr(pinfo->cinfo, COL_INFO, "%s ", val_to_str(message_type, isup_message_type_value_acro, "reserved"));
}
@@ -5524,7 +5525,7 @@
/* Make entries in Protocol column and Info column on summary display */
if (check_col(pinfo->cinfo, COL_PROTOCOL))
- col_append_str(pinfo->cinfo, COL_PROTOCOL, "/ISUP(ITU)");
+ col_append_str(pinfo->cinfo, COL_PROTOCOL, "/ISUP");
/* Extract message type field */
message_type = tvb_get_guint8(tvb, 0);