Skip to content

Commit 7e4819f

Browse files
Merge pull request #1086 from github/michaelrfairhurst/package-undefined-behavior-ptr-to-member
Michaelrfairhurst/package undefined behavior ptr to member
2 parents c3071fb + 6f940c3 commit 7e4819f

6 files changed

+79
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* @id cpp/misra/non-existent-member-access-undefined-behavior
3+
* @name RULE-4-1-3: Pointer-to-member access of nonexistent member leads to undefined behavior
4+
* @description Using a pointer-to-member expression where the dynamic type of the first operand
5+
* does not contain the member pointed to by the second operand results in undefined
6+
* behavior.
7+
* @kind problem
8+
* @precision very-high
9+
* @problem.severity error
10+
* @tags external/misra/id/rule-4-1-3
11+
* correctness
12+
* scope/system
13+
* external/misra/enforcement/undecidable
14+
* external/misra/obligation/required
15+
*/
16+
17+
import cpp
18+
import codingstandards.cpp.misra
19+
import codingstandards.cpp.rules.accessofnonexistingmemberthroughpointertomember.AccessOfNonExistingMemberThroughPointerToMember
20+
21+
class NonExistentMemberAccessUndefinedBehaviorQuery extends AccessOfNonExistingMemberThroughPointerToMemberSharedQuery
22+
{
23+
NonExistentMemberAccessUndefinedBehaviorQuery() {
24+
this = UndefinedPackage::nonExistentMemberAccessUndefinedBehaviorQuery()
25+
}
26+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
* @id cpp/misra/null-pointer-to-member-access-undefined-behavior
3+
* @name RULE-4-1-3: Null pointer-to-member access leads to undefined behavior
4+
* @description Using a null pointer-to-member value as the second operand in a pointer-to-member
5+
* expression results in undefined behavior.
6+
* @kind path-problem
7+
* @precision high
8+
* @problem.severity error
9+
* @tags external/misra/id/rule-4-1-3
10+
* correctness
11+
* scope/system
12+
* external/misra/enforcement/undecidable
13+
* external/misra/obligation/required
14+
*/
15+
16+
import cpp
17+
import codingstandards.cpp.misra
18+
import codingstandards.cpp.rules.accessofundefinedmemberthroughnullpointer.AccessOfUndefinedMemberThroughNullPointer
19+
20+
class NullPointerToMemberAccessUndefinedBehaviorQuery extends AccessOfUndefinedMemberThroughNullPointerSharedQuery
21+
{
22+
NullPointerToMemberAccessUndefinedBehaviorQuery() {
23+
this = UndefinedPackage::nullPointerToMemberAccessUndefinedBehaviorQuery()
24+
}
25+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
* @id cpp/misra/uninitialized-static-pointer-to-member-undefined-behavior
3+
* @name RULE-4-1-3: Uninitialized static pointer-to-member access leads to undefined behavior
4+
* @description Using an uninitialized static pointer-to-member in a pointer-to-member expression
5+
* results in undefined behavior.
6+
* @kind problem
7+
* @precision very-high
8+
* @problem.severity error
9+
* @tags external/misra/id/rule-4-1-3
10+
* correctness
11+
* scope/system
12+
* external/misra/enforcement/undecidable
13+
* external/misra/obligation/required
14+
*/
15+
16+
import cpp
17+
import codingstandards.cpp.misra
18+
import codingstandards.cpp.rules.accessofundefinedmemberthroughuninitializedstaticpointer.AccessOfUndefinedMemberThroughUninitializedStaticPointer
19+
20+
class UninitializedStaticPointerToMemberUndefinedBehaviorQuery extends AccessOfUndefinedMemberThroughUninitializedStaticPointerSharedQuery
21+
{
22+
UninitializedStaticPointerToMemberUndefinedBehaviorQuery() {
23+
this = UndefinedPackage::uninitializedStaticPointerToMemberUndefinedBehaviorQuery()
24+
}
25+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
cpp/common/test/rules/accessofnonexistingmemberthroughpointertomember/AccessOfNonExistingMemberThroughPointerToMember.ql
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
cpp/common/test/rules/accessofundefinedmemberthroughnullpointer/AccessOfUndefinedMemberThroughNullPointer.ql
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
cpp/common/test/rules/accessofundefinedmemberthroughuninitializedstaticpointer/AccessOfUndefinedMemberThroughUninitializedStaticPointer.ql

0 commit comments

Comments
 (0)