[EMAIL PROTECTED] wrote:
> Fine, but then why should it cope with an offset of 0. You shouldn't be
> trying to add a protocol tree item when the offset is 0, there's
> no data there either.
Eh? An offset of 0 just means "beginning of the packet".
If you mean "length of 0", then a length of 0 is used in two places:
1) generated items, where neither the offset nor the length are
meaningful;
2) the top-level item for a protocol if the amount of data available
for the protocol is 0 - that allows the top-level item to be added, with
the exception thrown when you create the sub-item.
> We could discuss the semantics of this all day, but it's not fixing
> the problem. I have perfectly good CORBA packets that are showing
> up as errors. I have spent a fair bit of time finding out why and
> now I'd like some help to find the best way to fix it.
>
> I agree with you that proto_tree_add_item should not be called if
> there is nothing to add and I said as much in one of my earlier
> posts, but the current code is based on the principle that this
> can be done.
It's not as if somebody necessarily explicitly said "I'll write this on
the assumption that there are always parameters to a call" - it might
have been written without bearing in mind that there aren't (i.e., it's
not as if it's a Fundamental Design Decision).
I'd suggest moving the start_dissecting() calls into the routines that
process individual procedure requests and replies, and avoid generating
those calls if there are no items expected.
See, for example, genOperationRequest() in wireshark_gen.py; it could,
for example, start out by setting a flag to false and, before the
self.getCDR3() call, if the flag is false, put out the
start_dissecting() call and set the flag to true, so that the
start_dissecting() call is put out before the first parameter.
_______________________________________________
Wireshark-dev mailing list
[email protected]
http://www.wireshark.org/mailman/listinfo/wireshark-dev