Wireshark-dev: [Wireshark-dev] allocator->in_scope

From: Paul Offord <Paul.Offord@xxxxxxxxxxxx>
Date: Sun, 25 Mar 2018 09:31:23 +0000

Hi,

 

Still working on my new block reader.  To recap, I’ve defined a new pcapng block type and written a dissector.  The first thing I have to do is read the new block type, and Wireshark provides a framework to do this.  In the new block reader I define some space like this:

 

            tdb_namespace = wmem_strdup_printf(wmem_file_scope(), "%s", option_block->option_data);

 

Eventually the wmem_strdup_printf(…) execution calls this function:

 

void *

wmem_alloc(wmem_allocator_t *allocator, const size_t size)

{

    if (allocator == NULL) {

        return g_malloc(size);

    }

 

    if (!allocator->in_scope) // debug code

        while (FALSE); // debug code

 

    g_assert(allocator->in_scope);

 

    if (size == 0) {

        return NULL;

    }

 

    return allocator->walloc(allocator->private_data, size);

}

 

The g_assert intermittently fails.  If I open one file containing the new block, allocator->in_scope is true.  If I call another it’s false.

 

The block read is called before we start dissecting the contents with the dissector code.

 

  • At what point is wmem_file_scope in scope?
  • Should it be when my block reader is called or is it only guaranteed when the dissector code is called?

 

Thanks and regards…Paul

 


______________________________________________________________________

This message contains confidential information and is intended only for the individual named. If you are not the named addressee you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately by e-mail if you have received this e-mail by mistake and delete this e-mail from your system.

Any views or opinions expressed are solely those of the author and do not necessarily represent those of Advance Seven Ltd. E-mail transmission cannot be guaranteed to be secure or error-free as information could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or contain viruses. The sender therefore does not accept liability for any errors or omissions in the contents of this message, which arise as a result of e-mail transmission.

Advance Seven Ltd. Registered in England & Wales numbered 2373877 at Endeavour House, Coopers End Lane, Stansted, Essex CM24 1SJ

______________________________________________________________________
This email has been scanned by the Symantec Email Security.cloud service.
For more information please visit http://www.symanteccloud.com
______________________________________________________________________