Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


EXPLICIT_MEMSET(3)         Library Functions Manual         EXPLICIT_MEMSET(3)

NAME
     explicit_memset - guarantee writing a byte to a byte string

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <string.h>

     void *
     explicit_memset(void *b, int c, size_t len);

DESCRIPTION
     The explicit_memset() function writes len bytes of value c (converted to
     an unsigned char) to the string b.  It is guaranteed not to be optimized
     away by the compiler even if b is no longer used and is about to be freed
     or go out of scope.

RETURN VALUES
     The explicit_memset() function returns the original value of b.

EXAMPLES
     Create a buffer on the stack for a secret key, use it, and then zero it
     in memory before throwing it away.

           void
           f(void)
           {
                   uint8_t key[32];

                   crypto_random(key, sizeof(key));
                   do_crypto_stuff(key, sizeof(key));
                   ...

                   explicit_memset(key, 0, sizeof(key));
           }

SEE ALSO
     consttime_memequal(3), memset(3)

HISTORY
     The explicit_memset() function appeared in NetBSD 7.0.

NetBSD 10.99                    August 28, 2013                   NetBSD 10.99