From: : " Michael"

packet-tcp marks a row as unwritable if there is more
than 1 PDU in a packet to prevent overwriting of the
protocol column.

However this breaks the proto,colinfo tap which checks
rows are writable or dies EVEN if it doesn't alter anything.

Suggested patch attached to restore the initial value
after all PDUs have been processed.

https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3675

svn path=/trunk/; revision=29535
This commit is contained in:
Anders Broman 2009-08-24 09:05:23 +00:00
parent 60022bc5f2
commit 553ef57224
1 changed files with 10 additions and 0 deletions

View File

@ -1548,6 +1548,7 @@ desegment_tcp(tvbuff_t *tvb, packet_info *pinfo, int offset,
gint nbytes;
proto_item *item;
struct tcp_multisegment_pdu *msp;
gboolean cleared_writable;
again:
ipfd_head=NULL;
@ -1918,12 +1919,21 @@ again:
* <Protocol> to <TCP>
* XXX There is no good way to block the PROTOCOL column
* from being changed yet so we set the entire row unwritable.
* The flag cleared_writable stores the initial state.
*/
col_set_fence(pinfo->cinfo, COL_INFO);
cleared_writable |= col_get_writable(pinfo->cinfo);
col_set_writable(pinfo->cinfo, FALSE);
offset += another_pdu_follows;
seq += another_pdu_follows;
goto again;
} else {
/* remove any blocking set above otherwise the
* proto,colinfo tap will break
*/
if(cleared_writable){
col_set_writable(pinfo->cinfo, TRUE);
}
}
}