mirror of
https://github.com/github/codeql.git
synced 2026-05-05 05:35:13 +02:00
C++: Add tests to expose potential improvements available to SimpleRangeAnalysis
This commit is contained in:
@@ -594,6 +594,9 @@
|
||||
| test.c:659:9:659:9 | u | 0 |
|
||||
| test.c:664:12:664:12 | s | -2147483648 |
|
||||
| test.c:665:7:665:8 | s2 | -4 |
|
||||
| test.c:670:7:670:7 | x | -2147483648 |
|
||||
| test.c:671:9:671:9 | y | -2147483648 |
|
||||
| test.c:675:7:675:7 | y | -2147483648 |
|
||||
| test.cpp:10:7:10:7 | b | -2147483648 |
|
||||
| test.cpp:11:5:11:5 | x | -2147483648 |
|
||||
| test.cpp:13:10:13:10 | x | -2147483648 |
|
||||
@@ -647,16 +650,18 @@
|
||||
| test.cpp:97:10:97:10 | i | -2147483648 |
|
||||
| test.cpp:97:22:97:22 | i | -2147483648 |
|
||||
| test.cpp:98:5:98:5 | i | -2147483648 |
|
||||
| test.cpp:105:7:105:7 | n | -32768 |
|
||||
| test.cpp:108:7:108:7 | n | 0 |
|
||||
| test.cpp:109:5:109:5 | n | 1 |
|
||||
| test.cpp:111:5:111:5 | n | 0 |
|
||||
| test.cpp:114:8:114:8 | n | 0 |
|
||||
| test.cpp:115:5:115:5 | n | 0 |
|
||||
| test.cpp:117:5:117:5 | n | 1 |
|
||||
| test.cpp:120:3:120:3 | n | 0 |
|
||||
| test.cpp:120:8:120:8 | n | 1 |
|
||||
| test.cpp:120:12:120:12 | n | 0 |
|
||||
| test.cpp:121:4:121:4 | n | 0 |
|
||||
| test.cpp:121:8:121:8 | n | 0 |
|
||||
| test.cpp:121:12:121:12 | n | 1 |
|
||||
| test.cpp:98:9:98:9 | i | -2147483648 |
|
||||
| test.cpp:99:5:99:5 | i | -2147483648 |
|
||||
| test.cpp:106:7:106:7 | n | -32768 |
|
||||
| test.cpp:109:7:109:7 | n | 0 |
|
||||
| test.cpp:110:5:110:5 | n | 1 |
|
||||
| test.cpp:112:5:112:5 | n | 0 |
|
||||
| test.cpp:115:8:115:8 | n | 0 |
|
||||
| test.cpp:116:5:116:5 | n | 0 |
|
||||
| test.cpp:118:5:118:5 | n | 1 |
|
||||
| test.cpp:121:3:121:3 | n | 0 |
|
||||
| test.cpp:121:8:121:8 | n | 1 |
|
||||
| test.cpp:121:12:121:12 | n | 0 |
|
||||
| test.cpp:122:4:122:4 | n | 0 |
|
||||
| test.cpp:122:8:122:8 | n | 0 |
|
||||
| test.cpp:122:12:122:12 | n | 1 |
|
||||
|
||||
@@ -15,5 +15,5 @@
|
||||
| test.c:394:20:394:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 |
|
||||
| test.c:606:5:606:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 |
|
||||
| test.c:607:5:607:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 |
|
||||
| test.cpp:120:3:120:12 | ... ? ... : ... | 0.0 | 1.0 | 0.0 |
|
||||
| test.cpp:121:3:121:12 | ... ? ... : ... | 0.0 | 0.0 | 1.0 |
|
||||
| test.cpp:121:3:121:12 | ... ? ... : ... | 0.0 | 1.0 | 0.0 |
|
||||
| test.cpp:122:3:122:12 | ... ? ... : ... | 0.0 | 0.0 | 1.0 |
|
||||
|
||||
@@ -15,5 +15,5 @@
|
||||
| test.c:394:20:394:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 |
|
||||
| test.c:606:5:606:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 |
|
||||
| test.c:607:5:607:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 |
|
||||
| test.cpp:120:3:120:12 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 |
|
||||
| test.cpp:121:3:121:12 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 |
|
||||
| test.cpp:121:3:121:12 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 |
|
||||
| test.cpp:122:3:122:12 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 |
|
||||
|
||||
@@ -664,3 +664,18 @@ void test_mod(int s) {
|
||||
int s2 = s % 5;
|
||||
out(s2); // -4 .. 4
|
||||
}
|
||||
|
||||
void exit(int);
|
||||
void guard_with_exit(int x, int y) {
|
||||
if (x) {
|
||||
if (y != 0) {
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
out(y); // ..
|
||||
|
||||
// This test ensures that we correctly identify
|
||||
// that the upper bound for y is max_int when calling `out(y)`.
|
||||
// The RangeSsa will place guardPhy on `out(y)`, and consequently there is no
|
||||
// frontier phi node at out(y).
|
||||
}
|
||||
|
||||
@@ -95,6 +95,7 @@ int ref_to_number(int &i, const int &ci, int &aliased) {
|
||||
return alias;
|
||||
|
||||
for (; i <= 12345; i++) { // test that widening works for references
|
||||
i = i;
|
||||
i;
|
||||
}
|
||||
|
||||
|
||||
@@ -594,6 +594,9 @@
|
||||
| test.c:659:9:659:9 | u | 4294967295 |
|
||||
| test.c:664:12:664:12 | s | 2147483647 |
|
||||
| test.c:665:7:665:8 | s2 | 4 |
|
||||
| test.c:670:7:670:7 | x | 2147483647 |
|
||||
| test.c:671:9:671:9 | y | 2147483647 |
|
||||
| test.c:675:7:675:7 | y | 2147483647 |
|
||||
| test.cpp:10:7:10:7 | b | 2147483647 |
|
||||
| test.cpp:11:5:11:5 | x | 2147483647 |
|
||||
| test.cpp:13:10:13:10 | x | 2147483647 |
|
||||
@@ -646,17 +649,19 @@
|
||||
| test.cpp:95:12:95:16 | alias | 2147483647 |
|
||||
| test.cpp:97:10:97:10 | i | 65535 |
|
||||
| test.cpp:97:22:97:22 | i | 32767 |
|
||||
| test.cpp:98:5:98:5 | i | 32767 |
|
||||
| test.cpp:105:7:105:7 | n | 32767 |
|
||||
| test.cpp:108:7:108:7 | n | 32767 |
|
||||
| test.cpp:109:5:109:5 | n | 32767 |
|
||||
| test.cpp:111:5:111:5 | n | 0 |
|
||||
| test.cpp:114:8:114:8 | n | 32767 |
|
||||
| test.cpp:115:5:115:5 | n | 0 |
|
||||
| test.cpp:117:5:117:5 | n | 32767 |
|
||||
| test.cpp:120:3:120:3 | n | 32767 |
|
||||
| test.cpp:120:8:120:8 | n | 32767 |
|
||||
| test.cpp:120:12:120:12 | n | 0 |
|
||||
| test.cpp:121:4:121:4 | n | 32767 |
|
||||
| test.cpp:121:8:121:8 | n | 0 |
|
||||
| test.cpp:121:12:121:12 | n | 32767 |
|
||||
| test.cpp:98:5:98:5 | i | 2147483647 |
|
||||
| test.cpp:98:9:98:9 | i | 32767 |
|
||||
| test.cpp:99:5:99:5 | i | 32767 |
|
||||
| test.cpp:106:7:106:7 | n | 32767 |
|
||||
| test.cpp:109:7:109:7 | n | 32767 |
|
||||
| test.cpp:110:5:110:5 | n | 32767 |
|
||||
| test.cpp:112:5:112:5 | n | 0 |
|
||||
| test.cpp:115:8:115:8 | n | 32767 |
|
||||
| test.cpp:116:5:116:5 | n | 0 |
|
||||
| test.cpp:118:5:118:5 | n | 32767 |
|
||||
| test.cpp:121:3:121:3 | n | 32767 |
|
||||
| test.cpp:121:8:121:8 | n | 32767 |
|
||||
| test.cpp:121:12:121:12 | n | 0 |
|
||||
| test.cpp:122:4:122:4 | n | 32767 |
|
||||
| test.cpp:122:8:122:8 | n | 0 |
|
||||
| test.cpp:122:12:122:12 | n | 32767 |
|
||||
|
||||
@@ -14,3 +14,4 @@
|
||||
| test.cpp:24:27:24:27 | 4 | Potential buffer-overflow: 'buffer1' has size 3 not 4. |
|
||||
| test.cpp:26:27:26:27 | 4 | Potential buffer-overflow: 'buffer2' has size 3 not 4. |
|
||||
| test.cpp:40:22:40:27 | amount | Potential buffer-overflow: 'buffer' has size 100 not 101. |
|
||||
| test.cpp:55:13:55:21 | access to array | Potential buffer-overflow: counter 'i' <= 9 but 'buffer' has 5 elements. |
|
||||
|
||||
@@ -46,3 +46,13 @@ void f2(char *src)
|
||||
ptr = &(buffer[1]);
|
||||
memcpy(ptr, src, 100); // BAD [NOT DETECTED]
|
||||
}
|
||||
|
||||
void f3() {
|
||||
int i;
|
||||
char buffer[5];
|
||||
for (i=0; i<10; i++) {
|
||||
if (i < 5) {
|
||||
buffer[i] = 0; // GOOD [FALSE POSITIVE]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ int twoReasons(int a, int b) {
|
||||
if (a <= 0 && b > 5) {
|
||||
return a < b;
|
||||
}
|
||||
if (a <= 100 && b > 105) {
|
||||
if (a <= 100 && b > 105) { // BUG [Not detected - this clause is always false]
|
||||
return a > b;
|
||||
}
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user