aboutsummaryrefslogtreecommitdiff
path: root/src/util/common_allocation.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2019-12-25 17:00:16 +0100
committerChristian Grothoff <christian@grothoff.org>2019-12-25 17:01:55 +0100
commit1a4bd09e63df2300845fcb9bfa150f28943b9aea (patch)
treeb50d2ac1b5c845e89e53d54015a70edbf2918504 /src/util/common_allocation.c
parent64d6551e3c6608afcd5dfd5ebdf6ad9bbac0b9f5 (diff)
downloadgnunet-1a4bd09e63df2300845fcb9bfa150f28943b9aea.tar.gz
gnunet-1a4bd09e63df2300845fcb9bfa150f28943b9aea.zip
also BADFOOD on realloc
Diffstat (limited to 'src/util/common_allocation.c')
-rw-r--r--src/util/common_allocation.c27
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 }