svn rev #23339: trunk/src/ include/ util/support/

ghudson@MIT.EDU ghudson at MIT.EDU
Mon Nov 23 20:25:10 EST 2009


http://src.mit.edu/fisheye/changelog/krb5/?cs=23339
Commit By: ghudson
Log Message:
Punt the volatile cast in the non-gcc, non-Windows version of zap.
Use a function call into libkrb5support instead, since that's hard to
inline.



Changed Files:
U   trunk/src/include/k5-int.h
U   trunk/src/include/k5-platform.h
U   trunk/src/util/support/Makefile.in
U   trunk/src/util/support/deps
U   trunk/src/util/support/libkrb5support-fixed.exports
A   trunk/src/util/support/zap.c
Modified: trunk/src/include/k5-int.h
===================================================================
--- trunk/src/include/k5-int.h	2009-11-24 01:14:07 UTC (rev 23338)
+++ trunk/src/include/k5-int.h	2009-11-24 01:25:10 UTC (rev 23339)
@@ -790,8 +790,9 @@
     asm volatile ("" : : "g" (ptr), "g" (len));
 }
 #else
-# define zap(ptr, len) memset((void *)(volatile void *)ptr, 0, len)
-#endif /* WIN32 */
+/* Use a function from libkrb5support to defeat inlining. */
+# define zap(ptr, len) krb5int_zap(ptr, len)
+#endif
 
 /* Convenience function: zap and free ptr if it is non-NULL. */
 static inline void

Modified: trunk/src/include/k5-platform.h
===================================================================
--- trunk/src/include/k5-platform.h	2009-11-24 01:14:07 UTC (rev 23338)
+++ trunk/src/include/k5-platform.h	2009-11-24 01:25:10 UTC (rev 23339)
@@ -976,6 +976,8 @@
 #define mkstemp krb5int_mkstemp
 #endif
 
+extern void krb5int_zap(void *ptr, size_t len);
+
 /* Fudge for future adoption of gettext or the like.  */
 #ifndef _
 #define _(X) (X)

Modified: trunk/src/util/support/Makefile.in
===================================================================
--- trunk/src/util/support/Makefile.in	2009-11-24 01:14:07 UTC (rev 23338)
+++ trunk/src/util/support/Makefile.in	2009-11-24 01:25:10 UTC (rev 23339)
@@ -62,6 +62,7 @@
 	fake-addrinfo.o \
 	utf8.o \
 	utf8_conv.o \
+	zap.o \
 	$(IPC_ST_OBJ) \
 	$(STRLCPY_ST_OBJ) \
 	$(PRINTF_ST_OBJ) \
@@ -77,6 +78,7 @@
 	$(OUTPRE)fake-addrinfo.$(OBJEXT) \
 	$(OUTPRE)utf8.$(OBJEXT) \
 	$(OUTPRE)utf8_conv.$(OBJEXT) \
+	$(OUTPRE)zap.$(OBJEXT) \
 	$(IPC_OBJ) \
 	$(STRLCPY_OBJ) \
 	$(PRINTF_OBJ) \
@@ -101,7 +103,8 @@
 	$(srcdir)/printf.c \
 	$(srcdir)/mkstemp.c \
 	$(srcdir)/t_k5buf.c \
-	$(srcdir)/t_unal.c 
+	$(srcdir)/t_unal.c \
+	$(srcdir)/zap.c
 
 SHLIB_EXPDEPS =
 # Add -lm if dumping thread stats, for sqrt.

Modified: trunk/src/util/support/deps
===================================================================
--- trunk/src/util/support/deps	2009-11-24 01:14:07 UTC (rev 23338)
+++ trunk/src/util/support/deps	2009-11-24 01:25:10 UTC (rev 23339)
@@ -47,3 +47,6 @@
 t_unal.so t_unal.po $(OUTPRE)t_unal.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \
   $(top_srcdir)/include/k5-platform.h $(top_srcdir)/include/k5-thread.h \
   t_unal.c
+zap.so zap.po $(OUTPRE)zap.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \
+  $(top_srcdir)/include/k5-platform.h $(top_srcdir)/include/k5-thread.h \
+  zap.c

Modified: trunk/src/util/support/libkrb5support-fixed.exports
===================================================================
--- trunk/src/util/support/libkrb5support-fixed.exports	2009-11-24 01:14:07 UTC (rev 23338)
+++ trunk/src/util/support/libkrb5support-fixed.exports	2009-11-24 01:25:10 UTC (rev 23339)
@@ -48,3 +48,4 @@
 krb5int_utf8_lentab
 krb5int_utf8_mintab
 krb5int_utf8_next
+krb5int_zap

Added: trunk/src/util/support/zap.c
===================================================================
--- trunk/src/util/support/zap.c	                        (rev 0)
+++ trunk/src/util/support/zap.c	2009-11-24 01:25:10 UTC (rev 23339)
@@ -0,0 +1,38 @@
+/* -*- mode: c; indent-tabs-mode: nil -*- */
+
+/*
+ * zap.c
+ *
+ * Copyright 2008 Massachusetts Institute of Technology.
+ * All Rights Reserved.
+ *
+ * Export of this software from the United States of America may
+ *   require a specific license from the United States Government.
+ *   It is the responsibility of any person or organization contemplating
+ *   export to obtain such a license before exporting.
+ *
+ * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
+ * distribute this software and its documentation for any purpose and
+ * without fee is hereby granted, provided that the above copyright
+ * notice appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation, and that
+ * the name of M.I.T. not be used in advertising or publicity pertaining
+ * to distribution of the software without specific, written prior
+ * permission.  Furthermore if you modify this software you must label
+ * your software as modified software and not distribute it in such a
+ * fashion that it might be confused with the original M.I.T. software.
+ * M.I.T. makes no representations about the suitability of
+ * this software for any purpose.  It is provided "as is" without express
+ * or implied warranty.
+ *
+ * krb5int_zap() is used by zap() (a static inline function defined in
+ * k5-int.h) on non-Windows, non-gcc compilers, in order to prevent the
+ * compiler from inlining and optimizing out the memset() call.
+ */
+
+#include <k5-platform.h>
+
+void krb5int_zap(void *ptr, size_t len)
+{
+    memset(ptr, 0, len);
+}




More information about the cvs-krb5 mailing list