...
Code Block | ||
---|---|---|
| ||
void foo(const int * x) { if (x != NULL) { printf(""Value is %d\n"", *x); } /* ... */ } |
Noncompliant Code Example
...
Code Block | ||
---|---|---|
| ||
char *strcat_nc(char *s1, char *s2); char *str1 = "str1""str1"; const char *str2 = "str2";"str2"; char str3[9] = "str3";"str3"; const char str4[9] = "str4""str4"; strcat_nc(str3, str2); /* Compiler warns that str2 is const */ strcat_nc(str1, str3); /* Attempts to overwrite string literal! */ strcat_nc(str4, str3); /* Compiler warns that str4 is const */ |
...
Code Block | ||
---|---|---|
| ||
char *strcat(char *s1, const char *s2); char *str1 = "str1";"str1"; const char *str2 = "str2";"str2"; char str3[9] = "str3""str3"; const char str4[9] = "str4";"str4"; strcat(str3, str2); /* Args reversed to prevent overwriting string literal */ strcat(str3, str1); strcat(str4, str3); /* Compiler warns that str4 is const */ |
...
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
Other Languages
This rule appears in the C++ Secure Coding Standard as DCL13-CPP. Declare function parameters that are pointers to values not changed by the function as const.
References
Wiki Markup |
---|
\[[ISO/IEC 9899:1999|AA. C References#ISO/IEC 9899-1999]\] \[[ISO/IEC PDTR 24772|AA. C References#ISO/IEC PDTR 24772]\] ""CSJ Passing parameters and return values"" |
...
02. Declarations and Initialization (DCL) DCL14-C. Do not make assumptions about the order of global variable initialization across translation units