On Mon, Mar 14, 2011 at 09:51:06AM -0400, Fulko Hew wrote:
> I'm looking into a bug in a dissector, and I don't see what the 'right
> way' to fix it would be.
> Here's the existing code snippet:
>
> static int
> dissect_octet_string(tvbuff_t *tvb, proto_tree *tree, int offset, char flags)
> {
> guint32 n_oct, p_noct;
> char context[1024];
>
> NORLEL(flags, n_oct, tvb, offset);
>
> p_noct = PADDING(n_oct);
> if (n_oct >= 1024)
> THROW(ReportedBoundsError);
> if (n_oct > 0)
> count = tvb_get_nstringz(tvb, offset + 4, n_oct, context);
> context[n_oct]='\0';
>
> proto_tree_add_uint(tree, hf_ostring_len, tvb, offset, 4, n_oct);
> proto_tree_add_string(tree, hf_ostring, tvb, offset + 4, n_oct, context);
> return p_noct + 4;
> }
>
> Comments anyone?
hf of type FT_UINT_STRING wouldn't work for you?
FT_UINT_STRING
A counted string of characters, consisting
of a count (represented as an integral value,
of width given in the proto_tree_add_item()
call) followed immediately by that number of
characters
Cheers.