aboutsummaryrefslogtreecommitdiffstats
path: root/src/init.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2024-02-06 15:58:24 +0000
committerWerner Koch <[email protected]>2024-02-06 15:58:24 +0000
commit1fdd8749014cf390d6ea9dd4350146473362044e (patch)
tree194f38937264bbb11864e4623cc17bf7a9e74a1e /src/init.c
parentargparser: Implement a command mode. (diff)
downloadlibgpg-error-1fdd8749014cf390d6ea9dd4350146473362044e.tar.gz
libgpg-error-1fdd8749014cf390d6ea9dd4350146473362044e.zip
core: New function gpgrt_wipememory.
* src/init.c (_gpgrt_wipememory): New. * src/visibility.c (gpgrt_wipememory): New. * src/visibility.h: Add it. * src/gpg-error.def.in: Ditto. * src/gpg-error.vers: Ditto. -- GnuPG-bug-id: 6954
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;