diff options
Diffstat (limited to 'src/util/common_allocation.c')
-rw-r--r-- | src/util/common_allocation.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/util/common_allocation.c b/src/util/common_allocation.c index 137af7b85..35c557000 100644 --- a/src/util/common_allocation.c +++ b/src/util/common_allocation.c | |||
@@ -265,6 +265,30 @@ GNUNET_xrealloc_ (void *ptr, size_t n, const char *filename, int linenumber) | |||
265 | ptr = &((size_t *) ptr)[-1]; | 265 | ptr = &((size_t *) ptr)[-1]; |
266 | mem_used = mem_used - *((size_t *) ptr) + n; | 266 | mem_used = mem_used - *((size_t *) ptr) + n; |
267 | #endif | 267 | #endif |
268 | #if defined(M_SIZE) | ||
269 | #if ENABLE_POISONING | ||
270 | { | ||
271 | uint64_t *base = ptr; | ||
272 | size_t s = M_SIZE (ptr); | ||
273 | |||
274 | if (s > n) | ||
275 | { | ||
276 | const uint64_t baadfood = GNUNET_ntohll (0xBAADF00DBAADF00DLL); | ||
277 | char *cbase = ptr; | ||
278 | |||
279 | GNUNET_memcpy (&cbase[n], | ||
280 | &baadfood, | ||
281 | GNUNET_MIN (8 - (n % 8), | ||
282 | s - n)); | ||
283 | for (size_t i = 1 + (n + 7) / 8; i < s / 8; i++) | ||
284 | base[i] = baadfood; | ||
285 | GNUNET_memcpy (&base[s / 8], | ||
286 | &baadfood, | ||
287 | s % 8); | ||
288 | } | ||
289 | } | ||
290 | #endif | ||
291 | #endif | ||
268 | ptr = realloc (ptr, n); | 292 | ptr = realloc (ptr, n); |
269 | if ((NULL == ptr) && (n > 0)) | 293 | if ((NULL == ptr) && (n > 0)) |
270 | { | 294 | { |
@@ -316,9 +340,8 @@ GNUNET_xfree_ (void *ptr, const char *filename, int linenumber) | |||
316 | const uint64_t baadfood = GNUNET_ntohll (0xBAADF00DBAADF00DLL); | 340 | const uint64_t baadfood = GNUNET_ntohll (0xBAADF00DBAADF00DLL); |
317 | uint64_t *base = ptr; | 341 | uint64_t *base = ptr; |
318 | size_t s = M_SIZE (ptr); | 342 | size_t s = M_SIZE (ptr); |
319 | size_t i; | ||
320 | 343 | ||
321 | for (i = 0; i < s / 8; i++) | 344 | for (size_t i = 0; i < s / 8; i++) |
322 | base[i] = baadfood; | 345 | base[i] = baadfood; |
323 | GNUNET_memcpy (&base[s / 8], &baadfood, s % 8); | 346 | GNUNET_memcpy (&base[s / 8], &baadfood, s % 8); |
324 | } | 347 | } |