Just so everyone knows, the issue was not caused by the tvb*
functions, but by a very simple error in an ep_alloc call:

                char_array = ep_alloc(sizeof(gchar)*26);
                g_sprintf(char_array, "0C0504%04x%04x0804%04x%02x%02x",
port_rec->dst_port, port_rec->src_port,
                        sar_rec->sar_msg_ref,  sar_rec->sar_tot_seg, 
sar_rec->sar_cur_seg);
                byte_array = convert_string_to_hex(char_array, &nbytes);

In the above call to ep_alloc, I should have used 27 instead of 26
(for the terminating NUL) :-(

While debugging this, I came across a couple of very interesting pages
in the Wiki:
http://wiki.wireshark.org/PerPacketMemoryCorrupted
http://wiki.wireshark.org/Development/Canary
and learnt a few things!

These pages are a bit *nix oriented, but with a bit of work can be
applied to Windows as well.

On Dec 27, 2007 5:19 PM, Abhik Sarkar <[EMAIL PROTECTED]> wrote:
> Hello Everyone,
>
> Is there some clear documentation on when tvb_new_* functions may or
> may not be called. I keep getting per-packet data corrupt, and I
> suspect that I am using tvb_new_composite or tvb_subset at an
> incorrect place.
>
> What I am attempting to do is to take various fields from one PDU,
> transform them as a new tvb and pass it to a higher level dissector.
>
> Thanks in advance!
> Abhik.
>
_______________________________________________
Wireshark-dev mailing list
Wireshark-dev@wireshark.org
http://www.wireshark.org/mailman/listinfo/wireshark-dev

Reply via email to