This is the mail archive of the ecos-patches@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [ECOS] Re: dlmalloc-2.6.4.c MALLOC_COPY broken?


Infact it is 2.6.6 that is broken (sorry for the confusion).
This version attempts to extend the block forwards or backwards in preference to allocating a completely new block. If the increase in size is less then a factor of two then the resulting copy will overlap.

To give a bit more detail on this, the exact place the problem occurs when it decides to extend the block backwards.


Imagine the most basic memcpy implementation:
 while (size --)
   *p2 ++ = * p1 ++;

This would be safe for going backwards. So would many memcpy implementations which is probably why this bug has gone unnoticed for a while.

Of course, if the block is extended forwards, no data needs to be copied at all since the start address remains unchanged.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]