Wireshark mailing list archives

Re: how correct add to tree reassebled data?


From: Jaap Keuter <jaap.keuter () xs4all nl>
Date: Thu, 07 Feb 2013 22:12:00 +0100

On 02/07/2013 11:08 AM, Ilya Shvetsov wrote:
Thank you very much for your reply and help. Now it works now.
 
But I have to mention, that if i use proto_tree_set_visible, my dissector fails
to link. May be this happens because proto_tree_set_visible are not in export
table.
I copied body of this method to my code, and all works fine.
What is correct way to solve this? Should I add this method to export table and
commit it?
Personally, i prefer to have this function in my code, because such way it will
work with old versions of wireshark


As Chris already did, it should be exported from libwireshark for plugins to
use. Your solution will work until it's linked against a libwireshark that
exports the function proper.

 
And one more note
I do not know what you meant, but packet-jxta.c does not contain any example of
using proto_tree_set_visible. I found examples packet-frame.c and in packet-wsp.c

It is there, since 17 January, I put it in packet-jxta.c line 1054 with revision
47136. That's why I knew it would help :)

http://anonsvn.wireshark.org/viewvc?view=revision&revision=47136

Thanks,
Jaap


--
With best regards
Ilya 'Akhil' Shvetsov



On 7 February 2013 01:29, Jaap Keuter <jaap.keuter () xs4all nl
<mailto:jaap.keuter () xs4all nl>> wrote:

    On 02/06/2013 01:08 PM, Ilya Shvetsov wrote:
    > Hi, there.
    >
    > Thank you guys for greate product.
    >
    > I successuly wrote my dissector and few days ago found failure in it.
    >
    > I have next situatioin:
    > I dissect last packet in some sequence and get new tvbuffer from
    >
    > process_reassembled_data
    >
    > Next step i do is parsing of this new tvbuffer.
    > I parse it and add new items to tree under my protocol item.
    >
    > And this is a place where problem is.
    > I parse new tvbuff from begin, this means that offset is ZERO,
    > tvbuff it self has raw_offset == -1
    >
    > When I parse, i do not know a length of element, so i add item to tree and
    later
    > call
    >
    > proto_item_set_end
    >
    > to set end of element in data buffer. if element, which i have read, has quite
    > big size, then all works fine. if it has small size, then i get assert from
    > proto_item_set_end.
    >
    > It's turned out that every item in tree has 'finfo', which contains filed
    > 'start'. For me this start is usually 28. if my first item in reassebled
    tvbuff
    > is less then 28, i get assert.
    >
    > As I can see, the problem happens because all items in tree has 'finfo' field
    > from parent (not reassebled) tvbuff.
    >
    > So, what i have to do to fix this? how to add items from new tvbuff
    correctly ?
    >
    > I use wireshark 1.8.5 on Windows 7
    > --
    > With best regards
    > Ilya 'Akhil' Shvetsov
    >

    Hi,

    Try calling proto_tree_set_visible(tree, TRUE); before you create the item you
    want to call proto_item_set_end() on. See packet-jxta.c for example.

    Thanks,
    Jaap



___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe


Current thread: