gnunet-svn
[Top][All Lists]
Advanced

[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];
   }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]