mirror of
https://github.com/github/codeql.git
synced 2025-12-17 09:13:20 +01:00
52 lines
1.1 KiB
C++
52 lines
1.1 KiB
C++
void sink(void *o);
|
|
void *user_input(void);
|
|
|
|
void local_array() {
|
|
void *arr[10] = { 0 };
|
|
arr[0] = user_input();
|
|
sink(arr[0]); // $ ast,ir
|
|
sink(arr[1]); // $ SPURIOUS: ast,ir
|
|
sink(*arr); // $ ast,ir
|
|
sink(*&arr[0]); // $ ast,ir
|
|
}
|
|
|
|
void local_array_convoluted_assign() {
|
|
void *arr[10] = { 0 };
|
|
*&arr[0] = user_input();
|
|
sink(arr[0]); // $ ast,ir
|
|
sink(arr[1]); // $ SPURIOUS: ast,ir
|
|
}
|
|
|
|
struct inner {
|
|
void *data;
|
|
int unrelated;
|
|
};
|
|
|
|
struct middle {
|
|
inner arr[10];
|
|
inner *ptr;
|
|
};
|
|
|
|
struct outer {
|
|
middle nested;
|
|
middle *indirect;
|
|
};
|
|
|
|
void nested_array_1(outer o) {
|
|
o.nested.arr[1].data = user_input();
|
|
sink(o.nested.arr[1].data); // $ ast,ir
|
|
sink(o.nested.arr[0].data); // $ SPURIOUS: ast,ir
|
|
}
|
|
|
|
void nested_array_2(outer o) {
|
|
o.indirect->arr[1].data = user_input();
|
|
sink(o.indirect->arr[1].data); // $ ast,ir
|
|
sink(o.indirect->arr[0].data); // $ SPURIOUS: ast,ir
|
|
}
|
|
|
|
void nested_array_3(outer o) {
|
|
o.indirect->ptr[1].data = user_input();
|
|
sink(o.indirect->ptr[1].data); // $ ir MISSING: ast
|
|
sink(o.indirect->ptr[0].data); // $ SPURIOUS: ir
|
|
}
|