If a file with the same name as a standard header is placed in the search path for included source files, the behavior is undefined.
These are the The following table from the C Standard, subclause 7.1.2 [ISO/IEC 9899:2011], lists these standard headers:
<complex<ctype<errno<fenv<float<complex.h> | <inttypes.h> | <setjmp.h> |
<iso646<limits<locale<math<setjmp<iso646.h> | <signal.h> | <stddef.h> | <string.h> |
<stdarg<stdbool<stddef<stdio<stdlib<string<tgmath<time<wchar<wctype Do not reuse standard header file names, system-specific header file names, or other header file names.
...
Noncompliant Code Example
In this NCCE noncompliant code example, the programmer chooses to use a local version of the standard library , but does not make the change clear.:
Code Block |
---|
bgColor | #FFcccc |
---|
lang | #ffccccc |
---|
|
#include "stdio.h" /* Confusing, distinct from <stdio.h> */
/* ... */
|
Compliant Solution
Wiki Markup |
The solution addresses the problem by giving the local library a unique name (as per \[[PRE08-AC. Guarantee that header filenames file names are unique]\]) , which makes it explicit apparent that the library used is not the original.:
Code Block |
---|
bgColor | #ccccFF | #ccccff |
---|
lang | c |
---|
|
/* Using a local version of stdio.h */
#include "mystdio.h"
/* ... */
|
Risk Assessment
Using header file names that conflict with the C standard library functions other header file names can result in not including the intended filean incorrect file being included.
Recommendation | Severity | Likelihood | Remediation Cost | Priority | Level |
---|
PRE04- |
A 1 (low) | 1 (unlikely) | 3 (low) | P3 Automated Detection
...
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
References
...
Related Guidelines
Bibliography
...
...
...
...
PRE03-A. Prefer typedefs to defines for encoding types 01. Preprocessor (PRE) PRE05-A. Understand macro replacement when concatenating tokens or performing stringificationImage Added Image Added Image Added