| SSP(3) | Library Functions Manual | SSP(3) |
ssp — bounds
checked libc functions
Buffer Overflow Protection Library (libssp, -lssp)
#include
<ssp/stdio.h>
int
sprintf(char
*str, const char
*fmt, ...);
int
vsprintf(char
*str, const char
*fmt, va_list
ap);
int
snprintf(char
*str, size_t len,
const char *fmt,
...);
int
vsnprintf(char
*str, size_t len,
const char *fmt,
va_list ap);
char *
gets(char
*str);
char *
fgets(char
*str, int len,
FILE *fp);
#include
<ssp/string.h>
void *
memcpy(void
*str, const void
*ptr, size_t
len);
void *
memmove(void
*str, const void
*ptr, size_t
len);
void *
memset(void
*str, int val,
size_t len);
char *
stpcpy(char
*str, const char
*ptr);
char *
strcpy(char
*str, const char
*ptr);
char *
strcat(char
*str, const char
*ptr);
char *
strncpy(char
*str, const char
*ptr, size_t
len);
char *
strncat(char
*str, const char
*ptr, size_t
len);
#include
<ssp/strings.h>
void *
bcopy(const
void *ptr, void
*str, size_t
len);
void *
bzero(void
*str, size_t
len);
#include
<ssp/unistd.h>
ssize_t
read(int
fd, void *str,
size_t len);
int
readlink(const
char * restrict path,
char * restrict str,
size_t len);
int
getcwd(char
*str, size_t
len);
When _FORTIFY_SOURCE bounds checking is
enabled as described below, the above functions get overwritten to use the
__builtin_object_size(3)
function to compute the size of str, if known at
compile time, and perform bounds check on it in order to avoid data buffer
or stack buffer overflows. If an overflow is detected, the routines will
call abort(3).
To enable these function overrides the following should be added to the gcc(1) command line: “-D_FORTIFY_SOURCE=1” or “-D_FORTIFY_SOURCE=2”.
If _FORTIFY_SOURCE is set to
1 the code will compute the maximum possible buffer
size for str, and if set to 2
it will compute the minimum buffer size.
gcc(1), __builtin_object_size(3), stdio(3), string(3), security(7)
The ssp library appeared
NetBSD 4.0.
| December 3, 2015 | NetBSD 11.0 |