...
Unlike passed-by-value arguments and pointers, pointed-to values are a concern. A function may modify a value referenced by a pointer argument, leading to a side effect that persists even after the function exits. Modification of the pointed-to value is not diagnosed by the compiler, which assumes this behavior was intended.
...
The const
-qualification of the second argument, s2
, eliminates the spurious warning in the initial invocation but maintains the valid warning on the final invocation in which a const
-qualified object is passed as the first argument (which can change). Finally, the middle strcat()
invocation is now valid because c_str3
is a valid destination string and may be safely modified.
Risk Assessment
Not declaring Failing to declare an unchanging value const
prohibits the function from working with values already cast as const
. This problem can be sidestepped by type casting away the const
, but doing so violates EXP05-C. Do not cast away a const qualification.
...
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
...