Wireshark mailing list archives
Re: Checking address in WMEM
From: Evan Huus <eapache () gmail com>
Date: Thu, 26 Jan 2017 08:11:47 -0500
On Thu, Jan 26, 2017 at 4:06 AM, Dario Lombardo <dario.lombardo.ml () gmail com> wrote:
On Wed, Jan 25, 2017 at 6:50 PM, Evan Huus <eapache () gmail com> wrote:On my phone, but the short version is that there's no way to check this, and no efficient way to build it. EvanLooking into the code it seems to me that the routine of free_all should traverse all the allocated memory. I've written a code that mimics it, but I'm still failing to have all the addresses for some type conversions. That's the code I'm working on // Check if 'address' belongs to the given scope. gboolean wmem_check_allocator_block(wmem_allocator_t* allocator, void* address) { wmem_block_allocator_t *private_allocator = (wmem_block_allocator_t*)allocator->private_data; wmem_block_hdr_t *cur; wmem_block_chunk_t *chunk; void* a = WMEM_DATA_TO_CHUNK(address); cur = private_allocator->block_list; while (cur) { chunk = WMEM_BLOCK_TO_CHUNK(cur); if (a == chunk) return TRUE; cur = cur->next; } return FALSE; } If I allocate a block and the allocator gives me 7c40 as address, the function checks only 7c30. It looks like I'm casting/converting the addresses the wrong way. Any idea? Does this approach sound good, or am I completely following the wrong path?
Each block can consist of multiple chunks, so you need a second, inner loop. You can do this with WMEM_CHUNK_NEXT. Do note, however, that: - you'll be iterating over every piece of memory allocated in this scope, which will probably be quite expensive - your code will fail any time wmem chooses a different allocator (this happens in CI, and occasionally elsewhere as well) What problem specifically are you trying to solve? There may be an easier way. Evan ___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev () wireshark org> Archives: https://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-request () wireshark org?subject=unsubscribe
Current thread:
- Checking address in WMEM Dario Lombardo (Jan 25)
- Re: Checking address in WMEM Evan Huus (Jan 25)
- Re: Checking address in WMEM Dario Lombardo (Jan 26)
- Re: Checking address in WMEM Evan Huus (Jan 26)
- Re: Checking address in WMEM Dario Lombardo (Jan 26)
- Re: Checking address in WMEM Jeff Morriss (Jan 26)
- Re: Checking address in WMEM Dario Lombardo (Jan 26)
- Re: Checking address in WMEM Evan Huus (Jan 26)
- Re: Checking address in WMEM Dario Lombardo (Jan 26)
- Re: Checking address in WMEM Evan Huus (Jan 25)