aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-clnp.c
diff options
context:
space:
mode:
authorMartin Kaiser <wireshark@kaiser.cx>2013-04-27 13:06:28 +0000
committerMartin Kaiser <wireshark@kaiser.cx>2013-04-27 13:06:28 +0000
commit600e5ac301674613a73ce29b55b9d27c87f4bf04 (patch)
tree3ff522982ba36cf2f7645e761b72ccb55882934a /epan/dissectors/packet-clnp.c
parent3beb9a36a364a25008d93d3fa30e500559f348c0 (diff)
remove unnecessary if (tree) checks
I hope this prevents bugs like the one fixed in r48917 svn path=/trunk/; revision=49073
Diffstat (limited to 'epan/dissectors/packet-clnp.c')
-rw-r--r--epan/dissectors/packet-clnp.c195
1 files changed, 84 insertions, 111 deletions
diff --git a/epan/dissectors/packet-clnp.c b/epan/dissectors/packet-clnp.c
index f90837c75b..b5e740dcf2 100644
--- a/epan/dissectors/packet-clnp.c
+++ b/epan/dissectors/packet-clnp.c
@@ -208,7 +208,7 @@ gboolean clnp_decode_atn_options = FALSE;
static void
dissect_clnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_tree *clnp_tree = NULL;
+ proto_tree *clnp_tree;
proto_item *ti, *ti_len = NULL, *ti_pdu_len = NULL, *ti_tot_len = NULL;
guint8 cnf_proto_id;
guint8 cnf_hdr_len;
@@ -241,13 +241,10 @@ dissect_clnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
cnf_proto_id = tvb_get_guint8(tvb, P_CLNP_PROTO_ID);
if (cnf_proto_id == NLPID_NULL) {
col_set_str(pinfo->cinfo, COL_INFO, "Inactive subset");
- if (tree) {
- ti = proto_tree_add_item(tree, proto_clnp, tvb, P_CLNP_PROTO_ID, 1, ENC_NA);
- clnp_tree = proto_item_add_subtree(ti, ett_clnp);
- proto_tree_add_uint_format(clnp_tree, hf_clnp_id, tvb, P_CLNP_PROTO_ID, 1,
- cnf_proto_id,
- "Inactive subset");
- }
+ ti = proto_tree_add_item(tree, proto_clnp, tvb, P_CLNP_PROTO_ID, 1, ENC_NA);
+ clnp_tree = proto_item_add_subtree(ti, ett_clnp);
+ proto_tree_add_uint_format(clnp_tree, hf_clnp_id, tvb, P_CLNP_PROTO_ID, 1,
+ cnf_proto_id, "Inactive subset");
next_tvb = tvb_new_subset_remaining(tvb, 1);
if (call_dissector(ositp_inactive_handle, next_tvb, pinfo, tree) == 0)
call_dissector(data_handle,tvb, pinfo, tree);
@@ -264,14 +261,12 @@ dissect_clnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* fixed part decoding */
cnf_hdr_len = tvb_get_guint8(tvb, P_CLNP_HDR_LEN);
- if (tree) {
- ti = proto_tree_add_item(tree, proto_clnp, tvb, 0, cnf_hdr_len, ENC_NA);
- clnp_tree = proto_item_add_subtree(ti, ett_clnp);
- proto_tree_add_uint(clnp_tree, hf_clnp_id, tvb, P_CLNP_PROTO_ID, 1,
- cnf_proto_id);
- ti_len = proto_tree_add_uint(clnp_tree, hf_clnp_length, tvb, P_CLNP_HDR_LEN, 1,
- cnf_hdr_len);
- }
+ ti = proto_tree_add_item(tree, proto_clnp, tvb, 0, cnf_hdr_len, ENC_NA);
+ clnp_tree = proto_item_add_subtree(ti, ett_clnp);
+ proto_tree_add_uint(clnp_tree, hf_clnp_id, tvb, P_CLNP_PROTO_ID, 1,
+ cnf_proto_id);
+ ti_len = proto_tree_add_uint(clnp_tree, hf_clnp_length, tvb, P_CLNP_HDR_LEN, 1,
+ cnf_hdr_len);
if (cnf_hdr_len < FIXED_PART_LEN) {
/* Header length is less than the length of the fixed part of
the header. */
@@ -280,16 +275,13 @@ dissect_clnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
FIXED_PART_LEN);
return;
}
- if (tree) {
- proto_tree_add_uint(clnp_tree, hf_clnp_version, tvb, P_CLNP_VERS, 1,
+ proto_tree_add_uint(clnp_tree, hf_clnp_version, tvb, P_CLNP_VERS, 1,
cnf_vers);
- cnf_ttl = tvb_get_guint8(tvb, P_CLNP_TTL);
- proto_tree_add_uint_format(clnp_tree, hf_clnp_ttl, tvb, P_CLNP_TTL, 1,
- cnf_ttl,
- "Holding Time : %u (%u.%u secs)",
- cnf_ttl, cnf_ttl / 2, (cnf_ttl % 2) * 5);
- }
-
+ cnf_ttl = tvb_get_guint8(tvb, P_CLNP_TTL);
+ proto_tree_add_uint_format(clnp_tree, hf_clnp_ttl, tvb, P_CLNP_TTL, 1,
+ cnf_ttl,
+ "Holding Time : %u (%u.%u secs)",
+ cnf_ttl, cnf_ttl / 2, (cnf_ttl % 2) * 5);
cnf_type = tvb_get_guint8(tvb, P_CLNP_TYPE);
pdu_type_string = val_to_str(cnf_type & CNF_TYPE, npdu_type_abbrev_vals,
"Unknown (0x%02x)");
@@ -300,19 +292,17 @@ dissect_clnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
g_strlcat(flag_string, "M ", 7);
if (cnf_type & CNF_ERR_OK)
g_strlcat(flag_string, "E ", 7);
- if (tree) {
- ti = proto_tree_add_uint_format(clnp_tree, hf_clnp_type, tvb, P_CLNP_TYPE, 1,
- cnf_type,
- "PDU Type : 0x%02x (%s%s)",
- cnf_type,
- flag_string,
- pdu_type_string);
- type_tree = proto_item_add_subtree(ti, ett_clnp_type);
- proto_tree_add_item(type_tree, hf_clnp_cnf_segmentation, tvb, P_CLNP_TYPE, 1, ENC_NA);
- proto_tree_add_item(type_tree, hf_clnp_cnf_more_segments, tvb, P_CLNP_TYPE, 1, ENC_NA);
- proto_tree_add_item(type_tree, hf_clnp_cnf_report_error, tvb, P_CLNP_TYPE, 1, ENC_NA);
- proto_tree_add_item(type_tree, hf_clnp_cnf_type, tvb, P_CLNP_TYPE, 1, ENC_NA);
- }
+ ti = proto_tree_add_uint_format(clnp_tree, hf_clnp_type, tvb, P_CLNP_TYPE, 1,
+ cnf_type,
+ "PDU Type : 0x%02x (%s%s)",
+ cnf_type,
+ flag_string,
+ pdu_type_string);
+ type_tree = proto_item_add_subtree(ti, ett_clnp_type);
+ proto_tree_add_item(type_tree, hf_clnp_cnf_segmentation, tvb, P_CLNP_TYPE, 1, ENC_NA);
+ proto_tree_add_item(type_tree, hf_clnp_cnf_more_segments, tvb, P_CLNP_TYPE, 1, ENC_NA);
+ proto_tree_add_item(type_tree, hf_clnp_cnf_report_error, tvb, P_CLNP_TYPE, 1, ENC_NA);
+ proto_tree_add_item(type_tree, hf_clnp_cnf_type, tvb, P_CLNP_TYPE, 1, ENC_NA);
/* If we don't have the full header - i.e., not enough to see the
segmentation part and determine whether this datagram is segmented
@@ -324,10 +314,8 @@ dissect_clnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
segment_length = tvb_get_ntohs(tvb, P_CLNP_SEGLEN);
- if (tree) {
- ti_pdu_len = proto_tree_add_uint(clnp_tree, hf_clnp_pdu_length, tvb, P_CLNP_SEGLEN, 2,
- segment_length);
- }
+ ti_pdu_len = proto_tree_add_uint(clnp_tree, hf_clnp_pdu_length, tvb, P_CLNP_SEGLEN, 2,
+ segment_length);
if (segment_length < cnf_hdr_len) {
/* Segment length is less than the header length. */
expert_add_info_format(pinfo, ti_pdu_len, PI_MALFORMED, PI_ERROR,
@@ -336,44 +324,41 @@ dissect_clnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
cnf_cksum = tvb_get_ntohs(tvb, P_CLNP_CKSUM);
cksum_status = calc_checksum(tvb, 0, cnf_hdr_len, cnf_cksum);
- if (tree) {
- switch (cksum_status) {
-
- default:
- /*
- * No checksum present, or not enough of the header present to
- * checksum it.
- */
- proto_tree_add_uint_format(clnp_tree, hf_clnp_checksum, tvb,
- P_CLNP_CKSUM, 2,
- cnf_cksum,
- "Checksum : 0x%04x",
- cnf_cksum);
- break;
-
- case CKSUM_OK:
- /*
- * Checksum is correct.
- */
- proto_tree_add_uint_format(clnp_tree, hf_clnp_checksum, tvb,
- P_CLNP_CKSUM, 2,
- cnf_cksum,
- "Checksum : 0x%04x (correct)",
- cnf_cksum);
- break;
-
- case CKSUM_NOT_OK:
- /*
- * Checksum is not correct.
- */
- proto_tree_add_uint_format(clnp_tree, hf_clnp_checksum, tvb,
- P_CLNP_CKSUM, 2,
- cnf_cksum,
- "Checksum : 0x%04x (incorrect)",
- cnf_cksum);
- break;
- }
- } /* tree */
+ switch (cksum_status) {
+ default:
+ /*
+ * No checksum present, or not enough of the header present to
+ * checksum it.
+ */
+ proto_tree_add_uint_format(clnp_tree, hf_clnp_checksum, tvb,
+ P_CLNP_CKSUM, 2,
+ cnf_cksum,
+ "Checksum : 0x%04x",
+ cnf_cksum);
+ break;
+
+ case CKSUM_OK:
+ /*
+ * Checksum is correct.
+ */
+ proto_tree_add_uint_format(clnp_tree, hf_clnp_checksum, tvb,
+ P_CLNP_CKSUM, 2,
+ cnf_cksum,
+ "Checksum : 0x%04x (correct)",
+ cnf_cksum);
+ break;
+
+ case CKSUM_NOT_OK:
+ /*
+ * Checksum is not correct.
+ */
+ proto_tree_add_uint_format(clnp_tree, hf_clnp_checksum, tvb,
+ P_CLNP_CKSUM, 2,
+ cnf_cksum,
+ "Checksum : 0x%04x (incorrect)",
+ cnf_cksum);
+ break;
+ }
opt_len = cnf_hdr_len;
opt_len -= FIXED_PART_LEN; /* Fixed part of Header */
@@ -410,12 +395,10 @@ dissect_clnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
nsel = tvb_get_guint8(tvb, offset + dst_len - 1);
SET_ADDRESS(&pinfo->net_dst, AT_OSI, dst_len, dst_addr);
SET_ADDRESS(&pinfo->dst, AT_OSI, dst_len, dst_addr);
- if (tree) {
- proto_tree_add_bytes_format(clnp_tree, hf_clnp_dest, tvb, offset, dst_len,
- dst_addr,
- " DA : %s",
- print_nsap_net(dst_addr, dst_len));
- }
+ proto_tree_add_bytes_format(clnp_tree, hf_clnp_dest, tvb, offset, dst_len,
+ dst_addr,
+ " DA : %s",
+ print_nsap_net(dst_addr, dst_len));
offset += dst_len;
opt_len -= dst_len;
@@ -449,14 +432,12 @@ dissect_clnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
src_addr = tvb_get_ptr(tvb, offset, src_len);
SET_ADDRESS(&pinfo->net_src, AT_OSI, src_len, src_addr);
SET_ADDRESS(&pinfo->src, AT_OSI, src_len, src_addr);
- if (tree) {
- proto_tree_add_bytes_format(clnp_tree, hf_clnp_src, tvb,
- offset, src_len,
- src_addr,
- " SA : %s",
- print_nsap_net(src_addr, src_len));
+ proto_tree_add_bytes_format(clnp_tree, hf_clnp_src, tvb,
+ offset, src_len,
+ src_addr,
+ " SA : %s",
+ print_nsap_net(src_addr, src_len));
- }
offset += src_len;
opt_len -= src_len;
@@ -474,23 +455,17 @@ dissect_clnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
return;
}
du_id = tvb_get_ntohs(tvb, offset);
- if (tree) {
- proto_tree_add_text(clnp_tree, tvb, offset, 2,
- "Data unit identifier: %06u",
- du_id);
- }
+ proto_tree_add_text(clnp_tree, tvb, offset, 2,
+ "Data unit identifier: %06u",
+ du_id);
segment_offset = tvb_get_ntohs(tvb, offset + 2);
- if (tree) {
- proto_tree_add_text(clnp_tree, tvb, offset + 2 , 2,
- "Segment offset : %6u",
- segment_offset);
- }
+ proto_tree_add_text(clnp_tree, tvb, offset + 2 , 2,
+ "Segment offset : %6u",
+ segment_offset);
total_length = tvb_get_ntohs(tvb, offset + 4);
- if (tree) {
- ti_tot_len = proto_tree_add_text(clnp_tree, tvb, offset + 4 , 2,
- "Total length : %6u",
- total_length);
- }
+ ti_tot_len = proto_tree_add_text(clnp_tree, tvb, offset + 4 , 2,
+ "Total length : %6u",
+ total_length);
if (total_length < segment_length) {
/* Reassembled length is less than the length of this segment. */
expert_add_info_format(pinfo, ti_tot_len, PI_MALFORMED, PI_ERROR,
@@ -501,9 +476,7 @@ dissect_clnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
opt_len -= SEGMENTATION_PART_LEN;
}
- if (tree) {
- dissect_osi_options(opt_len, tvb, offset, clnp_tree);
- }
+ dissect_osi_options(opt_len, tvb, offset, clnp_tree);
offset += opt_len;