aboutsummaryrefslogtreecommitdiffstats
path: root/src/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/init.c')
-rw-r--r--src/init.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/init.c b/src/init.c
index 493e3ba..c4b7e56 100644
--- a/src/init.c
+++ b/src/init.c
@@ -413,6 +413,25 @@ _gpgrt_free (void *a)
void
+_gpgrt_wipememory (void *ptr, size_t len)
+{
+ if (ptr && len)
+ {
+#if defined(HAVE_W32_SYSTEM) && defined(SecureZeroMemory)
+ SecureZeroMemory (ptr, len);
+#elif defined(HAVE_EXPLICIT_BZERO)
+ explicit_bzero (ptr, len);
+#else
+ /* Prevent compiler from optimizing away the call to memset by
+ * accessing memset through volatile pointer. */
+ static void *(*volatile memset_ptr)(void *, int, size_t) = (void *)memset;
+ memset_ptr (ptr, 0, len);
+#endif
+ }
+}
+
+
+void
_gpg_err_set_errno (int err)
{
errno = err;