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