 
                            ...
| Obsolescent  | Recommended  | 
|---|---|
| bsearch() | bsearch_s() | 
| fprintf() | fprintf_s() | 
| fscanf() | fscanf_s() | 
| fwprintf() | fwprintf_s() | 
| fwscanf() | fwscanf_s() | 
| getenv() | getenv_s() | 
| gmtime() | gmtime_s() | 
| localtime() | localtime_s() | 
| mbsrtowcs() | mbsrtowcs_s() | 
| mbstowcs() | mbstowcs_s() | 
| memcpy() | memcpy_s() | 
| memmove() | memmove_s() | 
| printf() | printf_s() | 
| qsort() | qsort_s() | 
| scanf() | scanf_s() | 
| snprintf() | snprintf_s() | 
| sprintf() | sprintf_s() | 
| sscanf() | sscanf_s() | 
| strcat() | strcat_s() | 
| strcpy() | strcpy_s() | 
| strerror() | strerror_s() | 
| strlen() | strnlen_s() | 
| strncat() | strncat_s() | 
| strncpy() | strncpy_s() | 
| strtok() | strtok_s() | 
| swprintf() | swprintf_s() | 
| swscanf() | swscanf_s() | 
| vfprintf() | vfprintf_s() | 
| vfscanf() | vfscanf_s() | 
| vfwprintf() | vfwprintf_s() | 
| vfwscanf() | vfwscanf_s() | 
| vprintf() | vprintf_s() | 
| vscanf() | vscanf_s() | 
| vsnprintf() | vsnprintf_s() | 
| vsprintf() | vsprintf_s() | 
| vsscanf() | vsscanf_s() | 
| vswprintf() | vswprintf_s() | 
| vswscanf() | vswscanf_s() | 
| vwprintf() | vwprintf_s() | 
| vwscanf() | vwscanf_s() | 
| wcrtomb() | wcrtomb_s() | 
| wcscat() | wcscat_s() | 
| wcscpy() | wcscpy_s() | 
| wcslen() | wcsnlen_s() | 
| wcsncat() | wcsncat_s() | 
| wcsncpy() | wcsncpy_s() | 
| wcsrtombs() | wcsrtombs_s() | 
| wcstok() | wcstok_s() | 
| wcstombs() | wcstombs_s() | 
| wctomb() | wctomb_s() | 
| wmemcpy() | wmemcpy_s() | 
| wmemmove() | wmemmove_s() | 
| wprintf() | wprintf_s() | 
| wscanf() | wscanf_s() | 
For information on the tmpfile() and tmpfile_s() functions, see FIO21-C. Do not create temporary files in shared directories.
For information on the memset() and memset_s() functions, see MSC06-C. Beware of compiler optimizations.
To remediate invocations of obsolescent functions, an application might use any of the following recommended functions from ISO/IEC TR 24731-2, Extensions to the C Library—Part II: Dynamic Allocation Functions [ISO/IEC TR 24731-2]:
...
The deprecated and obsolescent functions enumerated in this guideline are commonly associated with software vulnerabilities.
| Rule | Severity | Likelihood | Detectable | Remediation CostRepairable | Priority | Level | 
|---|---|---|---|---|---|---|
| MSC24-C | High | Probable | Yes | MediumNo | P12 | L1 | 
Automated Detection
| Tool | Version | Checker | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Astrée | 
 | stdlib-use-ato stdlib-macro-ato stdlib-use-atoll stdlib-macro-atoll | Partially checked | |||||||||
| Axivion Bauhaus Suite | 
 | CertC-MSC24 | Fully implemented | |||||||||
| CodeSonar | 
 | BADFUNC.* (customization) | A number of CodeSonar's "Use of *" checks are for deprecated/obsolescent functions CodeSonar also provides a mechanism for users to create custom checks for uses of specified functions | |||||||||
| 
 | CC2.MSC34 | Fully implemented | ||||||||||
| Helix QAC | 
 | C5039 | ||||||||||
| LDRA tool suite | 
 | 44 S | Fully implemented | |||||||||
| Parasoft C/C++test | 
 | CERT_C-MSC24-a | library functionsThe | and atol from library'atof', 'atoi | shall', 'atol' and 'atoll' functions from the 'stdlib.h | ' or 'cstdlib' library should not be used | ||||||
| PC-lint Plus | 
 | 586 | Fully supported | |||||||||
| Polyspace Bug Finder | 
 | CERT C: Rec. MSC24-C | Checks for use of obsolete standard function (rec. fully covered) | |||||||||
| PVS-Studio | 
 | V513, V2001, V2002 | ||||||||||
| RuleChecker | 
 | stdlib-use-ato stdlib-macro-ato stdlib-use-atoll stdlib-macro-atoll | Partially checked | |||||||||
| Security Reviewer - Static Reviewer | 
 | CuEV | Fully implemented | 
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
...
| CERT C Secure Coding Standard | ERR07-C. Prefer functions that support error checking over equivalent functions that don't | 
| ISO/IEC TR 24772 | Use of Libraries [TRJ] | 
| MISRA C:2012 | Rule 21.3 (required) | 
| MITRE CWE | CWE-20, Insufficient input validation | 
...
| [Apple 2006] | Apple Secure Coding Guide, "Avoiding Race Conditions and Insecure File Operations" | 
| [Burch 2006] | Specifications for Managed Strings, Second Edition | 
| [Drepper 2006] | Section 2.2.1 "Identification When Opening" | 
| [IEEE Std 1003.1:2013] | XSH, System Interfaces, open | 
| ISO/IEC 23360-1:2006 | |
| [ISO/IEC WG14 N1173] | Rationale for TR 24731 Extensions to the C Library Part I: Bounds-checking interfaces | 
| [Klein 2002] | "Bullet Proof Integer Input Using strtol()" | 
| [Linux 2008] | strtok(3) | 
| [Seacord 2013] | Chapter 2, "Strings" Chapter 8, "File I/O" | 
| [Seacord 2005b] | "Managed String Library for C, C/C++" | 
...