...
| Code Block | ||
|---|---|---|
| ||
static_assert(
CHAR_BIT * sizeof(unsigned long long) >=
CHAR_BIT * sizeof(size_t) + 4,
"Unable to detect wrapping after multiplication"
);
void* AllocBlocks(size_t cBlocks) {
if (cBlocks == 0) return NULL;
unsigned long long alloc = (unsigned long long)cBlocks * 16;
return (alloc < UINT_MAX) ? malloc(cBlocks * 16) : NULL;
}
|
...
Fortify SCA Version 5.0 with CERT C Rule Pack can detect violations of this rule.
Compass/ROSE can detect violations of this rule. It should look for patterns of (a op1 b) op2 c where:
- c has a bigger type than a or b
- Neither a nor b are typecast to c's type
- op2 is assignment or comparison.
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
...