Skip to content
Snippets Groups Projects
Commit 3d6d8586 authored by Dario Pinto's avatar Dario Pinto Committed by Andre Maroneze
Browse files

[compliance] add safer alternatives for unsafe functions

parent 84f44100
No related branches found
No related tags found
No related merge requests found
{
"description": "C11 reserved function identifiers",
"notes": {
"description": "The 'notes' field is a list of characteristics that may affect the 'difficulty' of analyzing such functions with Frama-C. Each note is succintly described below.",
"variadic":"variadic function, OR having an argument of type va_list"
"description": "The 'notes' field is a list of characteristics related to CWEs or that may affect the 'difficulty' of analyzing such functions with Frama-C. Each note is succintly described below.",
"variadic":"Variadic function, OR having an argument of type va_list.",
"safer-alts":"A list of recommended alternatives for functions considered unsafe (CWE-242, CWE-477, CWE-676)."
},
"source":"ISO/IEC 9899:2011",
"data":[
......@@ -16,7 +17,7 @@
{"ident":"acoshl", "header":"math.h"},
{"ident":"acosl", "header":"math.h"},
{"ident":"aligned_alloc", "header":"stdlib.h"},
{"ident":"asctime", "header":"time.h"},
{"ident":"asctime", "header":"time.h", "notes":[{"safer-alts":["asctime_s"]}]},
{"ident":"asctime_s", "header":"time.h"},
{"ident":"asin", "header":"math.h"},
{"ident":"asinf", "header":"math.h"},
......@@ -58,7 +59,7 @@
{"ident":"atomic_store", "header":"stdatomic.h"},
{"ident":"atomic_store_explicit", "header":"stdatomic.h"},
{"ident":"atomic_thread_fence", "header":"stdatomic.h"},
{"ident":"bsearch", "header":"stdlib.h"},
{"ident":"bsearch", "header":"stdlib.h", "notes":[{"safer-alts":["bsearch_s"]}]},
{"ident":"bsearch_s", "header":"stdlib.h"},
{"ident":"btowc", "header":"wchar.h"},
{"ident":"c16rtomb", "header":"uchar.h"},
......@@ -215,10 +216,10 @@
{"ident":"fmod", "header":"math.h"},
{"ident":"fmodf", "header":"math.h"},
{"ident":"fmodl", "header":"math.h"},
{"ident":"fopen", "header":"stdio.h"},
{"ident":"fopen", "header":"stdio.h", "notes":[{"safer-alts":["fopen_s"]}]},
{"ident":"fopen_s", "header":"stdio.h"},
{"ident":"fpclassify", "header":"math.h"},
{"ident":"fprintf", "header":"stdio.h", "notes":["variadic"]},
{"ident":"fprintf", "header":"stdio.h", "notes":["variadic", {"safer-alts":["fprintf_s"]}]},
{"ident":"fprintf_s", "header":"stdio.h", "notes":["variadic"]},
{"ident":"fputc", "header":"stdio.h"},
{"ident":"fputs", "header":"stdio.h"},
......@@ -226,30 +227,30 @@
{"ident":"fputws", "header":"wchar.h"},
{"ident":"fread", "header":"stdio.h"},
{"ident":"free", "header":"stdlib.h"},
{"ident":"freopen", "header":"stdio.h"},
{"ident":"freopen", "header":"stdio.h", "notes":[{"safer-alts":["freopen_s"]}]},
{"ident":"freopen_s", "header":"stdio.h"},
{"ident":"frexp", "header":"math.h"},
{"ident":"frexpf", "header":"math.h"},
{"ident":"frexpl", "header":"math.h"},
{"ident":"fscanf", "header":"stdio.h", "notes":["variadic"]},
{"ident":"fscanf", "header":"stdio.h", "notes":["variadic", {"safer-alts":["fscanf_s"]}]},
{"ident":"fscanf_s", "header":"stdio.h", "notes":["variadic"]},
{"ident":"fseek", "header":"stdio.h"},
{"ident":"fsetpos", "header":"stdio.h"},
{"ident":"ftell", "header":"stdio.h"},
{"ident":"fwide", "header":"wchar.h"},
{"ident":"fwprintf", "header":"wchar.h", "notes":["variadic"]},
{"ident":"fwprintf", "header":"wchar.h", "notes":["variadic", {"safer-alts":["fwprintf_s"]}]},
{"ident":"fwprintf_s", "header":"wchar.h", "notes":["variadic"]},
{"ident":"fwrite", "header":"stdio.h"},
{"ident":"fwscanf", "header":"wchar.h", "notes":["variadic"]},
{"ident":"fwscanf", "header":"wchar.h", "notes":["variadic", {"safer-alts":["fwscanf_s"]}]},
{"ident":"fwscanf_s", "header":"wchar.h", "notes":["variadic"]},
{"ident":"getc", "header":"stdio.h"},
{"ident":"getchar", "header":"stdio.h"},
{"ident":"getenv", "header":"stdlib.h"},
{"ident":"getenv", "header":"stdlib.h", "notes":[{"safer-alts":["getenv_s"]}]},
{"ident":"getenv_s", "header":"stdlib.h"},
{"ident":"gets_s", "header":"stdio.h"},
{"ident":"getwc", "header":"wchar.h"},
{"ident":"getwchar", "header":"wchar.h"},
{"ident":"gmtime", "header":"time.h"},
{"ident":"gmtime", "header":"time.h", "notes":[{"safer-alts":["gmtime_s"]}]},
{"ident":"gmtime_s", "header":"time.h"},
{"ident":"hypot", "header":"math.h"},
{"ident":"hypotf", "header":"math.h"},
......@@ -313,7 +314,7 @@
{"ident":"llroundf", "header":"math.h"},
{"ident":"llroundl", "header":"math.h"},
{"ident":"localeconv", "header":"locale.h"},
{"ident":"localtime", "header":"time.h"},
{"ident":"localtime", "header":"time.h", "notes":[{"safer-alts":["localtime_s"]}]},
{"ident":"localtime_s", "header":"time.h"},
{"ident":"log", "header":"math.h"},
{"ident":"log10", "header":"math.h"},
......@@ -344,18 +345,18 @@
{"ident":"mbrtoc32", "header":"uchar.h"},
{"ident":"mbrtowc", "header":"wchar.h"},
{"ident":"mbsinit", "header":"wchar.h"},
{"ident":"mbsrtowcs", "header":"wchar.h"},
{"ident":"mbsrtowcs", "header":"wchar.h", "notes":[{"safer-alts":["mbsrtowcs_s"]}]},
{"ident":"mbsrtowcs_s", "header":"wchar.h"},
{"ident":"mbstowcs", "header":"stdlib.h"},
{"ident":"mbstowcs", "header":"stdlib.h", "notes":[{"safer-alts":["mbstowcs_s"]}]},
{"ident":"mbstowcs_s", "header":"stdlib.h"},
{"ident":"mbtowc", "header":"stdlib.h"},
{"ident":"memchr", "header":"string.h"},
{"ident":"memcmp", "header":"string.h"},
{"ident":"memcpy", "header":"string.h"},
{"ident":"memcpy", "header":"string.h", "notes":[{"safer-alts":["memcpy_s"]}]},
{"ident":"memcpy_s", "header":"string.h"},
{"ident":"memmove", "header":"string.h"},
{"ident":"memmove", "header":"string.h", "notes":[{"safer-alts":["memmove_s"]}]},
{"ident":"memmove_s", "header":"string.h"},
{"ident":"memset", "header":"string.h"},
{"ident":"memset", "header":"string.h", "notes":[{"safer-alts":["memset_s"]}]},
{"ident":"memset_s", "header":"string.h"},
{"ident":"mktime", "header":"time.h"},
{"ident":"modf", "header":"math.h"},
......@@ -383,7 +384,7 @@
{"ident":"pow", "header":"math.h"},
{"ident":"powf", "header":"math.h"},
{"ident":"powl", "header":"math.h"},
{"ident":"printf", "header":"stdio.h", "notes":["variadic"]},
{"ident":"printf", "header":"stdio.h", "notes":["variadic", {"safer-alts":["printf_s"]}]},
{"ident":"printf_s", "header":"stdio.h"},
{"ident":"putc", "header":"stdio.h"},
{"ident":"putchar", "header":"stdio.h"},
......@@ -417,7 +418,7 @@
{"ident":"scalbn", "header":"math.h"},
{"ident":"scalbnf", "header":"math.h"},
{"ident":"scalbnl", "header":"math.h"},
{"ident":"scanf", "header":"stdio.h", "notes":["variadic"]},
{"ident":"scanf", "header":"stdio.h", "notes":["variadic", {"safer-alts":["scanf_s"]}]},
{"ident":"scanf_s", "header":"stdio.h", "notes":["variadic"]},
{"ident":"set_constraint_handler_s", "header":"stdlib.h"},
{"ident":"setbuf", "header":"stdio.h"},
......@@ -432,34 +433,34 @@
{"ident":"sinhf", "header":"math.h"},
{"ident":"sinhl", "header":"math.h"},
{"ident":"sinl", "header":"math.h"},
{"ident":"snprintf", "header":"stdio.h", "notes":["variadic"]},
{"ident":"snprintf", "header":"stdio.h", "notes":["variadic", {"safer-alts":["snprintf_s", "sprintf_s"]}]},
{"ident":"snprintf_s", "header":"stdio.h", "notes":["variadic"]},
{"ident":"snwprintf_s", "header":"wchar.h"},
{"ident":"sprintf", "header":"stdio.h", "notes":["variadic"]},
{"ident":"sprintf_s", "header":"stdio.h", "notes":["variadic"]},
{"ident":"sprintf", "header":"stdio.h", "notes":["variadic", {"safer-alts":["sprintf_s", "snprintf_s"]}]},
{"ident":"sprintf_s", "header":"stdio.h", "notes":["variadic", {"safer-alts":["snprintf_s"]}]},
{"ident":"sqrt", "header":"math.h"},
{"ident":"sqrtf", "header":"math.h"},
{"ident":"sqrtl", "header":"math.h"},
{"ident":"srand", "header":"stdlib.h"},
{"ident":"sscanf", "header":"stdio.h", "notes":["variadic"]},
{"ident":"sscanf", "header":"stdio.h", "notes":["variadic", {"safer-alts":["sscanf_s"]}]},
{"ident":"sscanf_s", "header":"stdio.h", "notes":["variadic"]},
{"ident":"strcat", "header":"string.h"},
{"ident":"strcat", "header":"string.h", "notes":[{"safer-alts":["strcat_s", "strncat_s", "strlcat", "strncat"]}]},
{"ident":"strcat_s", "header":"string.h"},
{"ident":"strchr", "header":"string.h"},
{"ident":"strcmp", "header":"string.h"},
{"ident":"strcoll", "header":"string.h"},
{"ident":"strcpy", "header":"string.h"},
{"ident":"strcpy", "header":"string.h", "notes":[{"safer-alts":["strcpy_s", "strncpy_s", "strlcpy", "strncpy"]}]},
{"ident":"strcpy_s", "header":"string.h"},
{"ident":"strcspn", "header":"string.h"},
{"ident":"strerror", "header":"string.h"},
{"ident":"strerror_s", "header":"string.h"},
{"ident":"strerrorlen_s", "header":"string.h"},
{"ident":"strftime", "header":"time.h"},
{"ident":"strlen", "header":"string.h"},
{"ident":"strncat", "header":"string.h"},
{"ident":"strlen", "header":"string.h", "notes":[{"safer-alts":["strnlen_s"]}]},
{"ident":"strncat", "header":"string.h", "notes":[{"safer-alts":["strncat_s", "strlcat"]}]},
{"ident":"strncat_s", "header":"string.h"},
{"ident":"strncmp", "header":"string.h"},
{"ident":"strncpy", "header":"string.h"},
{"ident":"strncpy", "header":"string.h", "notes":[{"safer-alts":["strncpy_s", "strlcpy"]}]},
{"ident":"strncpy_s", "header":"string.h"},
{"ident":"strnlen_s", "header":"string.h"},
{"ident":"strpbrk", "header":"string.h"},
......@@ -469,7 +470,7 @@
{"ident":"strtod", "header":"stdlib.h"},
{"ident":"strtof", "header":"stdlib.h"},
{"ident":"strtoimax", "header":"inttypes.h"},
{"ident":"strtok", "header":"string.h"},
{"ident":"strtok", "header":"string.h", "notes":[{"safer-alts":["strtok_s"]}]},
{"ident":"strtok_s", "header":"string.h"},
{"ident":"strtol", "header":"stdlib.h"},
{"ident":"strtold", "header":"stdlib.h"},
......@@ -478,9 +479,9 @@
{"ident":"strtoull", "header":"stdlib.h"},
{"ident":"strtoumax", "header":"inttypes.h"},
{"ident":"strxfrm", "header":"string.h"},
{"ident":"swprintf", "header":"wchar.h", "notes":["variadic"]},
{"ident":"swprintf", "header":"wchar.h", "notes":["variadic", {"safer-alts":["swprintf_s", "sprintf_s"]}]},
{"ident":"swprintf_s", "header":"wchar.h", "notes":["variadic"]},
{"ident":"swscanf", "header":"wchar.h", "notes":["variadic"]},
{"ident":"swscanf", "header":"wchar.h", "notes":["variadic", {"safer-alts":["swscanf_s", "sscanf_s"]}]},
{"ident":"swscanf_s", "header":"wchar.h", "notes":["variadic"]},
{"ident":"system", "header":"stdlib.h"},
{"ident":"tan", "header":"math.h"},
......@@ -502,9 +503,9 @@
{"ident":"thrd_yield", "header":"threads.h"},
{"ident":"time", "header":"time.h"},
{"ident":"timespec_get", "header":"time.h"},
{"ident":"tmpfile", "header":"stdio.h"},
{"ident":"tmpfile", "header":"stdio.h", "notes":[{"safer-alts":["tmpfile_s"]}]},
{"ident":"tmpfile_s", "header":"stdio.h"},
{"ident":"tmpnam", "header":"stdio.h"},
{"ident":"tmpnam", "header":"stdio.h", "notes":[{"safer-alts":["tmpnam_s"]}]},
{"ident":"tmpnam_s", "header":"stdio.h"},
{"ident":"tolower", "header":"ctype.h"},
{"ident":"toupper", "header":"ctype.h"},
......@@ -524,86 +525,86 @@
{"ident":"va_copy", "header":"stdarg.h"},
{"ident":"va_end", "header":"stdarg.h"},
{"ident":"va_start", "header":"stdarg.h"},
{"ident":"vfprintf", "header":"stdio.h", "notes":["variadic"]},
{"ident":"vfprintf", "header":"stdio.h", "notes":["variadic", {"safer-alts":["vfprintf_s"]}]},
{"ident":"vfprintf_s", "header":"stdio.h", "notes":["variadic"]},
{"ident":"vfscanf", "header":"stdio.h", "notes":["variadic"]},
{"ident":"vfscanf", "header":"stdio.h", "notes":["variadic", {"safer-alts":["vfscanf_s"]}]},
{"ident":"vfscanf_s", "header":"stdio.h", "notes":["variadic"]},
{"ident":"vfwprintf", "header":"wchar.h", "notes":["variadic"]},
{"ident":"vfwprintf", "header":"wchar.h", "notes":["variadic", {"safer-alts":["vfwprintf_s"]}]},
{"ident":"vfwprintf_s", "header":"wchar.h", "notes":["variadic"]},
{"ident":"vfwscanf", "header":"wchar.h", "notes":["variadic"]},
{"ident":"vfwscanf", "header":"wchar.h", "notes":["variadic"], "notes":[{"safer-alts":["vfwscanf_s"]}]},
{"ident":"vfwscanf_s", "header":"wchar.h", "notes":["variadic"]},
{"ident":"vprintf", "header":"stdio.h", "notes":["variadic"]},
{"ident":"vprintf", "header":"stdio.h", "notes":["variadic", {"safer-alts":["vprintf_s"]}]},
{"ident":"vprintf_s", "header":"stdio.h", "notes":["variadic"]},
{"ident":"vscanf", "header":"stdio.h", "notes":["variadic"]},
{"ident":"vscanf", "header":"stdio.h", "notes":["variadic", {"safer-alts":["vscanf_s"]}]},
{"ident":"vscanf_s", "header":"stdio.h", "notes":["variadic"]},
{"ident":"vsnprintf", "header":"stdio.h", "notes":["variadic"]},
{"ident":"vsnprintf", "header":"stdio.h", "notes":["variadic", {"safer-alts":["vsnprintf_s"]}]},
{"ident":"vsnprintf_s", "header":"stdio.h", "notes":["variadic"]},
{"ident":"vsnwprintf_s", "header":"wchar.h", "notes":["variadic"]},
{"ident":"vsprintf", "header":"stdio.h", "notes":["variadic"]},
{"ident":"vsprintf", "header":"stdio.h", "notes":["variadic", {"safer-alts":["vsprintf_s", "sprintf_s"]}]},
{"ident":"vsprintf_s", "header":"stdio.h", "notes":["variadic"]},
{"ident":"vsscanf", "header":"stdio.h", "notes":["variadic"]},
{"ident":"vsscanf", "header":"stdio.h", "notes":["variadic", {"safer-alts":["vsscanf_s"]}]},
{"ident":"vsscanf_s", "header":"stdio.h", "notes":["variadic"]},
{"ident":"vswprintf", "header":"wchar.h", "notes":["variadic"]},
{"ident":"vswprintf", "header":"wchar.h", "notes":["variadic", {"safer-alts":["vswprintf_s", "sprintf_s"]}]},
{"ident":"vswprintf_s", "header":"wchar.h", "notes":["variadic"]},
{"ident":"vswscanf", "header":"wchar.h", "notes":["variadic"]},
{"ident":"vswscanf", "header":"wchar.h", "notes":["variadic", {"safer-alts":["vswscanf_s"]}]},
{"ident":"vswscanf_s", "header":"wchar.h", "notes":["variadic"]},
{"ident":"vwprintf", "header":"wchar.h", "notes":["variadic"]},
{"ident":"vwprintf", "header":"wchar.h", "notes":["variadic", {"safer-alts":["vwprintf_s"]}]},
{"ident":"vwprintf_s", "header":"wchar.h", "notes":["variadic"]},
{"ident":"vwscanf", "header":"wchar.h", "notes":["variadic"]},
{"ident":"vwscanf", "header":"wchar.h", "notes":["variadic", {"safer-alts":["vwscanf_s"]}]},
{"ident":"vwscanf_s", "header":"wchar.h", "notes":["variadic"]},
{"ident":"wcrtomb", "header":"wchar.h"},
{"ident":"wcrtomb", "header":"wchar.h", "notes":[{"safer-alts":["wcrtomb_s"]}]},
{"ident":"wcrtomb_s", "header":"wchar.h"},
{"ident":"wcscat", "header":"wchar.h"},
{"ident":"wcscat", "header":"wchar.h", "notes":[{"safer-alts":["wcscat_s", "strcat_s"]}]},
{"ident":"wcscat_s", "header":"wchar.h"},
{"ident":"wcschr", "header":"wchar.h"},
{"ident":"wcscmp", "header":"wchar.h"},
{"ident":"wcscoll", "header":"wchar.h"},
{"ident":"wcscpy", "header":"wchar.h"},
{"ident":"wcscpy", "header":"wchar.h", "notes":[{"safer-alts":["wcscpy_s", "strcpy_s"]}]},
{"ident":"wcscpy_s", "header":"wchar.h"},
{"ident":"wcscspn", "header":"wchar.h"},
{"ident":"wcsftime", "header":"wchar.h"},
{"ident":"wcslen", "header":"wchar.h"},
{"ident":"wcsncat", "header":"wchar.h"},
{"ident":"wcslen", "header":"wchar.h", "notes":[{"safer-alts":["wcsnlen_s"]}]},
{"ident":"wcsncat", "header":"wchar.h", "notes":[{"safer-alts":["wcsncat_s", "strncat_s", "strlcat"]}]},
{"ident":"wcsncat_s", "header":"wchar.h"},
{"ident":"wcsncmp", "header":"wchar.h"},
{"ident":"wcsncpy", "header":"wchar.h"},
{"ident":"wcsncpy", "header":"wchar.h", "notes":[{"safer-alts":["wcsncpy_s", "strncpy_s", "strlcpy"]}]},
{"ident":"wcsncpy_s", "header":"wchar.h"},
{"ident":"wcsnlen_s", "header":"wchar.h"},
{"ident":"wcspbrk", "header":"wchar.h"},
{"ident":"wcsrchr", "header":"wchar.h"},
{"ident":"wcsrtombs", "header":"wchar.h"},
{"ident":"wcsrtombs", "header":"wchar.h", "notes":[{"safer-alts":["wcsrtombs_s"]}]},
{"ident":"wcsrtombs_s", "header":"wchar.h"},
{"ident":"wcsspn", "header":"wchar.h"},
{"ident":"wcsstr", "header":"wchar.h"},
{"ident":"wcstod", "header":"wchar.h"},
{"ident":"wcstof", "header":"wchar.h"},
{"ident":"wcstoimax", "header":"inttypes.h"},
{"ident":"wcstok", "header":"wchar.h"},
{"ident":"wcstok", "header":"wchar.h", "notes":[{"safer-alts":["wcstok_s"]}]},
{"ident":"wcstok_s", "header":"wchar.h"},
{"ident":"wcstol", "header":"wchar.h"},
{"ident":"wcstold", "header":"wchar.h"},
{"ident":"wcstoll", "header":"wchar.h"},
{"ident":"wcstombs", "header":"stdlib.h"},
{"ident":"wcstombs", "header":"stdlib.h", "notes":[{"safer-alts":["wcstombs_s"]}]},
{"ident":"wcstombs_s", "header":"stdlib.h"},
{"ident":"wcstoul", "header":"wchar.h"},
{"ident":"wcstoull", "header":"wchar.h"},
{"ident":"wcstoumax", "header":"inttypes.h"},
{"ident":"wcsxfrm", "header":"wchar.h"},
{"ident":"wctob", "header":"wchar.h"},
{"ident":"wctomb", "header":"stdlib.h"},
{"ident":"wctomb", "header":"stdlib.h", "notes":[{"safer-alts":["wctomb_s"]}]},
{"ident":"wctomb_s", "header":"stdlib.h"},
{"ident":"wctrans", "header":"wctype.h"},
{"ident":"wctype", "header":"wctype.h"},
{"ident":"wmemchr", "header":"wchar.h"},
{"ident":"wmemcmp", "header":"wchar.h"},
{"ident":"wmemcpy", "header":"wchar.h"},
{"ident":"wmemcpy", "header":"wchar.h", "notes":[{"safer-alts":["wmemcpy_s"]}]},
{"ident":"wmemcpy_s", "header":"wchar.h"},
{"ident":"wmemmove", "header":"wchar.h"},
{"ident":"wmemmove", "header":"wchar.h", "notes":[{"safer-alts":["wmemmove_s"]}]},
{"ident":"wmemmove_s", "header":"wchar.h"},
{"ident":"wmemset", "header":"wchar.h"},
{"ident":"wprintf", "header":"wchar.h", "notes":["variadic"]},
{"ident":"wprintf", "header":"wchar.h", "notes":["variadic", {"safer-alts":["wprintf_s"]}]},
{"ident":"wprintf_s", "header":"wchar.h", "notes":["variadic"]},
{"ident":"wscanf", "header":"wchar.h", "notes":["variadic"]},
{"ident":"wscanf", "header":"wchar.h", "notes":["variadic", {"safer-alts":["wscanf_s", "sscanf_s"]}]},
{"ident":"wscanf_s", "header":"wchar.h", "notes":["variadic"]}
]
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment