
...
A call to ZeroMemory()
may be optimized out in a similar manner to a call to memset()
.
Compliant
...
Solution (Windows)
This compliant solution uses a SecureZeroMemory()
function provided by many versions of the Microsoft Visual Studio compiler. The documentation for the SecureZeroMemory()
function guarantees that the compiler does not optimize out this call when zeroing memory.
Code Block | ||||
---|---|---|---|---|
| ||||
void getPassword(void) { char pwd[64]; if (retrievePassword(pwd, sizeof(pwd))) { /* Checking of password, secure operations, etc. */ } SecureZeroMemory(pwd, sizeof(pwd)); } |
Compliant Solution (Windows)
The #pragma
directives in this compliant solution instruct the compiler to avoid optimizing the enclosed code. This #pragma
directive is supported on some versions of Microsoft Visual Studio and could be supported on other compilers. Check compiler documentation to ensure its availability and its optimization guarantees.
...
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
...