mirror of
https://github.com/github/codeql.git
synced 2025-12-21 19:26:31 +01:00
77 lines
1.3 KiB
C++
77 lines
1.3 KiB
C++
int getAnInt();
|
|
|
|
bool cond();
|
|
|
|
void test(unsigned x, unsigned y, bool unknown) {
|
|
if(x - y > 0) { } // BAD
|
|
|
|
unsigned total = getAnInt();
|
|
unsigned limit = getAnInt();
|
|
while(limit - total > 0) { // BAD
|
|
total += getAnInt();
|
|
}
|
|
|
|
if(total <= limit) {
|
|
while(limit - total > 0) { // GOOD [FALSE POSITIVE]
|
|
total += getAnInt();
|
|
if(total > limit) break;
|
|
}
|
|
}
|
|
|
|
if(x >= y) {
|
|
bool b = x - y > 0; // GOOD
|
|
}
|
|
|
|
if((int)(x - y) >= 0) { } // GOOD. Maybe an overflow happened, but the result is converted to the "likely intended" result before the comparison
|
|
|
|
if(unknown) {
|
|
y = x & 0xFF;
|
|
} else {
|
|
y = x;
|
|
}
|
|
bool b1 = x - y > 0; // GOOD [FALSE POSITIVE]
|
|
|
|
x = getAnInt();
|
|
y = getAnInt();
|
|
if(y > x) {
|
|
y = x - 1;
|
|
}
|
|
bool b2 = x - y > 0; // GOOD [FALSE POSITIVE]
|
|
|
|
int N = getAnInt();
|
|
y = x;
|
|
while(cond()) {
|
|
if(unknown) { y--; }
|
|
}
|
|
|
|
if(x - y > 0) { } // GOOD [FALSE POSITIVE]
|
|
|
|
x = y;
|
|
while(cond()) {
|
|
if(unknown) break;
|
|
y--;
|
|
}
|
|
|
|
if(x - y > 0) { } // GOOD [FALSE POSITIVE]
|
|
|
|
y = 0;
|
|
for(int i = 0; i < x; ++i) {
|
|
if(unknown) { ++y; }
|
|
}
|
|
|
|
if(x - y > 0) { } // GOOD [FALSE POSITIVE]
|
|
|
|
x = y;
|
|
while(cond()) {
|
|
if(unknown) { x++; }
|
|
}
|
|
|
|
if(x - y > 0) { } // GOOD [FALSE POSITIVE]
|
|
|
|
int n = getAnInt();
|
|
if (n > x - y) { n = x - y; }
|
|
if (n > 0) {
|
|
y += n; // NOTE: `n` is at most `x - y` at this point.
|
|
if (x - y > 0) {} // GOOD [FALSE POSITIVE]
|
|
}
|
|
} |