Scott Mueller wrote:
> Hello Wireshark Dev List,
> 
> I’ve been working with my own dissector for some time now and have run 
> into a bit of a snag involving memory usage. I have messages that are 
> split up on a size boundary, so I allocate enough space for the overall 
> message (yes, I know this is a bit of a red flag) with se_alloc, and 
> then copy data from the tvb into this new buffer using tvb_memcpy. This 
> is great, because I then pass this into tvb_new_real_data and then 
> dissect those “large” tvbuffs.
> 
> Recently, I’ve been working with messages that exceed 3 megabytes or so. 
> In this case, se_alloc complains and throws an exception about 
> allocating more than 2.5 megabytes. I realized my mistake, and am now 
> searching for a way to have a “chunked” allocation. Searching through 
> the tvbuff.h header led me to the tvb_*composite* functions. Further 
> searches on those functions resulted in an uncertainty as to whether or 
> not these work.  The tests in tvbtest.c which apparently exercise tvb 
> operations have references to the composite functions commented out, but 
> the packet-rtmpt.c dissector in the Wireshark development branch makes 
> use of these.
> 
> Packet-rtmpt.c creates a composite tvbuff, appends to it, and then calls 
> finalize. It then calls tvb_memdup and uses the allocated memory as 
> backing for another tvb (tvb_new_real_data again) , but doesn’t call 
> g_free to release the memory.
> 
> Am I missing something? What is the status of composite tvbuffs? If they 
> aren’t complete, what is needed to make this happen?

I think composite tvbuffs probably do work, but their use is hindered by 
the fact that each tvb that you get (each time a frame is handed to your 
dissector) is freed/reused after the packet is dissected.  That is, 
Wireshark does _not_ keep the entire capture file in memory.  Because of 
that, there's relatively little need/use for the composite functions and 
it's why you need to allocate copies of whatever data you want to 
reassemble.
___________________________________________________________________________
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-requ...@wireshark.org?subject=unsubscribe

Reply via email to