[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r22489 - gnunet/src/util
From: |
gnunet |
Subject: |
[GNUnet-SVN] r22489 - gnunet/src/util |
Date: |
Thu, 5 Jul 2012 09:58:05 +0200 |
Author: grothoff
Date: 2012-07-05 09:58:05 +0200 (Thu, 05 Jul 2012)
New Revision: 22489
Modified:
gnunet/src/util/common_allocation.c
Log:
-LRN: Portable memory poisoning:
Uses GNU extension function as a non-W32 equivalent of msize()
(there are subtle differences, but they are of no consequence). Also
swaps the poison bits depending on endianness (i'm tired of seeing
0xdf0adba everywhere instead of 0xbaadf00d).
Modified: gnunet/src/util/common_allocation.c
===================================================================
--- gnunet/src/util/common_allocation.c 2012-07-05 07:57:40 UTC (rev 22488)
+++ gnunet/src/util/common_allocation.c 2012-07-05 07:58:05 UTC (rev 22489)
@@ -182,6 +182,24 @@
}
+# if __BYTE_ORDER == __LITTLE_ENDIAN
+#define BAADFOOD_STR "\x0D\xF0\xAD\xBA"
+#endif
+# if __BYTE_ORDER == __BIG_ENDIAN
+#define BAADFOOD_STR "\xBA\xAD\xF0\x0D"
+#endif
+
+#if WINDOWS
+#define MSIZE(p) _msize (p)
+#endif
+#if LINUX
+/* FIXME: manpage claims that this function is a GNU extension,
+ * but googling shows that it is available on many platforms via
+ * inclusion of various headers. For now let's make it Linux-only.
+ */
+#define MSIZE(p) malloc_usable_size (p)
+#endif
+
/**
* Free memory. Merely a wrapper for the case that we
* want to keep track of allocations.
@@ -198,12 +216,12 @@
ptr = &((size_t *) ptr)[-1];
mem_used -= *((size_t *) ptr);
#endif
-#if WINDOWS
+#if defined(MSIZE)
#if ENABLE_POISONING
{
size_t i;
- char baadfood[4] = "\xBA\xAD\xF0\x0D";
- size_t s = _msize (ptr);
+ char baadfood[5] = BAADFOOD_STR;
+ size_t s = MSIZE (ptr);
for (i = 0; i < s; i++)
((char *) ptr)[i] = baadfood[i % 4];
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r22489 - gnunet/src/util,
gnunet <=