summaryrefslogtreecommitdiff
path: root/src/g10lib.h
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2003-12-19 19:50:14 +0000
committerWerner Koch <wk@gnupg.org>2003-12-19 19:50:14 +0000
commit5c5bf94b156c94140c149425e2048f394524d3a6 (patch)
treed5e7aa2a6a3e12d7f52c54c9d42b6c530e0f79fa /src/g10lib.h
parent942783ba87c8d36cd0fb1e040c7ed78d0a6dce58 (diff)
downloadlibgcrypt-5c5bf94b156c94140c149425e2048f394524d3a6.tar.gz
(wipememory, wipememory2): New; taken from gnupg.
Diffstat (limited to 'src/g10lib.h')
-rw-r--r--src/g10lib.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/g10lib.h b/src/g10lib.h
index 3250c5b3..0aef3766 100644
--- a/src/g10lib.h
+++ b/src/g10lib.h
@@ -169,6 +169,18 @@ int strcasecmp (const char *a, const char *b) GCC_ATTR_PURE;
void _gcry_burn_stack (int bytes);
+
+/* To avoid that a compiler optimizes certain memset calls away, these
+ macros may be used instead. */
+#define wipememory2(_ptr,_set,_len) do { \
+ volatile char *_vptr=(volatile char *)(_ptr); \
+ size_t _vlen=(_len); \
+ while(_vlen) { *_vptr=(_set); _vptr++; _vlen--; } \
+ } while(0)
+#define wipememory(_ptr,_len) wipememory2(_ptr,0,_len)
+
+
+
/* Digit predicates. */
#define digitp(p) (*(p) >= '0' && *(p) <= '9')