diff options
author | Guy Harris <guy@alum.mit.edu> | 2019-07-26 01:54:14 -0700 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2019-07-26 10:23:32 +0000 |
commit | 99f574aecb0115e5017fb120056117220ffed87b (patch) | |
tree | bfb15c1b33981afc39f01e9a7bcf39b71d747492 | |
parent | 3a137dfef0aeb9f040ded43a45e5a3b9cfc25d74 (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.c | 10 |
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) |