On Thu, Jan 24, 2013 at 12:18 PM, Ulisses Furquim
<ulis...@profusion.mobi> wrote:
> Hi Cedric,
>
> On Thu, Jan 24, 2013 at 12:44 AM, Enlightenment SVN
> <no-re...@enlightenment.org> wrote:
>> Log:
>> efl/eina: detect when freeing pointer inside an allocated memory.
>>
>>
>> Author:       cedric
>> Date:         2013-01-23 18:44:14 -0800 (Wed, 23 Jan 2013)
>> New Revision: 83195
>> Trac:         http://trac.enlightenment.org/e/changeset/83195
>>
>> Modified:
>>   trunk/efl/src/modules/eina/mp/chained_pool/eina_chained_mempool.c
>>
>> Modified: trunk/efl/src/modules/eina/mp/chained_pool/eina_chained_mempool.c
>> ===================================================================
>> --- trunk/efl/src/modules/eina/mp/chained_pool/eina_chained_mempool.c   
>> 2013-01-24 02:23:59 UTC (rev 83194)
>> +++ trunk/efl/src/modules/eina/mp/chained_pool/eina_chained_mempool.c   
>> 2013-01-24 02:44:14 UTC (rev 83195)
>> @@ -211,15 +211,23 @@
>>     // pool mem base
>>     pmem = (void *)(((unsigned char *)p) + sizeof(Chained_Pool));
>>
>> +#ifdef DEBUG
>>     // is it in pool mem?
>>     if (ptr < pmem)
>>       {
>> -#ifdef DEBUG
>> -        INF("%p is inside the private part of %p pool from %p 
>> Chained_Mempool (could be the sign of a buffer underrun).", ptr, p, pool);
>> -#endif
>> +        INF("%p is inside the private part of %p pool from %p '%s' 
>> Chained_Mempool (could be the sign of a buffer underrun).", ptr, p, pool, 
>> pool->name);
>>          return EINA_FALSE;
>>       }
>>
>> +   // is it really a pointer returned by malloc
>> +   if ((((unsigned char *)ptr) - (unsigned char *)(p + 1)) % 
>> pool->item_alloc)
>> +     {
>> +        INF("%p is %i bytes inside a pointer served by %p '%s' 
>> Chained_Mempool (You are freeing the wrong pointer man !). %i",
>> +            ptr, ((((unsigned char *)ptr) - (unsigned char *)(p + 1)) % 
>> pool->item_alloc), pool, pool->name);
>> +        return EINA_FALSE;
>> +     }
>> +#endif
>> +
>>     // freed node points to prev free node
>>     eina_trash_push(&p->base, ptr);
>>     // next free node is now the one we freed
>
> Nice. But shouldn't these messages be ERR or at least WRN?

ERR would be better indeed. Will fix that.
--
Cedric BAIL

------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnnow-d2d
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to