aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2019-07-26 01:54:14 -0700
committerGuy Harris <guy@alum.mit.edu>2019-07-26 10:23:32 +0000
commit99f574aecb0115e5017fb120056117220ffed87b (patch)
treebfb15c1b33981afc39f01e9a7bcf39b71d747492
parent3a137dfef0aeb9f040ded43a45e5a3b9cfc25d74 (diff)
Initialize newly-allocated iap_conversation_t before fetching packet data.
If we do it after trying to fetch packet data, the attempt to fetch might throw an exception, and the structure won't be fully initialized. Bug: 15934 Change-Id: If50a8c18232d934c1e33512cddb40a011a4eaef7 Reviewed-on: https://code.wireshark.org/review/34087 Petri-Dish: Guy Harris <guy@alum.mit.edu> Tested-by: Petri Dish Buildbot Reviewed-by: Guy Harris <guy@alum.mit.edu>
-rw-r--r--plugins/epan/irda/packet-irda.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/plugins/epan/irda/packet-irda.c b/plugins/epan/irda/packet-irda.c
index 6b3fefb140..780d6591c2 100644
--- a/plugins/epan/irda/packet-irda.c
+++ b/plugins/epan/irda/packet-irda.c
@@ -579,6 +579,12 @@ static void dissect_iap_request(tvbuff_t* tvb, packet_info* pinfo, proto_tree* r
iap_conv = wmem_new(wmem_file_scope(), iap_conversation_t);
conversation_add_proto_data(conv, proto_iap, (void*)iap_conv);
}
+ if (iap_conv)
+ {
+ iap_conv->pnext = NULL;
+ iap_conv->iap_query_frame = pinfo->num;
+ iap_conv->pattr_dissector = NULL;
+ }
char *class_name = (char *) tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 1 + 1, clen, ENC_ASCII|ENC_NA);
char *attr_name = (char *) tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 1 + 1 + clen + 1, alen, ENC_ASCII|ENC_NA);
@@ -592,10 +598,6 @@ static void dissect_iap_request(tvbuff_t* tvb, packet_info* pinfo, proto_tree* r
{
int i, j;
- iap_conv->pnext = NULL;
- iap_conv->iap_query_frame = pinfo->num;
- iap_conv->pattr_dissector = NULL;
-
/* Find the attribute dissector */
for (i = 0; class_dissector[i].class_name != NULL; i++)
if (strcmp(class_name, class_dissector[i].class_name) == 0)