зеркало из https://github.com/github/codeql.git
C++: Add more CWE-119 testcases with compound assignments instead of increments.
This commit is contained in:
Родитель
60204574b6
Коммит
ce28c9b485
|
@ -47,6 +47,9 @@
|
||||||
| tests.cpp:546:6:546:10 | call to fread | This 'fread' operation may access 400 bytes but the $@ is only 100 bytes. | tests.cpp:532:7:532:16 | charBuffer | destination buffer |
|
| tests.cpp:546:6:546:10 | call to fread | This 'fread' operation may access 400 bytes but the $@ is only 100 bytes. | tests.cpp:532:7:532:16 | charBuffer | destination buffer |
|
||||||
| tests.cpp:569:6:569:15 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:565:7:565:12 | buffer | array |
|
| tests.cpp:569:6:569:15 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:565:7:565:12 | buffer | array |
|
||||||
| tests.cpp:577:7:577:13 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:565:7:565:12 | buffer | array |
|
| tests.cpp:577:7:577:13 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:565:7:565:12 | buffer | array |
|
||||||
|
| tests.cpp:637:6:637:15 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:633:7:633:12 | buffer | array |
|
||||||
|
| tests.cpp:645:7:645:13 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:633:7:633:12 | buffer | array |
|
||||||
|
| tests.cpp:654:6:654:12 | access to array | This array indexing operation accesses a negative index -1 on the $@. | tests.cpp:633:7:633:12 | buffer | array |
|
||||||
| tests_restrict.c:12:2:12:7 | call to memcpy | This 'memcpy' operation accesses 2 bytes but the $@ is only 1 byte. | tests_restrict.c:7:6:7:13 | smallbuf | source buffer |
|
| tests_restrict.c:12:2:12:7 | call to memcpy | This 'memcpy' operation accesses 2 bytes but the $@ is only 1 byte. | tests_restrict.c:7:6:7:13 | smallbuf | source buffer |
|
||||||
| unions.cpp:26:2:26:7 | call to memset | This 'memset' operation accesses 200 bytes but the $@ is only 100 bytes. | unions.cpp:21:10:21:11 | mu | destination buffer |
|
| unions.cpp:26:2:26:7 | call to memset | This 'memset' operation accesses 200 bytes but the $@ is only 100 bytes. | unions.cpp:21:10:21:11 | mu | destination buffer |
|
||||||
| unions.cpp:30:2:30:7 | call to memset | This 'memset' operation accesses 200 bytes but the $@ is only 100 bytes. | unions.cpp:15:7:15:11 | small | destination buffer |
|
| unions.cpp:30:2:30:7 | call to memset | This 'memset' operation accesses 200 bytes but the $@ is only 100 bytes. | unions.cpp:15:7:15:11 | small | destination buffer |
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
edges
|
edges
|
||||||
| main.cpp:6:27:6:30 | argv indirection | main.cpp:10:20:10:23 | argv indirection |
|
| main.cpp:6:27:6:30 | argv indirection | main.cpp:10:20:10:23 | argv indirection |
|
||||||
| main.cpp:10:20:10:23 | argv indirection | tests.cpp:631:32:631:35 | argv indirection |
|
| main.cpp:10:20:10:23 | argv indirection | tests.cpp:657:32:657:35 | argv indirection |
|
||||||
| tests.cpp:613:19:613:24 | source indirection | tests.cpp:615:17:615:22 | source indirection |
|
| tests.cpp:613:19:613:24 | source indirection | tests.cpp:615:17:615:22 | source indirection |
|
||||||
| tests.cpp:622:19:622:24 | source indirection | tests.cpp:625:2:625:16 | ... = ... indirection |
|
| tests.cpp:622:19:622:24 | source indirection | tests.cpp:625:2:625:16 | ... = ... indirection |
|
||||||
| tests.cpp:625:2:625:16 | ... = ... indirection | tests.cpp:625:4:625:7 | s indirection [post update] [home indirection] |
|
| tests.cpp:625:2:625:16 | ... = ... indirection | tests.cpp:625:4:625:7 | s indirection [post update] [home indirection] |
|
||||||
|
@ -8,10 +8,10 @@ edges
|
||||||
| tests.cpp:628:14:628:14 | s indirection [home indirection] | tests.cpp:628:14:628:19 | home indirection |
|
| tests.cpp:628:14:628:14 | s indirection [home indirection] | tests.cpp:628:14:628:19 | home indirection |
|
||||||
| tests.cpp:628:14:628:14 | s indirection [home indirection] | tests.cpp:628:16:628:19 | home indirection |
|
| tests.cpp:628:14:628:14 | s indirection [home indirection] | tests.cpp:628:16:628:19 | home indirection |
|
||||||
| tests.cpp:628:16:628:19 | home indirection | tests.cpp:628:14:628:19 | home indirection |
|
| tests.cpp:628:16:628:19 | home indirection | tests.cpp:628:14:628:19 | home indirection |
|
||||||
| tests.cpp:631:32:631:35 | argv indirection | tests.cpp:656:9:656:15 | access to array indirection |
|
| tests.cpp:657:32:657:35 | argv indirection | tests.cpp:682:9:682:15 | access to array indirection |
|
||||||
| tests.cpp:631:32:631:35 | argv indirection | tests.cpp:657:9:657:15 | access to array indirection |
|
| tests.cpp:657:32:657:35 | argv indirection | tests.cpp:683:9:683:15 | access to array indirection |
|
||||||
| tests.cpp:656:9:656:15 | access to array indirection | tests.cpp:613:19:613:24 | source indirection |
|
| tests.cpp:682:9:682:15 | access to array indirection | tests.cpp:613:19:613:24 | source indirection |
|
||||||
| tests.cpp:657:9:657:15 | access to array indirection | tests.cpp:622:19:622:24 | source indirection |
|
| tests.cpp:683:9:683:15 | access to array indirection | tests.cpp:622:19:622:24 | source indirection |
|
||||||
nodes
|
nodes
|
||||||
| main.cpp:6:27:6:30 | argv indirection | semmle.label | argv indirection |
|
| main.cpp:6:27:6:30 | argv indirection | semmle.label | argv indirection |
|
||||||
| main.cpp:10:20:10:23 | argv indirection | semmle.label | argv indirection |
|
| main.cpp:10:20:10:23 | argv indirection | semmle.label | argv indirection |
|
||||||
|
@ -23,9 +23,9 @@ nodes
|
||||||
| tests.cpp:628:14:628:14 | s indirection [home indirection] | semmle.label | s indirection [home indirection] |
|
| tests.cpp:628:14:628:14 | s indirection [home indirection] | semmle.label | s indirection [home indirection] |
|
||||||
| tests.cpp:628:14:628:19 | home indirection | semmle.label | home indirection |
|
| tests.cpp:628:14:628:19 | home indirection | semmle.label | home indirection |
|
||||||
| tests.cpp:628:16:628:19 | home indirection | semmle.label | home indirection |
|
| tests.cpp:628:16:628:19 | home indirection | semmle.label | home indirection |
|
||||||
| tests.cpp:631:32:631:35 | argv indirection | semmle.label | argv indirection |
|
| tests.cpp:657:32:657:35 | argv indirection | semmle.label | argv indirection |
|
||||||
| tests.cpp:656:9:656:15 | access to array indirection | semmle.label | access to array indirection |
|
| tests.cpp:682:9:682:15 | access to array indirection | semmle.label | access to array indirection |
|
||||||
| tests.cpp:657:9:657:15 | access to array indirection | semmle.label | access to array indirection |
|
| tests.cpp:683:9:683:15 | access to array indirection | semmle.label | access to array indirection |
|
||||||
subpaths
|
subpaths
|
||||||
#select
|
#select
|
||||||
| tests.cpp:615:2:615:7 | call to strcpy | main.cpp:6:27:6:30 | argv indirection | tests.cpp:615:17:615:22 | source indirection | This 'call to strcpy' with input from $@ may overflow the destination. | main.cpp:6:27:6:30 | argv indirection | a command-line argument |
|
| tests.cpp:615:2:615:7 | call to strcpy | main.cpp:6:27:6:30 | argv indirection | tests.cpp:615:17:615:22 | source indirection | This 'call to strcpy' with input from $@ may overflow the destination. | main.cpp:6:27:6:30 | argv indirection | a command-line argument |
|
||||||
|
|
|
@ -628,6 +628,32 @@ void test25(char* source) {
|
||||||
strcpy(buf, s.home); // BAD
|
strcpy(buf, s.home); // BAD
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void test26(bool cond)
|
||||||
|
{
|
||||||
|
char buffer[100];
|
||||||
|
char *ptr;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (buffer[-1] == 0) { return; } // BAD: accesses buffer[-1]
|
||||||
|
|
||||||
|
ptr = buffer;
|
||||||
|
if (cond)
|
||||||
|
{
|
||||||
|
ptr += 1;
|
||||||
|
if (ptr[-1] == 0) { return; } // GOOD: accesses buffer[0]
|
||||||
|
} else {
|
||||||
|
if (ptr[-1] == 0) { return; } // BAD: accesses buffer[-1]
|
||||||
|
}
|
||||||
|
if (ptr[-1] == 0) { return; } // BAD: accesses buffer[-1] or buffer[0] [NOT DETECTED]
|
||||||
|
|
||||||
|
ptr = buffer;
|
||||||
|
for (i = 0; i < 2; i++)
|
||||||
|
{
|
||||||
|
ptr += 1;
|
||||||
|
}
|
||||||
|
if (ptr[-1] == 0) { return; } // GOOD: accesses buffer[1] [FALSE POSITIVE]
|
||||||
|
}
|
||||||
|
|
||||||
int tests_main(int argc, char *argv[])
|
int tests_main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
long long arr17[19];
|
long long arr17[19];
|
||||||
|
|
Загрузка…
Ссылка в новой задаче