结构: Simple
Abstraction: Base
状态: Incomplete
被利用可能性: unkown
The software performs a comparison between two entities, but the comparison examines the wrong factors or characteristics of the entities, which can lead to incorrect results and resultant weaknesses.
A common example of this weakness occurs when the code inadvertently extracts the reference to an object, instead of its relevant contents.
cwe_Nature: ChildOf cwe_CWE_ID: 697 cwe_View_ID: 1000 cwe_Ordinal: Primary
cwe_Nature: ChildOf cwe_CWE_ID: 697 cwe_View_ID: 699 cwe_Ordinal: Primary
Language: {'cwe_Class': 'Language-Independent', 'cwe_Prevalence': 'Undetermined'}
范围 | 影响 | 注释 |
---|---|---|
Other | Varies by Context |
策略:
Thoroughly test the comparison scheme before deploying code into production. Perform positive testing as well as negative testing.
In the example below, two Java String objects are declared and initialized with the same string values and an if statement is used to determine if the strings are equivalent.
bad Java
However, the if statement will not be executed as the strings are compared using the "==" operator. For Java objects, such as String objects, the "==" operator compares object references, not object values. While the two String objects above contain the same string values, they refer to different object references, so the System.out.println statement will not be executed. To compare object values, the previous code could be modified to use the equals method:
good