newlib-cygwin/newlib/libc/ssp/ssp.tex

58 lines
2.0 KiB
TeX

@node Overflow Protection
@chapter Overflow Protection
@menu
* Stack Smashing Protection:: Checks enabled with -fstack-protector*
* Object Size Checking:: Checks enabled with _FORTIFY_SOURCE
@end menu
@node Stack Smashing Protection
@section Stack Smashing Protection
Stack Smashing Protection is a compiler feature which emits extra code
to check for stack smashing attacks. It depends on a canary, which is
initialized with the process, and functions for process termination when
an overflow is detected. These are private entry points intended solely
for use by the compiler, and are used when any of the @code{-fstack-protector},
@code{-fstack-protector-all}, @code{-fstack-protector-explicit}, or
@code{-fstack-protector-strong} compiler flags are enabled.
@node Object Size Checking
@section Object Size Checking
Object Size Checking is a feature which wraps certain functions with checks
to prevent buffer overflows. These are enabled when compiling with
optimization (@code{-O1} and higher) and @code{_FORTIFY_SOURCE} defined
to 1, or for stricter checks, to 2.
@cindex list of overflow protected functions
The following functions use object size checking to detect buffer overflows
when enabled:
@example
@exdent @emph{String functions:}
bcopy memmove strcpy
bzero mempcpy strcat
explicit_bzero memset strncat
memcpy stpcpy strncpy
@exdent @emph{Wide Character String functions:}
fgetws wcrtomb wcsrtombs
fgetws_unlocked wcscat wmemcpy
mbsnrtowcs wcscpy wmemmove
mbsrtowcs wcsncat wmempcpy
wcpcpy wcsncpy wmemset
wcpncpy wcsnrtombs
@exdent @emph{Stdio functions:}
fgets fread_unlocked sprintf
fgets_unlocked gets vsnprintf
fread snprintf vsprintf
@exdent @emph{Stdlib functions:}
mbstowcs wcstombs wctomb
@exdent @emph{System functions:}
getcwd read ttyname_r
pread readlink
@end example