...
This noncompliant code example may pass invalid values to the isspace() function.:
| Code Block | ||||
|---|---|---|---|---|
| ||||
size_t count_preceding_whitespace(const char *s) {
const char *t = s;
/* possibly *t < 0 */
while (*t && isspace(*t)) {
++t;
}
return t - s;
}
|
...
This compliant solution casts the character to unsigned char before passing it as an argument to the isspace() function.:
| Code Block | ||||
|---|---|---|---|---|
| ||||
size_t count_preceding_whitespace(const char *s) {
const char *t = s;
while (*t && isspace((unsigned char)*t)) {
++t;
}
return t - s;
}
|
...
Tool | Version | Checker | Description | ||||||
|---|---|---|---|---|---|---|---|---|---|
Compass/ROSE | Could detect violations of this rule by seeing if the argument to a character-handling function (listed above) is not an | ||||||||
| idb_charplan | Fully implemented. | |||||||
| PRQA QA-C |
| special Special case of STR34 | Fully implemented. |
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
...