summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2016-09-20 16:48:45 +0100
committerChris Liddell <chris.liddell@artifex.com>2016-09-26 11:35:13 +0100
commit029f4ec2d6b8165b0cfff02173cde68edaebc108 (patch)
treeef55db0d3e5c046e1cb5bad840f42a06ddae48a1
parent5547040a0de52d588401ea9f1dfd20bc8168f455 (diff)
downloadghostpdl-029f4ec2d6b8165b0cfff02173cde68edaebc108.tar.gz
Fix Memento crash
When reallocing set the rawsize before attempting to write the post guard block.
-rw-r--r--base/memento.c4
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);
}