Utility functions that are missing in

string.h More...

Detailed Description

string.h

This header provides utility functions that the standard C libs string.h lacks, such as explicit_bzero

Files

file  string_utils.h
 Utility functions that are missing in string.h
 

Functions

static void explicit_bzero (void *dest, size_t n_bytes)
 Like memset(dest, 0, n_bytes), but secure. More...
 
ssize_t strscpy (char *dest, const char *src, size_t count)
 Copy the string, or as much of it as fits, into the dest buffer. More...
 

Function Documentation

◆ explicit_bzero()

static void explicit_bzero ( void *  dest,
size_t  n_bytes 
)
inlinestatic

Like memset(dest, 0, n_bytes), but secure.

Unlike memset(dest, 0, n_bytes), this will zero out the memory even in cases the compiler would optimize out the call to memset().

Note
This is only sensible to use for sensitive data. For non-sensitive data, keep using memset() for performance reasons.
Parameters
[in,out]destMemory to clear
[in]n_bytesSize of memory to clear in bytes

Definition at line 66 of file string_utils.h.

◆ strscpy()

ssize_t strscpy ( char *  dest,
const char *  src,
size_t  count 
)

Copy the string, or as much of it as fits, into the dest buffer.

Preferred to strncpy since it always returns a valid string, and doesn't unnecessarily force the tail of the destination buffer to be zeroed. If the zeroing is desired, it's likely cleaner to use strscpy with an overflow test, then just memset the tail of the dest buffer.

Parameters
[out]destWhere to copy the string to
[in]srcWhere to copy the string from
[in]countSize of destination buffer
Precondition
The destination buffer is at least one byte large, as otherwise the terminating zero byte won't fit
Returns
the number of characters copied (not including the trailing zero)
Return values
-E2BIGthe destination buffer wasn't big enough