 
                            ...
| Recommendation | Severity | Likelihood | Detectable | Repairable | Priority | Level | 
|---|---|---|---|---|---|---|
| ERR34-C | Medium | Unlikely | Yes | Yes | P6 | L2 | 
Automated Detection
| Tool | Version | Checker | Description | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Astrée | 
 | bad-function-use | Partially checked | ||||||
| Axivion Bauhaus Suite | 
 | CertC-ERR34 | |||||||
| Clang | 
 | cert-err34-c | Checked by clang-tidy | ||||||
| CodeSonar | 
 | BADFUNC.ATOF (customization) | Use of atof Users can add custom checks for uses of other undesirable conversion functions. | ||||||
| Compass/ROSE | Can detect violations of this recommendation by flagging invocations of the following functions: 
 | ||||||||
| Helix QAC | 
 | C5030 C++5016 | |||||||
| Klocwork | 
 | CERT.ERR.CONV.STR_TO_NUM | |||||||
| LDRA tool suite | 
 | 44 S | Fully implemented | ||||||
| Parasoft C/C++test | 
 | CERT_C-ERR34-a | The 'atof', 'atoi', 'atol' and 'atoll' functions from the 'stdlib.h' or 'cstdlib' library should not be used | ||||||
| PC-lint Plus | 
 | 586 | Assistance provided | ||||||
| 
 | CERT C: Rule ERR34-C | Checks for unsafe conversion from string to numeric value (rule fully covered) | |||||||
| RuleChecker | 
 | bad-function-use scanf-string-to-number | Partially checked | ||||||
| SonarQube C/C++ Plugin | 
 | S989 | 
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
...
CWE-391 = Union( ERR34-C, list) where list =
- Failure to errors outside of string-to-number conversion functions
CWE-676 and ERR34-C
- Independent( ENV33-C, CON33-C, STR31-C, EXP33-C, MSC30-C, ERR34-C)
- ERR34-C implies that string-parsing functions (eg atoi() and scanf()) are dangerous.
- CWE-676 = Union( ERR34-C, list) where list =
- Invocation of dangerous functions besides the following:
- atoi(), atol(), atoll(), atof(), The scanf()family
CWE-758 and ERR34-C
Independent( INT34-C, INT36-C, MSC37-C, FLP32-C, EXP33-C, EXP30-C, ERR34-C, ARR32-C)
Intersection( CWE-758, ERR34-C) =
- Undefined behavior arising from a non-representable numeric value being parsed by an ato*() or scanf() function
CWE-758 – ERR34-C =
- Undefined behavior arising from using a function outside of the ato*() or scanf() family
ERR34-C – CWE-758 =
- The ato*() or scanf() family receives input that is not a number when trying to parse one
Bibliography
| [ISO/IEC 9899:2024] | Subclause 7.24.1, "Numeric conversion functions" | 
| [Klein 2002] | 
...