You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Next »

Compile code using the highest warning level available for your compiler and eliminate warnings by modifying the code.

According to C99 Section 5.1.1.3:

A conforming implementation shall produce at least one diagnostic message (identified in an implementation-defined manner) if a preprocessing translation unit or translation unit contains a violation of any syntax rule or constraint, even if the behavior is also explicitly specified as undefined or implementation-defined. Diagnostic messages need not be produced in other circumstances.

Assuming a comforming implementation, eliminating diagnostic messages will eliminate any violation of syntax rules or other constraints.

Exceptions

Compilers can produces diagnostic messages for correct code. This is permitted by C99 which allows a compiler to produce a diagnostic for any reason it wants. It is often preferable to rewrite code to eliminate compiler warnings, but in if the code is correct it is sufficient to provide a comment explaining why the warning message does not apply.

Risk Assessment

Eliminating violations of syntax rules and other constraints can eliminate serious software vulnerabilities that can lead to the execution of arbitrary code with the permissions of the vulnerable process.

Rule

Severity

Likelihood

Remediation Cost

Priority

Level

MSC00-A

3 (high)

2 (probable)

2 (medium)

P12

L1

References

[[Sutter 05]] Item 1
[[ISO/IEC 9899-1999]] Section 5.1.1.3 Diagnostics
[[Seacord 05]] Chapter 8 Recommended Practices

  • No labels