STRONG.TYPE.ASSIGN
Assignment of different strong types
The STRONG.TYPE family of checkers detects situations in which programmer-enforced strong typing (type-defined abstract types) is broken or ignored, allowing the underlying ANSI type semantics to dominate.
The STRONG.TYPE.ASSIGN checker looks for assignments in which strong types don't match.
Vulnerability and risk
A compiler following the ANSI standard won't report a warning for this sort of issue, as it checks only the underlying types, not the surface, or programmer-defined, types. As a result, it's possible that a logic error can occur.
Vulnerable code example
Copy
typedef int Weight;
typedef int Speed;
int main() {
Weight w;
Speed s;
w = s;
return 0;
}
Klocwork flags line 7, indicating that there is an assignment to a variable of strong type Weight from a variable of a different strong type, Speed.