Commit Graph

85368 Commits

Author SHA1 Message Date
Benjamin Rodes
5b0a3dcdbe Accidental removal of an and. 2024-02-16 10:15:21 -05:00
Benjamin Rodes
95ebbb1bbd Ql alterations for cleanup as part of merge suggestions. 2024-02-16 10:13:50 -05:00
Ben Rodes
1fb7f089ca Update cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql
Co-authored-by: Mathias Vorreiter Pedersen <mathiasvp@github.com>
2024-02-16 10:06:34 -05:00
Jorge
5cb9c21e05 Fetch before push 2024-02-16 16:06:05 +01:00
Alvaro Muñoz
55ff6ff8ee Merge pull request #15 from GitHubSecurityLab/copy-workflow
Add copy workflow
2024-02-16 16:05:08 +01:00
Alvaro Muñoz
7c3503e6c7 fix: remove debug leftovers 2024-02-16 16:03:38 +01:00
Jorge
4e44444d5a Add copy workflow 2024-02-16 16:03:01 +01:00
Alvaro Muñoz
43a55e80a9 feat(model-generator): New qls for modelling composite actions 2024-02-16 16:02:10 +01:00
Alvaro Muñoz
8ae1e26d5d fix(action): qls reference 2024-02-16 15:49:29 +01:00
Ian Lynagh
a5a6020f18 Kotlin 2: Accept changes in library-tests/controlflow/basic
Mostly location changes, but also some removal of generated blocks:
https://youtrack.jetbrains.com/issue/KT-63781/K2-Generated-blocks-appear-in-the-IR
2024-02-16 14:37:10 +00:00
Alvaro Muñoz
76f245b337 feat(actions): use published actions packs 2024-02-16 15:34:20 +01:00
Jeroen Ketema
dd39fa0bde C++: Support C++20 range-based for initializers 2024-02-16 15:20:14 +01:00
Ian Lynagh
5039acba53 Kotlin 2: Accept changes in library-tests/stmts/PrintAst.expected 2024-02-16 14:17:04 +00:00
Ian Lynagh
e8b8b11434 Kotlin 2: Accept changes in library-tests/stmts/exprs.expected 2024-02-16 14:16:18 +00:00
Mathias Vorreiter Pedersen
be54a41593 C++: Accept query test changes. 2024-02-16 15:01:50 +01:00
Mathias Vorreiter Pedersen
06ff46091d C++: Fix joins in 'controlsBlock'. 2024-02-16 14:49:20 +01:00
Alvaro Muñoz
8e59fb7558 fix(actions): ql pack installation 2024-02-16 14:47:34 +01:00
Alvaro Muñoz
003b8cc8c0 fix(actions): ql pack installation 2024-02-16 14:44:47 +01:00
Tamas Vajk
c68d36eb79 Remove restored framework packages when user specified framework folders 2024-02-16 14:42:39 +01:00
Alvaro Muñoz
13c5ec07b4 fix(actions): ql pack installation 2024-02-16 14:41:47 +01:00
Alvaro Muñoz
b3bab160d2 fix(actions): ql pack installation 2024-02-16 14:41:21 +01:00
Ian Lynagh
d6b96c5c23 Kotlin 2: Accept loc changes in library-tests/stmts/stmts.expected 2024-02-16 13:40:44 +00:00
Alvaro Muñoz
41639dd0e2 fix(actions): ql pack installation 2024-02-16 14:37:43 +01:00
Alvaro Muñoz
b11d8dad49 fix(actions): ql pack installation 2024-02-16 14:31:07 +01:00
Alvaro Muñoz
04a2ae9ad3 fix(actions): ql pack installation 2024-02-16 14:29:03 +01:00
Alvaro Muñoz
a94793fc09 fix(actions): pass the qlpack dirs 2024-02-16 14:14:53 +01:00
Alvaro Muñoz
e9f3006204 fix(actions): pass the qlpack dirs 2024-02-16 14:10:52 +01:00
Alvaro Muñoz
c58c4e0d54 feat(actions): refactor as composite action to be able to pass env vars 2024-02-16 14:06:46 +01:00
Anders Schack-Mulligen
53801e8efb Dataflow: Bugfix for field reads in SimpleGlobal. 2024-02-16 14:00:04 +01:00
Alvaro Muñoz
e2699c31f8 feat(action): clone and install local packs 2024-02-16 13:56:58 +01:00
Mathias Vorreiter Pedersen
b407c86d03 C++: Make Code Scanning happy. 2024-02-16 13:51:34 +01:00
Mathias Vorreiter Pedersen
57c1bf5835 C++: Add file-level QLDoc. 2024-02-16 13:47:02 +01:00
Mathias Vorreiter Pedersen
497592a4d4 C++: Add change note. 2024-02-16 13:36:25 +01:00
Tamas Vajk
ce0159c005 Add dotnet core dependencies to the integration test 2024-02-16 13:35:18 +01:00
Alvaro Muñoz
959a974c8b feat(action): clone pack (not use the registry) 2024-02-16 13:32:05 +01:00
Geoffrey White
e187a4a7d6 C++: Add flow summaries to simpleLocalFlowStep. 2024-02-16 12:31:17 +00:00
Tamas Vajk
7e912f0de0 Rename integration test 2024-02-16 13:31:08 +01:00
Mathias Vorreiter Pedersen
9b2019db6b C++: Accept test changes. 2024-02-16 13:10:41 +01:00
Mathias Vorreiter Pedersen
499ab0892f C++: Currently, to catch flow in an example such as:
```cpp
char* source();
void sink(const char*);
int sprintf(char *, const char *, ...);

void call_sprintf(char* path, char* data) {
        sprintf(path, "%s", "abc"); // (1)
        sprintf(path, "%s", data); // (2)
}

void foo() {
        char path[10];
        call_sprintf(path, source()); // (3)
        sink(path);
}
```
we identify that the `*path [post update]` node at `// (2)` is a
`ReturnNodeExt` and since `*data` flows to that node flow will be carried
out to `*path [post update]` at // (3) and thus reach `sink(path)`.

The reason `*path [post update]` at `// 2` is recognized as a `ReturnNodeExt`
is because it satisfies the following condition (which is identified by the
shared dataflow library):
There is flow from the parameter node `*path` to the pre-update node of the
post-update node `*path [post update]` at `// (2)`.

However, when we start recognizing that the call to `sprintf(path, ...)` at
`// (1)` overrides the value of `*path` and no longer provide use-use flow out
of `*path` the `*path [post update]` node at `// (2)` is no longer recognized
as a `ReturnNodeExt` (because it doesn't satisfy the above criteria).

Thus, we need to identify the flow above without relying on the dataflow
library's summary mechanism. That is, instead of relying on the dataflow
library's mechanism to summarize the `*data -> *path` flow for `call_sprintf`
we need to:
- Ensure that the write to `*path` at `// (2)` is recognized as the "final"
write to the parameter, and
- Ensure that there's flow out of that parameter and back to
`*path [post update]` at `// (3)`.

Luckiky, we do all of this already to support flow out of writes to parameters
that don't have post-update nodes. For example, in something like:
```cpp
void set(int* x, int y) {
  *x = y;
}

void test() {
  int x;
  set(&x, source());
  sink(x);
}
```
So in order to make the original example work, all we need to do is to remove
the restrictions on this mechanism so that the same mechanism that makes the
above example work also makes the original example work!
2024-02-16 13:09:45 +01:00
Joe Farebrother
9ad05fe51c Address reveiws - Add BAD example to doc, add doc example to tests and fix typo. 2024-02-16 12:00:51 +00:00
Mathias Vorreiter Pedersen
7e9bf2a880 C++: Add a model for 'partial updating' and extend models appropriately. 2024-02-16 12:56:19 +01:00
Mathias Vorreiter Pedersen
24a63ae94d C++: Block flow by default. 2024-02-16 12:56:19 +01:00
Mathias Vorreiter Pedersen
625c47fa9c C++: Add a testcase. 2024-02-16 12:56:19 +01:00
Alvaro Muñoz
5d1264d3a4 feat(action): update references to qlpacks 2024-02-16 12:56:06 +01:00
Tamas Vajk
1e75c73825 Fix failing integration test 2024-02-16 12:50:13 +01:00
Alvaro Muñoz
cf4ab41df2 feat(action): rename qlpacks to use githubsecuritylab prefix 2024-02-16 12:32:48 +01:00
Alvaro Muñoz
0105d63a44 Add Action to scan repos 2024-02-16 12:25:23 +01:00
Tamas Vajk
f8b29ad70e Introduce environment variable to specify framework assembly locations 2024-02-16 11:54:19 +01:00
Anders Schack-Mulligen
03f7968dbf Dataflow: Fix flow-feature bug. 2024-02-16 11:38:30 +01:00
Angela P Wen
4291c75488 Merge pull request #15631 from github/angelapwen/extend-permissions
Add `security-events: write` permission in `ql-for-ql-build.yml`
2024-02-16 02:28:30 -08:00