Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Do not reuse standard header file names, system-specific header file names, or other header file names.

Noncompliant Code Example

In this NCE, the programmer chooses to use a local version of the standard library but does not make the change clear.

Code Block
bgColor#ffcccc
#include "stdio.h"  /* confusing, distinct from <stdio.h> */

/* ... */

Compliant Solution

The solution addresses the problem by giving the local library a unique name (as per PRE08-C. Guarantee that header file names are unique), which makes it explicit that the library used is not the original.

Code Block
bgColor#ccccff
/* Using a local version of stdio.h */ 
#include "mystdio.h"

/* ... */

Risk Assessment

Using header names that conflict with the C standard library functions can result in not including the intended file.

Recommendation

Severity

Likelihood

Remediation Cost

Priority

Level

PRE04-C

low

unlikely

medium

P2

L3

Automated Detection

The LDRA tool suite V 7.6.0 can detect violations of this recommendation.

Related Vulnerabilities

Search for vulnerabilities resulting from the violation of this rule on the CERT website.

References

Wiki Markup
\[[ISO/IEC 9899:1999|AA. C References#ISO/IEC 9899-1999]\] Section 7.1.2, "Standard Headers"

...