eina: prevent memory corruption in chained mempool
authorJean Guyomarc'h <jean@guyomarch.bzh>
Sat, 16 Sep 2017 12:20:11 +0000 (14:20 +0200)
committerJean Guyomarc'h <jean@guyomarch.bzh>
Sat, 16 Sep 2017 12:28:39 +0000 (14:28 +0200)
commit96ab58fb8e34868c16beca2ee99c148e31e8eb09
tree5198ed2073bb8e08716f9fdd4c2aa18ab4c4c628
parent76144128cee802d2cdb23154c42d9d4252fc0338
eina: prevent memory corruption in chained mempool

The chained mempool uses eina trash to dispose and retrieve memory
blobs. Problem is that eina trash requires the memory blobs to be at
least of the size of a pointer. If the size of an element in the mempool
is less than the size of a pointer, which _is_ possible as no minimal
size is enforced, eina_trash will silently corrupt the memory pool.

To prevent memory corruption while still allowing small elements, the
size of an element defaults to the size of a pointer if it was smaller.
This comes at the cost of consuming slightly more memory in these cases,
but at least the memory pool can be safely be used.

@fix
src/modules/eina/mp/chained_pool/eina_chained_mempool.c