On Thu, Jan 29, 2004 at 10:20:49PM +0100, Olivier Biot wrote:
> There is however a bug somewhere in the reassembly code as when
> disallowing subdissectors to set the columns I get an "[Illegal Short
> Message fragments] (Short Message Reassembled)" entry in the summary
> column in a *forged* capture where I accidentally merged three
> identical SMPP captures with mergecap; the error is visible only on
> the 1st reassembled packet's summary line. Looking in the Short
> Message fragments subtree, I see that the reassembly code reports
> conflicting overlapping data,
Not in the capture you sent me - it reports overlaps, but not
conflicting overlaps.
> however the tvb_subsets do not overlap
Yes, they do - in the capture you sent me, there are 3 copies of each of
the packets, and the 3 copies of the first fragment overlap.
> (but one gets replicated twice because of the accidental
> triple-merger).
It can't tell that they were replicated as a result of that.
The second and third instances of the second fragment are treated as new
fragments - the first instance completes the reassembly, and the data
structure for the in-progress reassembly is replaced by a data structure
for a completed reassembly.
Part of the problem is that the reassembly code, if it reports fragment
errors, sets the column string, rather than appending to it. Perhaps it
should append to the string, instead.
(BTW, should the "col_append_*str" routines take a "char *" argument
that, if not null, is appended to the string before appending the new
text if the string is not empty, so that you can put in a space, or ";",
or "; ", or... to separate the new item from any existing items without
that item showing up at the beginning of the column? The same might
apply to "proto_item_append_text()", and possibly even
"proto_item_append_string()".)