Mailing List Archive

Assertion error
Hi, I am getting an error in one of the packets I am decoding:

dissector bug, protocol xxx: proto.c:2742 Failed assertion "(guint)hfIndex <
gpa_hfInfo.len"

I found that this could be related to the limitation of how many header
fields can a protocol have. 200 is the default value. In my case I have over
200 header fields (approximately 260), therefore any header fields that is
after the 200th are reported as assertion error. Ethereal should have the
ability of dynamically increases the memory allocation on the go based on
the dissector definition, but somehow I am getting this error here.

Anyone has any idea about how to fix this problem?

Thanks...
Jim
Re: Assertion error [ In reply to ]
[.FYI, Wireshark-dev is probably a better place to ask such questions now...]

Jim Fan wrote:
> Hi, I am getting an error in one of the packets I am decoding:
>
> dissector bug, protocol xxx: proto.c:2742 Failed assertion
> "(guint)hfIndex < gpa_hfInfo.len"
>
> I found that this could be related to the limitation of how many header
> fields can a protocol have. 200 is the default value. In my case I have
> over 200 header fields (approximately 260), therefore any header fields
> that is after the 200th are reported as assertion error. Ethereal should
> have the ability of dynamically increases the memory allocation on the
> go based on the dissector definition, but somehow I am getting this
> error here.
>
> Anyone has any idea about how to fix this problem?

The header fields are dynamically allocated--by the dissector, no less.
Are they all being registered in 'proto_register_field_array()'? Are
you sure you don't have something wrong with your 'hf_register_info'
array (maybe around the 200th entry) that causes
'proto_register_field_array()' to not read the whole array?

As an example, packet-h245.c has a few more than 200 header fields:

> mozart [~/Projects/wireshark/source/]> egrep -c "^static int hf" epan/dissectors/packet-h245.c
> 1375
_______________________________________________
Ethereal-dev mailing list
Ethereal-dev@ethereal.com
http://www.ethereal.com/mailman/listinfo/ethereal-dev
Re: Assertion error [ In reply to ]
It turned out to be one of the fields was redefined in the hf_register_info
structure, thanks for the direction Jeff.

On 6/20/06, Jeff Morriss <jeff.morriss@ulticom.com> wrote:
>
>
> [.FYI, Wireshark-dev is probably a better place to ask such questions
> now...]
>
> Jim Fan wrote:
> > Hi, I am getting an error in one of the packets I am decoding:
> >
> > dissector bug, protocol xxx: proto.c:2742 Failed assertion
> > "(guint)hfIndex < gpa_hfInfo.len"
> >
> > I found that this could be related to the limitation of how many header
> > fields can a protocol have. 200 is the default value. In my case I have
> > over 200 header fields (approximately 260), therefore any header fields
> > that is after the 200th are reported as assertion error. Ethereal should
> > have the ability of dynamically increases the memory allocation on the
> > go based on the dissector definition, but somehow I am getting this
> > error here.
> >
> > Anyone has any idea about how to fix this problem?
>
> The header fields are dynamically allocated--by the dissector, no less.
> Are they all being registered in 'proto_register_field_array()'? Are
> you sure you don't have something wrong with your 'hf_register_info'
> array (maybe around the 200th entry) that causes
> 'proto_register_field_array()' to not read the whole array?
>
> As an example, packet-h245.c has a few more than 200 header fields:
>
> > mozart [~/Projects/wireshark/source/]> egrep -c "^static int hf"
> epan/dissectors/packet-h245.c
> > 1375
> _______________________________________________
> Ethereal-dev mailing list
> Ethereal-dev@ethereal.com
> http://www.ethereal.com/mailman/listinfo/ethereal-dev
>