diff options
author | Werner Koch <[email protected]> | 2024-02-06 15:58:24 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2024-02-06 15:58:24 +0000 |
commit | 1fdd8749014cf390d6ea9dd4350146473362044e (patch) | |
tree | 194f38937264bbb11864e4623cc17bf7a9e74a1e /src/init.c | |
parent | argparser: Implement a command mode. (diff) | |
download | libgpg-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.c | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -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; |