diff options
author | Robin Watts <robin.watts@artifex.com> | 2016-09-20 16:48:45 +0100 |
---|---|---|
committer | Chris Liddell <chris.liddell@artifex.com> | 2016-09-26 11:35:13 +0100 |
commit | 029f4ec2d6b8165b0cfff02173cde68edaebc108 (patch) | |
tree | ef55db0d3e5c046e1cb5bad840f42a06ddae48a1 | |
parent | 5547040a0de52d588401ea9f1dfd20bc8168f455 (diff) | |
download | ghostpdl-029f4ec2d6b8165b0cfff02173cde68edaebc108.tar.gz |
Fix Memento crash
When reallocing set the rawsize before attempting to write
the post guard block.
-rw-r--r-- | base/memento.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/base/memento.c b/base/memento.c index c8fc3e2be..75fbed4ed 100644 --- a/base/memento.c +++ b/base/memento.c @@ -2061,6 +2061,9 @@ static void *do_realloc(void *blk, size_t newsize, int type) memset(newbytes, MEMENTO_ALLOCFILL, newsize - newmemblk->rawsize); VALGRIND_MAKE_MEM_UNDEFINED(newbytes, newsize - newmemblk->rawsize); } +#endif + newmemblk->rawsize = newsize; +#ifndef MEMENTO_LEAKONLY VALGRIND_MAKE_MEM_DEFINED(newmemblk->preblk, Memento_PreSize); memset(newmemblk->preblk, MEMENTO_PREFILL, Memento_PreSize); VALGRIND_MAKE_MEM_UNDEFINED(newmemblk->preblk, Memento_PreSize); @@ -2068,7 +2071,6 @@ static void *do_realloc(void *blk, size_t newsize, int type) memset(MEMBLK_POSTPTR(newmemblk), MEMENTO_POSTFILL, Memento_PostSize); VALGRIND_MAKE_MEM_UNDEFINED(MEMBLK_POSTPTR(newmemblk), Memento_PostSize); #endif - newmemblk->rawsize = newsize; Memento_addBlockHead(&memento.used, newmemblk, 2); return MEMBLK_TOBLK(newmemblk); } |