diff --git a/epan/dissectors/packet-coap.c b/epan/dissectors/packet-coap.c index b37b6c231c..b7afe05f82 100644 --- a/epan/dissectors/packet-coap.c +++ b/epan/dissectors/packet-coap.c @@ -450,8 +450,11 @@ dissect_coap_opt_object_security(tvbuff_t *tvb, proto_item *head_item, proto_tre coinfo->object_security = TRUE; coinfo->oscore_info->piv = NULL; + coinfo->oscore_info->piv_len = 0; coinfo->oscore_info->kid_context = NULL; + coinfo->oscore_info->kid_context_len = 0; coinfo->oscore_info->kid = NULL; + coinfo->oscore_info->kid_len = 0; if (opt_length == 0) { /* option length is zero, means flag byte is 0x00*/ /* add info to the head of the packet detail */ @@ -1144,11 +1147,9 @@ dissect_coap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* d /* Indicate to OSCORE that this response contains its own PIV */ coinfo->oscore_info->piv_in_response = TRUE; coap_trans->oscore_info->piv_in_response = TRUE; - } else { - if (coap_trans->oscore_info->piv) { - /* Use the PIV from the request */ - coinfo->oscore_info->piv = (guint8 *) wmem_memdup(wmem_packet_scope(), coap_trans->oscore_info->piv, coap_trans->oscore_info->piv_len); - } + } else if (coap_trans->oscore_info->piv_len > 0) { + /* Use the PIV from the request */ + coinfo->oscore_info->piv = (guint8 *) wmem_memdup(wmem_packet_scope(), coap_trans->oscore_info->piv, coap_trans->oscore_info->piv_len); coinfo->oscore_info->piv_len = coap_trans->oscore_info->piv_len; } coinfo->oscore_info->response = TRUE;