From ae2e12d1f7095afd8ad9dedfb51a5cc1cd29105e Mon Sep 17 00:00:00 2001 From: Chris Maynard Date: Mon, 2 Dec 2013 21:34:23 +0000 Subject: [PATCH] Reject the packet if data is NULL without doing anything else. svn path=/trunk/; revision=53735 --- epan/dissectors/packet-bthcrp.c | 8 +++++--- epan/dissectors/packet-bthfp.c | 8 +++++--- epan/dissectors/packet-bthsp.c | 8 +++++--- epan/dissectors/packet-btl2cap.c | 8 +++++--- epan/dissectors/packet-btobex.c | 7 +++++-- epan/dissectors/packet-btrfcomm.c | 8 +++++--- epan/dissectors/packet-btsdp.c | 8 +++++--- 7 files changed, 35 insertions(+), 20 deletions(-) diff --git a/epan/dissectors/packet-bthcrp.c b/epan/dissectors/packet-bthcrp.c index e07bee779d..e9754ad9c4 100644 --- a/epan/dissectors/packet-bthcrp.c +++ b/epan/dissectors/packet-bthcrp.c @@ -354,6 +354,11 @@ dissect_bthcrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) gint offset = 0; gboolean is_client_message; + /* Reject the packet if data is NULL */ + if (data == NULL) + return 0; + l2cap_data = (btl2cap_data_t *) data; + main_item = proto_tree_add_item(tree, proto_bthcrp, tvb, offset, -1, ENC_NA); main_tree = proto_item_add_subtree(main_item, ett_bthcrp); @@ -372,9 +377,6 @@ dissect_bthcrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) break; } - l2cap_data = (btl2cap_data_t *) data; - DISSECTOR_ASSERT(l2cap_data); - /* TODO: Implement streams reconizing by SDP * Server provide SDP record for Control and Data PSM * Client provide SDP record for Notification PSM (optional) diff --git a/epan/dissectors/packet-bthfp.c b/epan/dissectors/packet-bthfp.c index 6294a1d886..ba81b22339 100644 --- a/epan/dissectors/packet-bthfp.c +++ b/epan/dissectors/packet-bthfp.c @@ -1164,6 +1164,11 @@ dissect_bthfp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) guint reassemble_start_offset = 0; guint reassemble_end_offset = 0; + /* Reject the packet if data is NULL */ + if (data == NULL) + return 0; + rfcomm_data = (btrfcomm_data_t *) data; + main_item = proto_tree_add_item(tree, proto_bthfp, tvb, 0, -1, ENC_NA); main_tree = proto_item_add_subtree(main_item, ett_bthfp); @@ -1181,9 +1186,6 @@ dissect_bthfp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) break; } - rfcomm_data = (btrfcomm_data_t *) data; - DISSECTOR_ASSERT(rfcomm_data); - interface_id = rfcomm_data->interface_id; adapter_id = rfcomm_data->adapter_id; chandle = rfcomm_data->chandle; diff --git a/epan/dissectors/packet-bthsp.c b/epan/dissectors/packet-bthsp.c index 089a57845f..acef8a2c74 100644 --- a/epan/dissectors/packet-bthsp.c +++ b/epan/dissectors/packet-bthsp.c @@ -663,6 +663,11 @@ dissect_bthsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) guint reassemble_start_offset = 0; guint reassemble_end_offset = 0; + /* Reject the packet if data is NULL */ + if (data == NULL) + return 0; + rfcomm_data = (btrfcomm_data_t *) data; + main_item = proto_tree_add_item(tree, proto_bthsp, tvb, 0, -1, ENC_NA); main_tree = proto_item_add_subtree(main_item, ett_bthsp); @@ -680,9 +685,6 @@ dissect_bthsp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) break; } - rfcomm_data = (btrfcomm_data_t *) data; - DISSECTOR_ASSERT(rfcomm_data); - interface_id = rfcomm_data->interface_id; adapter_id = rfcomm_data->adapter_id; chandle = rfcomm_data->chandle; diff --git a/epan/dissectors/packet-btl2cap.c b/epan/dissectors/packet-btl2cap.c index a22fade5d2..046d5c25fd 100644 --- a/epan/dissectors/packet-btl2cap.c +++ b/epan/dissectors/packet-btl2cap.c @@ -1621,6 +1621,11 @@ dissect_btl2cap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) bthci_acl_data_t *acl_data; btl2cap_data_t *l2cap_data; + /* Reject the packet if data is NULL */ + if (data == NULL) + return 0; + acl_data = (bthci_acl_data_t *) data; + ti = proto_tree_add_item(tree, proto_btl2cap, tvb, offset, -1, ENC_NA); btl2cap_tree = proto_item_add_subtree(ti, ett_btl2cap); @@ -1639,9 +1644,6 @@ dissect_btl2cap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) break; } - acl_data = (bthci_acl_data_t *) data; - DISSECTOR_ASSERT(acl_data); - length = tvb_get_letohs(tvb, offset); proto_tree_add_item(btl2cap_tree, hf_btl2cap_length, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; diff --git a/epan/dissectors/packet-btobex.c b/epan/dissectors/packet-btobex.c index a78d4fb1e2..eae8262a3c 100644 --- a/epan/dissectors/packet-btobex.c +++ b/epan/dissectors/packet-btobex.c @@ -1411,6 +1411,11 @@ dissect_btobex(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) guint32 k_direction; guint32 length; + + /* Reject the packet if data is NULL */ + if (data == NULL) + return 0; + save_fragmented = pinfo->fragmented; is_obex_over_l2cap = (proto_btrfcomm == (gint) GPOINTER_TO_UINT(wmem_list_frame_data( @@ -1420,7 +1425,6 @@ dissect_btobex(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) btl2cap_data_t *l2cap_data; l2cap_data = (btl2cap_data_t *) data; - DISSECTOR_ASSERT(l2cap_data); interface_id = l2cap_data->interface_id; adapter_id = l2cap_data->adapter_id; @@ -1430,7 +1434,6 @@ dissect_btobex(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) btrfcomm_data_t *rfcomm_data; rfcomm_data = (btrfcomm_data_t *) data; - DISSECTOR_ASSERT(rfcomm_data); interface_id = rfcomm_data->interface_id; adapter_id = rfcomm_data->adapter_id; diff --git a/epan/dissectors/packet-btrfcomm.c b/epan/dissectors/packet-btrfcomm.c index ab82587ef4..0db57b80df 100644 --- a/epan/dissectors/packet-btrfcomm.c +++ b/epan/dissectors/packet-btrfcomm.c @@ -582,6 +582,11 @@ dissect_btrfcomm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data btl2cap_data_t *l2cap_data; service_info_t *service_info = NULL; + /* Reject the packet if data is NULL */ + if (data == NULL) + return 0; + l2cap_data = (btl2cap_data_t *) data; + ti = proto_tree_add_item(tree, proto_btrfcomm, tvb, offset, -1, ENC_NA); rfcomm_tree = proto_item_add_subtree(ti, ett_btrfcomm); @@ -600,9 +605,6 @@ dissect_btrfcomm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data break; } - l2cap_data = (btl2cap_data_t *) data; - DISSECTOR_ASSERT(l2cap_data); - /* flags and dlci */ offset = dissect_btrfcomm_address(tvb, pinfo, offset, rfcomm_tree, &ea_flag, &cr_flag, &dlci); /* pf and frame type */ diff --git a/epan/dissectors/packet-btsdp.c b/epan/dissectors/packet-btsdp.c index 44cb853751..b0eb36453b 100644 --- a/epan/dissectors/packet-btsdp.c +++ b/epan/dissectors/packet-btsdp.c @@ -4258,14 +4258,16 @@ dissect_btsdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) guint16 tid; btl2cap_data_t *l2cap_data; + /* Reject the packet if data is NULL */ + if (data == NULL) + return 0; + l2cap_data = (btl2cap_data_t *) data; + ti = proto_tree_add_item(tree, proto_btsdp, tvb, 0, -1, ENC_NA); st = proto_item_add_subtree(ti, ett_btsdp); col_set_str(pinfo->cinfo, COL_PROTOCOL, "SDP"); - l2cap_data = (btl2cap_data_t *) data; - DISSECTOR_ASSERT(l2cap_data); - switch (pinfo->p2p_dir) { case P2P_DIR_SENT: col_set_str(pinfo->cinfo, COL_INFO, "Sent ");