forked from osmocom/wireshark
Create protocols to the end of the TVB if length unknown upfront
Creating protocols with unknown length must be created to the end of the TVB
first and reined back using proto_set_len() once the length becomes known.
Not doing so can make indentification of problems harder and prevents analysis
engines like MATE from properly processing the generated protocol trees.
With this change the remaining offending dissectors are corrected for this.
Closes #16961
(cherry picked from commit 918db88055
)
This commit is contained in:
parent
d28275c397
commit
a4213f2c4f
|
@ -53,7 +53,7 @@ dissect_aruba_adp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* dat
|
|||
|
||||
|
||||
if (tree) {
|
||||
ti = proto_tree_add_item(tree, proto_aruba_adp, tvb, 0, 0, ENC_NA);
|
||||
ti = proto_tree_add_item(tree, proto_aruba_adp, tvb, 0, -1, ENC_NA);
|
||||
aruba_adp_tree = proto_item_add_subtree(ti, ett_aruba_adp);
|
||||
}
|
||||
|
||||
|
|
|
@ -272,7 +272,7 @@ dissect_sm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
|
|||
col_add_fstr(pinfo->cinfo, COL_INFO, "Cisco SM Packet (%s)",
|
||||
val_to_str_const(sm_message_type, sm_message_type_value_info,"reserved"));
|
||||
|
||||
ti = proto_tree_add_item(tree, proto_sm, tvb, offset, 0, ENC_NA);
|
||||
ti = proto_tree_add_item(tree, proto_sm, tvb, offset, -1, ENC_NA);
|
||||
sm_tree = proto_item_add_subtree(ti, ett_sm);
|
||||
|
||||
proto_tree_add_uint_format_value(sm_tree, hf_sm_sm_msg_type, tvb, offset, 4, sm_message_type,
|
||||
|
|
|
@ -2940,7 +2940,7 @@ dissect_f5ethtrailer(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
|
|||
tdata->tmm = F5ETH_TAP_TMM_MAX;
|
||||
|
||||
if (tree) {
|
||||
trailer_item = proto_tree_add_item(tree, proto_f5ethtrailer, tvb, offset, 0, ENC_NA);
|
||||
trailer_item = proto_tree_add_item(tree, proto_f5ethtrailer, tvb, offset, -1, ENC_NA);
|
||||
tree = proto_item_add_subtree(trailer_item, ett_f5ethtrailer);
|
||||
if (has_fcs) {
|
||||
proto_tree_add_item(tree, hf_orig_fcs, tvb, offset - 4, 4, ENC_NA);
|
||||
|
|
|
@ -488,7 +488,7 @@ static int dissect_mgcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
|
|||
num_messages++;
|
||||
|
||||
/* Create our mgcp subtree */
|
||||
ti = proto_tree_add_item(tree, proto_mgcp, tvb, 0, 0, ENC_NA);
|
||||
ti = proto_tree_add_item(tree, proto_mgcp, tvb, 0, -1, ENC_NA);
|
||||
mgcp_tree = proto_item_add_subtree(ti, ett_mgcp);
|
||||
|
||||
sectionlen = tvb_find_dot_line(tvb, tvb_sectionbegin, -1, &tvb_sectionend);
|
||||
|
|
|
@ -737,7 +737,7 @@ dissect_mtp3(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_
|
|||
|
||||
pref_mtp3_standard = mtp3_standard;
|
||||
|
||||
mtp3_item = proto_tree_add_item(tree, proto_mtp3, tvb, 0, 0, ENC_NA);
|
||||
mtp3_item = proto_tree_add_item(tree, proto_mtp3, tvb, 0, -1, ENC_NA);
|
||||
|
||||
si = tvb_get_guint8(tvb, SIO_OFFSET) & SERVICE_INDICATOR_MASK;
|
||||
if (mtp3_heuristic_standard) {
|
||||
|
|
|
@ -278,7 +278,7 @@ dissect_pcomascii(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
|
|||
guint8 op_size;
|
||||
|
||||
/* Create protocol tree */
|
||||
ti = proto_tree_add_item(tree, proto_pcomascii, tvb, offset, 0, ENC_NA);
|
||||
ti = proto_tree_add_item(tree, proto_pcomascii, tvb, offset, -1, ENC_NA);
|
||||
pcomascii_tree = proto_item_add_subtree(ti, ett_pcomascii);
|
||||
|
||||
if (pinfo->srcport == global_pcomtcp_tcp_port ){ // Reply
|
||||
|
@ -429,7 +429,7 @@ dissect_pcombinary(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
|
|||
const gchar* command_str;
|
||||
|
||||
/* Create protocol tree */
|
||||
ti = proto_tree_add_item(tree, proto_pcombinary, tvb, offset, 0, ENC_NA);
|
||||
ti = proto_tree_add_item(tree, proto_pcombinary, tvb, offset, -1, ENC_NA);
|
||||
pcombinary_tree = proto_item_add_subtree(ti, ett_pcombinary);
|
||||
|
||||
proto_tree_add_item(pcombinary_tree, hf_pcombinary_stx, tvb,
|
||||
|
|
|
@ -154,7 +154,7 @@ dissect_pflog(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U
|
|||
|
||||
col_set_str(pinfo->cinfo, COL_PROTOCOL, "PFLOG");
|
||||
|
||||
ti = proto_tree_add_item(tree, proto_pflog, tvb, offset, 0, ENC_NA);
|
||||
ti = proto_tree_add_item(tree, proto_pflog, tvb, offset, -1, ENC_NA);
|
||||
pflog_tree = proto_item_add_subtree(ti, ett_pflog);
|
||||
|
||||
length = tvb_get_guint8(tvb, offset) + pad_len;
|
||||
|
@ -414,7 +414,7 @@ dissect_old_pflog(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat
|
|||
|
||||
col_set_str(pinfo->cinfo, COL_PROTOCOL, "PFLOG-OLD");
|
||||
|
||||
ti = proto_tree_add_item(tree, proto_old_pflog, tvb, 0, 0, ENC_NA);
|
||||
ti = proto_tree_add_item(tree, proto_old_pflog, tvb, 0, -1, ENC_NA);
|
||||
pflog_tree = proto_item_add_subtree(ti, ett_pflog);
|
||||
|
||||
proto_tree_add_item(pflog_tree, hf_old_pflog_af, tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
|
|
|
@ -450,7 +450,7 @@ dissect_wtp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
fprintf(stderr, "dissect_wtp: cbHeader = %d\n", cbHeader);
|
||||
#endif
|
||||
/* NOTE - Length will be set when we process the TPI */
|
||||
ti = proto_tree_add_item(tree, proto_wtp, tvb, offCur, 0, ENC_NA);
|
||||
ti = proto_tree_add_item(tree, proto_wtp, tvb, offCur, -1, ENC_NA);
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, "dissect_wtp: (7) Returned from proto_tree_add_item\n");
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue