...
Code Block | ||||
---|---|---|---|---|
| ||||
char *improved_strncpy(char * restrict s1, size_t s1count, const char * restrict s2, size_t s2count, size_t n); char *improved_strncat(char * restrict s1, size_t s1count, const char * restrict s2, size_t s2count, size_t n); |
...
There are two notable differences between the compliant solution and the secure versions from Annex K. First, the Annex K versions use rsize_t
instead of size_t
, which allows the size to be compared against the reasonable limit for a single object, RSIZE_MAX
. Second, the Annex K versions do not require an element count for the second array. Consequently, these functions have limited ability to validate the input for s2
. However, a size value for s1
is required, so memory outside of the range for s1
should not be overwritten.
Exceptions
API02-C-EX1: Functions that can guarantee via their runtime-constraint handlers that no out-of-bounds read or write occurs may omit the maximum-elements argument. For instance, the s2
parameter to strcat_s()
needs no max
parameter.
...
Failure to follow this recommendation can result in improper memory accesses and buffer overflows that are detrimental to the correct and continued execution of the program.
Rule | Severity | Likelihood | Remediation Cost | Priority | Level |
---|---|---|---|---|---|
API02-C | High | Likely | High | P9 | L2 |
Automated Detection
Tool | Version | Checker | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
CodeSonar |
| BADFUNC.BO.* | A collection of checks that report uses of library functions prone to internal buffer overflows. | ||||||
Parasoft C/C++test |
| CERT_C-API02-a | Avoid using unsafe string functions which may cause buffer overflows |
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
Related Guidelines
Key here (explains table format and definitions)
Bibliography
[ISO/IEC 9899:2011] | Annex K (normative) Bounds-checking Interfaces |
...