diff options
44 files changed, 77 insertions, 76 deletions
diff --git a/asn1/credssp/credssp.cnf b/asn1/credssp/credssp.cnf index b53c7a663e..8bdb10a33a 100644 --- a/asn1/credssp/credssp.cnf +++ b/asn1/credssp/credssp.cnf @@ -49,7 +49,7 @@ TSRequest if(token_tvb != NULL) dissector_try_heuristic(credssp_heur_subdissector_list, - token_tvb, actx->pinfo, proto_tree_get_root(tree)); + token_tvb, actx->pinfo, proto_tree_get_root(tree), NULL); #.END diff --git a/asn1/mpeg-pes/packet-mpeg-pes-template.c b/asn1/mpeg-pes/packet-mpeg-pes-template.c index 2f98772cdd..25fe7647fd 100644 --- a/asn1/mpeg-pes/packet-mpeg-pes-template.c +++ b/asn1/mpeg-pes/packet-mpeg-pes-template.c @@ -554,7 +554,7 @@ static heur_dissector_list_t heur_subdissector_list; static void dissect_mpeg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - if (!dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, tree)) { + if (!dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, tree, NULL)) { col_set_str(pinfo->cinfo, COL_PROTOCOL, "MPEG"); col_clear(pinfo->cinfo, COL_INFO); if (tree) diff --git a/asn1/t125/t125.cnf b/asn1/t125/t125.cnf index f604c0dd60..e969db69a0 100644 --- a/asn1/t125/t125.cnf +++ b/asn1/t125/t125.cnf @@ -100,7 +100,7 @@ ConnectMCSPDU %(DEFAULT_BODY)s if(next_tvb) dissector_try_heuristic(t125_heur_subdissector_list, next_tvb, - actx->pinfo, top_tree); + actx->pinfo, top_tree, NULL); #.END #.FN_BODY Connect-Response/_untag/userData VAL_PTR = &next_tvb @@ -109,7 +109,7 @@ ConnectMCSPDU %(DEFAULT_BODY)s if(next_tvb) dissector_try_heuristic(t125_heur_subdissector_list, next_tvb, - actx->pinfo, top_tree); + actx->pinfo, top_tree, NULL); #.END diff --git a/epan/dissectors/packet-cip.c b/epan/dissectors/packet-cip.c index 7121d11392..37c3cb98c4 100644 --- a/epan/dissectors/packet-cip.c +++ b/epan/dissectors/packet-cip.c @@ -5461,7 +5461,7 @@ dissect_cip_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, packet_info if (service_index >= 0) { /* See if object dissector wants to override generic service handling */ - if(!dissector_try_heuristic(heur_subdissector_service, tvb, pinfo, item_tree)) + if(!dissector_try_heuristic(heur_subdissector_service, tvb, pinfo, item_tree, NULL)) { dissect_cip_generic_service_rsp(tvb, pinfo, cip_tree); } @@ -5537,7 +5537,7 @@ dissect_cip_data( proto_tree *item_tree, tvbuff_t *tvb, int offset, packet_info if (service_index >= 0) { /* See if object dissector wants to override generic service handling */ - if(!dissector_try_heuristic(heur_subdissector_service, tvb, pinfo, item_tree)) + if(!dissector_try_heuristic(heur_subdissector_service, tvb, pinfo, item_tree, NULL)) { dissect_cip_generic_service_req(tvb, pinfo, cip_tree, &path_info); } diff --git a/epan/dissectors/packet-clnp.c b/epan/dissectors/packet-clnp.c index 66c5bec8d3..f62fc3ec37 100644 --- a/epan/dissectors/packet-clnp.c +++ b/epan/dissectors/packet-clnp.c @@ -501,7 +501,7 @@ dissect_clnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } } if (dissector_try_heuristic(clnp_heur_subdissector_list, next_tvb, - pinfo, tree)) { + pinfo, tree, NULL)) { pinfo->fragmented = save_fragmented; return; /* yes, it appears to be one of the protocols in the heuristic list */ } diff --git a/epan/dissectors/packet-credssp.c b/epan/dissectors/packet-credssp.c index 076e4b293e..c9d42a309d 100644 --- a/epan/dissectors/packet-credssp.c +++ b/epan/dissectors/packet-credssp.c @@ -120,7 +120,7 @@ dissect_credssp_T_negoToken(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of if(token_tvb != NULL) dissector_try_heuristic(credssp_heur_subdissector_list, - token_tvb, actx->pinfo, proto_tree_get_root(tree)); + token_tvb, actx->pinfo, proto_tree_get_root(tree), NULL); diff --git a/epan/dissectors/packet-dccp.c b/epan/dissectors/packet-dccp.c index 2706afaa32..d2fa38fec8 100644 --- a/epan/dissectors/packet-dccp.c +++ b/epan/dissectors/packet-dccp.c @@ -212,7 +212,7 @@ decode_dccp_ports(tvbuff_t *tvb, int offset, packet_info *pinfo, if (try_heuristic_first) { /* do lookup with the heuristic subdissector table */ if (dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, - tree)) { + tree, NULL)) { return; } } @@ -256,7 +256,7 @@ decode_dccp_ports(tvbuff_t *tvb, int offset, packet_info *pinfo, if (!try_heuristic_first) { /* do lookup with the heuristic subdissector table */ if (dissector_try_heuristic(heur_subdissector_list, next_tvb, - pinfo, tree)) { + pinfo, tree, NULL)) { return; } } diff --git a/epan/dissectors/packet-dtls.c b/epan/dissectors/packet-dtls.c index 22868c4155..f0973fe0ff 100644 --- a/epan/dissectors/packet-dtls.c +++ b/epan/dissectors/packet-dtls.c @@ -958,7 +958,7 @@ dissect_dtls_record(tvbuff_t *tvb, packet_info *pinfo, } else { /* try heuristic subdissectors */ - dissected = dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, top_tree); + dissected = dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, top_tree, NULL); } if (dissected) break; diff --git a/epan/dissectors/packet-epl.c b/epan/dissectors/packet-epl.c index 1a758077d7..b60240604e 100644 --- a/epan/dissectors/packet-epl.c +++ b/epan/dissectors/packet-epl.c @@ -693,7 +693,7 @@ dissect_epl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) * give that protocol a chance to make a heuristic dissection, before we continue * to dissect it as a normal EPL packet. */ - if (dissector_try_heuristic(heur_epl_subdissector_list, tvb, pinfo, tree)) + if (dissector_try_heuristic(heur_epl_subdissector_list, tvb, pinfo, tree, NULL)) return TRUE; /* Get message type */ diff --git a/epan/dissectors/packet-eth.c b/epan/dissectors/packet-eth.c index 280a59a495..1c26db8f50 100644 --- a/epan/dissectors/packet-eth.c +++ b/epan/dissectors/packet-eth.c @@ -246,7 +246,7 @@ dissect_eth_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, * a first look before we assume that it's actually an * Ethernet packet. */ - if (dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, parent_tree)) + if (dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, parent_tree, NULL)) return; if (ehdr->type <= IEEE_802_3_MAX_LEN) { @@ -589,7 +589,7 @@ add_ethernet_trailer(packet_info *pinfo, proto_tree *tree, proto_tree *fh_tree, we actually have a trailer. */ if (tvb_reported_length(real_trailer_tvb) != 0) { if (dissector_try_heuristic(eth_trailer_subdissector_list, - real_trailer_tvb, pinfo, tree) ) { + real_trailer_tvb, pinfo, tree, NULL) ) { /* If we're not sure that there is a FCS, all trailer data has been given to the ethernet-trailer dissector, so stop dissecting here */ diff --git a/epan/dissectors/packet-http.c b/epan/dissectors/packet-http.c index d2dfdd83dc..b5edfa960e 100644 --- a/epan/dissectors/packet-http.c +++ b/epan/dissectors/packet-http.c @@ -1305,7 +1305,7 @@ dissect_http_message(tvbuff_t *tvb, int offset, packet_info *pinfo, * dissect the payload - try the heuristic subdissectors. */ dissected = dissector_try_heuristic(heur_subdissector_list, - next_tvb, pinfo, tree); + next_tvb, pinfo, tree, NULL); } if (dissected) { diff --git a/epan/dissectors/packet-ieee802154.c b/epan/dissectors/packet-ieee802154.c index 7f799d38e4..827f04117f 100644 --- a/epan/dissectors/packet-ieee802154.c +++ b/epan/dissectors/packet-ieee802154.c @@ -1090,7 +1090,7 @@ dissect_ieee802154_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g /* Beacon and Data packets contain a payload. */ if ((fcs_ok || !ieee802154_fcs_ok) && (tvb_reported_length(payload_tvb)>0)) { /* Attempt heuristic subdissection. */ - if (!dissector_try_heuristic(ieee802154_heur_subdissector_list, payload_tvb, pinfo, tree)) { + if (!dissector_try_heuristic(ieee802154_heur_subdissector_list, payload_tvb, pinfo, tree, NULL)) { /* Could not subdissect, call the data dissector instead. */ call_dissector(data_handle, payload_tvb, pinfo, tree); } diff --git a/epan/dissectors/packet-infiniband.c b/epan/dissectors/packet-infiniband.c index 956a1aafe3..61a8c7f77f 100644 --- a/epan/dissectors/packet-infiniband.c +++ b/epan/dissectors/packet-infiniband.c @@ -2598,7 +2598,7 @@ static void parse_PAYLOAD(proto_tree *parentTree, packet_info *pinfo, tvbuff_t * /* Try any heuristic dissectors that requested a chance to try and dissect IB payloads */ if (!dissector_found) { - dissector_found = dissector_try_heuristic(heur_dissectors_payload, next_tvb, pinfo, parentTree); + dissector_found = dissector_try_heuristic(heur_dissectors_payload, next_tvb, pinfo, parentTree, NULL); } if (!dissector_found) { @@ -3114,7 +3114,7 @@ static void parse_COM_MGT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t * /* give a chance for subdissectors to analyze the private data */ next_tvb = tvb_new_subset(tvb, local_offset, 92, -1); - if (! dissector_try_heuristic(heur_dissectors_cm_private, next_tvb, pinfo, parentTree) ) + if (! dissector_try_heuristic(heur_dissectors_cm_private, next_tvb, pinfo, parentTree, NULL) ) /* if none reported success, add this as raw "data" */ proto_tree_add_item(CM_header_tree, hf_cm_req_private_data, tvb, local_offset, 92, ENC_NA); @@ -3203,7 +3203,7 @@ static void parse_COM_MGT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t * /* give a chance for subdissectors to get the private data */ next_tvb = tvb_new_subset(tvb, local_offset, 196, -1); - if (! dissector_try_heuristic(heur_dissectors_cm_private, next_tvb, pinfo, parentTree) ) + if (! dissector_try_heuristic(heur_dissectors_cm_private, next_tvb, pinfo, parentTree, NULL) ) /* if none reported success, add this as raw "data" */ proto_tree_add_item(CM_header_tree, hf_cm_rep_privatedata, tvb, local_offset, 196, ENC_NA); diff --git a/epan/dissectors/packet-media.c b/epan/dissectors/packet-media.c index fe200fb4de..b84bda8161 100644 --- a/epan/dissectors/packet-media.c +++ b/epan/dissectors/packet-media.c @@ -49,7 +49,7 @@ dissect_media(tvbuff_t *tvb, packet_info *pinfo , proto_tree *tree) proto_item *ti; proto_tree *media_tree = 0; - if (dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, tree)) { + if (dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, tree, NULL)) { return; } diff --git a/epan/dissectors/packet-mime-encap.c b/epan/dissectors/packet-mime-encap.c index 29c56cac41..49fcff0400 100644 --- a/epan/dissectors/packet-mime-encap.c +++ b/epan/dissectors/packet-mime-encap.c @@ -73,7 +73,7 @@ dissect_mime_encap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) comp_tvb = tvb_new_child_real_data(tvb, whole_file->str, (guint) whole_file->len, (gint) whole_file->len); add_new_data_source(pinfo, comp_tvb, "Whole file"); - if (!dissector_try_heuristic(heur_subdissector_list, comp_tvb, pinfo, tree)) { + if (!dissector_try_heuristic(heur_subdissector_list, comp_tvb, pinfo, tree, NULL)) { proto_item_append_text(item, " (Unhandled)"); call_dissector(data_handle, comp_tvb, pinfo, tree); } diff --git a/epan/dissectors/packet-mpeg-pes.c b/epan/dissectors/packet-mpeg-pes.c index d5a3fd9c30..a82c723a20 100644 --- a/epan/dissectors/packet-mpeg-pes.c +++ b/epan/dissectors/packet-mpeg-pes.c @@ -995,7 +995,7 @@ static heur_dissector_list_t heur_subdissector_list; static void dissect_mpeg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - if (!dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, tree)) { + if (!dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, tree, NULL)) { col_set_str(pinfo->cinfo, COL_PROTOCOL, "MPEG"); col_clear(pinfo->cinfo, COL_INFO); if (tree) diff --git a/epan/dissectors/packet-mq.c b/epan/dissectors/packet-mq.c index 10fc69c991..b9141021fb 100644 --- a/epan/dissectors/packet-mq.c +++ b/epan/dissectors/packet-mq.c @@ -2273,7 +2273,7 @@ dissect_mq_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) pd_save = pinfo->private_data; pinfo->private_data = &mqinfo; next_tvb = tvb_new_subset_remaining(tvb, offset); - if (!dissector_try_heuristic(mq_heur_subdissector_list, next_tvb, pinfo, tree)) + if (!dissector_try_heuristic(mq_heur_subdissector_list, next_tvb, pinfo, tree, NULL)) call_dissector(data_handle, next_tvb, pinfo, tree); pinfo->private_data = pd_save; } diff --git a/epan/dissectors/packet-netbios.c b/epan/dissectors/packet-netbios.c index 0a07be827b..bc1e4097d2 100644 --- a/epan/dissectors/packet-netbios.c +++ b/epan/dissectors/packet-netbios.c @@ -1080,7 +1080,7 @@ dissect_netbios_payload(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) * accept the packet, dissect it as data. */ if (!dissector_try_heuristic(netbios_heur_subdissector_list, - tvb, pinfo, tree)) + tvb, pinfo, tree, NULL)) call_dissector(data_handle,tvb, pinfo, tree); } diff --git a/epan/dissectors/packet-ositp.c b/epan/dissectors/packet-ositp.c index ed34e21838..d5461098f9 100644 --- a/epan/dissectors/packet-ositp.c +++ b/epan/dissectors/packet-ositp.c @@ -972,7 +972,7 @@ static int ositp_decode_DT(tvbuff_t *tvb, int offset, guint8 li, guint8 tpdu, if (uses_inactive_subset) { if (dissector_try_heuristic(cotp_is_heur_subdissector_list, next_tvb, - pinfo, tree)) { + pinfo, tree, NULL)) { *subdissector_found = TRUE; } else { /* Fill in other Dissectors using inactive subset here */ @@ -988,7 +988,7 @@ static int ositp_decode_DT(tvbuff_t *tvb, int offset, guint8 li, guint8 tpdu, if ( (!cotp_reassemble) || ((cotp_reassemble) && (!fragment))) { if (dissector_try_heuristic(cotp_heur_subdissector_list, next_tvb, - pinfo, tree)) { + pinfo, tree, NULL)) { *subdissector_found = TRUE; } else { call_dissector(data_handle,next_tvb, pinfo, tree); @@ -1243,7 +1243,7 @@ static int ositp_decode_CC(tvbuff_t *tvb, int offset, guint8 li, guint8 tpdu, next_tvb = tvb_new_subset_remaining(tvb, offset); if (!uses_inactive_subset){ if (dissector_try_heuristic(cotp_heur_subdissector_list, next_tvb, - pinfo, tree)) { + pinfo, tree, NULL)) { *subdissector_found = TRUE; } else { call_dissector(data_handle,next_tvb, pinfo, tree); @@ -1592,7 +1592,7 @@ static int ositp_decode_UD(tvbuff_t *tvb, int offset, guint8 li, guint8 tpdu, next_tvb = tvb_new_subset_remaining(tvb, offset); if (dissector_try_heuristic(cltp_heur_subdissector_list, next_tvb, - pinfo, tree)) { + pinfo, tree, NULL)) { *subdissector_found = TRUE; } else { call_dissector(data_handle,next_tvb, pinfo, tree); diff --git a/epan/dissectors/packet-pgm.c b/epan/dissectors/packet-pgm.c index ddd3128ad9..9afefdb81b 100644 --- a/epan/dissectors/packet-pgm.c +++ b/epan/dissectors/packet-pgm.c @@ -795,7 +795,7 @@ decode_pgm_ports(tvbuff_t *tvb, int offset, packet_info *pinfo, return; /* do lookup with the heuristic subdissector table */ - if (dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, tree)) + if (dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, tree, NULL)) return; /* Oh, well, we don't know this; dissect it as data. */ diff --git a/epan/dissectors/packet-q931.c b/epan/dissectors/packet-q931.c index 5a19b7be90..6dd385bc84 100644 --- a/epan/dissectors/packet-q931.c +++ b/epan/dissectors/packet-q931.c @@ -2504,7 +2504,7 @@ dissect_q931_user_user_ie(tvbuff_t *tvb, packet_info *pinfo, int offset, int len case Q931_PROTOCOL_DISCRIMINATOR_USER: next_tvb = tvb_new_subset(tvb, offset, len, len); proto_tree_add_text(tree, tvb, offset, len, "User information: %d octets", len); - if (!dissector_try_heuristic(q931_user_heur_subdissector_list, next_tvb, pinfo, tree)) { + if (!dissector_try_heuristic(q931_user_heur_subdissector_list, next_tvb, pinfo, tree, NULL)) { call_dissector_only(data_handle, next_tvb, pinfo, tree); } break; diff --git a/epan/dissectors/packet-sccp.c b/epan/dissectors/packet-sccp.c index 8a79cdfa40..961963c30b 100644 --- a/epan/dissectors/packet-sccp.c +++ b/epan/dissectors/packet-sccp.c @@ -2335,7 +2335,7 @@ dissect_sccp_data_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } /* try heuristic subdissector list to see if there are any takers */ - if (dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, tree)) { + if (dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, tree, NULL)) { return; } diff --git a/epan/dissectors/packet-sctp.c b/epan/dissectors/packet-sctp.c index 36e4ff4b10..008db7e7f1 100644 --- a/epan/dissectors/packet-sctp.c +++ b/epan/dissectors/packet-sctp.c @@ -2018,7 +2018,7 @@ dissect_payload(tvbuff_t *payload_tvb, packet_info *pinfo, proto_tree *tree, gui if (enable_ulp_dissection) { if (try_heuristic_first) { /* do lookup with the heuristic subdissector table */ - if (dissector_try_heuristic(sctp_heur_subdissector_list, payload_tvb, pinfo, tree)) + if (dissector_try_heuristic(sctp_heur_subdissector_list, payload_tvb, pinfo, tree, NULL)) return TRUE; } @@ -2057,7 +2057,7 @@ dissect_payload(tvbuff_t *payload_tvb, packet_info *pinfo, proto_tree *tree, gui if (!try_heuristic_first) { /* do lookup with the heuristic subdissector table */ - if (dissector_try_heuristic(sctp_heur_subdissector_list, payload_tvb, pinfo, tree)) + if (dissector_try_heuristic(sctp_heur_subdissector_list, payload_tvb, pinfo, tree, NULL)) return TRUE; } } diff --git a/epan/dissectors/packet-sercosiii.c b/epan/dissectors/packet-sercosiii.c index 222397a08e..828bf675e4 100644 --- a/epan/dissectors/packet-sercosiii.c +++ b/epan/dissectors/packet-sercosiii.c @@ -1191,7 +1191,7 @@ dissect_siii(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) * give that protocol a chance to make a heuristic dissection, before we continue * to dissect it as a normal SercosIII packet. */ - if (dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, tree)) + if (dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, tree, NULL)) return; /* check what we got on our hand */ diff --git a/epan/dissectors/packet-sip.c b/epan/dissectors/packet-sip.c index c9a28713d9..c8d1e6aed5 100644 --- a/epan/dissectors/packet-sip.c +++ b/epan/dissectors/packet-sip.c @@ -3099,7 +3099,7 @@ dissect_sip_common(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr if ( found_match != TRUE ) { if (!(dissector_try_heuristic(heur_subdissector_list, - next_tvb, pinfo, message_body_tree))) { + next_tvb, pinfo, message_body_tree, NULL))) { int tmp_offset = 0; while (tvb_offset_exists(next_tvb, tmp_offset)) { tvb_find_line_end(next_tvb, tmp_offset, -1, &next_offset, FALSE); diff --git a/epan/dissectors/packet-smb-pipe.c b/epan/dissectors/packet-smb-pipe.c index a1d555d739..cb62c91b50 100644 --- a/epan/dissectors/packet-smb-pipe.c +++ b/epan/dissectors/packet-smb-pipe.c @@ -3308,7 +3308,7 @@ dissect_pipe_dcerpc(tvbuff_t *d_tvb, packet_info *pinfo, proto_tree *parent_tree and bail out */ if(!pinfo->can_desegment){ - result = dissector_try_heuristic(smb_transact_heur_subdissector_list, d_tvb, pinfo, parent_tree); + result = dissector_try_heuristic(smb_transact_heur_subdissector_list, d_tvb, pinfo, parent_tree, NULL); goto clean_up_and_exit; } @@ -3361,7 +3361,7 @@ dissect_pipe_dcerpc(tvbuff_t *d_tvb, packet_info *pinfo, proto_tree *parent_tree * Try the heuristic dissectors and see if we * find someone that recognizes this payload. */ - result = dissector_try_heuristic(smb_transact_heur_subdissector_list, d_tvb, pinfo, parent_tree); + result = dissector_try_heuristic(smb_transact_heur_subdissector_list, d_tvb, pinfo, parent_tree, NULL); /* no this didnt look like something we know */ if(!result){ @@ -3414,7 +3414,7 @@ dissect_pipe_dcerpc(tvbuff_t *d_tvb, packet_info *pinfo, proto_tree *parent_tree tree, pinfo, d_tvb, &frag_tree_item); /* dissect the full PDU */ - result = dissector_try_heuristic(smb_transact_heur_subdissector_list, d_tvb, pinfo, parent_tree); + result = dissector_try_heuristic(smb_transact_heur_subdissector_list, d_tvb, pinfo, parent_tree, NULL); } goto clean_up_and_exit; } @@ -3434,12 +3434,12 @@ dissect_pipe_dcerpc(tvbuff_t *d_tvb, packet_info *pinfo, proto_tree *parent_tree /* we didnt find it, try any of the heuristic dissectors and bail out */ - result = dissector_try_heuristic(smb_transact_heur_subdissector_list, d_tvb, pinfo, parent_tree); + result = dissector_try_heuristic(smb_transact_heur_subdissector_list, d_tvb, pinfo, parent_tree, NULL); goto clean_up_and_exit; } if(!(fd_head->flags&FD_DEFRAGMENTED)){ /* we dont have a fully reassembled frame */ - result = dissector_try_heuristic(smb_transact_heur_subdissector_list, d_tvb, pinfo, parent_tree); + result = dissector_try_heuristic(smb_transact_heur_subdissector_list, d_tvb, pinfo, parent_tree, NULL); goto clean_up_and_exit; } @@ -3464,7 +3464,7 @@ dissect_pipe_dcerpc(tvbuff_t *d_tvb, packet_info *pinfo, proto_tree *parent_tree tree, pinfo, d_tvb, &frag_tree_item); /* dissect the full PDU */ - result = dissector_try_heuristic(smb_transact_heur_subdissector_list, d_tvb, pinfo, parent_tree); + result = dissector_try_heuristic(smb_transact_heur_subdissector_list, d_tvb, pinfo, parent_tree, NULL); diff --git a/epan/dissectors/packet-smb2.c b/epan/dissectors/packet-smb2.c index 41b9224623..858277f254 100644 --- a/epan/dissectors/packet-smb2.c +++ b/epan/dissectors/packet-smb2.c @@ -3829,7 +3829,7 @@ dissect_file_data_dcerpc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_ dcerpc_tvb = tvb_new_subset(tvb, offset, MIN((int)datalen, tvb_length_remaining(tvb, offset)), datalen); /* dissect the full PDU */ - dissector_try_heuristic(smb2_heur_subdissector_list, dcerpc_tvb, pinfo, top_tree); + dissector_try_heuristic(smb2_heur_subdissector_list, dcerpc_tvb, pinfo, top_tree, NULL); offset += datalen; diff --git a/epan/dissectors/packet-ssl.c b/epan/dissectors/packet-ssl.c index 144f09ec3f..412d32e725 100644 --- a/epan/dissectors/packet-ssl.c +++ b/epan/dissectors/packet-ssl.c @@ -1312,7 +1312,7 @@ process_ssl_payload(tvbuff_t *tvb, volatile int offset, packet_info *pinfo, ssl_debug_printf("dissect_ssl3_record found association %p\n", (void *)association); if (dissector_try_heuristic(ssl_heur_subdissector_list, next_tvb, - pinfo, proto_tree_get_root(tree))) { + pinfo, proto_tree_get_root(tree), NULL)) { } else { call_dissector(association->handle, next_tvb, pinfo, proto_tree_get_root(tree)); } diff --git a/epan/dissectors/packet-stun.c b/epan/dissectors/packet-stun.c index f8e7b8becc..815d814e28 100644 --- a/epan/dissectors/packet-stun.c +++ b/epan/dissectors/packet-stun.c @@ -369,7 +369,7 @@ dissect_stun_message_channel_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree next_tvb = tvb_new_subset_remaining(tvb, CHANNEL_DATA_HDR_LEN); - if (!dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, tree)) { + if (!dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, tree, NULL)) { call_dissector_only(data_handle, next_tvb, pinfo, tree); } @@ -930,7 +930,7 @@ case EVEN_PORT: next_tvb = tvb_new_subset(tvb, offset, att_length, att_length); - if (!dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, att_tree)) { + if (!dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, att_tree, NULL)) { call_dissector_only(data_handle, next_tvb, pinfo, att_tree); } diff --git a/epan/dissectors/packet-sua.c b/epan/dissectors/packet-sua.c index 2dc539274f..d579c9dd91 100644 --- a/epan/dissectors/packet-sua.c +++ b/epan/dissectors/packet-sua.c @@ -2224,7 +2224,7 @@ dissect_sua_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *sua_t !dissector_try_uint(sccp_ssn_dissector_table, source_ssn, data_tvb, pinfo, tree))) { /* try heuristic subdissector list to see if there are any takers */ - if (dissector_try_heuristic(heur_subdissector_list, data_tvb, pinfo, tree)) { + if (dissector_try_heuristic(heur_subdissector_list, data_tvb, pinfo, tree, NULL)) { return; } /* No sub-dissection occured, treat it as raw data */ diff --git a/epan/dissectors/packet-t125.c b/epan/dissectors/packet-t125.c index d2be29a737..916c777101 100644 --- a/epan/dissectors/packet-t125.c +++ b/epan/dissectors/packet-t125.c @@ -188,7 +188,7 @@ dissect_t125_T_userData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset if(next_tvb) dissector_try_heuristic(t125_heur_subdissector_list, next_tvb, - actx->pinfo, top_tree); + actx->pinfo, top_tree, NULL); return offset; @@ -265,7 +265,7 @@ dissect_t125_T_userData_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off if(next_tvb) dissector_try_heuristic(t125_heur_subdissector_list, next_tvb, - actx->pinfo, top_tree); + actx->pinfo, top_tree, NULL); return offset; diff --git a/epan/dissectors/packet-tcp.c b/epan/dissectors/packet-tcp.c index af43f6e4e1..ba62b94f19 100644 --- a/epan/dissectors/packet-tcp.c +++ b/epan/dissectors/packet-tcp.c @@ -3844,7 +3844,7 @@ decode_tcp_ports(tvbuff_t *tvb, int offset, packet_info *pinfo, /* do lookup with the heuristic subdissector table */ save_desegment_offset = pinfo->desegment_offset; save_desegment_len = pinfo->desegment_len; - if (dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, tree)){ + if (dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, tree, NULL)){ pinfo->want_pdu_tracking -= !!(pinfo->want_pdu_tracking); return TRUE; } @@ -3911,7 +3911,7 @@ decode_tcp_ports(tvbuff_t *tvb, int offset, packet_info *pinfo, /* do lookup with the heuristic subdissector table */ save_desegment_offset = pinfo->desegment_offset; save_desegment_len = pinfo->desegment_len; - if (dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, tree)){ + if (dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, tree, NULL)){ pinfo->want_pdu_tracking -= !!(pinfo->want_pdu_tracking); return TRUE; } diff --git a/epan/dissectors/packet-tipc.c b/epan/dissectors/packet-tipc.c index d8f6a95fe2..270aa538dd 100644 --- a/epan/dissectors/packet-tipc.c +++ b/epan/dissectors/packet-tipc.c @@ -1558,7 +1558,7 @@ call_tipc_v2_data_subdissectors(tvbuff_t *data_tvb, packet_info *pinfo, guint32 /* check for heuristic dissectors if specified in the * preferences to try them first */ if (try_heuristic_first) { - if (dissector_try_heuristic(tipc_heur_subdissector_list, data_tvb, pinfo, top_tree)) + if (dissector_try_heuristic(tipc_heur_subdissector_list, data_tvb, pinfo, top_tree, NULL)) return; } /* This triggers if a dissectors if @@ -1602,7 +1602,7 @@ call_tipc_v2_data_subdissectors(tvbuff_t *data_tvb, packet_info *pinfo, guint32 /* check for heuristic dissectors if specified in the * preferences not to try them first */ if (!try_heuristic_first) { - if (dissector_try_heuristic(tipc_heur_subdissector_list, data_tvb, pinfo, top_tree)) + if (dissector_try_heuristic(tipc_heur_subdissector_list, data_tvb, pinfo, top_tree, NULL)) return; } } diff --git a/epan/dissectors/packet-turnchannel.c b/epan/dissectors/packet-turnchannel.c index 24f462d8af..18bd6c1161 100644 --- a/epan/dissectors/packet-turnchannel.c +++ b/epan/dissectors/packet-turnchannel.c @@ -114,7 +114,7 @@ dissect_turnchannel_message(tvbuff_t *tvb, packet_info *pinfo, if (!dissector_try_heuristic(heur_subdissector_list, - next_tvb, pinfo, tree)) { + next_tvb, pinfo, tree, NULL)) { call_dissector(data_handle,next_tvb, pinfo, tree); } } diff --git a/epan/dissectors/packet-udp.c b/epan/dissectors/packet-udp.c index 7eacdc2f1b..f460d6ec54 100644 --- a/epan/dissectors/packet-udp.c +++ b/epan/dissectors/packet-udp.c @@ -242,7 +242,7 @@ decode_udp_ports(tvbuff_t *tvb, int offset, packet_info *pinfo, if (try_heuristic_first) { /* do lookup with the heuristic subdissector table */ - if (dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, tree)) + if (dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, tree, NULL)) return; } @@ -278,7 +278,7 @@ decode_udp_ports(tvbuff_t *tvb, int offset, packet_info *pinfo, if (!try_heuristic_first) { /* do lookup with the heuristic subdissector table */ - if (dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, tree)) + if (dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, tree, NULL)) return; } diff --git a/epan/dissectors/packet-usb.c b/epan/dissectors/packet-usb.c index 63370c5d4e..059a8b678f 100644 --- a/epan/dissectors/packet-usb.c +++ b/epan/dissectors/packet-usb.c @@ -2114,7 +2114,7 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent, pinfo->usb_conv_info = usb_conv_info; next_tvb = tvb_new_subset_remaining(tvb, offset); - if (try_heuristics && dissector_try_heuristic(heur_bulk_subdissector_list, next_tvb, pinfo, parent)) { + if (try_heuristics && dissector_try_heuristic(heur_bulk_subdissector_list, next_tvb, pinfo, parent, NULL)) { return; } else if(dissector_try_uint(usb_bulk_dissector_table, usb_conv_info->interfaceClass, next_tvb, pinfo, parent)){ @@ -2145,7 +2145,7 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent, pinfo->usb_conv_info = usb_conv_info; next_tvb = tvb_new_subset_remaining(tvb, offset); - if (try_heuristics && dissector_try_heuristic(heur_interrupt_subdissector_list, next_tvb, pinfo, parent)) { + if (try_heuristics && dissector_try_heuristic(heur_interrupt_subdissector_list, next_tvb, pinfo, parent, NULL)) { return; } else if(dissector_try_uint(usb_interrupt_dissector_table, usb_conv_info->interfaceClass, next_tvb, pinfo, parent)){ @@ -2253,7 +2253,7 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent, /* Try to find a class specific dissector */ next_tvb = tvb_new_subset_remaining(tvb, offset); - if (try_heuristics && dissector_try_heuristic(heur_control_subdissector_list, next_tvb, pinfo, setup_tree)) { + if (try_heuristics && dissector_try_heuristic(heur_control_subdissector_list, next_tvb, pinfo, setup_tree, NULL)) { return; } if(dissector_try_uint(usb_control_dissector_table, usb_conv_info->interfaceClass, next_tvb, pinfo, setup_tree)){ @@ -2296,7 +2296,7 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent, tvbuff_t *next_tvb; next_tvb = tvb_new_subset_remaining(tvb, offset); - if (try_heuristics && dissector_try_heuristic(heur_control_subdissector_list, next_tvb, pinfo, parent)) { + if (try_heuristics && dissector_try_heuristic(heur_control_subdissector_list, next_tvb, pinfo, parent, NULL)) { return; } if(dissector_try_uint(usb_control_dissector_table, usb_conv_info->interfaceClass, next_tvb, pinfo, parent)){ @@ -2352,7 +2352,7 @@ dissect_linux_usb_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent, if(usb_trans_info){ /* Try to find a class specific dissector */ next_tvb = tvb_new_subset_remaining(tvb, offset); - if (try_heuristics && dissector_try_heuristic(heur_control_subdissector_list, next_tvb, pinfo, parent)) { + if (try_heuristics && dissector_try_heuristic(heur_control_subdissector_list, next_tvb, pinfo, parent, NULL)) { return; } if(dissector_try_uint(usb_control_dissector_table, usb_conv_info->interfaceClass, next_tvb, pinfo, parent)){ diff --git a/epan/dissectors/packet-vines.c b/epan/dissectors/packet-vines.c index 4548f23757..32de47dd96 100644 --- a/epan/dissectors/packet-vines.c +++ b/epan/dissectors/packet-vines.c @@ -790,7 +790,7 @@ dissect_vines_ipc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) next_tvb = tvb_new_subset_remaining(tvb, offset); if (viph.vipc_pkttype != PKTTYPE_DATA || !dissector_try_heuristic(vines_ipc_heur_subdissector_list, - next_tvb, pinfo, tree)) + next_tvb, pinfo, tree, NULL)) call_dissector(data_handle, next_tvb, pinfo, tree); } @@ -917,7 +917,7 @@ dissect_vines_spp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) next_tvb = tvb_new_subset_remaining(tvb, offset); if (viph.vspp_pkttype != PKTTYPE_DATA || !dissector_try_heuristic(vines_spp_heur_subdissector_list, - next_tvb, pinfo, tree)) + next_tvb, pinfo, tree, NULL)) call_dissector(data_handle, next_tvb, pinfo, tree); } diff --git a/epan/dissectors/packet-wsp.c b/epan/dissectors/packet-wsp.c index 919a8b4b42..cef1082a0c 100644 --- a/epan/dissectors/packet-wsp.c +++ b/epan/dissectors/packet-wsp.c @@ -5176,7 +5176,7 @@ dissect_wsp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, } if (! found_match) { if (! dissector_try_heuristic(heur_subdissector_list, - tmp_tvb, pinfo, tree)) { + tmp_tvb, pinfo, tree, NULL)) { guint8* save_private_data = pinfo->private_data; pinfo->match_string = contentTypeStr; @@ -5271,7 +5271,7 @@ dissect_wsp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, } if (! found_match) { if (! dissector_try_heuristic(heur_subdissector_list, - tmp_tvb, pinfo, tree)) { + tmp_tvb, pinfo, tree, NULL)) { guint8* save_private_data = pinfo->private_data; pinfo->match_string = contentTypeStr; @@ -5355,7 +5355,7 @@ dissect_wsp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, } if (! found_match) { if (! dissector_try_heuristic(heur_subdissector_list, - tmp_tvb, pinfo, tree)) { + tmp_tvb, pinfo, tree, NULL)) { guint8* save_private_data = pinfo->private_data; pinfo->match_string = contentTypeStr; @@ -5956,7 +5956,7 @@ add_multipart_data (proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo) } if (! found_match) { if (! dissector_try_heuristic(heur_subdissector_list, - tmp_tvb, pinfo, mpart_tree)) { + tmp_tvb, pinfo, mpart_tree, NULL)) { guint8* save_private_data = pinfo->private_data; pinfo->match_string = contentTypeStr; diff --git a/epan/dissectors/packet-x25.c b/epan/dissectors/packet-x25.c index 97d69c0a17..0fdf93fd02 100644 --- a/epan/dissectors/packet-x25.c +++ b/epan/dissectors/packet-x25.c @@ -2537,7 +2537,7 @@ dissect_x25_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, /* Try the heuristic dissectors. */ if (dissector_try_heuristic(x25_heur_subdissector_list, next_tvb, pinfo, - tree)) { + tree, NULL)) { pinfo->private_data = saved_private_data; return; } diff --git a/epan/packet.c b/epan/packet.c index 13fd473f5b..e0c405c698 100644 --- a/epan/packet.c +++ b/epan/packet.c @@ -1705,8 +1705,8 @@ heur_dissector_set_enabled(const char *name, heur_dissector_t dissector, const i } gboolean -dissector_try_heuristic(heur_dissector_list_t sub_dissectors, - tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) +dissector_try_heuristic(heur_dissector_list_t sub_dissectors, tvbuff_t *tvb, + packet_info *pinfo, proto_tree *tree, void *data) { gboolean status; const char *saved_proto; @@ -1764,7 +1764,7 @@ dissector_try_heuristic(heur_dissector_list_t sub_dissectors, } EP_CHECK_CANARY(("before calling heuristic dissector for protocol: %s", proto_get_protocol_filter_name(proto_get_id(hdtbl_entry->protocol)))); - if ((*hdtbl_entry->dissector)(tvb, pinfo, tree, NULL)) { + if ((*hdtbl_entry->dissector)(tvb, pinfo, tree, data)) { EP_CHECK_CANARY(("after heuristic dissector for protocol: %s has accepted and dissected packet", proto_get_protocol_filter_name(proto_get_id(hdtbl_entry->protocol)))); status = TRUE; diff --git a/epan/packet.h b/epan/packet.h index eb4ff1feec..5fec48744f 100644 --- a/epan/packet.h +++ b/epan/packet.h @@ -296,10 +296,11 @@ extern void dissector_all_heur_tables_foreach_table (DATFunc_heur_table func, * @param tvb the tv_buff with the (remaining) packet data * @param pinfo the packet info of this packet (additional info) * @param tree the protocol tree to be build or NULL + * @param data parameter to pass to subdissector * @return TRUE if the packet was recognized by the sub-dissector (stop dissection here) */ extern gboolean dissector_try_heuristic(heur_dissector_list_t sub_dissectors, - tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); + tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data); /** Add a sub-dissector to a heuristic dissector list. * Call this in the proto_handoff function of the sub-dissector. diff --git a/plugins/ethercat/packet-ethercat-datagram.c b/plugins/ethercat/packet-ethercat-datagram.c index 8f1173772c..f853f2156a 100644 --- a/plugins/ethercat/packet-ethercat-datagram.c +++ b/plugins/ethercat/packet-ethercat-datagram.c @@ -733,7 +733,7 @@ static void dissect_ecat_datagram(tvbuff_t *tvb, packet_info *pinfo, proto_tree init_dc_measure(pDC, tvb, suboffset); /* Allow sub dissectors to have a chance with this data */ - if(!dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, ecat_datagram_tree)) + if(!dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, ecat_datagram_tree, NULL)) { /* No sub dissector did recognize this data, dissect it as data only */ aitem = proto_tree_add_item(ecat_datagram_tree, hf_ecat_data, tvb, suboffset, ecHdr.len & 0x07ff, ENC_NA); @@ -816,7 +816,7 @@ static void dissect_ecat_datagram(tvbuff_t *tvb, packet_info *pinfo, proto_tree if ( dataLength > 0 ) { /* Allow sub dissectors to have a chance with this data */ - if(!dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, ecat_datagram_tree)) + if(!dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, ecat_datagram_tree, NULL)) { /* No sub dissector did recognize this data, dissect it as data only */ proto_tree_add_item(ecat_datagram_tree, hf_ecat_data, tvb, startOfData, dataLength, ENC_NA); @@ -834,7 +834,7 @@ static void dissect_ecat_datagram(tvbuff_t *tvb, packet_info *pinfo, proto_tree if( tree ) { /* Allow sub dissectors to have a chance with this data */ - if(!dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, ecat_datagram_tree)) + if(!dissector_try_heuristic(heur_subdissector_list, tvb, pinfo, ecat_datagram_tree, NULL)) { /* No sub dissector did recognize this data, dissect it as data only */ proto_tree_add_item(ecat_datagram_tree, hf_ecat_data, tvb, suboffset, ecHdr.len & 0x07ff, ENC_NA); diff --git a/plugins/profinet/packet-dcerpc-pn-io.c b/plugins/profinet/packet-dcerpc-pn-io.c index c2e4d4540e..44375d6aef 100644 --- a/plugins/profinet/packet-dcerpc-pn-io.c +++ b/plugins/profinet/packet-dcerpc-pn-io.c @@ -8867,7 +8867,7 @@ dissect_PNIO_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, * give that protocol a chance to make a heuristic dissection, before we continue * to dissect it as a normal PNIO packet. */ - if (dissector_try_heuristic(heur_pn_subdissector_list, tvb, pinfo, tree)) + if (dissector_try_heuristic(heur_pn_subdissector_list, tvb, pinfo, tree, NULL)) return FALSE; /* the sub tvb will NOT contain the frame_id here! */ diff --git a/plugins/profinet/packet-pn-rt.c b/plugins/profinet/packet-pn-rt.c index 5aba1183ef..493652f585 100644 --- a/plugins/profinet/packet-pn-rt.c +++ b/plugins/profinet/packet-pn-rt.c @@ -665,7 +665,7 @@ dissect_pn_rt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) next_tvb = tvb_new_subset(tvb, 2, data_len, data_len); /* ask heuristics, if some sub-dissector is interested in this packet payload */ - if(!dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, tree)) { + if(!dissector_try_heuristic(heur_subdissector_list, next_tvb, pinfo, tree, NULL)) { /*col_set_str(pinfo->cinfo, COL_INFO, "Unknown");*/ /* Oh, well, we don't know this; dissect it as data. */ |