Compare commits

...

1539 Commits

Author SHA1 Message Date
Michael B. Gale
fb67f93a86 Merge pull request #21330 from github/release-prep/2.24.2
Release preparation for version 2.24.2
2026-02-16 15:00:27 +00:00
github-actions[bot]
ef04f927fb Release preparation for version 2.24.2 2026-02-16 13:29:25 +00:00
Owen Mansel-Chan
7742a5667f Merge pull request #21326 from owen-mc/java/log-injection-regex-match
Java: Recognise `@Pattern` annotation as sanitizer for log injection
2026-02-16 12:14:28 +00:00
Owen Mansel-Chan
cf73d96c9d Update test results (remove SPURIOUS annotations) 2026-02-16 12:03:02 +00:00
Owen Mansel-Chan
597be6a1c0 Add change note 2026-02-16 12:01:15 +00:00
Owen Mansel-Chan
94f1d94a2b Rename MethodCall ma to mc 2026-02-16 12:01:14 +00:00
Owen Mansel-Chan
9fc95f5171 Expand log injection sanitizers to annotation regex matches 2026-02-16 12:01:13 +00:00
Owen Mansel-Chan
924bb92d91 Expand log injection sanitizer guards to non-annotation regex matches 2026-02-16 12:01:11 +00:00
Owen Mansel-Chan
60e58f8219 Refactor logInjectionGuard part 2 2026-02-16 12:01:10 +00:00
Owen Mansel-Chan
6c0c1d558e Refactor logInjectionGuard part 1 2026-02-16 12:01:08 +00:00
Owen Mansel-Chan
146fc7a8c0 Add failing log injection test for @Pattern validation 2026-02-16 12:01:07 +00:00
Jeroen Ketema
7d2b40c657 Merge pull request #21313 from MathiasVP/range-analysis-lower-bound-and-measure-enums
C++: Measure bounds for `Enum` constants and reduce `getBoundsLimit`
2026-02-16 11:50:38 +01:00
Mathias Vorreiter Pedersen
5ccd61ac97 C++: Respond to review comments. 2026-02-16 09:49:31 +00:00
Mathias Vorreiter Pedersen
bfbb2eef6c C++: Add a test showing that we infer a lower and upper bound for parameters of enum types. 2026-02-16 09:38:15 +00:00
Mathias Vorreiter Pedersen
84be8517bb Update cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-16 09:30:56 +00:00
Tom Hvitved
149f3ed5b6 Merge pull request #21301 from hvitved/rust/type-inference-trait-call-perf
Rust: Speedup type inference for `Trait::function()` calls
2026-02-16 10:20:50 +01:00
Owen Mansel-Chan
47a9f87d9b Merge pull request #21310 from owen-mc/java/regex-execution
Java: Add RegexMatch concept and recognise `@Pattern` annotation as sanitizer
2026-02-16 09:11:47 +00:00
Simon Friis Vindum
6f609a5ed6 Merge pull request #21316 from paldepind/ruby/binary-of-at-start-of-line
Ruby: Add test cases for binary operator at start of line
2026-02-16 09:49:48 +01:00
Owen Mansel-Chan
16ddb5658f Small refactor for stylistic consistency 2026-02-15 14:39:23 +00:00
Owen Mansel-Chan
d6b71a346e Extend RegexMatch framework to allow for MatcherMatchesCall edge case 2026-02-15 14:39:21 +00:00
Owen Mansel-Chan
8f8f4c2d52 Fix Matcher.matches edge case 2026-02-14 00:28:37 +00:00
Owen Mansel-Chan
90befa0c00 Add failing test for Matcher.matches() edge case 2026-02-14 00:28:34 +00:00
Owen Mansel-Chan
ca4c988e97 Remove redundant variable 2026-02-13 22:58:09 +00:00
Owen Mansel-Chan
2e0f244376 Improve QLDoc on RegexMatch.getName() 2026-02-13 22:55:01 +00:00
Owen Mansel-Chan
c7099584b4 Put imports implementing abstract classes in private module 2026-02-13 22:51:53 +00:00
Owen Mansel-Chan
3c161f9c93 Make contract of RegexMatch clear 2026-02-13 22:47:44 +00:00
Owen Mansel-Chan
1fefa989d7 Rename RegexMatch and only include expressions 2026-02-13 22:45:48 +00:00
Owen Mansel-Chan
953ff9f0d0 PatternAnnotation.getString() should only be field reads 2026-02-13 22:41:20 +00:00
Owen Mansel-Chan
106254b220 Improve QLDocs 2026-02-13 22:40:36 +00:00
Owen Mansel-Chan
5bdf550317 Fix QLDocs 2026-02-12 16:57:14 +00:00
Owen Mansel-Chan
c539c2f4fd Add change note 2026-02-12 16:57:12 +00:00
Owen Mansel-Chan
bfe26c1989 Add @Pattern as RegexExecution => SSRF sanitizer 2026-02-12 16:57:11 +00:00
Owen Mansel-Chan
d0999e3abd Add failing test for @Pattern validation 2026-02-12 16:57:04 +00:00
Simon Friis Vindum
bf02e478fd Rust: Comment out tests with parse errors 2026-02-12 14:49:09 +01:00
Taus
7d17454a3b Merge pull request #21138 from github/tausbn/python-prepare-for-overlay-annotations
Prepare dataflow for local annotations
2026-02-12 14:23:45 +01:00
Taus
3e5c2ddeaf Merge pull request #21308 from github/smowton/admin/path-injection-use-autofix-qhelp
Python: use path-injection qhelp variant employed by autofix
2026-02-12 13:17:08 +01:00
Chris Smowton
5f970d9f2f Rewordings per copilot 2026-02-12 12:01:33 +00:00
Simon Friis Vindum
218585b52a Ruby: Add additonal tests with operators at the start of lines 2026-02-12 12:30:43 +01:00
Anders Schack-Mulligen
a945f15987 Merge pull request #21317 from aschackmull/java/deprecate-unreachableblocks
Java: Deprecate UnreachableBlocks.
2026-02-12 11:43:37 +01:00
Anders Schack-Mulligen
5c53677051 Java: Deprecate UnreachableBlocks. 2026-02-12 11:06:34 +01:00
Mathias Vorreiter Pedersen
2dc91a56eb C++: Lower the treshold for max number of bounds to 2^29. 2026-02-12 09:44:20 +00:00
Mathias Vorreiter Pedersen
6dd6bddff3 C++: Add more terms to make range analysis test timeout. 2026-02-12 09:44:17 +00:00
Mathias Vorreiter Pedersen
a4dd4f91d4 C++: Also compute type bounds for accesses of an enum type. 2026-02-12 09:44:14 +00:00
Mathias Vorreiter Pedersen
90a16cfaee Merge pull request #21314 from MathiasVP/remove-tc
C++: Remove redundant transitive closure
2026-02-12 09:21:56 +00:00
Simon Friis Vindum
a27d20dbcd Rust: Add test cases for binary operator at start of line 2026-02-12 09:31:59 +01:00
Michael Nebel
76ed386246 Merge pull request #21315 from github/workflow/coverage/update
Update CSV framework coverage reports
2026-02-12 08:29:25 +01:00
github-actions[bot]
fea07ebfcb Add changed framework coverage reports 2026-02-12 00:32:08 +00:00
Mathias Vorreiter Pedersen
9596b7b921 C++: No need to compute this TC. 2026-02-11 20:18:03 +00:00
Mathias Vorreiter Pedersen
b14ece72be C++: Add range analysis test demonstrating missing measuring bounds. 2026-02-11 16:58:18 +00:00
Owen Mansel-Chan
6a8204d28c "dataflow" -> "data flow" in QLDoc 2026-02-11 13:41:14 +00:00
Owen Mansel-Chan
1ee5728311 Add missing QLDoc 2026-02-11 13:40:20 +00:00
Owen Mansel-Chan
a22fd39230 Use RegexExecution in sanitizer definitions (expands scope) 2026-02-11 13:09:48 +00:00
Owen Mansel-Chan
fa3fba4a00 Use new regex-related classes (no functional change) 2026-02-11 13:09:46 +00:00
Owen Mansel-Chan
44eeee5757 Add and improve classes for regex-related methods 2026-02-11 13:09:45 +00:00
Owen Mansel-Chan
e6dbd525c3 Add RegexExecution in Concepts.qll 2026-02-11 13:09:42 +00:00
Simon Friis Vindum
522e4d64de Merge pull request #21273 from paldepind/rust/tp-assoc
Rust: Implement support for associated types accessed on type parameters
2026-02-11 13:39:55 +01:00
Chris Smowton
bed1ec8981 Enhance path validation recommendations
Expanded recommendations for validating user input when constructing file paths, including normalization and using allowlists.
2026-02-11 12:10:08 +00:00
Simon Friis Vindum
6c67475352 Rust: Minor tweaks in type inference 2026-02-11 12:32:54 +01:00
Simon Friis Vindum
287a8717a8 Rust: Apply suggestions from code review
Co-authored-by: Tom Hvitved <hvitved@github.com>
2026-02-11 12:19:22 +01:00
Philip Ginsbach-Chen
9ed22610a3 Merge pull request #21306 from github/ginsbach/avoid-nontrivially-shadowing-toString
Avoid non-trivially shadowing `string.toString()`
2026-02-11 11:03:07 +00:00
Tom Hvitved
36c3084435 Merge pull request #21305 from hvitved/rust/type-inference-speedup
Rust: Speedup `inferMethodCallTypeSelf`
2026-02-11 11:03:06 +01:00
Tom Hvitved
37af38eed5 Merge pull request #21282 from hvitved/rust/path-resolution/type-inference-expectations
Rust: Distinguish path resolution expectations from type inference expectations
2026-02-11 11:00:28 +01:00
Tom Hvitved
89e9a253eb Rust: Distinguish path resolution expectations from type inference expectations 2026-02-11 10:33:41 +01:00
Simon Friis Vindum
2fa71f0c17 Rust: Add examples with associated type accessed on associated type 2026-02-11 09:10:21 +01:00
Simon Friis Vindum
2b10c8aef3 Rust: Fix gramar in qldoc 2026-02-11 09:09:34 +01:00
Michael Nebel
0ac1bc4c57 Merge pull request #21299 from microsoft/lwsimpkins/csharp-mad-httputility-upstream
Update MaD for System.Web.HttpUtility
2026-02-11 08:47:29 +01:00
Anders Schack-Mulligen
cfa62ae434 Merge pull request #21304 from aschackmull/java/deprecation-followup
Java: Add delayed deprecation annotation.
2026-02-11 08:40:01 +01:00
Owen Mansel-Chan
766dc94444 Merge pull request #21150 from github/jketema/go-1.26
Go: Update to 1.26
2026-02-11 04:37:31 +00:00
Owen Mansel-Chan
542d4631d7 restore ~ in action.yml version 2026-02-10 22:32:36 +00:00
Owen Mansel-Chan
f01d5840b0 Update to 1.26.0 2026-02-10 22:32:33 +00:00
Owen Mansel-Chan
936c4cc79f Fix edge case in MaD validation
If the db contains no pointer types then we were getting spurious model
validation errors.
2026-02-10 22:32:31 +00:00
Owen Mansel-Chan
e1bddd9365 Model newly added functions 2026-02-10 22:32:30 +00:00
Owen Mansel-Chan
22e9c212d6 Add failing tests for newly added functions 2026-02-10 22:32:28 +00:00
Owen Mansel-Chan
26ef33212d Test builtins like standard library 2026-02-10 22:32:27 +00:00
Jeroen Ketema
700543b30b Go: Update supported versions to include 1.26 2026-02-10 22:31:11 +00:00
Jeroen Ketema
22e9b42808 Go: Add change note 2026-02-10 22:31:10 +00:00
Jeroen Ketema
50ed0af9da Go: Bump maxGoVersion to 1.26 2026-02-10 22:31:08 +00:00
Jeroen Ketema
e00e3a87ff Update Go version in tests to 1.26.0 2026-02-10 22:31:00 +00:00
Tom Hvitved
8955fd0bf4 Merge pull request #21303 from hvitved/rust/add-telemetry-tags
Rust: Add `telemtry` tags to queries
2026-02-10 20:13:40 +01:00
Philip Ginsbach
f60d759a65 Avoid non-trivially shadowing string.toString()
Prepare libraries for a possible deprecation warning on shadowing
string.toString().

These instanceof classes were using this.(Type).method() to call
supertype methods, but super.method() is clearer and equivalent
for instanceof supertypes.
2026-02-10 15:46:10 +00:00
Ian Lynagh
00acff293a Merge pull request #21281 from igfoo/igfoo/discarding
C++ overlay: Discarding elements
2026-02-10 15:14:58 +00:00
Tom Hvitved
49f24ca8ec Rust: Avoid using regexpCapture with multiple capture groups 2026-02-10 16:11:49 +01:00
Tom Hvitved
564a3bd444 Rust: Simplify inferMethodCallTypeSelf 2026-02-10 15:30:56 +01:00
Michael Nebel
ece85854cd Merge pull request #21285 from michaelnebel/csharp14/implicittypedlambdaparametermodifiers
C# 14: [TEST ONLY] Simple lambda parameters with modifiers.
2026-02-10 14:16:19 +01:00
Michael Nebel
c15ad31b07 Merge pull request #21220 from michaelnebel/csharp14/extension
C# 14: Support `extension` types.
2026-02-10 14:15:57 +01:00
Anders Schack-Mulligen
5116b0c1e5 Java: Add delayed deprecation annotation. 2026-02-10 14:02:48 +01:00
Michael Nebel
25b836b1b5 C#: Apply suggestions from code review
Co-authored-by: Tom Hvitved <hvitved@github.com>
2026-02-10 13:12:53 +01:00
Owen Mansel-Chan
f2d3bc03aa Merge pull request #21302 from github/mbg/go/bump-to-1.25.7
Go: Bump toolchain to `1.25.7`
2026-02-10 10:33:50 +00:00
Tom Hvitved
55e5bc4970 Rust: Add telemtry tags to queries 2026-02-10 11:25:42 +01:00
Michael B. Gale
518fb44a92 Go: Bump toolchain to 1.25.7 2026-02-10 10:01:38 +00:00
Tom Hvitved
5634395a32 Rust: Speedup type inference for Trait::function() calls 2026-02-10 10:50:59 +01:00
Michael B. Gale
eee4014e94 Merge pull request #21300 from github/dependabot/go_modules/go/extractor/extractor-dependencies-393b62c927
Bump the extractor-dependencies group in /go/extractor with 2 updates
2026-02-10 09:46:56 +00:00
Simon Friis Vindum
a033057d90 Rust: Fix a bad join 2026-02-10 09:54:01 +01:00
Simon Friis Vindum
624ee1898a Rust: Implement support for associated types accessed on type parameters 2026-02-10 09:53:56 +01:00
Simon Friis Vindum
0cd5366034 Rust: Add type inference test for associated type acces on a type parameter of an impl block 2026-02-10 09:51:56 +01:00
Simon Friis Vindum
78c262ca63 Merge pull request #21297 from hvitved/rust/type-inference-fix-bug
Rust: Fix bug in `inferMethodCallTypeSelf`
2026-02-10 09:51:12 +01:00
Tom Hvitved
c3ac20267a Merge pull request #21217 from hvitved/rust/type-inference-perf
Rust: Rework call disambiguation logic
2026-02-10 08:52:01 +01:00
dependabot[bot]
e172cb3f7a Bump the extractor-dependencies group in /go/extractor with 2 updates
Bumps the extractor-dependencies group in /go/extractor with 2 updates: [golang.org/x/mod](https://github.com/golang/mod) and [golang.org/x/tools](https://github.com/golang/tools).


Updates `golang.org/x/mod` from 0.32.0 to 0.33.0
- [Commits](https://github.com/golang/mod/compare/v0.32.0...v0.33.0)

Updates `golang.org/x/tools` from 0.41.0 to 0.42.0
- [Release notes](https://github.com/golang/tools/releases)
- [Commits](https://github.com/golang/tools/compare/v0.41.0...v0.42.0)

---
updated-dependencies:
- dependency-name: golang.org/x/mod
  dependency-version: 0.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: extractor-dependencies
- dependency-name: golang.org/x/tools
  dependency-version: 0.42.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: extractor-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-10 03:15:54 +00:00
Lindsay Simpkins
677949e409 Fix typo in change note
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-09 17:16:10 -05:00
Lindsay Simpkins
fe10fb37e9 add changenote 2026-02-09 16:48:08 -05:00
Lindsay Simpkins
ba3fc0a769 update csharp MaD for System.Web.HttpUtility for tainted URIs 2026-02-09 16:48:05 -05:00
Tom Hvitved
6611978368 Update rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-09 19:38:49 +01:00
Tom Hvitved
16539b4667 Address review comments 2026-02-09 19:30:58 +01:00
Ian Lynagh
6235edaa21 C++: Update stats 2026-02-09 18:01:02 +00:00
Ian Lynagh
9a5128f915 C++: Add up/downgrade scripts 2026-02-09 18:01:01 +00:00
Ian Lynagh
c5f6820b5d C++ overlay: Add trap_filename, source_file_uses_trap, in_trap 2026-02-09 18:01:01 +00:00
yoff
5ad42f8bcc Merge pull request #20563 from microsoft/azure_python_sdk_url_summary_upstream
Azure python sdk url summary upstream
2026-02-09 18:34:36 +01:00
Michael Nebel
bee1718469 QL4QL: Allow Impl classes to implement getAPrimaryQLClass with non Impl suffix. 2026-02-09 16:53:43 +01:00
Michael Nebel
3e914f7ff1 C#: Add DB downgrade script. 2026-02-09 16:24:19 +01:00
Michael Nebel
42d2de848d C#: Add DB upgrade script. 2026-02-09 16:24:00 +01:00
Ian Lynagh
b5e3168032 Merge pull request #21286 from github/andersfugmann/kotlin_2.3.10-no-artifacts
Kotlin: Support Kotlin 2.3.10
2026-02-09 13:26:40 +00:00
Tom Hvitved
109d802607 Rust: Fix bug in inferMethodCallTypeSelf 2026-02-09 14:15:05 +01:00
Michael B. Gale
71e8730c63 Merge pull request #21263 from github/mbg/csharp/registry-diagnostic
C#: Add diagnostic for private registry usage
2026-02-09 12:58:43 +00:00
Michael Nebel
eff9f99f44 C#: Update test expected output. 2026-02-09 13:30:14 +01:00
Michael Nebel
d9fea156f6 C#: Update MaD models for extension members. 2026-02-09 13:28:11 +01:00
Michael Nebel
bcdbd6e283 C#: Use the fully qualified name for the extension type when printing extension types. 2026-02-09 13:27:32 +01:00
Michael Nebel
fe94b3b68b C#: Address review comments. 2026-02-09 11:46:53 +01:00
Owen Mansel-Chan
90401b3ad3 Merge pull request #21254 from owen-mc/go/astnode-get-enclosing-block
Go: Add `AstNode.getEnclosingBlock()`
2026-02-06 22:23:15 +00:00
Jon Janego
d0bd8459a1 Merge pull request #21291 from github/codeql-spark-run-21760759512
Update changelog documentation site
2026-02-06 12:28:56 -06:00
Jon Janego
1c43ceae95 Merge branch 'main' into codeql-spark-run-21760759512 2026-02-06 12:16:31 -06:00
Jon Janego
5bf2d9442e Fix formatting in changelog for Go path injection query 2026-02-06 12:14:03 -06:00
Jon Janego
c40d784a4d Update codeql-cli-2.23.1.rst 2026-02-06 12:13:34 -06:00
Jon Janego
bf6568b928 Fix formatting for Kotlin version support note 2026-02-06 12:12:55 -06:00
Jon Janego
79ad064a93 Fix formatting in Kotlin version support note 2026-02-06 12:12:16 -06:00
Jon Janego
552976d057 Update codeql-cli-2.19.1.rst 2026-02-06 12:11:49 -06:00
github-actions[bot]
353cd31ce6 update codeql documentation 2026-02-06 18:09:49 +00:00
Paolo Tranquilli
48db24d184 Merge pull request #21287 from github/redsun82/fix-rust-deps-patching
Bazel: fix Rust deps patching for semver build metadata
2026-02-06 17:17:24 +01:00
REDMOND\brodes
8459eec239 Moving the SsrfSink concept into Concepts.qll, and renaming to HttpClientRequestFromModel as suggested in PR review. 2026-02-06 09:26:49 -05:00
Anders Fugmann
c5179e40c6 Kotlin: Add change note for supporting 2.3.10 2026-02-06 14:59:34 +01:00
github-actions[bot]
38830ddc5c Bazel: fix Rust deps patching for semver build metadata
Handle crate versions containing `+` build metadata (e.g., `0.9.11+spec-1.1.0`).
Bazel repo names use `-` instead of `+`, so the generated labels need patching
to reference the correct repo name.

Also adds documentation for both patching issues handled by patch_defs.py.
2026-02-06 14:58:34 +01:00
Anders Fugmann
d5827b5cca Kotlin: Support Kotlin 2.3.10 2026-02-06 14:54:08 +01:00
Michael Nebel
6c355a1bf8 C#: Update test expected output. 2026-02-06 14:38:27 +01:00
Michael Nebel
e550d4937c C#: Update parameter modifiers test to include lambda expression from the new test file. 2026-02-06 14:37:50 +01:00
Michael Nebel
62a6b5985d C#: Add test cases for lambda parameter modifiers. 2026-02-06 14:37:11 +01:00
Mathias Vorreiter Pedersen
2c05624088 Merge pull request #21280 from MathiasVP/make-getChildCount-more-robust
C++: Make 'getChildCount' more robust by counting indices instead of elements
2026-02-06 12:19:20 +00:00
Ben Rodes
ac1987f264 Update python/ql/lib/change-notes/2025-09-30-azure_ssrf_models.md
Co-authored-by: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com>
2026-02-05 15:44:44 -05:00
Mathias Vorreiter Pedersen
d57a42a7f7 C++: Make 'getChildCount' more robust by counting indexes instead of 'TranslatedDeclarationEntry's. 2026-02-05 20:23:45 +00:00
Tom Hvitved
32aaac27ec Rust: Add type inference regression test 2026-02-05 17:29:42 +01:00
Tom Hvitved
2dc7576232 Rust: Rework call disambiguation logic 2026-02-05 17:29:40 +01:00
Taus
5adc9f8ff0 Merge pull request #21274 from github/tausbn/python-fix-parsing-of-format-specifiers
Python: Fix syntax error when `=` is used as a format fill character
2026-02-05 16:37:42 +01:00
Michael Nebel
02e4a8b6f7 C#: Add change-note. 2026-02-05 15:52:43 +01:00
Michael Nebel
bd3e4d3d7e C#: Add MaD tests for extensions. 2026-02-05 15:38:29 +01:00
Michael Nebel
4b6a53b577 C#: Add extension data flow test. 2026-02-05 15:38:27 +01:00
Michael Nebel
6cbe000d51 C#: Add PrintAst test for extensions. 2026-02-05 15:38:25 +01:00
Michael Nebel
c040daab9c C#: Add extensions test. 2026-02-05 15:38:20 +01:00
Michael Nebel
849823eff6 C#: Add dispatch logic for calling extensions accessors as methods. 2026-02-05 15:38:16 +01:00
Michael Nebel
e831c80a23 C#: Replace extension parameter access with the corresponding synthetic parameter. 2026-02-05 15:38:14 +01:00
Michael Nebel
5e02a86542 C#: Add extension call classes. 2026-02-05 15:38:12 +01:00
Michael Nebel
b9f36f37b6 C#: Add extension callable and accessor classes. 2026-02-05 15:38:09 +01:00
Michael Nebel
9a4a6cfcb8 C#: Add ExtensionType to the QL library. 2026-02-05 15:38:07 +01:00
Michael Nebel
edfdc9812f C#: Extract extension types and members. Replacing invocations to static generated methods with invocation of extension type member. 2026-02-05 15:38:05 +01:00
Michael Nebel
ab505e3281 C#: Add class for making synthetic parameter entities. 2026-02-05 15:38:02 +01:00
Taus
8c27437628 Python: Bump extractor version and add change note 2026-02-05 13:50:54 +00:00
Taus
12ee93042b Python: Add tests 2026-02-05 13:47:24 +00:00
Taus
bac356c9a1 Python: Regenerate parser files 2026-02-05 13:46:59 +00:00
Taus
68c1a3d389 Python: Fix syntax error when = is used as a format fill character
An example (provided by @redsun82) is the string `f"{x:=^20}"`. Parsing
this (with unnamed nodes shown) illustrates the problem:

```
module [0, 0] - [2, 0]
  expression_statement [0, 0] - [0, 11]
    string [0, 0] - [0, 11]
      string_start [0, 0] - [0, 2]
      interpolation [0, 2] - [0, 10]
        "{" [0, 2] - [0, 3]
        expression: named_expression [0, 3] - [0, 9]
          name: identifier [0, 3] - [0, 4]
          ":=" [0, 4] - [0, 6]
          ERROR [0, 6] - [0, 7]
            "^" [0, 6] - [0, 7]
          value: integer [0, 7] - [0, 9]
        "}" [0, 9] - [0, 10]
      string_end [0, 10] - [0, 11]
```
Observe that we've managed to combine the format specifier token `:` and
the fill character `=` in a single token (which doesn't match the `:` we
expect in the grammar rule), and hence we get a syntax error.

If we change the `=` to some other character (e.g. a `-`), we instead
get

```
module [0, 0] - [2, 0]
  expression_statement [0, 0] - [0, 11]
    string [0, 0] - [0, 11]
      string_start [0, 0] - [0, 2]
      interpolation [0, 2] - [0, 10]
        "{" [0, 2] - [0, 3]
        expression: identifier [0, 3] - [0, 4]
        format_specifier: format_specifier [0, 4] - [0, 9]
          ":" [0, 4] - [0, 5]
        "}" [0, 9] - [0, 10]
      string_end [0, 10] - [0, 11]
```
and in particular no syntax error.

To fix this, we want to ensure that the `:` is lexed on its own, and the
`token(prec(1, ...))` construction can be used to do exactly this.

Finally, you may wonder why `=` is special here. I think what's going on
is that the lexer knows that `:=` is a token on its own (because it's
used in the walrus operator), and so it greedily consumes the following
`=` with this in mind.
2026-02-05 13:45:54 +00:00
Tom Hvitved
2764d697d2 Rust: Merge Input1 and Input2 modules 2026-02-05 14:29:46 +01:00
Tom Hvitved
c62d95ac9d Rust: More type inference tests 2026-02-05 14:29:41 +01:00
Paolo Tranquilli
05bef12ddd Merge pull request #21265 from github/redsun82/csharp-csrf-inheritance
C#: Fix CSRF query to check antiforgery attributes on base classes
2026-02-05 14:20:30 +01:00
Idriss Riouak
1df3adf021 Merge pull request #21244 from github/idrissrio/cpp/overlay/changes-json
C/C++ overlay: use files table instead of `overlayChangedFiles` for overlay discard
2026-02-05 13:15:07 +01:00
Tom Hvitved
025f73301b Rust: Move some overloading tests into a separate file 2026-02-05 12:49:53 +01:00
idrissrio
e26c199426 C/C++ overlay: use files table instead of overlayChangedFiles for overlay discard 2026-02-05 12:43:01 +01:00
Tom Hvitved
1203da1b66 Merge pull request #21253 from paldepind/rust/as-path-trait
Rust: Resolve `as` paths to trait
2026-02-05 12:38:16 +01:00
Paolo Tranquilli
f79bd3f4cf C#: accept location changes in test 2026-02-05 12:14:59 +01:00
Mathias Vorreiter Pedersen
476df7de73 Merge pull request #21260 from MathiasVP/add-windows-remote-flow-sources
C++: Add more Win32 and Azure SDK remote flow sources
2026-02-05 10:47:03 +00:00
Anders Schack-Mulligen
29e01748b7 Merge pull request #21267 from aschackmull/java/rename-misc
Java: Rename several AST predicates.
2026-02-05 11:15:29 +01:00
Anders Schack-Mulligen
11003e685d Java: Fix qldoc 2026-02-05 10:37:19 +01:00
Anders Schack-Mulligen
e4daeec2ca Merge pull request #21268 from aschackmull/java/view-cfg
Java: Add support for "View CFG" in VSCode.
2026-02-05 09:48:14 +01:00
Anders Schack-Mulligen
81977f11a1 Cfg: qldoc + overlay fixups. 2026-02-05 08:59:28 +01:00
Anders Schack-Mulligen
32fe12a6dd Java: Delay deprecation a bit. 2026-02-05 08:51:27 +01:00
Anders Schack-Mulligen
83adf793e4 Cfg: Fix compilation. 2026-02-04 15:28:37 +01:00
REDMOND\brodes
0a88425170 Python: Altering SSRF MaD to use 'request-forgery' tag. Update to test cases expected results, off by one line. Changed to using ModelOutput::sinkNode. 2026-02-04 09:04:22 -05:00
Ben Rodes
cd73dcfb04 Merge branch 'main' into azure_python_sdk_url_summary_upstream 2026-02-04 08:55:38 -05:00
Simon Friis Vindum
52dc58172d Merge branch 'main' into rust/as-path-trait 2026-02-04 14:47:57 +01:00
Owen Mansel-Chan
544931f73f Merge pull request #21266 from owen-mc/python/pretty-print-models-in-test
Python: Pretty print models in test
2026-02-04 13:46:51 +00:00
Anders Schack-Mulligen
2d02908e7f Java: Add change note. 2026-02-04 14:43:32 +01:00
Anders Schack-Mulligen
4fcf3fbff8 Java: Make loop classes extend LoopStmt and use getBody instead of getStmt. 2026-02-04 14:43:31 +01:00
Anders Schack-Mulligen
6f40ac15b4 Java: Rename ReturnStmt.getResult to getExpr. 2026-02-04 14:43:31 +01:00
Simon Friis Vindum
55ea55a44f Merge pull request #21247 from paldepind/rust/self-types
Rust: Resolve `Self` paths in type definitions
2026-02-04 13:41:53 +01:00
Anders Schack-Mulligen
36fa0a22f9 Java: Rename getTrueExpr/getFalseExpr on ConditionalExpr to getThen/getElse. 2026-02-04 13:38:11 +01:00
Michael Nebel
60bb9a9b06 C#: Move some populate methods and location writing methods. 2026-02-04 13:24:21 +01:00
Michael Nebel
c68cd58f70 C#: Add parameter marker interface, allow a type to a parent for parameter and make it possible to specify a parameter position offset. 2026-02-04 13:19:29 +01:00
Michael Nebel
dca10f8740 C#: Add extended_type to the DB scheme. 2026-02-04 12:51:30 +01:00
Owen Mansel-Chan
3f08ff88a4 Pretty print models in test
Otherwise the tests breaks when unrelated changes are made because the
model numbers change
2026-02-04 10:52:44 +00:00
Anders Schack-Mulligen
5e6e64b2b7 Java: Rename UnaryExpr.getExpr to getOperand. 2026-02-04 10:50:49 +01:00
Paolo Tranquilli
4973523404 C#: Fix CSRF query to check antiforgery attributes on base classes
Fixes https://github.com/github/codeql/discussions/21255
2026-02-04 09:42:20 +01:00
Taus
62fb38d834 Python: Rename otherArgs to implicitArgumentNode
Co-authored-by: yoff <yoff@github.com>
2026-02-03 15:32:46 +00:00
Michael B. Gale
571f21ba49 C#: Emit diagnostic if private registries are configured 2026-02-03 15:28:47 +00:00
Anders Schack-Mulligen
2d61fc5309 Java: Add support for "View CFG". 2026-02-03 15:49:27 +01:00
Michael B. Gale
8e39ed079e Merge pull request #21252 from github/mbg/go/private-registry-diagnostic
Go: Add diagnostic for private registry usage
2026-02-03 14:36:19 +00:00
Anders Schack-Mulligen
389cd5d648 Cfg: Extract CFG pretty-printing code. 2026-02-03 15:33:55 +01:00
Mathias Vorreiter Pedersen
092d25451f C++: Fix Copilot comments. 2026-02-03 11:45:30 +00:00
Mathias Vorreiter Pedersen
32b86eca50 C++: Add change note. 2026-02-03 11:40:31 +00:00
Mathias Vorreiter Pedersen
40a58135c2 C++: Accept test changes. 2026-02-03 11:30:55 +00:00
Mathias Vorreiter Pedersen
7ef96e3f3c C++: Add taint-inheriting reads from the Winhttp structs. 2026-02-03 11:30:31 +00:00
Mathias Vorreiter Pedersen
5531ef9bc1 C++: Accept test changes. 2026-02-03 11:17:23 +00:00
Mathias Vorreiter Pedersen
cbc2dbc14d C++: Add flow sources and summary models. 2026-02-03 11:14:16 +00:00
Mathias Vorreiter Pedersen
208cf716dc C++: Add tests with tests for remote flow sources from the Win32 API and from the Azure SDK. 2026-02-03 11:13:45 +00:00
Simon Friis Vindum
d72d8b63ed Rust: Fix inconsistency by skipping Self in use globs 2026-02-03 11:54:28 +01:00
Simon Friis Vindum
1791c1f1f9 Rust: Add test with path resolution inconsistency 2026-02-03 11:51:55 +01:00
Michael B. Gale
d5c4a19efa Apply suggestions from code review
Co-authored-by: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com>
2026-02-03 10:34:14 +00:00
Tom Hvitved
6fbf727309 Merge pull request #21251 from hvitved/rust/fix-bad-join
Rust: Fix bad join
2026-02-02 19:12:30 +01:00
Owen Mansel-Chan
e00390d23a Merge pull request #21224 from owen-mc/go/use-shared-basic-block-lib
Go: Use shared basic block lib
2026-02-02 16:31:06 +00:00
Michael B. Gale
d079671ec8 Align testItems with what getEnvVars does 2026-02-02 16:17:22 +00:00
Michael B. Gale
cbbc057dd3 Fix singular/plural wording and add test 2026-02-02 16:15:36 +00:00
Simon Friis Vindum
9fc2a54712 Rust: Accept changes to expected files for consistency checks 2026-02-02 17:12:25 +01:00
Simon Friis Vindum
d0e30d19c4 Rust: Resolve as paths to trait 2026-02-02 16:47:43 +01:00
Simon Friis Vindum
8de37fec17 Rust: Add tests with as paths 2026-02-02 16:43:21 +01:00
Henry Mercer
e712e62f14 Merge pull request #21250 from github/post-release-prep/codeql-cli-2.24.1
Post-release preparation for codeql-cli-2.24.1
2026-02-02 07:31:39 -08:00
Michael B. Gale
30b30d65c8 Emit the new diagnostic 2026-02-02 14:47:25 +00:00
Michael B. Gale
6d67e419ff Move private registry sources out of util package 2026-02-02 14:45:06 +00:00
Michael B. Gale
29930fa6bf Track active proxy configurations 2026-02-02 14:40:08 +00:00
Michael B. Gale
a57c6cde30 Add EmitPrivateRegistryUsed 2026-02-02 14:39:27 +00:00
Tom Hvitved
b16f1d3778 Rust: Fix bad join
Before
```
Evaluated relational algebra for predicate _PathResolution::ImplItemNode.getTraitPath/0#dispred#3b7d1cb6_PathResolution::ImplOrTraitItemNode.ge__#shared@0d3de6d9 with tuple counts:
         395360270  ~2%    {5} r1 = JOIN Type::TAssociatedTypeTypeParameter#6da9e52a WITH `PathResolution::ImplItemNode.getTraitPath/0#dispred#3b7d1cb6` CARTESIAN PRODUCT OUTPUT Rhs.0, Lhs.0, Lhs.1, Lhs.2, Rhs.1
        1274237644  ~0%    {6}    | JOIN WITH `PathResolution::ItemNode.getASuccessor/1#8f430f71` ON FIRST 1 OUTPUT Lhs.1, Lhs.2, Lhs.3, Lhs.4, Rhs.1, Rhs.2
        1274237644  ~0%    {6}    | JOIN WITH PathResolution::TraitItemNode#8d4ce62d ON FIRST 1 OUTPUT Lhs.0, Lhs.4, Lhs.1, Lhs.2, Lhs.3, Lhs.5
           6984871  ~0%    {5}    | JOIN WITH `PathResolution::ImplOrTraitItemNode.getAssocItem/1#f77bb9ed` ON FIRST 3 OUTPUT Lhs.2, Lhs.0, Lhs.3, Lhs.4, Lhs.5
           6984871  ~0%    {4}    | JOIN WITH TypeAlias::Generated::TypeAlias#1ca97780 ON FIRST 1 OUTPUT Lhs.4, Lhs.1, Lhs.2, Lhs.3
           6076675  ~0%    {4}    | JOIN WITH `TypeAlias::Generated::TypeAlias.getTypeRepr/0#dispred#5fd7e521` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3
                           return r1
```

After
```
Evaluated relational algebra for predicate _PathResolution::ImplItemNode.getTraitPath/0#dispred#3b7d1cb6_PathResolution::ImplOrTraitItemNode.ge__#shared@760e0499 with tuple counts:
          443292  ~2%    {3} r1 = SCAN `PathResolution::ImplOrTraitItemNode.getAssocItem/1#f77bb9ed` OUTPUT In.0, In.2, In.1
            1258  ~1%    {3}    | JOIN WITH Type::TAssociatedTypeTypeParameter#6da9e52a ON FIRST 2 OUTPUT Lhs.2, Lhs.0, Rhs.2
        13656944  ~3%    {4}    | JOIN WITH `PathResolution::ItemNode.getASuccessor/1#8f430f71_102#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Rhs.2
         6984871  ~0%    {4}    | JOIN WITH `PathResolution::ImplItemNode.getTraitPath/0#dispred#3b7d1cb6` ON FIRST 1 OUTPUT Lhs.3, Lhs.1, Lhs.2, Rhs.1
         6076675  ~0%    {4}    | JOIN WITH `TypeAlias::Generated::TypeAlias.getTypeRepr/0#dispred#5fd7e521` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3
                         return r1
```
2026-02-02 15:26:32 +01:00
github-actions[bot]
73d06f26cb Post-release preparation for codeql-cli-2.24.1 2026-02-02 14:04:26 +00:00
Ben Rodes
7ddfa80399 Merge branch 'main' into azure_python_sdk_url_summary_upstream 2026-02-02 09:00:35 -05:00
Henry Mercer
fedb9464af Merge pull request #21248 from github/henrymercer/fix-mysql-typo
Fix capitalization of MySQL
2026-02-02 05:33:39 -08:00
Simon Friis Vindum
99b498b891 Rust: Resolve Self paths in type definitions 2026-02-02 13:51:59 +01:00
Simon Friis Vindum
95afe615b5 Rust: Add path resolution tests 2026-02-02 13:51:57 +01:00
Simon Friis Vindum
8b03608a4f Merge pull request #21188 from paldepind/rust/self-path-assoc
Rust: Implement type inference for associated types for concrete types
2026-02-02 13:50:43 +01:00
Henry Mercer
1a6b2b9b82 Fix capitalization of MySQL 2026-02-02 12:37:32 +00:00
Henry Mercer
57c2208f7a Merge pull request #21246 from github/henrymercer/kotlin/version-range-formatting
Fix formatting of Kotlin version ranges
2026-02-02 04:30:52 -08:00
Henry Mercer
5f1fd57f84 Fix formatting of Kotlin version ranges 2026-02-02 12:22:50 +00:00
Henry Mercer
6b78313701 Merge pull request #21245 from github/release-prep/2.24.1
Release preparation for version 2.24.1
2026-02-02 04:12:14 -08:00
Henry Mercer
38fcc61817 Fix formatting in Kotlin changelog 2026-02-02 12:10:15 +00:00
github-actions[bot]
0db542e9f0 Release preparation for version 2.24.1 2026-02-02 12:09:09 +00:00
Tom Hvitved
4a04f7b66f Merge pull request #21243 from hvitved/csharp/insecure-object-tests
C#: Add more tests for `InsecureDirectObjectReference.ql`
2026-02-02 13:03:23 +01:00
Simon Friis Vindum
0567864a83 Rust: Make module private
Co-authored-by: Tom Hvitved <hvitved@github.com>
2026-02-02 12:57:26 +01:00
Simon Friis Vindum
18576838d4 Rust: Minor tweaks and improvements 2026-02-02 12:07:18 +01:00
Tom Hvitved
fe0634574d C#: Add more tests for InsecureDirectObjectReference.ql 2026-02-02 11:09:26 +01:00
Michael B. Gale
9a00c75460 Merge pull request #21236 from github/mbg/csharp/fix-registry-feeds
C#: Make sure `allFeeds` contains at least `explicitFeeds`
2026-02-02 07:49:33 +00:00
Owen Mansel-Chan
8aa1bff9a5 Add AstNode.getEnclosingBlock() 2026-02-01 23:06:26 +00:00
Owen Mansel-Chan
5204255615 Merge pull request #21234 from owen-mc/python/convert-sanitizers-to-mad
Python: Allow models-as-data sanitizers
2026-01-30 14:28:39 +00:00
Owen Mansel-Chan
0222159df5 Specify vulnerable args instead of safe ones 2026-01-30 14:10:03 +00:00
Michael B. Gale
454d13b485 Remove element check 2026-01-30 14:03:43 +00:00
Mathias Vorreiter Pedersen
16670511de Merge pull request #21239 from MathiasVP/logical-binary-fix-guards-cpp
C++: Ensure that there are AST `GuardCondition`s for `||` and `&&`
2026-01-30 13:50:55 +00:00
Michael B. Gale
ad2aa6d4f8 Accept expected diagnostic output 2026-01-30 13:38:50 +00:00
Michael B. Gale
3e0719609f Fix missing negation 2026-01-30 13:30:47 +00:00
Michael B. Gale
1aba0b20cd Add integration test 2026-01-30 13:19:47 +00:00
Michael B. Gale
1b5ed129ac Log and emit diagnostic if incorrectly named files are found 2026-01-30 13:19:46 +00:00
Taus
958c798c3f Python: Accept dataflow test changes
New nodes means new results. Luckily we rarely have a test that selects
_all_ dataflow nodes.
2026-01-30 12:50:25 +00:00
Taus
fb6175d10b Python: Fix consistency test failures
As we now have many more capturing closure arguments, we must once again
exclude the ones that don't actually have `argumentOf` defined.
2026-01-30 12:50:25 +00:00
Taus
3f718123a6 Python: Make capturing closure arguments synthetic and non-global
Uses the same trick as for `ExtractedArgumentNode`, wherein we postpone
the global restriction on the charpred to instead be in the `argumentOf`
predicate (which is global anyway).

In addition to this, we also converted `CapturedVariablesArgumentNode`
into a proper synthetic node, and added an explicit post-update node for
it. These nodes just act as wrappers for the function part of call
nodes. Thus, to make them work with the variable capture machinery, we
simply map them to the closure node for the corresponding control-flow
or post-update node.
2026-01-30 12:50:25 +00:00
Taus
6113d4be9e Python: Fix test issues
Fixes the test failures that arose from making `ExtractedArgumentNode`
local.

For the consistency checks, we now explicitly exclude the
`ExtractedArgumentNode`s (now much more plentiful due to the
overapproximation) that don't have a corresponding `getCallArg` tuple.

For various queries/tests using `instanceof ArgumentNode`, we instead us
`isArgumentNode`, which explicitly filters out the ones for which
`isArgumentOf` doesn't hold (which, again, is the case for most of the
nodes in the overapproximation).
2026-01-30 12:50:25 +00:00
Taus
7fccc23dbe Python: Make ExtractedArgumentNode local
Explicitly adds a bunch of nodes that were previously (using a global
analysis) identified as `ExtractedArgumentNode`s. These are then
subsequently filtered out in `argumentOf` (which is global) by putting
the call to `getCallArg` there instead of in the charpred.
2026-01-30 12:50:25 +00:00
Taus
ac5a74448f Python: Fix tests
With `ModuleVariableNode`s now appearing for _all_ global variables (not
just the ones that actually seem to be used), some of the tests changed
a bit. Mostly this was in the form of new flow (because of new nodes
that popped into existence). For some inline expectation tests, I opted
to instead exclude these results, as there was no suitable location to
annotate. For the normal tests, I just accepted the output (after having
vetted it carefully, of course).
2026-01-30 12:50:25 +00:00
Taus
30ce4069c7 Python: Remove global restriction on ModuleVariableNode
This may result in more nodes, but it should still be bounded by the
number of global variables in the source code.
2026-01-30 12:50:24 +00:00
Taus
4543c66d26 Python: Prepare LocalSourceNode for locality
Removes the dependence on the (global) `ModuleVariableNode.getARead()`,
by adding a local version (that doesn't include `import *` reads)
instead.
2026-01-30 12:50:24 +00:00
Mathias Vorreiter Pedersen
5f079c1d51 C++: Add change note. 2026-01-30 12:19:28 +00:00
Michael B. Gale
5ba3b679dd Move into if statement 2026-01-30 12:18:56 +00:00
yoff
8c0baefd3b Merge pull request #21141 from mbaluda/prompt-injection
Python: Prompt injection in OpenAI clients
2026-01-30 12:55:56 +01:00
Anders Peter Fugmann
78495035a6 Merge pull request #20965 from github/andersfugmann/kotlin_2.3.0-beta2
Kotlin: Support Kotlin 2.3.0
2026-01-30 11:37:19 +01:00
Owen Mansel-Chan
a3885cd8b2 Replace sanitizer by exclusion from sink definition 2026-01-30 09:28:02 +00:00
Owen Mansel-Chan
b4cb2c3f13 Make qldoc slightly more specific 2026-01-30 09:28:01 +00:00
Owen Mansel-Chan
ef6332c581 Allow MaD sanitizers for queries with MaD sinks 2026-01-30 09:27:59 +00:00
Owen Mansel-Chan
ad6f800022 Pretty print model numbers in tests 2026-01-30 09:21:24 +00:00
Owen Mansel-Chan
e5f52f086c Merge pull request #21235 from owen-mc/shared/docs/provenance-path-graph
Shared: Add missing QLDocs
2026-01-30 09:02:48 +00:00
Jon Janego
18a2aca42f Merge pull request #21237 from github/urllib-typo-fix
Urllib typo fix
2026-01-29 17:32:12 -06:00
yoff
e7a0fc7140 python: Add query for prompt injection
This pull request introduces a new CodeQL query for detecting prompt injection vulnerabilities in Python code targeting AI prompting APIs such as agents and openai. The changes includes a new experimental query, new taint flow and type models, a customizable dataflow configuration, documentation, and comprehensive test coverage.
2026-01-29 23:47:52 +01:00
Jon Janego
f14ccd8c81 Fix typo in taint flow model for urllib.parse 2026-01-29 16:21:14 -06:00
Jon Janego
e54d7c7c73 Update CHANGELOG.md 2026-01-29 16:20:25 -06:00
Jon Janego
813d4639ca Fix typo in taint flow model for urllib.parse 2026-01-29 16:18:21 -06:00
Michael B. Gale
76fe3fa502 C#: Make sure allFeeds contains at least explicitFeeds 2026-01-29 21:43:44 +00:00
Owen Mansel-Chan
8b936c5dbe Add missing QLDocs 2026-01-29 16:45:23 +00:00
Taus
34800d1519 Merge pull request #20945 from joefarebrother/python-websockets
Python: Model remote flow sources for the `websockets` library
2026-01-29 15:47:46 +01:00
Jon Janego
1644376cc9 Merge pull request #21222 from github/codeql-spark-run-21376405640
Update changelog documentation site
2026-01-29 08:44:11 -06:00
Mathias Vorreiter Pedersen
1b1c9c680c Merge pull request #21227 from MathiasVP/postfix-fix
C++: Get rid of an ugly workaround in dataflow
2026-01-29 12:25:02 +00:00
Mathias Vorreiter Pedersen
61a53fadc0 C++: Fix spelling. 2026-01-29 11:50:44 +00:00
Owen Mansel-Chan
2f29c905c3 Fix typo in change note
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-28 22:39:08 +00:00
Owen Mansel-Chan
e1cf0a15ed Add change note 2026-01-28 22:12:31 +00:00
Owen Mansel-Chan
52c510bfea Use shared getScope instead of getRoot 2026-01-28 22:12:30 +00:00
Owen Mansel-Chan
b2f878229d Use shared getASuccessor and getAPredecessor 2026-01-28 22:12:23 +00:00
Owen Mansel-Chan
3dd6b3fb69 Use shared basic blocks library 2026-01-28 22:11:59 +00:00
Owen Mansel-Chan
c316d51d41 Add ConditionGuardNode.getOutcome 2026-01-28 21:46:26 +00:00
Mathias Vorreiter Pedersen
25647badbd C++: Fix the AST wrapper for binary logical operators. 2026-01-28 14:06:10 +00:00
Mathias Vorreiter Pedersen
6445fd805d C++: Fix IR -> AST mapping for basic blocks. 2026-01-28 14:01:34 +00:00
Owen Mansel-Chan
a35e7b27af Merge pull request #21226 from owen-mc/java/update-qhelp-unrelease-lock
Java: Improve qhelp for `java/unreleased-lock` and add lock type exclusion
2026-01-28 09:46:31 +00:00
Anders Fugmann
ab495fa843 Kotlin: Inline cast 2026-01-28 10:11:22 +01:00
Anders Fugmann
2320d502db Kotlin: Address detections from kotin internal queries 2026-01-28 10:11:21 +01:00
Anders Fugmann
31867a56fb Kotlin: Accept test changes
Accept test changes from Kotlin 2.3.0 update

Updates expected test outputs for kotlin2 library tests to match
actual compiler output. Changes include:
- Location adjustments for properties/methods (now point to identifiers)
- CastExpr -> ImplicitCastExpr for implicit type casts
- Removed duplicate BlockStmt entries in loop ASTs
- Super constructor call location changes

Note that in Kotlin 2.3.0 super constructor calls now have locations spanning
entire class declarations instead of the actual super call site.
2026-01-28 10:11:21 +01:00
Anders Fugmann
86d9c349ec Kotlin: Accept test changes 2026-01-28 10:11:21 +01:00
Anders Fugmann
59fa01e386 Kotlin: Add bitwise 'and' operation expected by Kotlin 2.3 compiler to exist in the stdlib 2026-01-28 10:11:20 +01:00
Anders Fugmann
a6f8af0de5 Kotlin: Accept column location changes in tests 2026-01-28 10:11:20 +01:00
Anders Fugmann
f6f5b7e1e9 Kotlin: Accept test changes after rebasing to include changes from https://github.com/github/codeql/pull/21216 2026-01-28 10:11:19 +01:00
Anders Fugmann
275724000b Kotlin: Update kotlin serialization integration test to use Kotlin compiler 1.8.10 and accept test changes 2026-01-28 09:30:22 +01:00
Anders Fugmann
939f3e83aa Kotlin: Update kotlin compiler version in integration tests 2026-01-28 09:30:22 +01:00
Anders Fugmann
d69fe20d7d Kotlin: Bump upper bound for supported kotlin version in integration test 2026-01-28 09:30:22 +01:00
Anders Fugmann
9f5de6b4f2 Kotlin: Bump versions in documentation 2026-01-28 09:30:21 +01:00
Anders Fugmann
6d60595d73 Kotlin: Add changenotes for Kotlin 2.3 support and removal of support for Kotlin 1.6 and 1.7 2026-01-28 09:30:21 +01:00
Anders Fugmann
e1f3d5b374 Kotlin: Do not skip writing of getter and setters if the local deligate is null 2026-01-28 09:30:20 +01:00
Anders Fugmann
5cdfb77504 Kotlin: Add additional warning suppresion to v1_9_0 and remove copy in v2_3_0 2026-01-28 09:30:20 +01:00
Anders Fugmann
8ee35231c2 Kotlin: Remove support for Kotlin versions 1.6 and 1.7
This change rolls up all files from v1_6_0, v1_6_20, v1_7_0 and v_1_7_20.
In addition, versioned files that are not overridden by any later Kotlin versions (i.e. files that only have one copy under utils/versions) are inlined and removed to simplify list of changes.

List of removed/inlined files:
     allOverriddenIncludingSelf.kt
     copyTo.kt
     ExperimentalCompilerApi.kt
     getFileClassFqName.kt
     IsUnderscoreParameter.kt
     ReferenceEntity.kt
     SyntheticBodyKind.kt
     Types.kt
     withHasQuestionMark.kt
2026-01-28 09:30:20 +01:00
Anders Fugmann
55525279ca Kotlin: Remove obsolete file 2026-01-28 09:30:19 +01:00
Anders Fugmann
4d7c84178a Kotlin: Fix spelling 2026-01-28 09:30:19 +01:00
Anders Fugmann
eb37255c4b Kotlin: Create IrSimpleType factory function to support constructor changes introduced in Kotlin 2.3 2026-01-28 09:30:18 +01:00
Anders Fugmann
164cae845d Kotlin: Strip prefix when building plugin 2026-01-28 09:30:18 +01:00
Anders Fugmann
b8d01ed21b Kotlin: Fix bazel format and address copilot review comments 2026-01-28 09:30:18 +01:00
Anders Fugmann
cc25d30fed Kotlin: Update compiler plugin for Kotlin 2.3.0 2026-01-28 09:30:17 +01:00
Anders Fugmann
07e5479aff Kotlin: Add support for Kotlin 2.3.0 2026-01-28 09:30:17 +01:00
Anders Fugmann
bc419fd35c Kotlin: Silence compilation warnings 2026-01-28 09:30:16 +01:00
Anders Fugmann
772503bad8 Kotlin: Remove resource_strip_prefix for kotlin extraction 2026-01-28 09:30:16 +01:00
Anders Fugmann
beff080ee7 Kotlin: Update kotlin_rules to 2.2.0 and remove support for Kotlin 1.6 and 1.7 2026-01-28 09:30:16 +01:00
Anders Peter Fugmann
f4edff9452 Merge pull request #21216 from github/andersfugmann/kotlin_extractor_load_last
Kotlin: Load kotlin extractor last
2026-01-28 09:22:46 +01:00
Mathias Vorreiter Pedersen
4503c625b4 C++: Implement copilot suggestions. 2026-01-27 19:02:28 +00:00
Mathias Vorreiter Pedersen
28fec0c129 C++: Accept test changes. 2026-01-27 18:29:21 +00:00
Mathias Vorreiter Pedersen
445cca1432 C++: Proper SSA support for post-crement reads. 2026-01-27 18:29:12 +00:00
Henry Mercer
497135593c Merge branch 'main' into codeql-spark-run-21376405640 2026-01-27 09:11:02 -08:00
Henry Mercer
2214a944bb Merge pull request #21225 from github/rc/3.20
Merge `rc/3.20` back to `main`
2026-01-27 07:56:58 -08:00
Owen Mansel-Chan
a0c35516bd Add change note 2026-01-27 15:48:04 +00:00
Owen Mansel-Chan
42cbe0734e Specify what lock types are considered in qhelp 2026-01-27 15:39:03 +00:00
Owen Mansel-Chan
516b84b59a Add test for *Pool exclusion 2026-01-27 15:38:29 +00:00
Owen Mansel-Chan
4f1ad0ff5d Exclude *Pool classes from LockType 2026-01-27 15:38:06 +00:00
Jon Janego
ccc4d8ae3f Update docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.24.0.rst
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-27 09:18:25 -06:00
Simon Friis Vindum
2cb0e81da0 Rust: Remove duplicated inclusion of getAdditionalPathTypeAt 2026-01-27 16:17:52 +01:00
Simon Friis Vindum
aae5333325 Rust: Add test with type inference inconsistency 2026-01-27 16:17:51 +01:00
Simon Friis Vindum
fa59a8ae24 Rust: Implement TypeMention for paths that access associated types on concrete types 2026-01-27 16:17:49 +01:00
Simon Friis Vindum
4526afc29f Rust: Paths to associated types resolve to the associated type if implementation is unclear 2026-01-27 16:17:48 +01:00
Jon Janego
1c5a9053f9 Fix typo in call graph description in change notes 2026-01-27 09:17:40 -06:00
Jon Janego
5a08adc06c Update docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.23.1.rst
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-27 09:11:01 -06:00
Jon Janego
0b8b75ac25 Update codeql-cli-2.23.1.rst 2026-01-27 09:10:37 -06:00
Mads Navntoft
b7125a009e Merge pull request #21221 from github/navntoft/struts
Java: Add support for Struts 7.x package names
2026-01-27 15:53:26 +01:00
Owen Mansel-Chan
97a0b9f0ca (trivial) Remove double spaces in qhelp 2026-01-27 14:40:23 +00:00
Ian Lynagh
46a5035543 Merge pull request #21200 from github/igfoo/rename-holdsInBase-to-isBase
C++: Rename `holdsInBase` to `isBase`
2026-01-27 13:50:04 +00:00
Ian Lynagh
bb71790a53 Merge pull request #21199 from github/igfoo/refactorOverlayFunctionCalls
C++ overlay: Simplify QL
2026-01-27 13:03:01 +00:00
Mathias Vorreiter Pedersen
db3f22a2e8 C++: Another small refactor. 2026-01-27 12:46:52 +00:00
Mathias Vorreiter Pedersen
3d445be926 C++: Small refactor. 2026-01-27 12:46:48 +00:00
Mads Navntoft
ede05b54ea Java: Add change note for Struts 7.x package name support 2026-01-27 13:00:16 +01:00
Mads Navntoft
9a94d0474c Java: Add support for Struts 7.x package names
Updates Struts library to recognize both legacy xwork2 and new struts2
packages:
- StrutsActions.qll: Add org.apache.struts2 alternatives for Action,
  Preparable, ActionSupport
- StrutsConventions.qll: Add org.apache.struts2.action.Action
  alternative

This maintains backward compatibility for analyzing Struts 2.x-6.x apps
while supporting Struts 7.x which renamed packages from
com.opensymphony.xwork2 to org.apache.struts2.
2026-01-27 12:57:55 +01:00
Mathias Vorreiter Pedersen
9e9d57bac5 Merge pull request #21219 from MathiasVP/force-more-uniquess-in-buffer-overflow
C++: Enforce more uniqueness in `Buffer.qll`
2026-01-27 11:00:40 +00:00
Owen Mansel-Chan
8e3c373548 Merge pull request #21223 from github/workflow/coverage/update
Update CSV framework coverage reports
2026-01-27 10:35:28 +00:00
Owen Mansel-Chan
5bfeede364 Add dependency on shared controlflow library 2026-01-27 09:43:19 +00:00
github-actions[bot]
f49531b3ca Add changed framework coverage reports 2026-01-27 00:28:39 +00:00
github-actions[bot]
0f4f0b880a update codeql documentation 2026-01-26 22:32:02 +00:00
Mathias Vorreiter Pedersen
e0a7889b71 C++: Undo the hack. 2026-01-26 21:28:21 +00:00
Mathias Vorreiter Pedersen
bd09aad7d5 C++: Add tests. 2026-01-26 21:24:22 +00:00
Mathias Vorreiter Pedersen
980c4cf5f4 Update cpp/ql/lib/semmle/code/cpp/commons/Buffer.qll
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-26 19:12:38 +00:00
Mathias Vorreiter Pedersen
544015d0a6 C++: Add change note. 2026-01-26 19:12:14 +00:00
Tom Hvitved
b974a84bef Merge pull request #21051 from hvitved/shared/flow-summary-provenance-filtering
Shared: Provenance-based filtering of flow summaries
2026-01-26 17:24:34 +01:00
Mathias Vorreiter Pedersen
aed0e688f5 C++: Remove uniqueness since it is enforced earlier now. 2026-01-26 15:01:40 +00:00
Mathias Vorreiter Pedersen
13a5249a9d C++: Enforce uniqueness in the other branch of 'getSize'. 2026-01-26 15:00:58 +00:00
Mathias Vorreiter Pedersen
91752e5307 C++: Enforce uniqueness in 'getVariableSize'. 2026-01-26 15:00:00 +00:00
Simon Friis Vindum
330505c524 Rust: Add tests for associated types 2026-01-26 15:03:07 +01:00
Anders Fugmann
73850f1b56 Kotlin: Add changenote 2026-01-26 13:27:34 +01:00
yoff
2bd4ccee45 Merge pull request #21004 from yoff/python/mad-barriers
Python: MaD barriers
2026-01-26 13:11:21 +01:00
Tom Hvitved
df09f02981 Shared: Shadow hasManualModel in RelevantSummarizedCallable 2026-01-26 12:40:25 +01:00
Tom Hvitved
732c60c07c C#: Revert change to getASummarizedCallableTarget 2026-01-26 12:40:24 +01:00
Tom Hvitved
0f6bae0ae1 Add change notes 2026-01-26 12:40:22 +01:00
Tom Hvitved
93dad867cd JS: Adapt to changes in FlowSummaryImpl 2026-01-26 12:40:21 +01:00
Tom Hvitved
3b1e062985 C++: Adapt to changes in FlowSummaryImpl 2026-01-26 12:40:20 +01:00
Tom Hvitved
0adece7cde Python: Adapt to changes in FlowSummaryImpl 2026-01-26 12:40:19 +01:00
Tom Hvitved
739748c29b Go: Adapt to changes in FlowSummaryImpl 2026-01-26 12:40:18 +01:00
Tom Hvitved
47d9e8a357 Swift: Adapt to changes in FlowSummaryImpl 2026-01-26 12:40:17 +01:00
Tom Hvitved
7024b07dd2 Java: Adapt to changes in FlowSummaryImpl
Missing manual models were added using the following code added to `FlowSummaryImpl.qll`:

```ql
    private predicate testsummaryElement(
      Input::SummarizedCallableBase c, string namespace, string type, boolean subtypes, string name,
      string signature, string ext, string originalInput, string originalOutput, string kind,
      string provenance, string model, boolean isExact
    ) {
      exists(string input, string output, Callable baseCallable |
        summaryModel(namespace, type, subtypes, name, signature, ext, originalInput, originalOutput,
          kind, provenance, model) and
        baseCallable = interpretElement(namespace, type, subtypes, name, signature, ext, isExact) and
        (
          c.asCallable() = baseCallable and input = originalInput and output = originalOutput
          or
          correspondingKotlinParameterDefaultsArgSpec(baseCallable, c.asCallable(), originalInput,
            input) and
          correspondingKotlinParameterDefaultsArgSpec(baseCallable, c.asCallable(), originalOutput,
            output)
        )
      )
    }

    private predicate testsummaryElement2(
      string namespace, string type, boolean subtypes, string name, string signature, string ext,
      string originalInput, string originalOutput, string kind, string provenance, string model,
      string namespace2, string type2
    ) {
      exists(Input::SummarizedCallableBase c |
        testsummaryElement(c, namespace2, type2, _, _, _, ext, originalInput, originalOutput, kind,
          provenance, model, false) and
        testsummaryElement(c, namespace, type, subtypes, name, _, _, _, _, _, provenance, _, true) and
        signature = paramsString(c.asCallable()) and
        not testsummaryElement(c, _, _, _, _, _, _, originalInput, originalOutput, kind, provenance,
          _, true)
      )
    }

    private string getAMissingManualModel(string namespace2, string type2) {
      exists(
        string namespace, string type, boolean subtypes, string name, string signature, string ext,
        string originalInput, string originalOutput, string kind, string provenance, string model
      |
        testsummaryElement2(namespace, type, subtypes, name, signature, ext, originalInput,
          originalOutput, kind, provenance, model, namespace2, type2) and
        result =
          "- [\"" + namespace + "\", \"" + type + "\", True, \"" + name + "\", \"" + signature +
            "\", \"\", \"" + originalInput + "\", \"" + originalOutput + "\", \"" + kind + "\", \"" +
            provenance + "\"]"
      )
    }
```
2026-01-26 12:40:15 +01:00
Tom Hvitved
c975ae5231 Ruby: Adapt to changes in FlowSummaryImpl 2026-01-26 12:40:14 +01:00
Tom Hvitved
c4e0dda178 Rust: Adapt to changes in FlowSummaryImpl 2026-01-26 12:40:10 +01:00
Tom Hvitved
b11b091559 C#: Adapt to changes in FlowSummaryImpl 2026-01-26 12:39:38 +01:00
Tom Hvitved
4ce04e4749 Shared: Provenance-based filtering of flow summaries 2026-01-26 12:39:37 +01:00
Simon Friis Vindum
01cc19cffc Rust: Add trait visibility test using Self 2026-01-26 12:31:16 +01:00
Simon Friis Vindum
793d2c79de Merge pull request #21215 from paldepind/shared/type-mention-tree
Shared, Rust: Use `HasTypeTreeSig` for `TypeMention`
2026-01-26 12:00:02 +01:00
Michael B. Gale
f76211c64a Merge pull request #21136 from github/mbg/java/maven-plugin-repo-changenote
Java: Add change note for plugin repo support
2026-01-26 10:44:51 +00:00
Michael B. Gale
ffa700c825 Merge pull request #21214 from github/mbg/go/diagnostics-unit-tests
Go: Make diagnostics unit-testable and add test for `EmitCannotFindPackages`
2026-01-26 10:44:03 +00:00
Michael B. Gale
bd8a127565 Merge pull request #21213 from github/mbg/go/improve-package-not-found 2026-01-26 09:59:01 +00:00
Anders Fugmann
c488086135 Kotlin: Ensure the kotlin extractor is loaded as the last extension to be able to capture expansions from other extensions 2026-01-26 10:38:11 +01:00
Simon Friis Vindum
452d307fd5 Rust: Make TypeMention directly satisfy HasTypeTree 2026-01-26 09:46:33 +01:00
Simon Friis Vindum
7100ca4262 Rust: Adapt to changes in shared type inference library 2026-01-26 09:33:50 +01:00
Simon Friis Vindum
a7fecaaa1b Shared: Use HasTypeTreeSig for TypeMention 2026-01-26 09:29:51 +01:00
Michael B. Gale
45e0a929a8 Move nil check into FileDiagnosticsWriter implementation of WriteDiagnostic 2026-01-25 15:33:26 +00:00
Michael B. Gale
8e7d62600d Make EmitCannotFindPackages testable and add tests 2026-01-25 15:24:43 +00:00
Michael B. Gale
f1f4ddb76c Add dependency on testify/assert 2026-01-25 15:20:06 +00:00
Michael B. Gale
fafc2ddc0b Add DiagnosticsWriter interface to abstract over diagnostics output implementation 2026-01-25 15:20:05 +00:00
Michael B. Gale
f837d90060 Improve go/autobuilder/package-not-found diagnostic message 2026-01-25 15:18:19 +00:00
Michael B. Gale
fdc5ae375b Add IsActionsWorkflow 2026-01-25 12:39:56 +00:00
Michael B. Gale
e250c711aa Add IsDynamicActionsWorkflow 2026-01-25 12:06:30 +00:00
Mathias Vorreiter Pedersen
cabcb83b2f Merge pull request #21212 from MathiasVP/fix-as-definition
C++: Fix missing results for `Node.asDefinition`
2026-01-23 19:39:22 +00:00
Jeroen Ketema
e36080061d Merge pull request #21162 from owen-mc/cpp/mad-barriers
C++: Allow MaD barriers
2026-01-23 18:14:01 +01:00
Mathias Vorreiter Pedersen
6c2a3a68b6 C++: Add change note. 2026-01-23 16:35:02 +00:00
Mathias Vorreiter Pedersen
a556152b9d C++: Fix asDefinition to not only work for SSA definitions. 2026-01-23 16:23:21 +00:00
Mathias Vorreiter Pedersen
e58a8330cd C++: Add test for asDefinition. 2026-01-23 16:22:39 +00:00
Chris Smowton
949fc3745a Merge pull request #21211 from smowton/smowton/fix/long-actions-expressions
Actions: tolerate long `${{ ... }}` expressions
2026-01-23 07:54:59 -08:00
Chris Smowton
a326ce34a8 change note 2026-01-23 15:47:17 +00:00
Chris Smowton
9018401722 Add test 2026-01-23 15:37:40 +00:00
Chris Smowton
6c2e0f7658 Move library tests into subdirectory 2026-01-23 15:35:25 +00:00
Chris Smowton
dc26a57548 Use posessive quantifier to avoid stack overflow on large ${{}} expressions 2026-01-23 15:35:24 +00:00
Owen Mansel-Chan
82e2afc93c Merge pull request #5 from jketema/cpp/mad-barriers
C++: Add MySQL MaD taint and barrier models
2026-01-23 15:06:32 +00:00
Jeroen Ketema
7ed1c0a2ee C++: Add change note 2026-01-23 14:15:29 +01:00
Jeroen Ketema
ecd247bf16 C++: Add MaD models for MySQL escaping 2026-01-23 14:15:27 +01:00
Jeroen Ketema
ad590f30c1 Merge branch 'main' into cpp/mad-barriers 2026-01-23 14:14:22 +01:00
Jeroen Ketema
075041f1ae Merge pull request #21209 from jketema/jketema/sql
C++: Simplify `cpp/sql-injection` barrier
2026-01-23 13:33:19 +01:00
Rasmus Wriedt Larsen
7e674f3227 Merge pull request #21160 from owen-mc/scripts/accept-ci-changes-more-robust
Scripts: be more robust when parsing test logs
2026-01-23 11:49:06 +01:00
Geoffrey White
573ab025b4 Merge pull request #21191 from geoffw0/addsub
Rust: More test cases for add, sub etc
2026-01-23 10:30:21 +00:00
Simon Friis Vindum
7bdf2ab9d2 Merge pull request #21210 from paldepind/rust/self-tests
Rust: Add tests for `Self` constructors
2026-01-23 11:27:58 +01:00
Simon Friis Vindum
8f6f7d0985 Rust: Fix typo
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-23 10:07:11 +01:00
Simon Friis Vindum
3d7049265f Rust: Add tests for Self constructors 2026-01-23 09:06:49 +01:00
Jeroen Ketema
ccd07b8a63 C++: Simplify cpp/sql-injection barrier
SQL sanitizers will not likely also be sources, so using `isBarrierIn` here
does not make a lot of sense.

I ran with and without this change on MRVA and got identical results.
2026-01-23 09:03:48 +01:00
yoff
55abc52c61 python: format file 2026-01-22 20:51:46 +01:00
Simon Friis Vindum
e40f896b17 Merge pull request #21205 from paldepind/shared/ti-boound-tm
Rust: Change `getATypeParameterConstraint` to not require a `TypeMention`
2026-01-22 19:08:53 +01:00
yoff
d05901ad3f python/javascript/ruby: mark internal predicates 2026-01-22 17:30:24 +01:00
yoff
7f00a7f67e Update python/ql/lib/semmle/python/security/dataflow/UrlRedirectCustomizations.qll
Co-authored-by: Anders Schack-Mulligen <aschackmull@users.noreply.github.com>
2026-01-22 17:30:24 +01:00
yoff
b08c972cc3 ruby: Add back sanitizer as MaD model 2026-01-22 17:30:24 +01:00
yoff
15980cb1da ruby: remove sanitizer to be replaced by MaD model 2026-01-22 17:30:24 +01:00
yoff
75bd4a7a12 javascript: add MaD model
- consider if the model is in the right place
- consider if the barrier kind (sink kind) is the appropriate one
2026-01-22 17:30:24 +01:00
yoff
da2f77d615 javascript: remove sanitizer to be replaced by model 2026-01-22 17:30:24 +01:00
yoff
3dbfb9fa4b python: add machinery for MaD barriers
and reinstate previously removed barrier
now as a MaD row
2026-01-22 17:30:24 +01:00
yoff
699ed50432 python: remove barrier that can be expressed in MaD 2026-01-22 17:30:24 +01:00
Geoffrey White
f484d95081 Merge remote-tracking branch 'upstream/main' into addsub 2026-01-22 16:03:42 +00:00
Simon Friis Vindum
ffaf1c0a24 Rust: Change getATypeParameterConstraint to not require a TypeMention 2026-01-22 14:54:24 +01:00
Tom Hvitved
201512525b Merge pull request #21203 from hvitved/ql4ql/use-nightly
QL4QL: Use nightly CodeQL CLI
2026-01-22 14:30:24 +01:00
Geoffrey White
b8581e89bf Rust: More affected tests. 2026-01-22 13:22:43 +00:00
Simon Friis Vindum
7d34f6e262 Merge pull request #21204 from paldepind/rust/assoc-tp-fix
Rust: Remove mistakenly included inherited associated types
2026-01-22 13:46:09 +01:00
Geoffrey White
67b52e29e0 Rust: Update other affected tests. 2026-01-22 12:29:21 +00:00
Geoffrey White
3d6765ba1c Rust: Clean up / fix some existing models. 2026-01-22 12:29:20 +00:00
Geoffrey White
fa9677d615 Rust: Add model variants for core::ops::bit on Wrapping. 2026-01-22 12:29:14 +00:00
Geoffrey White
9d645508ea Rust: Add model variants for core::ops:arith on Wrapping. 2026-01-22 10:46:15 +00:00
Simon Friis Vindum
114db99dca Rust: Remove mistakenly included inherited associated types 2026-01-22 11:44:26 +01:00
Tom Hvitved
8ce2618b7d Merge pull request #21151 from hvitved/rust/disable-universal-conds-by-default
Type inference: Disable universal conditions by default
2026-01-22 11:19:50 +01:00
Geoffrey White
e8ef58d381 Rust: Fix an issue with identifying sources and sinks in the test. 2026-01-22 09:58:58 +00:00
Geoffrey White
f8d0a0d509 Rust: Expand the Wrapping test some more. 2026-01-22 09:52:26 +00:00
Tom Hvitved
80d543ecae QL4QL: Use nightly CodeQL CLI 2026-01-22 10:14:05 +01:00
Tom Hvitved
65ca8849f2 Type inference: Disable universal conditions 2026-01-22 09:56:52 +01:00
Mathias Vorreiter Pedersen
73eb3e262d Merge pull request #21202 from MathiasVP/add-is-live-predicate-to-ssa-definition
C++: Add `isLiveAtEndOfBlock` predicate to `Ssa::Definition`
2026-01-21 22:50:46 +00:00
Mathias Vorreiter Pedersen
60ee92d834 C++: Drive-by fix: Don't use the uncached ''getAPhiInputOrPriorDefinition' predicate. Instead, cache it and call it like we are supposed to. 2026-01-21 20:28:28 +00:00
Mathias Vorreiter Pedersen
d89967ce8e C++: Add ''isLiveAtEndOfBlock' predicate to 'Definition'. 2026-01-21 20:27:39 +00:00
Mathias Vorreiter Pedersen
dd415386ea Merge pull request #21142 from MathiasVP/ir-support-for-assertions
C++: Generate IR for assertions in release builds
2026-01-21 19:32:24 +00:00
Mathias Vorreiter Pedersen
64a7d7d836 C++: Also output variable name in test. 2026-01-21 19:14:50 +00:00
Ian Lynagh
5e536fb121 C++: Rename holdsInBase to isBase
Makes it consistent with isOverlay.
2026-01-21 18:13:58 +00:00
Ian Lynagh
7bd62087a4 C++ overlay: Simplify QL
Remove redundant variable names.
2026-01-21 18:06:43 +00:00
Owen Mansel-Chan
656ebab776 Allow MaD barriers
This commit was done by Opus 4.5 with the following prompt:

In the commit 004d40ee93 I have made it so that C# CodeQL queries which use sinks defined using data extensions (also known as "models-as-data"), which are accessed using `sinkNode(Node node, string kind)`, also use barriers defined using models-as-data, which are accessed using `barrierNode(Node node, string kind)`, with the same `kind` string. Please do the same for C++. If there are any complicated cases then list them at the end for me to do manually.
2026-01-21 14:45:05 +00:00
Mathias Vorreiter Pedersen
e1089c8d89 Merge branch 'main' into ir-support-for-assertions 2026-01-21 13:56:30 +00:00
Mathias Vorreiter Pedersen
11566ee256 C++: Accept test changes. 2026-01-21 13:50:28 +00:00
Mathias Vorreiter Pedersen
e4ec79255b C++: Fix bugs in variable resolution for assertions following review comments. 2026-01-21 13:50:27 +00:00
Mathias Vorreiter Pedersen
c30dffc7b9 C++: Add more tests. 2026-01-21 13:50:13 +00:00
Geoffrey White
1d461ff5ad Rust: Test unpacking the Wrapping number. 2026-01-21 12:49:59 +00:00
Mathias Vorreiter Pedersen
6ae1ea73f7 Merge pull request #21185 from MathiasVP/mad-cpp-guards
C++: Support models-as-data barriers and barrier guards
2026-01-21 12:13:49 +00:00
Paolo Tranquilli
0b9691aca2 Merge pull request #21047 from github/redsun82/codegen-readme
codegen: mention Rust in the README
2026-01-21 02:51:07 -08:00
Tom Hvitved
9a9e9ac23c Merge pull request #21168 from hvitved/rust/type-inference-remove-blanket-constraint-restriction
Rust: Remove restriction that blanket(-like) impls must have a constraint
2026-01-21 11:05:17 +01:00
Taus
5414bd2716 Merge pull request #21134 from yoff/python/support-ListElement-in-MaD
Python support `ListElement` in MaD
2026-01-20 23:38:02 +01:00
Mathias Vorreiter Pedersen
048afc2c88 C++: Add assertion inside catch block. This does not yet work because the 'LocalScopeVariable' does not have a result for 'getFunction'. 2026-01-20 21:31:52 +00:00
Tom Hvitved
f76d85c9c6 Address review comments 2026-01-20 21:06:20 +01:00
yoff
fa926456ef python: add changenote 2026-01-20 18:16:03 +01:00
Jon Janego
1c38fb6ad6 Merge pull request #21196 from github/changedocs-2.23.9
Changedocs 2.23.9
2026-01-20 10:43:21 -06:00
Jon Janego
b3b30a15b8 Changedocs for 2.23.9 2026-01-20 10:27:54 -06:00
Jon Janego
4ca508d420 Changedocs for 2.23.9 2026-01-20 10:23:36 -06:00
Jeroen Ketema
fbcb65a5d9 Merge pull request #21195 from jketema/jketema/embed
C++: Support C23/C++26 `#embed` preprocessor directives
2026-01-20 16:27:44 +01:00
Jeroen Ketema
701569bb20 Update cpp/ql/lib/semmle/code/cpp/Preprocessor.qll
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-20 16:05:51 +01:00
Jeroen Ketema
b35271a2ca C++: Add upgrade and downgrade script 2026-01-20 15:40:24 +01:00
Jeroen Ketema
28047fe625 C++: Update dbscheme stats file 2026-01-20 14:39:00 +01:00
Jeroen Ketema
e7044061fb C++: Support C23/C++26 #embed preprocessor directives 2026-01-20 14:38:58 +01:00
Ian Lynagh
f8f5094452 Merge pull request #20957 from igfoo/igfoo/consistent-metadata-and-overlay-support
C++ / JS / python: Be consistent in TRAP sections
2026-01-20 12:43:49 +00:00
Ian Lynagh
51b1ea84d3 ql for ql: Fix formatting 2026-01-20 12:12:20 +00:00
Ian Lynagh
49ced5fd9d C++: Add up/downgrade scripts 2026-01-20 11:57:29 +00:00
Ian Lynagh
d6d2855626 rust: Add up/downgrade scripts 2026-01-20 11:56:20 +00:00
Ian Lynagh
c37ab8f98e rust: Regenerate dbscheme 2026-01-20 11:56:16 +00:00
Ian Lynagh
1fd60c7671 Ruby: Add up/downgrade scripts 2026-01-20 11:56:16 +00:00
Ian Lynagh
82e9ea2da0 python: Add up/downgrade scripts 2026-01-20 11:56:16 +00:00
Ian Lynagh
a299174f4d javascript: Add up/downgrade scripts 2026-01-20 11:56:15 +00:00
Ian Lynagh
fdefb4d23a ql-for-ql: Regenerate dbscheme 2026-01-20 11:56:15 +00:00
Ian Lynagh
d2da49220b python: Regenerate dbscheme 2026-01-20 11:56:15 +00:00
Ian Lynagh
4b9c9e7a5a Ruby: Regenerate dbscheme 2026-01-20 11:56:15 +00:00
Ian Lynagh
df8029ff87 tree-sitter: Use more standard shared dbscheme sections
We now use the shared "Overlay support" and "Database metadata".
2026-01-20 11:56:15 +00:00
Ian Lynagh
4140121e96 javascript: Use more standard shared dbscheme sections
We now use the shared "Overlay support" and "Database metadata".
2026-01-20 11:56:14 +00:00
Ian Lynagh
7d6a1f72d5 C++: Use more standard shared dbscheme sections
We now use the shared "Overlay support" and "Database metadata".
2026-01-20 11:56:14 +00:00
Ian Lynagh
c6500e2759 tree-sitter: Add dbscheme regeneration instructions 2026-01-20 11:56:14 +00:00
Ian Lynagh
470bc7d6da ruby: Make 'dbscheme' a phony target 2026-01-20 11:56:14 +00:00
Ian Lynagh
d1175276ca python: Use more standard shared dbscheme sections
We now use the shared "Overlay support" and "Database metadata".
2026-01-20 11:56:13 +00:00
Ian Lynagh
d125e224ac python: Add dbscheme regeneration instructions 2026-01-20 11:56:13 +00:00
Philip Ginsbach-Chen
dc3b7aaab0 Merge pull request #21184 from github/ginsbach/OverlayDocumentation
add documentation for overlay annotations
2026-01-20 11:26:46 +00:00
Philip Ginsbach
8d5eb407ad incorporate additional suggestions from PR review 2026-01-20 11:17:15 +00:00
Tom Hvitved
224e5dece4 Merge pull request #21170 from paldepind/rust/type-inference-fns
Rust: Improve type inference for closures and function traits
2026-01-20 11:52:10 +01:00
Simon Friis Vindum
dd73399238 Rust: Tweak a comment
Co-authored-by: Tom Hvitved <hvitved@github.com>
2026-01-20 09:57:27 +01:00
Simon Friis Vindum
8e6f920ae2 Rust: Fix naming of mention_dyn_fn 2026-01-20 08:50:58 +01:00
Simon Friis Vindum
75cab960e2 Rust: Make AnyTraitFn abstract 2026-01-20 08:50:57 +01:00
Nick Rolfe
6fe76b3b11 Merge pull request #21190 from github/post-release-prep/codeql-cli-2.24.0
Post-release preparation for codeql-cli-2.24.0
2026-01-19 10:09:32 -08:00
Geoffrey White
ff6e598f72 Rust: Annotate failures with explanation. 2026-01-19 17:33:44 +00:00
Geoffrey White
fc5d5b4fcc Rust: Compress the existing core::ops::arith models a bit. 2026-01-19 17:33:41 +00:00
Geoffrey White
50fdc99b8c Rust: More test cases for operators, std::ops and std::num::Wrapping. 2026-01-19 16:58:03 +00:00
github-actions[bot]
48475e66af Post-release preparation for codeql-cli-2.24.0 2026-01-19 15:49:08 +00:00
Michael Nebel
93b3f65388 Merge pull request #21158 from michaelnebel/csharp/cfgforaccess
C# 14: Null conditional assignments.
2026-01-19 16:22:55 +01:00
Nick Rolfe
c5329f6f38 Merge pull request #21189 from github/release-prep/2.24.0
Release preparation for version 2.24.0
2026-01-19 07:19:55 -08:00
Nick Rolfe
1739e135f5 Fix list formatting inconsistency 2026-01-19 15:17:11 +00:00
Nick Rolfe
783676566c Fix typo in changelog 2026-01-19 15:12:05 +00:00
Geoffrey White
a0311c0ea3 Rust: Test spacing. 2026-01-19 15:07:42 +00:00
github-actions[bot]
4142b9c4ce Release preparation for version 2.24.0 2026-01-19 14:49:14 +00:00
Philip Ginsbach
930b17a2e2 clarify compileForOverlayEval only needed in language packs 2026-01-19 14:06:45 +00:00
Philip Ginsbach
efe413cbd0 expand overlay introduction with base/overlay context 2026-01-19 13:59:01 +00:00
Asger F
bedb80346a Merge pull request #20940 from asgerf/js/detect-minified-files
JS: Skip minified file if avg line length > 200
2026-01-19 14:31:09 +01:00
Michael Nebel
7ff1c12e8f C#: Add some more tests. 2026-01-19 13:17:47 +01:00
Michael Nebel
7ae2b7698e C#: Relax the condition for when a qualified expression might be null. 2026-01-19 13:17:07 +01:00
Mathias Vorreiter Pedersen
d183dcd6fc C++: Add 'internal: do not use' comment. 2026-01-19 12:04:12 +00:00
Mathias Vorreiter Pedersen
c11b464492 C++: Autoformat. 2026-01-19 11:58:11 +00:00
Mathias Vorreiter Pedersen
b3631545d4 C++: Delete unnecessary conjuncts after review comments. 2026-01-19 11:57:45 +00:00
Mathias Vorreiter Pedersen
c47a9ddf83 Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-19 11:46:42 +00:00
Philip Ginsbach
4e478c3629 add overlay documentation to handbook and language spec 2026-01-19 11:45:18 +00:00
Mathias Vorreiter Pedersen
7aca94b1ca C++: Add change note. 2026-01-19 11:43:59 +00:00
Mathias Vorreiter Pedersen
c70633a0f7 C++: Fix Code Scanning alert. 2026-01-19 11:41:26 +00:00
Mathias Vorreiter Pedersen
58a3260c96 Update cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedAssertion.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2026-01-19 11:33:48 +00:00
Mathias Vorreiter Pedersen
a11b271d6e C++: Finish up implementation of MaD barriers. 2026-01-19 11:30:23 +00:00
Anders Schack-Mulligen
48254800b1 WIP
C++: Add support for MaD barriers and barrier guards.
2026-01-19 11:30:21 +00:00
Mathias Vorreiter Pedersen
07ac8a5d81 C++: Parameterize the BarrierGuard modules. This is useful for barrier guards with flow states and will be necessary in the next commit for adding MaD specified barriers. 2026-01-19 11:30:19 +00:00
Mathias Vorreiter Pedersen
2b31928c7b C++: Add MaD barrier guard tests. 2026-01-19 11:30:17 +00:00
Mathias Vorreiter Pedersen
dc7ce3fba3 Merge pull request #21171 from MathiasVP/fix-conflation-in-guards
C++: Fix conflation in barrier guards
2026-01-19 11:29:05 +00:00
Philip Ginsbach
948623e767 add overlay annotation support to QL syntax highlighter 2026-01-19 10:36:11 +00:00
Tom Hvitved
fd309d6e49 Rust: Remove restriction that blanket(-like) impls must have a constraint 2026-01-19 11:21:58 +01:00
Michael Nebel
33fc2bab33 C#: Update test expected output. 2026-01-19 10:19:15 +01:00
Asger F
077bbb24ac Merge pull request #21159 from asgerf/js/vue-prop-function
JS: Add support for props callbacks in Vue router configs
2026-01-19 10:13:49 +01:00
Michael Nebel
beb7750c21 C#: Address review comments. 2026-01-19 10:06:14 +01:00
Tom Hvitved
06b99b2ce9 Merge pull request #21180 from hvitved/rust/fix-bad-join2
Rust: Fix bad join
2026-01-19 08:22:32 +01:00
Tom Hvitved
1c689d060b Merge pull request #21179 from hvitved/rust/fix-bad-join
Rust: Fix bad join
2026-01-16 17:20:19 +01:00
Mathias Vorreiter Pedersen
f05bff01e4 C++: Switch another 'DataFlowType' to 'Type'. 2026-01-16 12:42:33 +00:00
Mathias Vorreiter Pedersen
08a6b99cfd C++: Add change note. 2026-01-16 12:41:20 +00:00
Tom Hvitved
43e20176f0 Rust: Fix bad join
Before
```
Evaluated relational algebra for predicate _ElementImpl::Impl::MacroExpansion::isAttributeMacroExpansionSourceLocation/2#3429148c_Locatable::Lo__#antijoin_rhs@9f4aa4rk with tuple counts:
        5127263380  ~4%    {3} r1 = JOIN `_AstNodeImpl::Impl::AstNode#22e758cf_ElementImpl::Impl::MacroExpansion::getATokenTreeNode/1#a2df59a3__#shared` WITH `ElementImpl::Impl::MacroExpansion::isAttributeMacroExpansionSourceLocation/2#3429148c` ON FIRST 1 OUTPUT Lhs.1, Rhs.1, Lhs.0
            305226  ~0%    {2}    | JOIN WITH `Locatable::Locatable.getLocation/0#dispred#f3f7e2b2` ON FIRST 2 OUTPUT Lhs.0, Lhs.2
                           return r1
```

(No After; the predicate is no longer generated)
2026-01-16 13:30:10 +01:00
Mathias Vorreiter Pedersen
5e9fd12d8c Update cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-16 12:25:12 +00:00
Tom Hvitved
767acb8ff4 Rust: Fix bad join
Before
```
Evaluated relational algebra for predicate TypeMention::RefTypeReprMention.resolveRootType/0#dispred#091b949a#fb@4bd8a49g with tuple counts:
            124419   ~0%    {1} r1 = RefTypeRepr::Generated::RefTypeRepr#422893fa AND NOT `RefTypeRepr::Generated::RefTypeRepr.isMut/0#dispred#e2b9988f`(FIRST 1)
        6621454761   ~1%    {3}    | JOIN WITH `Type::DataType.getTypeItem/0#dispred#83467854` CARTESIAN PRODUCT OUTPUT Rhs.0, Lhs.0, Rhs.1
         915101745   ~0%    {4}    | JOIN WITH `project#Type::DataType.getPositionalTypeParameter/1#dispred#3bf49cbe` ON FIRST 1 OUTPUT Lhs.2, _, Lhs.1, Lhs.0
         915101745   ~3%    {4}    | REWRITE WITH Out.1 := "Ref"
            124419   ~0%    {2}    | JOIN WITH `Builtins::BuiltinType.getName/0#dispred#8f62ab0a` ON FIRST 2 OUTPUT Lhs.2, Lhs.3

             76728   ~0%    {1} r2 = JOIN RefTypeRepr::Generated::RefTypeRepr#422893fa WITH `RefTypeRepr::Generated::RefTypeRepr.isMut/0#dispred#e2b9988f` ON FIRST 1 OUTPUT Lhs.0
        4083387432   ~1%    {3}    | JOIN WITH `Type::DataType.getTypeItem/0#dispred#83467854` CARTESIAN PRODUCT OUTPUT Rhs.0, Lhs.0, Rhs.1
         564334440   ~3%    {4}    | JOIN WITH `project#Type::DataType.getPositionalTypeParameter/1#dispred#3bf49cbe` ON FIRST 1 OUTPUT Lhs.2, _, Lhs.1, Lhs.0
         564334440   ~0%    {4}    | REWRITE WITH Out.1 := "RefMut"
             76728   ~2%    {2}    | JOIN WITH `Builtins::BuiltinType.getName/0#dispred#8f62ab0a` ON FIRST 2 OUTPUT Lhs.2, Lhs.3

            201147   ~1%    {2} r3 = r1 UNION r2
                            return r3
```

After
```
Evaluated relational algebra for predicate TypeMention::RefTypeReprMention.resolveRootType/0#dispred#091b949a#fb@8f12aa2a with tuple counts:
        124419   ~0%    {1} r1 = RefTypeRepr::Generated::RefTypeRepr#422893fa AND NOT `RefTypeRepr::Generated::RefTypeRepr.isMut/0#dispred#e2b9988f`(FIRST 1)
        124419   ~0%    {2}    | JOIN WITH Type::RefSharedType#090df68e CARTESIAN PRODUCT OUTPUT Rhs.0, Lhs.0
        124419   ~0%    {2}    | JOIN WITH `project#Type::DataType.getPositionalTypeParameter/1#dispred#3bf49cbe` ON FIRST 1 OUTPUT Lhs.1, Lhs.0

         76728   ~0%    {1} r2 = JOIN RefTypeRepr::Generated::RefTypeRepr#422893fa WITH `RefTypeRepr::Generated::RefTypeRepr.isMut/0#dispred#e2b9988f` ON FIRST 1 OUTPUT Lhs.0
         76728   ~0%    {2}    | JOIN WITH Type::RefMutType#c67a1837 CARTESIAN PRODUCT OUTPUT Rhs.0, Lhs.0
         76728   ~2%    {2}    | JOIN WITH `project#Type::DataType.getPositionalTypeParameter/1#dispred#3bf49cbe` ON FIRST 1 OUTPUT Lhs.1, Lhs.0

        201147   ~1%    {2} r3 = r1 UNION r2
                        return r3
```
2026-01-16 13:11:45 +01:00
Tom Hvitved
7c95fefd96 Merge pull request #21177 from hvitved/actions/example-dir
Actions: Add `examples` qlpack
2026-01-16 13:03:54 +01:00
Tom Hvitved
3cdca25a67 Actions: Add examples qlpack 2026-01-16 12:48:54 +01:00
Michael Nebel
86198e3c43 C#: Add tests for out writeacceses. 2026-01-16 11:54:10 +01:00
Michael Nebel
bd1c6e6352 C#: Exclude the field access cases from missing argument call. 2026-01-16 11:54:09 +01:00
Michael Nebel
3d988e8e94 C#: Add field access for out assignments in the CFG. 2026-01-16 11:54:07 +01:00
Michael Nebel
812fdbe412 C#: Add change-note. 2026-01-16 11:54:06 +01:00
Michael Nebel
ab432ec2e9 C#: Update test expected output. 2026-01-16 11:54:04 +01:00
Michael Nebel
5942edf2d9 C#: Take null conditional assignments into account in MaybeNullExpr. 2026-01-16 11:54:02 +01:00
Michael Nebel
f0135e93c5 C#: Add a tests for MaybeNullExpr. 2026-01-16 11:54:01 +01:00
Michael Nebel
4ba89230db C#: Update test expected output. 2026-01-16 11:53:59 +01:00
Michael Nebel
0bf0cbae8f C#: Add some null conditional assignments CFG tests. 2026-01-16 11:53:57 +01:00
Michael Nebel
b061c4d083 C#: Update test expected output. 2026-01-16 11:53:55 +01:00
Michael Nebel
98949937dd C#: Add CFG support for null conditional assignments and include eg. field access in the CFG. 2026-01-16 11:53:54 +01:00
Simon Friis Vindum
ec094400fb Merge pull request #21172 from paldepind/rust/dyn-abs
Rust: Avoid unnecessary constraint satisfaction
2026-01-16 11:32:39 +01:00
Simon Friis Vindum
78b88d3a44 Rust: Fix grammar in QLDoc
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-16 11:26:05 +01:00
Simon Friis Vindum
6b3d863f70 Rust: Remove trait parameter from canonicalDynTraitTypeAbstraction 2026-01-16 11:12:34 +01:00
Owen Mansel-Chan
c14b869856 Merge pull request #21175 from github/workflow/coverage/update
Update CSV framework coverage reports
2026-01-16 09:49:29 +00:00
Simon Friis Vindum
a11693268b Rust: Avoid duplicated entries in conditionSatisfiesConstraint for dyn trait types 2026-01-16 10:46:23 +01:00
Simon Friis Vindum
c0b3569473 Rust: Move TypeAbstraction into separate file 2026-01-16 10:45:50 +01:00
Simon Friis Vindum
9ab29f9be0 Rust: Add a change note for type inference improvements for closures 2026-01-16 10:05:45 +01:00
Simon Friis Vindum
dabc5d54c9 Rust: Improve type inference for closures and function traits 2026-01-16 10:01:00 +01:00
github-actions[bot]
549307a6bd Add changed framework coverage reports 2026-01-16 00:26:48 +00:00
Mathias Vorreiter Pedersen
6da7890ff5 C++: Add indirect barrier guard to 'cpp/unbounded-write' to prevent FPs after fixing conflation. 2026-01-15 18:31:54 +00:00
Mathias Vorreiter Pedersen
03d6528687 Update cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedAssertion.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2026-01-15 15:58:28 +00:00
Mathias Vorreiter Pedersen
1b117900c2 Update cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2026-01-15 14:42:11 +00:00
Mathias Vorreiter Pedersen
d6ca1ca846 Update cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll
Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com>
2026-01-15 14:41:13 +00:00
Owen Mansel-Chan
a5d9cb179a Merge pull request #20930 from owen-mc/java/spring-rest-template-request-forgery-sinks
Java: add more Spring RestTemplate request forgery sinks
2026-01-15 14:23:15 +00:00
Tom Hvitved
d3fc254e17 Merge pull request #21169 from hvitved/shard-compile-queries
Make `compile-queries.yml` sharded based on language
2026-01-15 15:11:01 +01:00
Mathias Vorreiter Pedersen
28681508f3 C++: Fix bug and accept test changes. 2026-01-15 11:17:15 +00:00
Mathias Vorreiter Pedersen
27a437a514 C++: Modify test to reveal a bug. 2026-01-15 11:16:15 +00:00
Simon Friis Vindum
196f6e1931 Rust: Add type inference tests for closures and function traits 2026-01-15 12:00:41 +01:00
Simon Friis Vindum
d8061c17cc Merge pull request #21165 from paldepind/rust/associated-types
Rust: Associated types are inherited as type parameters by traits and dyn traits
2026-01-15 11:50:00 +01:00
Owen Mansel-Chan
97e0b4e9fd Use parameter name to only select correct overloads 2026-01-15 10:36:03 +00:00
Simon Friis Vindum
15f3c38041 Rust: QLDoc fixes 2026-01-15 11:34:58 +01:00
Anders Schack-Mulligen
c632e8f188 Merge pull request #20448 from github/alexet/avoid-path-node-java
Java: Eliminate pointless use of PathNodes over DataFlow::Node
2026-01-15 10:55:09 +01:00
Tom Hvitved
b4bbafa96f Make compile-queries.yml sharded based on language 2026-01-15 10:30:08 +01:00
Owen Mansel-Chan
13dc17c9b8 Merge pull request #21167 from owen-mc/java/docs/library-coverage
Java: List more covered java frameworks explicitly in docs
2026-01-15 09:18:51 +00:00
Jeroen Ketema
3327193a11 Merge pull request #21164 from jketema/jketema/builtin
C++: More builtins and information regarding this param refs
2026-01-15 08:21:01 +01:00
Owen Mansel-Chan
6e0a1ba233 List more covered java frameworks explicitly 2026-01-15 07:18:15 +00:00
Simon Friis Vindum
8cbe17a62b Rust: Fix bad join on name column 2026-01-15 07:23:34 +01:00
Simon Friis Vindum
ca3e2db217 Rust: Accept changes to expected files 2026-01-14 16:00:59 +01:00
Simon Friis Vindum
465400115f Rust: Adapt type inference consistency query exceptions 2026-01-14 15:36:35 +01:00
Owen Mansel-Chan
0cf0aac397 Merge pull request #21109 from owen-mc/go/misc-trivial-fixes
Go: misc trivial fixes
2026-01-14 14:10:41 +00:00
Jeroen Ketema
17a453bb33 Merge pull request #21126 from jketema/subscript
C++: Add predicates to support C++23 multidimensional subscript operators
2026-01-14 14:48:14 +01:00
Simon Friis Vindum
a19ad5e557 Rust: Associated types are inherited as type parameters by traits and dyn traits 2026-01-14 14:44:31 +01:00
Simon Friis Vindum
62193540f7 Rust: Add additional tests for associated types 2026-01-14 14:44:30 +01:00
Simon Friis Vindum
fd5658dfe8 Rust: Tweak tests for associated types 2026-01-14 14:44:23 +01:00
Simon Friis Vindum
e0c36c758d Rust: Move associated types tests into separate file 2026-01-14 14:39:59 +01:00
Tom Hvitved
991d30f7aa Merge pull request #21161 from hvitved/rust/restrict-implicit-deref-borrow-nodes
Rust: Restrict `ImplicitDerefBorrowNode` to nodes with enclosing CFG scope
2026-01-14 14:37:40 +01:00
Jeroen Ketema
1dacd83915 C++: Update dbscheme stats file 2026-01-14 13:35:53 +01:00
Jeroen Ketema
7a13cbae3f C++: Add upgrade and downgrade scripts 2026-01-14 13:35:52 +01:00
Jeroen Ketema
f6b720b37b C++: Add change note 2026-01-14 13:35:51 +01:00
Jeroen Ketema
047fa068ff C++: Add isThisAccess predicate to ParamAccessForType 2026-01-14 13:35:50 +01:00
Jeroen Ketema
bb33ea383c C++: Add change note for new builtins 2026-01-14 13:35:49 +01:00
Jeroen Ketema
93535d1c86 C++: Add tests for new builtin operations 2026-01-14 13:35:47 +01:00
Jeroen Ketema
3d959abdeb C++: Support new builtin operations 2026-01-14 13:35:46 +01:00
Jeroen Ketema
5d00a4df86 Merge pull request #21143 from jketema/jketema/friends
C++: Update test expectations after extractor changes
2026-01-14 13:31:40 +01:00
Owen Mansel-Chan
e01b674581 Merge pull request #21082 from mbaluda/couchdb
This PR adds models Java client APIs for CouchBase and adds tests for 2 queries
2026-01-14 12:06:47 +00:00
Owen Mansel-Chan
16113e6550 Use type cast to make QL more succinct 2026-01-14 11:50:56 +00:00
Owen Mansel-Chan
76bba60383 Fix misspelling in comment 2026-01-14 11:50:55 +00:00
Owen Mansel-Chan
0dc47380a3 Swap order of equality for easier comprehension 2026-01-14 11:50:53 +00:00
Owen Mansel-Chan
b58e88291e Remove redundant import 2026-01-14 11:50:52 +00:00
Owen Mansel-Chan
94bc47ab15 Swap order of supertypes 2026-01-14 11:50:50 +00:00
Owen Mansel-Chan
3850734a15 Use non-extending subtypes 2026-01-14 11:50:49 +00:00
Owen Mansel-Chan
93d7c5c7ef Remove redundant supertypes 2026-01-14 11:50:44 +00:00
Owen Mansel-Chan
1cd0698453 Fix test for reflected xss sanitizer
It used to pass even without ErrorSanitizer because `cookie` is already
sanitized.
2026-01-14 11:50:08 +00:00
Owen Mansel-Chan
9d5e5b0c8a Add post-processing to Beego tests 2026-01-14 11:50:06 +00:00
Asger F
ff580410fe Merge pull request #20733 from asgerf/js/incremental-api-graphs
JS: Incremental API graph
2026-01-14 12:49:41 +01:00
Mauro Baluda
9f725f7098 Merge branch 'main' into couchdb 2026-01-14 12:33:47 +01:00
Mauro Baluda
f71b6c1bfd Improved models for Supplier arguments 2026-01-14 12:32:42 +01:00
Jeroen Ketema
54f75653ba C++: Update test expectations after extractor changes 2026-01-14 12:01:51 +01:00
Mauro Baluda
5cef0376a9 Update java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCouchBaseCredentials.java
Co-authored-by: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com>
2026-01-14 11:50:52 +01:00
Asger F
06cc323aee Update javascript/ql/src/change-notes/2025-12-05-skip-minified-files.md
Co-authored-by: Taus <tausbn@github.com>
2026-01-14 11:40:01 +01:00
Asger F
b47ae420ca Update javascript/ql/src/change-notes/2025-12-05-skip-minified-files.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-14 11:40:01 +01:00
Asger F
0eadebcabd Update javascript/extractor/src/com/semmle/js/extractor/FileExtractor.java
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-14 11:40:01 +01:00
Asger F
739ed4b3bb JS: Change note 2026-01-14 11:40:01 +01:00
Asger F
7ab52a81a7 JS: Add environment variable to opt out of the behaviour if needed 2026-01-14 11:40:01 +01:00
Asger F
2892ab61ae JS: Make sure a file is not seen as minified 2026-01-14 11:40:01 +01:00
Asger F
84f6b6f67a JS: Accept test change due to file no longer being extracted 2026-01-14 11:40:01 +01:00
Asger F
98c8b4c080 JS: Skip minified file if avg line length > 200 2026-01-14 11:40:01 +01:00
Asger F
e430aa97f3 Merge pull request #20916 from asgerf/js/next-folders2
JS: Handle Next.js files named 'page' or 'route'
2026-01-14 11:10:57 +01:00
Jeroen Ketema
40a91367ab Merge pull request #21110 from jketema/jketema/rm-decimal
C++: Remove decimal floating point types
2026-01-14 10:58:39 +01:00
Tom Hvitved
cc4926ad37 Merge pull request #21148 from hvitved/rust/remove-macro-block-expr
Rust: Remove `MacroBlockExpr` class
2026-01-14 10:11:22 +01:00
Simon Friis Vindum
519f0d2780 Merge pull request #21023 from paldepind/rust/regenerate-models-1212
Rust: Regenerate models
2026-01-14 09:30:06 +01:00
Mauro Baluda
9efefa6120 Fix test expectations 2026-01-13 22:46:42 +01:00
Mauro Baluda
29f23ee192 Fix extraction error 2026-01-13 22:33:01 +01:00
Mauro Baluda
4b7662f652 Merge branch 'main' into couchdb 2026-01-13 21:50:44 +01:00
Mauro Baluda
d335f039ef Improve model for CWE-089 2026-01-13 21:48:43 +01:00
Tom Hvitved
55d4902751 Rust: Restrict ImplicitDerefBorrowNode to nodes with enclosing CFG scope 2026-01-13 20:23:28 +01:00
yoff
6c4a0bb52b Merge pull request #20990 from github/tausbn/python-support-relaxed-exception-groups
Python: Add support for PEP-758 exception syntax
2026-01-13 19:04:27 +01:00
Simon Friis Vindum
76a1e22ddc Rust: Remove manual models that are now generated 2026-01-13 16:11:18 +01:00
Jeroen Ketema
f4980bede3 Update cpp/ql/lib/change-notes/2026-01-02-decimal-removal.md 2026-01-13 16:11:11 +01:00
Jeroen Ketema
9ba73ba4f0 C++: Update stats file 2026-01-13 16:11:10 +01:00
Jeroen Ketema
ffdd6f7d91 C++: Add change note 2026-01-13 16:11:09 +01:00
Jeroen Ketema
273f517a37 C++: Remove decimal types from the dbscheme 2026-01-13 16:11:08 +01:00
Jeroen Ketema
a20f0a11e8 C++: No longer expose _Decimal{32,64,128} 2026-01-13 16:11:06 +01:00
Jeroen Ketema
d20cd68a05 C++: Update expected test results after extractor changes 2026-01-13 16:11:05 +01:00
Simon Friis Vindum
da43e8cad8 Rust: Regenerate models 2026-01-13 16:02:32 +01:00
Simon Friis Vindum
d78491294a Rust: Exclude reqwest response timeout field as a taint step 2026-01-13 15:58:27 +01:00
Simon Friis Vindum
862adec081 Rust: Disable dynamic dispatch when generating models 2026-01-13 15:58:25 +01:00
Simon Friis Vindum
1fbf0387f5 Rust: Skip model generation for Rocket due to performance issue 2026-01-13 15:58:24 +01:00
Simon Friis Vindum
8bfce6b284 Shared, rust: Add option to disable reads steps as taint steps in model generator 2026-01-13 15:58:23 +01:00
Simon Friis Vindum
9cdf63e175 Rust: Skip model generation for functions with a ; in their canonical path 2026-01-13 15:58:22 +01:00
Owen Mansel-Chan
8cb0f5faa6 Merge pull request #21140 from owen-mc/csharp/mad-barriers
C#: Allow MaD barriers and barrier guards, and convert some existing ones
2026-01-13 14:24:22 +00:00
Mauro Baluda
89f0e79ea1 Fix SqlTainted test 2026-01-13 13:55:14 +01:00
Ian Lynagh
63f78e7609 Merge pull request #21156 from igfoo/igfoo/mb
Merge rc/3.20 into main
2026-01-13 12:11:37 +00:00
Mauro Baluda
dda042f7df rename change notes 2026-01-13 13:07:14 +01:00
Taus
5fc9b2de44 Merge pull request #21154 from github/tausbn/misc-add-cli-mode-for-change-note-script
Misc: Add CLI interface to `create-change-note.py`
2026-01-13 12:38:55 +01:00
Owen Mansel-Chan
657e26a375 Scripts: be more robust when parsing test logs 2026-01-13 11:36:27 +00:00
Anders Schack-Mulligen
9c1351c3fe Merge pull request #21149 from aschackmull/java/typeflow-partially-unbound
Java: Add TypeFlow base case for partially unbound types.
2026-01-13 12:31:38 +01:00
Asger F
9fa856f974 JS: Change note 2026-01-13 11:49:33 +01:00
Asger F
7cd820ea86 JS: Add support for props callbacks in router configs 2026-01-13 11:46:12 +01:00
Geoffrey White
69de17ecf2 Merge pull request #21153 from geoffw0/splitoff
Rust: Add barrier for split_off
2026-01-13 10:44:31 +00:00
Asger F
40c35341d1 JS: Add props to Vue router test case 2026-01-13 11:44:07 +01:00
Owen Mansel-Chan
130f8f148b Convert barrier to MaD
I confirmed that without the model a test fails.
2026-01-13 10:29:16 +00:00
Owen Mansel-Chan
68b618176e Convert barrier guard to MaD
I checked that without the model a test fails.
2026-01-13 10:29:15 +00:00
Owen Mansel-Chan
b30bc5ea44 Allow MaD barriers relating to ExternalLocationSink 2026-01-13 10:29:13 +00:00
Owen Mansel-Chan
004d40ee93 Allow MaD barriers using sink kinds 2026-01-13 10:29:12 +00:00
Anders Schack-Mulligen
8b555ca514 Java: Add test. 2026-01-13 11:20:13 +01:00
Anders Schack-Mulligen
8257475ffb Merge pull request #21132 from aschackmull/csharp/mad-barriers
C#: Add support for MaD barriers and barrier guards.
2026-01-13 11:00:02 +01:00
Owen Mansel-Chan
a96cd399b1 Merge pull request #21157 from github/dependabot/go_modules/go/extractor/extractor-dependencies-0d17b202ee
Bump golang.org/x/tools from 0.40.0 to 0.41.0 in /go/extractor in the extractor-dependencies group
2026-01-13 09:56:37 +00:00
Asger F
da9aafc3b0 JS: Also track additional use-steps crossing the overlay boundary 2026-01-13 10:54:16 +01:00
Simon Friis Vindum
7f092e418e Merge pull request #21152 from paldepind/rust/typeinference-dir
Rust: Move everything type inference related into the typeinference directory
2026-01-13 10:41:13 +01:00
Asger F
ca52fe59e8 Merge pull request #20918 from asgerf/js/response-default-content-type
JS: Handle default 'content-type' header in Response() objects
2026-01-13 10:34:40 +01:00
Asger F
d2e6ae5e14 Update javascript/ql/lib/semmle/javascript/frameworks/Next.qll
Co-authored-by: Napalys Klicius <napalys@github.com>
2026-01-13 10:34:25 +01:00
Owen Mansel-Chan
f5b13db4ea Merge pull request #21015 from aschackmull/go/mad-barriers
Go: Support for MaD barriers and barrier guards.
2026-01-13 09:31:09 +00:00
Tom Hvitved
31b4f88824 Rust: Add DB downgrade script 2026-01-13 10:24:40 +01:00
Tom Hvitved
4cc4717381 Rust: Add DB upgrade script 2026-01-13 10:24:39 +01:00
Tom Hvitved
5d5bad6cd4 Rust: Update expected test output 2026-01-13 10:24:10 +01:00
Tom Hvitved
5fb425fd67 Rust: Update extractor and QL code after removing MacroBlockExpr 2026-01-13 10:24:04 +01:00
Tom Hvitved
3eafca0550 Rust: Run codegen 2026-01-13 10:22:16 +01:00
Tom Hvitved
d6ec174e0c Rust: Remove MacroBlockExpr class 2026-01-13 10:20:47 +01:00
Geoffrey White
b2d19b610e Rust: US spelling. 2026-01-13 09:01:12 +00:00
Anders Schack-Mulligen
1151fc3be2 Update csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll
Co-authored-by: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com>
2026-01-13 09:14:33 +01:00
Simon Friis Vindum
e7791120fa Rust: Address review comments 2026-01-13 07:53:39 +01:00
dependabot[bot]
37bb9d77d3 Bump golang.org/x/tools
Bumps the extractor-dependencies group in /go/extractor with 1 update: [golang.org/x/tools](https://github.com/golang/tools).


Updates `golang.org/x/tools` from 0.40.0 to 0.41.0
- [Release notes](https://github.com/golang/tools/releases)
- [Commits](https://github.com/golang/tools/compare/v0.40.0...v0.41.0)

---
updated-dependencies:
- dependency-name: golang.org/x/tools
  dependency-version: 0.41.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: extractor-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-13 05:38:36 +00:00
Ian Lynagh
dcd0a69759 Merge remote-tracking branch 'upstream/main' into igfoo/mb 2026-01-13 01:01:35 +00:00
Mathias Vorreiter Pedersen
4f4baee888 C++: Fix Code Scanning alerts. 2026-01-12 21:08:02 +00:00
Mathias Vorreiter Pedersen
aa058c2cca C++: Generate IR for assertions in release builds. 2026-01-12 21:07:55 +00:00
Mathias Vorreiter Pedersen
a18f3b6859 C++: Avoid generating IR for a few cases where we will be synthesizing assertions. 2026-01-12 21:06:09 +00:00
Mathias Vorreiter Pedersen
67ab0fee83 C++: Add a few helper predicates. 2026-01-12 21:06:07 +00:00
Mathias Vorreiter Pedersen
6e3fd25b09 C++: Add tests for assertions in release builds. 2026-01-12 21:06:02 +00:00
Taus
de1d183ca6 Misc: Add CLI interface to create-change-note.py
This may be useful when working in "the other place", where the VSCode
task may not be easily accessible. (Also, some people may just prefer to
use a CLI interface.)
2026-01-12 15:32:03 +00:00
Simon Friis Vindum
9e74a7869a Rust: Move everything type inference related into the typeinference directory 2026-01-12 16:31:34 +01:00
Taus
8c90c113c2 Update change note to reflect Python 2 changes 2026-01-12 15:27:38 +00:00
Taus
659ec3999b Mark generated files as generated 2026-01-12 15:24:01 +00:00
Tom Hvitved
c666fc71ca Merge pull request #21147 from hvitved/rust/fix-more-models
Rust: Add missing `.Reference` in various models
2026-01-12 15:27:51 +01:00
Geoffrey White
a78756ff8b Merge branch 'main' into splitoff 2026-01-12 14:21:01 +00:00
Geoffrey White
479c58bef5 Rust: Add a barrier. 2026-01-12 13:52:54 +00:00
Geoffrey White
7658ebb449 Rust: Add spurious test case for rust/uncontrolled-allocation-size. 2026-01-12 13:52:53 +00:00
Tom Hvitved
17441a5462 Rust: Add missing .Reference in various models 2026-01-12 14:21:45 +01:00
Anders Schack-Mulligen
c28062aff5 Merge pull request #21127 from aschackmull/ssa/phi-input-perf
SSA: Improve performance of finding relevant phi input nodes.
2026-01-12 13:29:58 +01:00
Anders Schack-Mulligen
8e2d74a7b1 Java: Add TypeFlow base case for partially unbound types. 2026-01-12 12:45:06 +01:00
Tom Hvitved
6b34d0d250 Merge pull request #21123 from hvitved/rust/fix-path-models
Rust: Improve/add various models
2026-01-12 12:20:56 +01:00
Simon Friis Vindum
e4db3b17b4 Merge pull request #20584 from paldepind/cpp/range-analysis-fix
C++: Range analysis guard improvement
2026-01-12 11:23:48 +01:00
Simon Friis Vindum
c9e6d4235f Merge pull request #21139 from paldepind/rust/fn-syntax-return
Rust: Make function trait syntax without return type default to unit
2026-01-12 11:22:50 +01:00
Owen Mansel-Chan
57ec850397 Merge pull request #21146 from github/dependabot/go_modules/go/extractor/extractor-dependencies-555680b348
Bump golang.org/x/mod from 0.31.0 to 0.32.0 in /go/extractor in the extractor-dependencies group
2026-01-12 09:44:33 +00:00
Anders Schack-Mulligen
aae8ec2240 SSA: Use fastTC for even better performance. 2026-01-12 09:39:15 +01:00
dependabot[bot]
4318c285cb Bump golang.org/x/mod
Bumps the extractor-dependencies group in /go/extractor with 1 update: [golang.org/x/mod](https://github.com/golang/mod).


Updates `golang.org/x/mod` from 0.31.0 to 0.32.0
- [Commits](https://github.com/golang/mod/compare/v0.31.0...v0.32.0)

---
updated-dependencies:
- dependency-name: golang.org/x/mod
  dependency-version: 0.32.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: extractor-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-12 03:07:33 +00:00
Mauro Baluda
0464e64469 Merge branch 'github:main' into couchdb 2026-01-09 17:24:01 +01:00
Chris Smowton
44089d84a3 Merge pull request #21102 from github/smowton/admin/respect-config-paths-filters-pre-finalize
All languages: account for paths and paths-ignore in XML and other ancillary extraction
2026-01-09 16:23:26 +00:00
Chris Smowton
fa0e8cc4a4 Merge pull request #21137 from smowton/smowton/admin/reapply-java-xml-paths-filtering
Java: revert revert of `paths` / `paths-ignore` handling in XML and other ancillary extractor
2026-01-09 16:22:26 +00:00
Mauro Baluda
4c8058d97b Merge branch 'github:main' into couchdb 2026-01-09 17:20:40 +01:00
Simon Friis Vindum
41921a85bb Rust: Make function trait syntax without return type default to unit 2026-01-09 16:08:01 +01:00
Simon Friis Vindum
d45269609a Rust: Add test with fn trait syntax without return type 2026-01-09 15:38:12 +01:00
Chris Smowton
634e9e6c39 Reapply "Change note"
This reverts commit 688f10daf1.
2026-01-09 13:42:48 +00:00
Chris Smowton
13e0e6c694 Reapply "Add integration test for paths and paths-ignore vs. Java buildless mode"
This reverts commit 9db11f73c5.
2026-01-09 13:42:43 +00:00
Tom Hvitved
f3d78a4e0b Rust: Update expected test output 2026-01-09 14:40:04 +01:00
Tom Hvitved
609eb17e30 Rust: Add more models 2026-01-09 14:40:03 +01:00
Tom Hvitved
0d0029f5a3 Rust: Update expected test output 2026-01-09 14:40:01 +01:00
Tom Hvitved
792908586a Rust: Add some ffi models 2026-01-09 14:40:00 +01:00
Tom Hvitved
31b0d3eb1d Rust: Fix some models in fs.model.yml 2026-01-09 14:39:59 +01:00
Tom Hvitved
636bbe30f9 Merge pull request #21122 from hvitved/rust/summary-read-taint-step
Rust: Also lift read steps in summaries as taint steps
2026-01-09 14:39:39 +01:00
Simon Friis Vindum
ac62a9fe57 Merge pull request #21133 from paldepind/rust/type-item-path-resolution
Rust: Use `TypeItem` in path resolution
2026-01-09 14:35:12 +01:00
Taus
89ddd67ebe Merge pull request #21002 from github/tausbn/python-add-models-for-zstd-compression
Python: Add modelling for `zstd.compression`
2026-01-09 14:05:06 +01:00
Michael B. Gale
157487d8f2 Java: Add change note for plugin repo support 2026-01-09 12:49:12 +00:00
yoff
1ac3706e75 Python support ListElement in MaD 2026-01-09 13:08:06 +01:00
Tom Hvitved
209ee9236b Rust: Also lift read steps in summaries as taint steps 2026-01-09 12:13:46 +01:00
Tom Hvitved
1a29b32af9 Merge pull request #20987 from hvitved/rust/type-inference-deref-trait
Rust: Handle `Deref` trait in type inference and data flow
2026-01-09 12:10:46 +01:00
Owen Mansel-Chan
9493d9d5ab Merge pull request #21131 from github/workflow/coverage/update
Update CSV framework coverage reports
2026-01-09 10:48:36 +00:00
Simon Friis Vindum
11bd334370 Rust: Use TypeItem in path resolution 2026-01-09 11:40:16 +01:00
Tom Hvitved
e2eaf80202 Rust: Fix QL4QL finding 2026-01-09 11:28:37 +01:00
Owen Mansel-Chan
d7acb75f9d Merge pull request #21055 from owen-mc/java/allow-mad-barriers
Java: allow MaD barriers
2026-01-09 10:27:48 +00:00
Tom Hvitved
6028cd6636 Address review comments 2026-01-09 11:14:23 +01:00
Owen Mansel-Chan
ca805e9d84 Fix QLDoc 2026-01-09 10:09:22 +00:00
Owen Mansel-Chan
c271e52fe5 Validate models for barriers and barrier guards 2026-01-09 10:04:56 +00:00
Owen Mansel-Chan
8c9318b1a0 Minor tweaks to QLDocs 2026-01-09 09:38:10 +00:00
Anders Schack-Mulligen
e35fa923c7 C#: Add support for MaD barriers and barrier guards. 2026-01-09 10:32:19 +01:00
Owen Mansel-Chan
70c90a1063 Merge pull request #21129 from owen-mc/java/delete-promoted-experimental-models
Java: Delete experimental models that have been promoted
2026-01-09 09:30:32 +00:00
Simon Friis Vindum
3a135888c7 C++: Improve bounds from inequalities on integers 2026-01-09 10:26:36 +01:00
Simon Friis Vindum
9af432d2f9 C++: Add simple range analysis tests for inequalities 2026-01-09 10:12:36 +01:00
github-actions[bot]
bea93ae03e Add changed framework coverage reports 2026-01-09 00:26:15 +00:00
Owen Mansel-Chan
cce6823d3b Delete experimental models that have been promoted
They were promoted in https://github.com/github/codeql/pull/17590
2026-01-08 15:33:59 +00:00
Anders Schack-Mulligen
af5adbac30 SSA: Improve performance of finding relevant phi input nodes. 2026-01-08 15:02:34 +01:00
Owen Mansel-Chan
8a80158959 Merge pull request #17590 from Kwstubbs/java-mad-test
Java: FileUpload Support MaD
2026-01-08 13:33:55 +00:00
Jeroen Ketema
72f1aa9381 C++: Add change notes 2026-01-08 13:59:39 +01:00
Jeroen Ketema
9ceb091f85 C++: Update predicate after getAnArrayOffset/0 deprecation 2026-01-08 13:54:02 +01:00
Simon Friis Vindum
c8728c24dc Merge pull request #21125 from paldepind/rust/builtin-refactor
Rust: Use `getAssocItem` consistently in stdlib classes
2026-01-08 13:43:40 +01:00
Jeroen Ketema
4c3fb0c7c4 C++: Deprecate getArrayOffset/0 2026-01-08 13:22:38 +01:00
yoff
608fa1a0a3 Merge pull request #20910 from yoff/java/more-thread-safe-initialisers 2026-01-08 13:16:39 +01:00
Jeroen Ketema
e0f8b1254e C++: Update expected test results 2026-01-08 13:13:20 +01:00
Jeroen Ketema
3907fc7e5a C++: Add predicates to support multidimensional subscript operators 2026-01-08 13:13:10 +01:00
Simon Friis Vindum
26bd332617 Merge pull request #21113 from paldepind/cpp/range-analysis-float-ceil
C++: Remove `safeFloor` in simple range analysis
2026-01-08 13:07:30 +01:00
Jeroen Ketema
647d11a6ce C++: Add test for C++23 multidimensional subscript operators 2026-01-08 13:02:31 +01:00
Jeroen Ketema
0c8fd833af Merge pull request #21124 from jketema/jketema/vec-expr
C++: Add tests for logical vector operations
2026-01-08 12:50:31 +01:00
Owen Mansel-Chan
c419b51efd Merge pull request #21120 from github/workflow/coverage/update
Update CSV framework coverage reports
2026-01-08 11:32:08 +00:00
Simon Friis Vindum
56f5328530 Rust: Use getAssocItem consistently in stdlib classes 2026-01-08 11:59:10 +01:00
Jeroen Ketema
217c5cb78b C++: Update tests after adding extractor support for logical vector operations 2026-01-08 11:55:47 +01:00
Jeroen Ketema
89c11b8daf C++: Add tests for logical vector operations 2026-01-08 11:54:49 +01:00
Jeroen Ketema
1ebf623541 C++: Add space in tests for adding new tests in a logical place 2026-01-08 11:54:42 +01:00
Paolo Tranquilli
22b88aea06 Merge pull request #21119 from github/redsun82/cmake
Cmake: fix bazel not generating files for the cmake generator
2026-01-08 09:59:08 +01:00
Asger F
2ea3c0e366 Merge pull request #20938 from tesseractjh/js/use-cache-directives
JS: Add use cache directives from Next.js 16
2026-01-08 09:51:53 +01:00
Simon Friis Vindum
7c0054bf25 C++: Tweak a comment in simple range analysis
Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
2026-01-08 08:51:04 +01:00
github-actions[bot]
614a05133e Add changed framework coverage reports 2026-01-08 00:26:30 +00:00
Chris Smowton
d048d394b4 Merge pull request #21117 from smowton/smowton/admin/revert-java-paths-directives
Java: revert filtering of ancillary data extraction
2026-01-07 16:13:21 +00:00
Jeroen Ketema
a5f6806239 Merge pull request #21105 from jketema/load-this
C++: Use the loaded `this` instead of the `this` initialization
2026-01-07 16:51:14 +01:00
Paolo Tranquilli
e3503be1d1 Cmake: fix bazel not generating files for the cmake generator 2026-01-07 16:36:36 +01:00
Taus
8602a2d59b Python: Use correct first parameter name for zstd call
Co-authored-by: yoff <yoff@github.com>
2026-01-07 14:47:11 +01:00
Owen Mansel-Chan
6a3c74c989 Merge pull request #20999 from joefarebrother/java-spring-websocket
Java: Add models for spring WebSocketHandler
2026-01-07 13:29:19 +00:00
Chris Smowton
688f10daf1 Revert "Change note"
This reverts commit 6fb6923f63.
2026-01-07 13:20:17 +00:00
Chris Smowton
9db11f73c5 Revert "Add integration test for paths and paths-ignore vs. Java buildless mode"
This reverts commit 102cfd06a7.
2026-01-07 13:20:12 +00:00
Tom Hvitved
fef00c1668 Add change note 2026-01-07 14:17:48 +01:00
Tom Hvitved
2d4da807c1 Merge pull request #21114 from hvitved/rust/exclude-result-err-taint-step
Rust: Add `Result::Err` to `excludeFieldTaintStep`
2026-01-07 14:01:49 +01:00
Michael Nebel
7ed3d3f3e1 Merge pull request #21065 from michaelnebel/csharp/implicitspanconversions
C# 14: Implicit span conversions.
2026-01-07 13:39:58 +01:00
Simon Friis Vindum
f5ddb1d51d C++: Remove safeFloor in simple range analysis 2026-01-07 12:49:09 +01:00
Owen Mansel-Chan
6c291e1e7f Add model for handlePongMessage and update test 2026-01-07 11:09:59 +00:00
Tom Hvitved
1e792132ba Rust: Add Result::Err to excludeFieldTaintStep 2026-01-07 11:37:08 +01:00
Asger F
cf0b77074f JS: Workaround forceLocal not supporting 'result' column
A bug made it into the release which causes compilation errors when
forceLocal is used on a predicate with a result column.

This commit works around the issue by converting the result column
to a positional parameter, for the predicates that we use forceLocal on.

It should be safe to revert this commit once the compiler fix has made
it into a stable release.
2026-01-07 11:05:41 +01:00
Asger F
e16cacd48d JS: Rename "in scope" to "in active file" 2026-01-07 11:05:41 +01:00
Asger F
87049bd07e Update javascript/ql/lib/semmle/javascript/ApiGraphs.qll
Co-authored-by: Taus <tausbn@github.com>
2026-01-07 11:05:41 +01:00
Asger F
56a6fe4c08 Update javascript/ql/lib/semmle/javascript/ApiGraphs.qll
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-07 11:05:41 +01:00
Asger F
d0dbc91aa9 Update javascript/ql/lib/semmle/javascript/ApiGraphs.qll
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-07 11:05:41 +01:00
Asger F
9721b4e0f5 JS: Fix bad join in export logic 2026-01-07 11:05:41 +01:00
Asger F
cae27c40be JS: Add a missing needsDefNode restriction
Previously this was implied by MkClassInstance but that's no longer
the case.
2026-01-07 11:05:41 +01:00
Asger F
369848a870 JS: Fix some QL4QL alerts 2026-01-07 11:05:41 +01:00
Asger F
869efb8a48 JS: Sync ApiGraphModels.qll 2026-01-07 11:05:41 +01:00
Asger F
97d369cf4e JS: Make API::Node overlay[local?]
We want the type itself to be local but nearly all its member predicates
are global.
2026-01-07 11:05:41 +01:00
Asger F
27e8bcb347 JS: Add back promisify-all support
This was somehow lost in a rebase
2026-01-07 11:05:41 +01:00
Asger F
8731eee10e JS: Work around an issue with overlay-invariance 2026-01-07 11:05:41 +01:00
Asger F
962c128f20 JS: Update test output to reflect Node.toString() change 2026-01-07 11:05:41 +01:00
Asger F
7974416e65 JS: Simplify toString() 2026-01-07 11:05:41 +01:00
Asger F
651608a170 JS: Bugfix in Stage1Local::trackDefNode 2026-01-07 11:05:41 +01:00
Asger F
ed3a8bdfa9 JS: Include import paths from custom ModuleImportNode::Range subclasses 2026-01-07 11:05:41 +01:00
Asger F
c687dc93b0 JS: Add overlay[global] to abstract classes with fields
Some abstract classes defines fields without binding them, leaving it up to the subclasses to bind them. When combined with overlay[local?], the charpred for such an abstract class can become local, while the subclasses are global. The means the charpred needs to be materialized, even though it doesn't bind the fields, leading to a cartesian product.
2026-01-07 11:05:41 +01:00
Asger F
cf0e7652f4 JS: Remove global dependency that wasnt needed anyway 2026-01-07 11:05:41 +01:00
Asger F
a6dfb8351c JS: Add back CallReceiverStep() restriction
This was initially lost after rebasing with indentation changes
2026-01-07 11:05:41 +01:00
Asger F
825c08356f JS: Change signature of 'edges' to support quick eval 2026-01-07 11:05:41 +01:00
Asger F
4bd0f34938 JS: Add debug tools for detecting lost nodes/edges 2026-01-07 11:05:41 +01:00
Asger F
c9d3f06fbc JS:Add more member labels 2026-01-07 11:05:41 +01:00
Asger F
9c37e076cc JS: Add overlay-specific Stage2 2026-01-07 11:05:41 +01:00
Asger F
1001e86f20 JS: Restrict Stage1 to the base database 2026-01-07 11:05:41 +01:00
Asger F
b12d927020 JS: Also expose "any state" version of tracking predicates 2026-01-07 11:05:41 +01:00
Asger F
daf04f1184 JS: Call forceLocal on the output of Stage 1 2026-01-07 11:05:41 +01:00
Asger F
271567c88f JS: Add missing def-node roots 2026-01-07 11:05:41 +01:00
Asger F
123bc64091 JS: Improve join order at MkUse call 2026-01-07 11:05:41 +01:00
Asger F
295bc6981d JS: Make API nodes and labels local 2026-01-07 11:05:41 +01:00
Asger F
6c00a7fb96 JS: Remove unused predicate 2026-01-07 11:05:41 +01:00
Asger F
3ed0f36bb1 JS: Use forceLocal to localize MkTypeUse 2026-01-07 11:05:41 +01:00
Asger F
385bb32710 JS: Localize MkClassInstance 2026-01-07 11:05:41 +01:00
Asger F
a2a9518d2a JS: Localize MkModuleImport 2026-01-07 11:05:41 +01:00
Asger F
3110e5a8ac JS: Localize MkModuleExport 2026-01-07 11:05:41 +01:00
Asger F
c8108d109d JS: Localize charpred of API::EntryPoint
This is needed for localizing ApiLabel later
2026-01-07 11:05:41 +01:00
Asger F
b69f8532d0 JS: Moving 'cache' annotations outside the parameterised module 2026-01-07 11:05:41 +01:00
Asger F
10db30a715 JS: Parameterise the module (still only one instantiation) 2026-01-07 11:05:41 +01:00
Asger F
465f4b987d JS: Wrap in a module
Simply wraps everything in 'cached private module Stage {}' and adds 'import Stage'.
The diff is large because of indentation changes.
2026-01-07 11:05:41 +01:00
Asger F
fd65eeba0a JS: Make use() and rhs() uncached and private 2026-01-07 11:05:41 +01:00
Asger F
8f413856e0 JS: Make other node types not depend on tracking predicates 2026-01-07 11:05:41 +01:00
Asger F
7fc87536bf JS: Make MkSyntheticCallbackArg() independent of trackUseNode 2026-01-07 11:05:41 +01:00
Asger F
12c0ad0e04 JS: Stop dependeding on getPath() for toString() 2026-01-07 11:05:41 +01:00
Simon Friis Vindum
bd24fb0baa C++: Add simple range analysis test for bitshift 2026-01-07 10:56:50 +01:00
Tom Hvitved
dce21e595e Rust: Model implicit Deref trait calls in data flow 2026-01-07 10:51:56 +01:00
Tom Hvitved
0c7aeb4bce Rust: Update data flow test to use implicit borrow 2026-01-07 10:51:55 +01:00
Tom Hvitved
4540662ab9 Rust: Model Deref trait in type inference 2026-01-07 10:51:53 +01:00
Tom Hvitved
caa0e90cd8 Rust: More type inference tests 2026-01-07 10:51:52 +01:00
Geoffrey White
503a1b5d0c Merge pull request #21107 from geoffw0/rusttest
Rust: Additional test cases for tuple content.
2026-01-07 09:37:14 +00:00
Michael Nebel
8fe31a1fd6 C#: Add some more testcases and update test expected output. 2026-01-07 09:56:02 +01:00
Michael Nebel
a991afdf69 C#: Use ref conversions (including variance conversions) for element types of span conversions. 2026-01-07 09:55:10 +01:00
Michael Nebel
77b0c4bbe4 Merge pull request #21111 from github/workflow/coverage/update
Update CSV framework coverage reports
2026-01-07 09:41:21 +01:00
github-actions[bot]
53a0b8dd47 Add changed framework coverage reports 2026-01-07 00:25:25 +00:00
Owen Mansel-Chan
a7c4ba503e Add missing qldoc 2026-01-06 23:41:33 +00:00
Owen Mansel-Chan
8602c4c57c Rename Default* to External* for MaD classes 2026-01-06 22:57:01 +00:00
Owen Mansel-Chan
7fff3534fa Convert 3 barriers for path injection to MaD 2026-01-06 22:56:59 +00:00
Owen Mansel-Chan
1e18fce300 Convert xss sanitizer to MaD 2026-01-06 22:56:57 +00:00
Owen Mansel-Chan
1e6410804f Allow non-query-specific MaD sanitizers 2026-01-06 22:56:55 +00:00
Anders Schack-Mulligen
1fbc28b753 Go: Add support for MaD barriers and barrier guards. 2026-01-06 22:51:32 +00:00
Jeroen Ketema
c567197f29 C++: Simplify expression 2026-01-06 21:58:43 +01:00
Ian Lynagh
70cc153cf5 Merge pull request #21104 from github/post-release-prep/codeql-cli-2.23.9
Post-release preparation for codeql-cli-2.23.9
2026-01-06 18:25:18 +00:00
Geoffrey White
13df23630b Rust: Effect of lifting content reads as taint steps. 2026-01-06 16:47:07 +00:00
Jeroen Ketema
063e5d300e C++: Remove redundant SSA branch after IR fix 2026-01-06 17:40:52 +01:00
Geoffrey White
6e2702c3af Rust: Add some taint tests involving tuples. 2026-01-06 16:38:36 +00:00
Jeroen Ketema
3cd9938ebe C++: Update expected test results after IR changes 2026-01-06 17:37:22 +01:00
Jeroen Ketema
740518d23f C++: Use the loaded this instead of the this initialization 2026-01-06 17:11:22 +01:00
github-actions[bot]
2cb932cf5d Post-release preparation for codeql-cli-2.23.9 2026-01-06 15:42:16 +00:00
Ian Lynagh
b4f4b0e6b0 Merge pull request #21092 from github/release-prep/2.23.9
Release preparation for version 2.23.9
2026-01-06 15:06:25 +00:00
Owen Mansel-Chan
766e908c79 Accept MaD sanitizers for existing sink kinds 2026-01-06 14:38:27 +00:00
Owen Mansel-Chan
81667d741a Rename classes for external sanitizers 2026-01-06 14:36:54 +00:00
Michael Nebel
b686890ba6 C#: Address review comments. 2026-01-06 15:08:13 +01:00
Tom Hvitved
1a2f72252a Merge pull request #21072 from hvitved/rust/mad-provenance-refactor
Rust: Refactor MaD provenance-based filtering
2026-01-06 14:59:42 +01:00
Taus
4a567ad75e Python: Add change note 2026-01-06 13:40:38 +00:00
Taus
2c83b296a4 Python: Add parser test
Note in particular that the `exceptions.py` test is unaffected.
2026-01-06 13:40:38 +00:00
Taus
4db60df9dd Python: Regenerate parser files 2026-01-06 13:40:38 +00:00
Taus
2380bfd459 Python: Add support for PEP-758 exception syntax
See https://peps.python.org/pep-0758/ for more details.

We implement this by extending the syntax for exceptions and exception
groups so that the `type` field can now contain either an expression
(which matches the old behaviour), or a comma-separated list of at least
two elements (representing the new behaviour).

We model the latter case using a new node type `exception_list`, which
in `tsg-python` is simply mapped to a tuple. This means it matches the
existing behaviour (when the tuple is surrounded by parentheses)
exactly, hence we don't need to change any other code.

As a consequence of this, however, we cannot directly parse the Python
2.7 syntax `except Foo, e: ...` as `except Foo as e: ...`, as this would
introduce an ambiguity in the grammar. Thus, we have removed support for
the (deprecated) 2.7-style syntax, and only allow `as` to indicate
binding of the exception. The syntax `except Foo, e: ...` continues to
be parsed (in particular, it's not suddenly a syntax error), but it will
be parsed as if it were `except (Foo, e): ...`, which may not give the
correct results.

In principle we could extend the QL libraries to account for this case
(specifically when analysing Python 2 code). In practice, however, I
expect this to have a minor impact on results, and not worth the
additional investment at this time.
2026-01-06 13:40:37 +00:00
Tom Hvitved
da6d0abe31 Address review comment 2026-01-06 14:35:07 +01:00
Taus
72f9e34318 Merge pull request #20708 from github/tausbn/python-add-support-for-template-string-literals
Python: Add support for template string literals
2026-01-06 14:33:51 +01:00
Ian Lynagh
c233e36d4f Merge pull request #21103 from igfoo/igfoo/css
Fix header link color and hover effect in query help documentation
2026-01-06 13:30:40 +00:00
Jeroen Ketema
4ede207c1f Merge pull request #20926 from jketema/jketema/frontend-update
C++: Update expected test results after frontend update
2026-01-06 14:25:40 +01:00
Chris Smowton
6ed24f22b5 Change notes 2026-01-06 13:01:37 +00:00
Jeroen Ketema
d02ef7c6b1 C++: Add change notes 2026-01-06 13:53:47 +01:00
Jeroen Ketema
17b22bc088 C++: Update expected test results after frontend _Generic fix 2026-01-06 13:53:45 +01:00
Jeroen Ketema
5117b5906b C++: Exclude comparisons from enum constants in `cpp/constant-comparison 2026-01-06 13:53:44 +01:00
Jeroen Ketema
112eaadfae C++: Add another cpp/constant-comparison FP test case 2026-01-06 13:53:43 +01:00
Jeroen Ketema
1f10cddef5 C++: Accept test changes after frontend update and uncomment test case
The new frontend version does less constant folding.
2026-01-06 13:53:41 +01:00
Jeroen Ketema
90d6c9fc56 C++: Exclude more comparisons from cpp/constant-comparison 2026-01-06 13:53:40 +01:00
Jeroen Ketema
509cbf7049 C++: Add cpp/constant-comparison FP test cases after frontend update 2026-01-06 13:53:38 +01:00
Jeroen Ketema
2615dab2e2 C++: Update supported compiler versions 2026-01-06 13:53:35 +01:00
Jeroen Ketema
87a9065d61 C++: Update expected test results after frontend update 2026-01-06 13:53:34 +01:00
Chris Smowton
af36eae002 All languages: account for paths and paths-ignore in XML and other ancillary extraction 2026-01-06 12:48:01 +00:00
Tom Hvitved
eca451ea05 Merge pull request #21101 from hvitved/ruby/fix-bad-join
Ruby: Fix bad join
2026-01-06 13:44:29 +01:00
Tom Hvitved
5359b3d6e7 Merge pull request #21099 from hvitved/rust/fix-todo
Rust: Improve `TuplePositionContent.getAnAccess`
2026-01-06 13:16:15 +01:00
Ian Lynagh
0465dbe02b Fix header link color and hover effect in query help documentation
Fix from Oscar, who wrote:

The Alabaster theme's global `a { color: #2F1695 }` rule was overriding
header link colors, rendering them purple instead of white.
2026-01-06 12:15:50 +00:00
Chris Smowton
bfcd36002a Merge pull request #21049 from smowton/smowton/admin/java-buildless-paths-test
Add integration test for paths and paths-ignore vs. Java buildless mode
2026-01-06 12:01:09 +00:00
Michael Nebel
f32860b2d2 Merge pull request #21100 from michaelnebel/csharp14/nameofgenerictype
C# 14: [TEST ONLY] Test for `nameof` generic type.
2026-01-06 12:37:10 +01:00
Chris Smowton
6fb6923f63 Change note 2026-01-06 10:59:06 +00:00
Chris Smowton
102cfd06a7 Add integration test for paths and paths-ignore vs. Java buildless mode 2026-01-06 10:59:04 +00:00
Tom Hvitved
358339427b Ruby: Fix bad join
Before
```
Evaluated relational algebra for predicate Filters::Filters::FilterCall.getAnAction/0#dispred#9c0da667@85a4cbtp with tuple counts:
           394650       ~2%    {2} r1 = `__#Module::ModuleBase.getAMethod/0#dispred#56626ed3Merge_Module::ModuleBase.getModule/0#dispred#4f2c__#shared` AND NOT `_Filters::Filters::FilterCall.getExceptArgument/0#dispred#515c95c0__#Method::Method.getName/0#dispre__#antijoin_rhs`(FIRST 2)
                               {2}    | AND NOT `project#Filters::Filters::FilterCall.getOnlyArgument/0#dispred#f337e70f`(FIRST 1)
           380366       ~0%    {2}    | SCAN OUTPUT In.1, In.0

            29453       ~0%    {2} r2 = JOIN `_#Module::ModuleBase.getAMethod/0#dispred#56626ed3Merge__#AST::AstNode.getEnclosingModule/0#dispred#__#shared` WITH project#ActionController::ActionControllerActionMethod#6db6f5e0 ON FIRST 1 OUTPUT Lhs.0, Lhs.1

           366017       ~0%    {2} r3 = JOIN `_#Module::ModuleBase.getAMethod/0#dispred#56626ed3Merge_Module::ModuleBase.getModule/0#dispred#4f2ca__#shared` WITH project#ActionController::ActionControllerActionMethod#6db6f5e0 ON FIRST 1 OUTPUT Lhs.0, Lhs.1

           395470       ~0%    {2} r4 = r2 UNION r3
           395470       ~0%    {3}    | JOIN WITH `Method::Method.getName/0#dispred#2acbf239` ON FIRST 1 OUTPUT Lhs.1, Rhs.1, Lhs.0
             2227       ~0%    {2}    | JOIN WITH `Filters::Filters::FilterCall.getOnlyArgument/0#dispred#f337e70f` ON FIRST 2 OUTPUT Lhs.2, Lhs.0

           382593       ~0%    {2} r5 = r1 UNION r4
           133735       ~4%    {2}    | JOIN WITH `project#ActionController::ActionControllerActionMethod.getARoute/0#dispred#9eb85e56` ON FIRST 1 OUTPUT Lhs.1, Lhs.0
        540556870       ~2%    {3}    | JOIN WITH Filters::Filters::Filter#a42c5138 CARTESIAN PRODUCT OUTPUT Rhs.0, Lhs.0, Lhs.1
        525979755     ~127%    {3}    | JOIN WITH `Filters::Filters::FilterImpl.getFilterCallable/0#dispred#451bf7d7` ON FIRST 1 OUTPUT Lhs.1, Lhs.2, Rhs.1
                               {3}    | REWRITE WITH TEST InOut.1 != InOut.2
        525979755  ~407036%    {2}    | SCAN OUTPUT In.0, In.1
                               return r5
```

After
```
Evaluated relational algebra for predicate Filters::Filters::FilterCall.getAnAction/0#91dba45c@74dfcepp with tuple counts:
          1363   ~4%    {2} r1 = JOIN `Filters::Filters::FilterCall.getAnActionCand/1#f053150d` WITH `Filters::Filters::FilterCall.getOnlyArgument/0#dispred#f337e70f` ON FIRST 2 OUTPUT Lhs.0, Lhs.2

        140978   ~0%    {3} r2 = `Filters::Filters::FilterCall.getAnActionCand/1#f053150d` AND NOT `Filters::Filters::FilterCall.getExceptArgument/0#dispred#515c95c0#fb`(FIRST 2)
                        {3}    | AND NOT `project#Filters::Filters::FilterCall.getOnlyArgument/0#dispred#f337e70f`(FIRST 1)
        132372   ~3%    {2}    | SCAN OUTPUT In.0, In.2

        133735   ~4%    {2} r3 = r1 UNION r2
                        return r3
```
2026-01-06 11:42:49 +01:00
Michael Nebel
0a0cbdb799 C#14: Test for nameof generic type. 2026-01-06 11:32:49 +01:00
Michael Nebel
ff1ec47f98 Merge pull request #21095 from michaelnebel/net10/generatedmodels
C#: Update .NET runtime models.
2026-01-06 11:15:47 +01:00
Michael Nebel
2e208045d4 C#: Update test expected output. 2026-01-06 10:20:41 +01:00
Anders Peter Fugmann
103b3df885 Merge pull request #21093 from github/andersfugmann/deprecate_kotlin_1.7
Kotlin: Mark support for Kotlin versions 1.6 and 1.7 as deprecated
2026-01-06 09:53:26 +01:00
Michael Nebel
f5321548e1 C#: Add change note. 2026-01-06 09:46:44 +01:00
Michael Nebel
5299b356a9 C#: Update models test expected output. 2026-01-06 09:46:34 +01:00
Michael Nebel
0d5f1b11ad C#: Update .NET runtime generated models. 2026-01-06 09:44:23 +01:00
Tom Hvitved
ae9588e176 Rust: Improve TuplePositionContent.getAnAccess 2026-01-06 09:24:32 +01:00
Tom Hvitved
19179d5005 Merge pull request #21071 from hvitved/rust/access-after-lifetime-perf
Rust: Speedup `AccessAfterLifetime.ql`
2026-01-06 09:18:05 +01:00
Michael Nebel
16b2e7150a Merge pull request #21069 from michaelnebel/net10/stubs
C#: Generate .NET 10 stubs.
2026-01-06 07:56:25 +01:00
Tom Hvitved
836b667a62 Address review comment 2026-01-05 19:47:02 +01:00
Nick Rolfe
5faa546053 Merge pull request #21096 from github/nickrolfe/doc-range-checks
Docs: clarify behavior of range checks
2026-01-05 18:30:10 +00:00
Nick Rolfe
4ebbd1f9f3 Docs: clarify behavior of range checks
The current wording (about the sets of values being "the same") is not
accurate.
2026-01-05 18:03:54 +00:00
Michael Nebel
bbec35bcb1 C#: Update flow summaries test expected output. 2026-01-05 15:26:48 +01:00
Michael Nebel
a671810edf C#: Update test options files to point to the new stubs versions. 2026-01-05 15:23:34 +01:00
Michael Nebel
576998a854 C#: Manual corrections to the generated stubs. 2026-01-05 15:23:31 +01:00
Michael Nebel
3f25065956 C#: Re-generate stubs. 2026-01-05 15:23:26 +01:00
Michael Nebel
2d90cc87dc C#: Update hardcoded package version numbers for stub generation. 2026-01-05 15:23:23 +01:00
Anders Peter Fugmann
f87cb4a2e9 Update docs/codeql/reusables/supported-versions-compilers.rst
Add ending period for consitency

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-05 13:38:57 +01:00
Anders Fugmann
ba922fce26 Kotlin: Mark support for Kotlin versions 1.6 and 1.7 as deprecated 2026-01-05 13:13:11 +01:00
Tom Hvitved
2543754dd4 Rust: Remove newtype construction 2026-01-05 13:10:40 +01:00
Tom Hvitved
5bc457f6da Rust: Move logic from AccessAfterLifetimeExtensions.qll to AccessAfterLifetime.ql 2026-01-05 13:10:38 +01:00
Tom Hvitved
06a5648336 Rust: Speedup AccessAfterLifetime.ql
Before
```
Pipeline standard for AccessAfterLifetimeExtensions::AccessAfterLifetime::mayEncloseOnStack/2#3cdefece#bf@61cb32j5 was evaluated in 30 iterations totaling 44856ms (delta sizes total: 241646328).
         241404616     ~1%    {2} r1 = SCAN `AccessAfterLifetimeExtensions::AccessAfterLifetime::mayEncloseOnStack/2#3cdefece#bf#prev_delta` OUTPUT In.1, In.0
        7379161442  ~1080%    {2}    | JOIN WITH `_AstNode::AstNode.getEnclosingBlock/0#5c38e65a_AstNode::AstNode.getEnclosingCallable/0#5a548913_Bloc__#join_rhs` ON FIRST 1 OUTPUT Lhs.1, Rhs.1
         333897324    ~40%    {2}    | AND NOT `AccessAfterLifetimeExtensions::AccessAfterLifetime::mayEncloseOnStack/2#3cdefece#bf#prev`(FIRST 2)
         297961888    ~24%    {2}    | JOIN WITH `project#AccessAfterLifetimeExtensions::AccessAfterLifetime::sourceValueScope/3#d065ba16#2` ON FIRST 1 OUTPUT Lhs.0, Lhs.1
                              return r1
```
2026-01-05 13:10:37 +01:00
github-actions[bot]
c00663766e Release preparation for version 2.23.9 2026-01-05 11:57:06 +00:00
Asger F
635f008bb2 Merge branch 'main' into js/use-cache-directives 2026-01-05 10:59:50 +01:00
Jeroen Ketema
ac859d90ef Merge pull request #21070 from jketema/jketema/supported-platforms
Update supported platforms
2026-01-05 09:36:00 +01:00
Mauro Baluda
1e1fb43534 Update JsonObject put method signatures in YAML
Use erased type
2026-01-02 11:55:40 +01:00
Owen Mansel-Chan
bf79b8a792 Merge branch 'main' into java-mad-test 2026-01-01 23:34:45 +00:00
Kevin Stubbings
f73f1a7aa9 Add additional test 2025-12-29 07:09:31 +00:00
Mauro Baluda
cb341609e7 Add change notes for Couchbase sinks 2025-12-24 20:41:11 +01:00
Mauro Baluda
15ee88ee24 SQLi test case 2025-12-24 20:30:21 +01:00
Mauro Baluda
fd78c949d3 Merge branch 'github:main' into couchdb 2025-12-22 20:25:41 +01:00
Mauro Baluda
b22077c371 Hardcoded credentials in CouchBase 2025-12-22 20:22:20 +01:00
Tom Hvitved
f23351afca Rust: Refactor MaD provanance-based filtering 2025-12-19 19:35:41 +01:00
Simon Friis Vindum
6fa60932c9 Merge pull request #21067 from paldepind/rust/type-inference-use-type-item
Rust: Refactor type inference to use new `TypeItem` class
2025-12-19 14:47:33 +01:00
Simon Friis Vindum
e0e493a9e3 Rust: Address review comments 2025-12-19 13:53:38 +01:00
Jeroen Ketema
57d88511d9 Update supported platforms 2025-12-19 11:35:59 +01:00
Jeroen Ketema
b5d3d95e72 Merge pull request #21037 from jketema/swift-6.2.3
Swift: Update to Swift 6.2.3
2025-12-19 10:21:40 +01:00
Simon Friis Vindum
dde845e92f Rust: Refactor type inference to use new TypeItem class 2025-12-18 16:08:27 +01:00
Tom Hvitved
27874caf14 Merge pull request #20973 from hvitved/rust/type-inference-distinguish-mut-ref
Rust: Distinguish `&mut T` from `&T` in type inference
2025-12-18 15:59:40 +01:00
Jeroen Ketema
ed7854cc0d Swift: Update LFS artifacts 2025-12-18 15:45:35 +01:00
Jeroen Ketema
64ee0d3b9d Swift: Add change note 2025-12-18 15:43:33 +01:00
Asger F
f169251a0c Merge pull request #20668 from knewbury01/knewbury01/add-react-useref-step
Add React missing useRef related constructs
2025-12-18 14:20:41 +01:00
Taus
6b03130755 Python: Fix bad join in import_points_to 2025-12-18 12:03:40 +00:00
Tom Hvitved
47d0863bc5 Merge pull request #21038 from github/path-combine-name-desc-update
Clarify Path.Combine call behavior
2025-12-18 12:54:38 +01:00
Michael Nebel
1817f9cdf7 C#: Add change-note. 2025-12-18 12:51:04 +01:00
Michael Nebel
44c9c58b48 C#: Add implicit span conversion test case. 2025-12-18 12:51:02 +01:00
Tom Hvitved
aae6cd93a2 Address review comments 2025-12-18 12:47:43 +01:00
Tom Hvitved
3c6a757c3e Rust: Distinguish &mut T from &T in type inference 2025-12-18 12:47:42 +01:00
Asger F
806fcb2a15 Merge branch 'main' into knewbury01/add-react-useref-step 2025-12-18 12:10:10 +01:00
Michael Nebel
119ecff3b7 C#: Implicit span conversion. 2025-12-18 11:59:18 +01:00
Simon Friis Vindum
da99bbf6a6 Merge pull request #21059 from paldepind/rust/adt-class
Rust: Improve and rename `Adt` class
2025-12-18 10:41:11 +01:00
Simon Friis Vindum
96a986228d Rust: Revert accidental changes 2025-12-18 09:04:07 +01:00
Jon Janego
a3c0082ac7 Update PathCombine.expected 2025-12-17 09:53:07 -06:00
Jon Janego
425d62cfd6 Update PathCombine metadata for clarity 2025-12-17 09:50:11 -06:00
Tom Hvitved
98dc4390ea Merge pull request #21060 from hvitved/shared/unbound-list
Shared: Add library for unbound lists
2025-12-17 16:20:40 +01:00
Jon Janego
e36b602743 Enhance PathCombine.ql metadata details 2025-12-17 09:16:56 -06:00
Jon Janego
7423f6f99b Fix typo in warning message for Path.Combine 2025-12-17 09:16:05 -06:00
Simon Friis Vindum
9e8735f84c Merge pull request #20878 from paldepind/rust/axum-model
Rust: Add models for Axum
2025-12-17 15:47:28 +01:00
Tom Hvitved
47e375f6e4 Merge pull request #21057 from hvitved/rust/fix-bad-join
Rust: Fix bad join
2025-12-17 15:34:45 +01:00
Tom Hvitved
adfaefd1e6 Merge pull request #21043 from hvitved/rust/type-inference-trait-bounds-overlap
Rust: Fix candidate receiver type calculation for trait bounds
2025-12-17 15:31:00 +01:00
Simon Friis Vindum
8564c1f458 Rust: Add change note 2025-12-17 14:50:50 +01:00
Simon Friis Vindum
97fd70e4f4 Rust: Accept change to expected file 2025-12-17 14:19:19 +01:00
Simon Friis Vindum
f1364caaa9 Rust: Add upgrade and downgrade scripts 2025-12-17 14:19:18 +01:00
Simon Friis Vindum
b64809cbd3 Rust: Adapt QL to AST changes 2025-12-17 14:19:16 +01:00
Tom Hvitved
b6cda4a29b Update shared/util/codeql/util/UnboundList.qll
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-17 13:44:47 +01:00
Tom Hvitved
08339fe0df Shared: Add library for unbound lists 2025-12-17 13:13:39 +01:00
Tom Hvitved
5c604fce48 Rust: Fix bad join
Before
```
Evaluated relational algebra for predicate TypeInference::MethodResolution::MethodCall.getTrait/0#dispred#fc13ba6e@914858bt with tuple counts:
          153112   ~2%    {2} r1 = SCAN `Operation::Operation.isOverloaded/3#f0e64084` OUTPUT In.0, In.1
          153112   ~2%    {2}    | STREAM DEDUP

           18807   ~0%    {2} r2 = JOIN `TypeInference::getCallExprTraitQualifier/1#c084fe9f` WITH TypeInference::MethodResolution::MethodCallCallExpr#6eae461f ON FIRST 1 OUTPUT Lhs.0, Lhs.1

        65859035   ~3%    {3} r3 = JOIN `_IndexExpr::Generated::IndexExpr#9975e37a_TypeInference::MethodResolution::MethodCallIndexExpr.isInM__#shared` WITH Trait::Generated::Trait#ecf50173 CARTESIAN PRODUCT OUTPUT Rhs.0, _, Lhs.0
        65859035   ~0%    {3}    | REWRITE WITH Out.1 := "core::ops::index::Index"
           11191   ~0%    {2}    | JOIN WITH `Addressable::Addressable.getCanonicalPath/0#dispred#6044348f#bb` ON FIRST 2 OUTPUT Lhs.2, Lhs.0

             671   ~0%    {1} r4 = JOIN IndexExpr::Generated::IndexExpr#9975e37a WITH `TypeInference::MethodResolution::MethodCallIndexExpr.isInMutableContext/0#dispred#8c8ad425` ON FIRST 1 OUTPUT Lhs.0
         3948835   ~2%    {3}    | JOIN WITH Trait::Generated::Trait#ecf50173 CARTESIAN PRODUCT OUTPUT Rhs.0, _, Lhs.0
         3948835   ~2%    {3}    | REWRITE WITH Out.1 := "core::ops::index::IndexMut"
             671   ~1%    {2}    | JOIN WITH `Addressable::Addressable.getCanonicalPath/0#dispred#6044348f#bb` ON FIRST 2 OUTPUT Lhs.2, Lhs.0

          183781   ~0%    {2} r5 = r1 UNION r2 UNION r3 UNION r4
                          return r5
```

After
```
Evaluated relational algebra for predicate TypeInference::MethodResolution::MethodCall.getTrait/0#dispred#fc13ba6e@1b4a55e3 with tuple counts:
        153112   ~2%    {2} r1 = SCAN `Operation::Operation.isOverloaded/3#f0e64084` OUTPUT In.0, In.1
        153112   ~2%    {2}    | STREAM DEDUP

         11191   ~0%    {2} r2 = JOIN `_IndexExpr::Generated::IndexExpr#9975e37a_TypeInference::MethodResolution::MethodCallIndexExpr.isInM__#shared` WITH Stdlib::IndexTrait#e80543a5 CARTESIAN PRODUCT OUTPUT Lhs.0, Rhs.0

         18807   ~0%    {2} r3 = JOIN `TypeInference::getCallExprTraitQualifier/1#c084fe9f` WITH TypeInference::MethodResolution::MethodCallCallExpr#6eae461f ON FIRST 1 OUTPUT Lhs.0, Lhs.1

           671   ~0%    {1} r4 = JOIN IndexExpr::Generated::IndexExpr#9975e37a WITH `TypeInference::MethodResolution::MethodCallIndexExpr.isInMutableContext/0#dispred#8c8ad425` ON FIRST 1 OUTPUT Lhs.0
           671   ~1%    {2}    | JOIN WITH Stdlib::IndexMutTrait#4d6c31bd CARTESIAN PRODUCT OUTPUT Lhs.0, Rhs.0

        183781   ~0%    {2} r5 = r1 UNION r2 UNION r3 UNION r4
                        return r5
```
2025-12-17 11:52:28 +01:00
Simon Friis Vindum
dd02ac3964 Rust: Update generated files 2025-12-17 11:13:13 +01:00
Simon Friis Vindum
ca6c054256 Rust: Rename Adt class and lift common predicates to it 2025-12-17 11:13:11 +01:00
Simon Friis Vindum
22bc924c26 Rust: Apply Black formatter to annotations.py 2025-12-17 11:13:10 +01:00
Tom Hvitved
eb56cbd358 Rust: Fix candidate receiver type calculation for trait bounds 2025-12-17 11:06:27 +01:00
Tom Hvitved
3104adbe77 Rust: Add type inference test 2025-12-17 11:06:22 +01:00
Tom Hvitved
802c465b31 Merge pull request #21027 from hvitved/rust/type-inference-matching-specialization
Rust: Also use specialized types when inferring types for calls
2025-12-17 11:03:44 +01:00
Tom Hvitved
fe0ce7a492 Address review comments 2025-12-17 10:35:28 +01:00
Jeroen Ketema
a04b10cb86 Swift: Fix dataset check errors by not referring to unavailable decls
Test

Test

Test

Test

Test

Test
2025-12-17 10:14:58 +01:00
Michael Nebel
8eddc71e0e Merge pull request #21016 from michaelnebel/csharp/slnx
C#: Support `.slnx.` solution files.
2025-12-17 09:27:11 +01:00
Taus
4d45b5839d Python: Add change note 2025-12-16 23:57:58 +01:00
Taus
b9616eb639 Python: Add stats
Not actually based on any measurements, just the usual 100/1000 stuff.
2025-12-16 23:57:58 +01:00
Taus
82c629ada8 Python: Add up-/downgrade scripts for template literals
We do the usual thing. Downgrade scripts remove the relevant relations;
upgrade scripts do nothing.
2025-12-16 23:57:58 +01:00
Taus
47c967a06c Python: Bump extractor version 2025-12-16 23:57:58 +01:00
Taus
414e689291 Python: Add AST node wrappers 2025-12-16 23:57:58 +01:00
Taus
652c335d30 Python: Regenerate AST and dbscheme files 2025-12-16 23:57:58 +01:00
Taus
28e733e335 Python: Support template strings in rest of extractor
Adds three new AST nodes to the mix:

- `TemplateString` represents a t-string in Python 3.14
- `TemplateStringPart` represents one of the string constituents of a
t-string. (The interpolated expressions are represented as `Expr` nodes,
just like f-strings.)
- `JoinedTemplateString` represents an implicit concatenation of
template strings.

Importantly, we _completely avoid_ the complicated construction we
currently do for format strings (as well as the confusing nomenclature).
No extra injection of empty strings (so that a template string is a
strict alternation of strings and expressions). A `JoinedTemplateString`
simply has a list of template string children, and a `TemplateString`
has a list of "values" which may be either `Expr` or
`TemplateStringPart` nodes.

If we ever find that we actually want the more complicated interface for
these strings, then I would much rather we reconstruct this inside of QL
rather than in the parser.
2025-12-16 23:57:58 +01:00
Taus
cd7ae34380 Python: Regenerate parser files 2025-12-16 23:57:58 +01:00
Taus
7768ebe8b8 Python: Add parser support for template strings
- Extends the scanner with a new token kind representing the start of a
template string. This is used to distinguish template strings from
regular strings (because only a template string will start with a
`_template_string_start` external token).

- Cleans up the logic surrounding interpolations (and the method names)
so that format strings and template strings behave the same in this
case.

Finally, we add two new node types in the tree-sitter grammar:

- `template_string` behaves like format strings, but is a distinct type
(mainly so that an implicit concatenation between template strings and
regular strings becomes a syntax error).
- `concatenated_template_string` is the counterpart of
`concatenated_string`.

However, internally, the string parts of a template strings are just the
same `string_content` nodes that are used in regular format strings. We
will disambiguate these inside `tsg-python`.
2025-12-16 23:57:58 +01:00
Jon Janego
576f270753 Update PathCombine.ql 2025-12-16 16:39:06 -06:00
Jon Janego
44d896abaf Merge pull request #21054 from github/changedocs-2.23.8
Changedocs 2.23.8
2025-12-16 12:18:59 -06:00
Jon Janego
c7ec175e10 Minor change to 2.23.1 rst 2025-12-16 11:36:34 -06:00
Jon Janego
92bb40d7e4 Minor revert to 2.23.1 rst 2025-12-16 11:35:35 -06:00
Jon Janego
ff0a0ed373 Adds changelog docs for 2.23.7 and 2.23.8 2025-12-16 11:28:34 -06:00
Jon Janego
30673a2fc8 Enhance PathCombine metadata with detailed description
Updated the `name` and `description` of PathCombine.ql to provide more details about the issue.
2025-12-16 10:37:53 -06:00
Jon Janego
84a501d360 Update csharp/ql/src/Bad Practices/PathCombine.ql
Co-authored-by: Tom Hvitved <hvitved@github.com>
2025-12-16 09:10:39 -06:00
Simon Friis Vindum
420dd9ab61 Rust: Add change note for Axum models 2025-12-16 15:15:22 +01:00
Simon Friis Vindum
e53bdb11be Rust: Accept changes to expected files for consistency check 2025-12-16 13:15:34 +01:00
Simon Friis Vindum
63329b47d8 Merge pull request #21036 from paldepind/rust/prioritize-manual-summaries
Rust: Don't apply generated models for functions that have a manual model
2025-12-16 12:47:27 +01:00
Simon Friis Vindum
cbdab99497 Rust: Add XSS sink for Axum HTML response creation 2025-12-16 12:41:44 +01:00
Simon Friis Vindum
fbf9f7eda7 Rust: Add models for Axum 2025-12-16 12:41:32 +01:00
Simon Friis Vindum
0ea06aca06 Rust: Introduce more functions in Axum test 2025-12-16 12:32:40 +01:00
Paolo Tranquilli
6fc963177c codegen: mention Rust in the README
Updated README to reflect support for the Rust extractor and added details about Rust generated files.
2025-12-16 11:05:39 +01:00
Michael Nebel
7df1d7a13f C#: Address review comment. 2025-12-16 10:21:08 +01:00
Simon Friis Vindum
8c4b81ebc7 Rust: Fix typo in comment
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-16 10:19:01 +01:00
yoff
cbc0100675 Apply suggestion from @Copilot 2025-12-16 10:11:05 +01:00
yoff
50e9057db1 java: add change note 2025-12-16 10:11:05 +01:00
yoff
c6240e5a99 java: understand more initializers
Whne a fiels is assigned a safe type in a constructor,
that field is not exposed.
2025-12-16 10:11:05 +01:00
yoff
a65d385297 java: add tests for thread safe initialisation
Co-authored-by: Raúl Pardo <raul.pardo@protonmail.com>
2025-12-16 10:11:05 +01:00
Simon Friis Vindum
477e1cd96c Rust: Fix manual model for PathBuf::as_path 2025-12-16 09:25:42 +01:00
Jon Janego
bd9b657e91 Update csharp/ql/src/Bad Practices/PathCombine.ql
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-15 15:20:52 -06:00
Jon Janego
f6e3e192ca Clarify Path.Combine call behavior in documentation
Updated the name and description to clarify the issue with Path.Combine.
2025-12-15 15:18:34 -06:00
Tom Hvitved
d709343d38 Merge pull request #21011 from aschackmull/mad/shared-externalflow
Java/C++/Go/C#: Share parts of ExternalFlow.qll
2025-12-15 20:27:04 +01:00
Tom Hvitved
74ed18a89f Merge pull request #21035 from hvitved/rust/ord-models
Rust: Add models for `core::cmp::Ord::{min,max,clamp}`
2025-12-15 17:09:33 +01:00
Jeroen Ketema
294de742a4 Swift: Update to Swift 6.2.3 2025-12-15 17:00:50 +01:00
Simon Friis Vindum
1b70111dd2 Rust: Don't apply generated models for functions that have a manual model 2025-12-15 14:25:49 +01:00
Simon Friis Vindum
d2cfd53933 Rust: Add test with wrong generated model 2025-12-15 14:23:48 +01:00
Tom Hvitved
86a4d42316 Rust: Remove obsolete comment from test 2025-12-15 13:10:41 +01:00
Tom Hvitved
3239afb278 Rust: Also use specialized types when inferring types for calls 2025-12-15 13:10:37 +01:00
Tom Hvitved
8e2d9d50b7 Rust: Add type inference test 2025-12-15 13:09:21 +01:00
Óscar San José
2824c98efb Merge pull request #21025 from github/oscarsj/mergeback-rc-3-20-into-main
Mergeback rc/3.20 into main
2025-12-15 11:59:58 +01:00
Tom Hvitved
fc49360e81 Rust: Add models for core::cmp::Ord::{min,max,clamp} 2025-12-15 11:52:05 +01:00
Michael Nebel
70447c6483 Merge pull request #21026 from michaelnebel/csharp/migratesolution
C#: Migrate our own solution file to `.slnx`.
2025-12-15 11:01:35 +01:00
Geoffrey White
93e8534d0a Merge pull request #21009 from geoffw0/varfps
Rust: Fix some false positives for rust/unused-variable and rust/unused-value
2025-12-15 09:48:47 +00:00
Geoffrey White
01f9b42472 Merge branch 'main' into varfps 2025-12-15 08:49:16 +00:00
Michael Nebel
949cfc3fbd Merge pull request #21031 from github/workflow/coverage/update
Update CSV framework coverage reports
2025-12-15 09:12:24 +01:00
github-actions[bot]
f7bbddec24 Add changed framework coverage reports 2025-12-15 00:27:40 +00:00
Owen Mansel-Chan
af2fbd8dda Merge pull request #20929 from owen-mc/go/fix-data-flow-consistency-checks
Go: fix small issues highlighted by data flow consistency checks
2025-12-12 17:01:43 +00:00
Mathias Vorreiter Pedersen
3ea92eada6 Merge pull request #21024 from MathiasVP/csharp-implicit-map-value-reads
C#: Add implicit `System.Collections.Generic.KeyValuePair2.Value` reads at taint sinks
2025-12-12 16:46:12 +00:00
Tom Hvitved
b61a439491 Merge pull request #21020 from hvitved/shared/source-sink-provenance-prio
Shared: Prefer source/sink models with manual provenance over generated
2025-12-12 16:01:06 +01:00
Michael Nebel
e417938860 C#: Exclude all test projects from the Release build configuration. 2025-12-12 14:25:15 +01:00
Michael Nebel
7f1a9b57f1 C#: Update the default solution to point to the .slnx file instead. 2025-12-12 14:23:23 +01:00
Michael Nebel
1e43d06c6d C#: Migrate CSharp.sln to CSharp.slnx (as is). 2025-12-12 14:22:51 +01:00
Anders Schack-Mulligen
64a48e4e7b MaD: Use "namespace" instead "package" in shared code. 2025-12-12 13:57:02 +01:00
Anders Schack-Mulligen
7f8d0771df MaD: Rename file. 2025-12-12 13:50:58 +01:00
Óscar San José
d972af9ef8 Merge branch 'main' of https://github.com/github/codeql into oscarsj/mergeback-rc-3-20-into-main 2025-12-12 13:22:08 +01:00
Mathias Vorreiter Pedersen
2720f57965 C#: Add change note. 2025-12-12 11:20:02 +00:00
Óscar San José
72b63bbdc3 Merge pull request #20989 from github/post-release-prep/codeql-cli-2.23.8
Post-release preparation for codeql-cli-2.23.8
2025-12-12 12:18:16 +01:00
Mathias Vorreiter Pedersen
f30ebab528 C#: Add implicit reads of System.Collections.Generic.KeyValuePair`2.Value at taint sinks. 2025-12-12 11:08:15 +00:00
Mathias Vorreiter Pedersen
b499661c05 C#: Slightly refactor 'CollectionFlow' tests to add a taint-flow test. 2025-12-12 11:06:01 +00:00
Simon Friis Vindum
c5987b4481 Merge pull request #21019 from paldepind/rust/impl-return
Rust: Don't propagate `impl` in return position into function bodies
2025-12-12 11:32:26 +01:00
Anders Schack-Mulligen
8564b4ea66 Go: Use shared modelCoverage. 2025-12-12 11:24:39 +01:00
Tom Hvitved
0b00589f95 Rust: Update expected test output 2025-12-12 11:16:17 +01:00
Tom Hvitved
0b81d44ec7 Rust: Apply same filtering of generated summaries as in C# and Java 2025-12-12 11:16:16 +01:00
Tom Hvitved
c4a8e9df21 Shared: Prefer source/sink models with manual provenance over generated 2025-12-12 11:16:13 +01:00
Anders Schack-Mulligen
f8c144b20e Merge pull request #21018 from aschackmull/csharp/guards-connect-barrierguard
C#: Connect shared Guards to SSA BarrierGuards.
2025-12-12 10:50:47 +01:00
Tom Hvitved
6f27863453 Merge pull request #21012 from hvitved/csharp/nhibernate-sql-sinks
C#: Add `NHibernate` SQL sinks
2025-12-12 09:23:39 +01:00
Tom Hvitved
0566a9ffe6 Merge pull request #20994 from hvitved/csharp/remove-pre-ssa
C#: Remove `PreSsa` library
2025-12-12 09:22:36 +01:00
Anders Schack-Mulligen
4b2e8c0b57 C++/C#/Go: Add empty extensible data. 2025-12-12 09:17:51 +01:00
Anders Schack-Mulligen
5bddc8d289 Go: Move Go package-grouping support into shared lib. 2025-12-12 09:17:51 +01:00
Simon Friis Vindum
4425891352 Rust: Don't propagate impl in return position into function bodies 2025-12-12 09:13:04 +01:00
Michael Nebel
ea7e15829a C#: Update integration test expected output. 2025-12-12 08:37:58 +01:00
Michael Nebel
b8def10977 C#: Claim support for .slnx in the public documentation. 2025-12-12 08:32:07 +01:00
Anders Schack-Mulligen
e262438557 C++: Use shared model coverage code. 2025-12-12 08:20:20 +01:00
Anders Schack-Mulligen
07252519c8 Java/C++: Thread additional models through the shared lib. 2025-12-12 08:20:20 +01:00
Anders Schack-Mulligen
47dcf05a32 C++/Go/Java: Don't import top-level extensible predicates. 2025-12-12 08:20:19 +01:00
Anders Schack-Mulligen
3b334ea215 Java/C#: Share model coverage code. 2025-12-12 08:20:19 +01:00
Anders Schack-Mulligen
0915db4f6b C++/C#/Go: Use shared interpretModelForTest. 2025-12-12 08:20:18 +01:00
Anders Schack-Mulligen
f0e7f1af2c C++/C#/Go: Align ExternalFlowExtensions with Java. 2025-12-12 08:20:18 +01:00
Anders Schack-Mulligen
cb578e32ab Java: Move interpretModelForTest into shared code. 2025-12-12 08:20:17 +01:00
Anders Schack-Mulligen
7285a8e1c5 Merge pull request #20986 from aschackmull/java/mad-barriers
Java: Support for MaD barriers and barrier guards.
2025-12-12 07:53:53 +01:00
Idriss Riouak
8fccc34bd6 Merge pull request #21017 from github/idrissrio/cpp/overlay/xml 2025-12-11 20:02:57 +01:00
Geoffrey White
ee13a49152 Merge branch 'main' into varfps 2025-12-11 18:21:22 +00:00
Geoffrey White
d88bae9ec2 Rust: Narrow the exclusion a little. 2025-12-11 18:07:12 +00:00
Geoffrey White
5db6b92411 Merge pull request #20887 from github/copilot/add-ecb-cbc-test-cases
Add ECB and CBC block mode test cases for BrokenCryptoAlgorithm query
2025-12-11 16:22:27 +00:00
Jeroen Ketema
1af1d2d3d5 Merge pull request #21008 from jketema/swift-6.2.2
Swift: Update to Swift 6.2.2
2025-12-11 16:57:55 +01:00
idrissrio
926d7f53f2 C/C++ overlay: Update identical files 2025-12-11 16:56:29 +01:00
Anders Schack-Mulligen
4066c0d84a Java: Fix input/output naming. 2025-12-11 16:24:29 +01:00
Owen Mansel-Chan
87f58fe51a Convert regex injection barrier to MaD 2025-12-11 16:24:29 +01:00
Owen Mansel-Chan
44295e4c7d Convert XSS barrier to MaD 2025-12-11 16:24:28 +01:00
Owen Mansel-Chan
7e562f3150 Convert request forgery barrier guard to MaD 2025-12-11 16:24:28 +01:00
Anders Schack-Mulligen
5ab26e481b Add dummy instantiations for other languages. 2025-12-11 16:24:27 +01:00
Owen Mansel-Chan
f6e3c77145 Convert path injection barrier to MaD 2025-12-11 16:24:27 +01:00
Owen Mansel-Chan
f6e40bd49d Convert trust boundary violation barrier and barrier guard to MaD 2025-12-11 16:24:26 +01:00
Anders Schack-Mulligen
dcf6041dca Java: Add empty extensible data. 2025-12-11 16:24:26 +01:00
Anders Schack-Mulligen
8da65ec6d0 Java: Add support for boolean MaD barrier guards. 2025-12-11 16:24:25 +01:00
Anders Schack-Mulligen
d24b0ff596 Java: Basic support for pass-through barrier models. 2025-12-11 16:24:25 +01:00
Simon Friis Vindum
e13bb0f866 Merge pull request #20879 from paldepind/rust/reads-as-taint
Rust: Lift content reads as taint steps
2025-12-11 16:05:29 +01:00
Anders Schack-Mulligen
1142f4a54a C#: Connect shared Guards to SSA BarrierGuards. 2025-12-11 15:41:47 +01:00
idrissrio
84bbe71522 C/C++ overlay: Discard xml entities 2025-12-11 15:41:35 +01:00
Michael Nebel
efb585384b C#: Add change-note. 2025-12-11 15:27:28 +01:00
Michael Nebel
23981b474b C#: Update integration test expected output. 2025-12-11 15:23:51 +01:00
Michael Nebel
d31a297a97 C#: Make support for .slnx files. 2025-12-11 15:18:27 +01:00
Michael Nebel
5212e635bc C#: Add dependency Microsoft.VisualStudio.SolutionPersistence and update lock files. 2025-12-11 15:18:25 +01:00
Simon Friis Vindum
74a77a7c3c Rust: Fix typo in change note
Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
2025-12-11 15:04:25 +01:00
Michael Nebel
166ce1b498 C#: Add buildless integration test example including .slnx file. 2025-12-11 14:47:08 +01:00
Michael Nebel
247d764a50 C#: Add autobuilder integration tests with .slnx file. 2025-12-11 14:45:38 +01:00
Tom Hvitved
adac3926a1 C#: Remove PreSsa library 2025-12-11 14:17:12 +01:00
Tom Hvitved
6feded9000 Merge pull request #21014 from hvitved/csharp/file-path-filter-log-levels
C#: Adjust log levels in `FilePathFilter.cs`
2025-12-11 14:02:51 +01:00
Idriss Riouak
ad6988ff40 Merge pull request #20995 from github/idrissrio/cpp/overlay/locations
C/C++ overlay: Add multiloc declaration to Overlay.qll
2025-12-11 14:00:12 +01:00
Michael Nebel
ce2c149cb3 Merge pull request #20996 from michaelnebel/csharp/updateroslyn
C#: Update Roslyn, MsBuild and Binlog extractor dependencies.
2025-12-11 13:50:22 +01:00
Tom Hvitved
a060218109 Add change note 2025-12-11 13:43:52 +01:00
Tom Hvitved
2fd4516c25 C#: Adjust log levels in FilePathFilter.cs 2025-12-11 13:37:56 +01:00
Tom Hvitved
776f6cd56f C#: Add NHibernate SQL injection tests 2025-12-11 13:30:26 +01:00
Tom Hvitved
fac84ee9f3 C#: Add NHibernate SQL sinks 2025-12-11 13:30:24 +01:00
Michael Nebel
24417cf93d C#: Add change-note. 2025-12-11 13:15:29 +01:00
Jeroen Ketema
a820c49a0d Swift: Add change note 2025-12-11 13:07:48 +01:00
Jeroen Ketema
0673c2d82b Swift: Update resources to Swift 6.2.2 2025-12-11 13:07:47 +01:00
Jeroen Ketema
5650c87c55 Swift: Update to Swift 6.2.2 2025-12-11 13:07:45 +01:00
Jeroen Ketema
004dfbdf24 Merge pull request #21005 from jketema/swift-filter-arg
Swift: Update tracer configuration
2025-12-11 12:40:25 +01:00
Michael Nebel
fa76d3555a C#: Update launch.json to point to .NET 10. 2025-12-11 12:19:24 +01:00
Michael Nebel
298e8f0c58 C#: Bugfix in the implicittostring. Need to handle the ReadOnlySpan params overload for string.Format. 2025-12-11 12:19:22 +01:00
Michael Nebel
ee5c291c9d C#: Update test expected output. 2025-12-11 12:19:20 +01:00
Michael Nebel
45cd8e94cd C#: Update test example (field is now a reserved word). 2025-12-11 12:19:17 +01:00
Michael Nebel
d97b9f532a C#: Update example to use a type that calls an implicit (library) conversion operator. 2025-12-11 12:19:16 +01:00
Michael Nebel
66895a0c62 C#: Update the Roslyn, MsBuild and Binlog extractor dependencies. 2025-12-11 12:19:13 +01:00
idrissrio
3f372d2658 C/C++ overlay: Add overlay support for discarding macro invocations 2025-12-11 12:09:04 +01:00
idrissrio
1286ca6683 C/C++ overlay: Add overlay support for discarding namespaces 2025-12-11 12:09:02 +01:00
idrissrio
c34456e3a0 C/C++ overlay: Add overlay support for discarding user types 2025-12-11 12:09:01 +01:00
idrissrio
4702e208b7 C/C++ overlay: Add overlay support for discarding functions 2025-12-11 12:09:00 +01:00
Michael Nebel
c79cdea690 Merge pull request #20898 from michaelnebel/csharp/dotnet10extractor
C#: Use .NET 10 for building the extractor and running tests.
2025-12-11 12:05:35 +01:00
Tom Hvitved
3ab0ade9dc Merge pull request #21010 from hvitved/rust/type-inference-fix-blowup
Rust: Strengthen `isNotInstantiationOf` uses
2025-12-11 12:04:30 +01:00
Michael Nebel
c69bbce176 C#: Add change-note. 2025-12-11 11:34:58 +01:00
Michael Nebel
3bb12f6236 C#: Cleanup dependencies. 2025-12-11 11:34:56 +01:00
Michael Nebel
af6809e93e C#: Update integration test expected files. 2025-12-11 11:34:55 +01:00
Michael Nebel
2d4127fdb7 C#: Partially update test expected files by search and replace. 2025-12-11 11:34:53 +01:00
Michael Nebel
16bfcc3882 C#: Update language test expected output files to .NET 10. 2025-12-11 11:34:52 +01:00
Michael Nebel
4c3176ef1a C#: Update integration tests to target and request .NET 10. 2025-12-11 11:34:50 +01:00
Michael Nebel
66aaa62ad9 C#: Manually update the existing stubs to target .NET 10. 2025-12-11 11:34:46 +01:00
Michael Nebel
ff3d2d5b8d C#: Update stub generator script to target .NET 10. 2025-12-11 11:34:39 +01:00
Michael Nebel
9e395936dc C#: Update extractor to target .NET 10. 2025-12-11 11:34:38 +01:00
Michael Nebel
682195bd57 C#: Update workflows. 2025-12-11 11:34:36 +01:00
Michael Nebel
cf43c6170a C#: Update Paket version and dependencies. 2025-12-11 11:34:34 +01:00
Michael Nebel
3c0e3c4336 C#: Remove custom rules_dotnet 0.19.2. 2025-12-11 11:34:33 +01:00
Michael Nebel
aa964362ef C#: Update rules_dotnet to 0.21.5. 2025-12-11 11:34:28 +01:00
Michael Nebel
577a2e1974 C#: Copy the 0.19.2 custom rules_dotnet. 2025-12-11 11:34:21 +01:00
Simon Friis Vindum
8c39472d73 Rust: Add change note for reads as taint steps 2025-12-11 09:09:12 +01:00
Tom Hvitved
d5a95a8099 Rust: Strengthen isNotInstantiationOf uses 2025-12-10 20:48:21 +01:00
Tom Hvitved
f30a3b3712 Rust: Add type inference blowup test 2025-12-10 20:48:18 +01:00
Geoffrey White
f1d241f810 Rust: Accept test change. 2025-12-10 18:22:59 +00:00
Geoffrey White
6ca90a2d62 Rust: Change note. 2025-12-10 16:56:26 +00:00
Geoffrey White
c160a1f658 Rust: Fix common FPs for rust/unused-variable and rust/unused-value. 2025-12-10 16:56:24 +00:00
Anders Schack-Mulligen
000f2c345e Merge pull request #21001 from aschackmull/guards/generalise-validationwrapper
Guards: Generalise ValidationWrapper to support GuardValue-based BarrierGuards
2025-12-10 15:52:53 +01:00
Simon Friis Vindum
c6d2047827 Rust: Update expected files 2025-12-10 15:05:36 +01:00
Taus
d2c7147480 Python: Add new test 2025-12-10 13:52:13 +00:00
Taus
6af9fd816f Python: Make space for new test 2025-12-10 13:51:20 +00:00
Simon Friis Vindum
efbc0934c4 Rust: Do not use types to limit lifting of reads to taint steps 2025-12-10 14:35:24 +01:00
Simon Friis Vindum
fe37e3d9be Rust: Address PR feedback 2025-12-10 14:35:23 +01:00
Simon Friis Vindum
273eb19b88 Rust: Apply suggestions from code review
Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
2025-12-10 14:35:22 +01:00
Simon Friis Vindum
5ba4e30c20 Rust: Exclude range start and end from field taint steps 2025-12-10 14:35:20 +01:00
Simon Friis Vindum
647bed9e2f Rust: Add extensible predicate to exclude fields and block fieldless enum types 2025-12-10 14:35:19 +01:00
Simon Friis Vindum
6fcd8d194a Rust: Refactor flow summary implementation 2025-12-10 14:35:18 +01:00
Simon Friis Vindum
047ea10a9a Rust: Update tests and expected files 2025-12-10 14:35:17 +01:00
Simon Friis Vindum
0f97e7e29d Rust: Remov unneeded model 2025-12-10 14:35:16 +01:00
Simon Friis Vindum
8a0e5b5675 Rust: Lift content reads as taint steps 2025-12-10 14:35:14 +01:00
Simon Friis Vindum
cd721b85e9 Merge pull request #20941 from paldepind/rust/invalid-pointer-barriers
Rust: Reduce the number of sinks in `DereferenceSink`
2025-12-10 14:22:05 +01:00
Anders Schack-Mulligen
eaa96864f7 Java: Extend test to cover assertion-like barrier guards. 2025-12-10 12:23:52 +01:00
Anders Schack-Mulligen
9cd2247b91 Java: expose support for more general BarrierGuards. 2025-12-10 12:23:52 +01:00
Anders Schack-Mulligen
09058e48aa Guards: Rename -WithState to Parameterized-. 2025-12-10 12:23:51 +01:00
Anders Schack-Mulligen
ebb989962c Guards: Generalise ValidationWrapper to support GuardValue-based BarrierGuards. 2025-12-10 12:23:51 +01:00
Simon Friis Vindum
c5a44cf8ff Rust: Accept changes to expected files 2025-12-10 11:35:32 +01:00
Geoffrey White
506a1ea0b8 Rust: Add test case for rust/access-after-lifetime-ended involving an invalidated reference. 2025-12-10 11:35:31 +01:00
Simon Friis Vindum
ade7815125 Rust: Add change note 2025-12-10 11:35:29 +01:00
Simon Friis Vindum
7d1acbcb87 Rust: Restrict the scope of DereferenceSink to dereferences of raw pointers 2025-12-10 11:35:28 +01:00
Simon Friis Vindum
4a1abc7beb Merge pull request #21007 from hvitved/rust/update-expected
Rust: Update expected test output
2025-12-10 11:19:37 +01:00
Geoffrey White
fa02842d30 Rust: Accept consistency check changes. 2025-12-10 10:16:22 +00:00
Tom Hvitved
30b903604d Rust: Update expected test output 2025-12-10 11:02:04 +01:00
Jeroen Ketema
3cabcfef75 Swift: Skip -scan-dependencies compiler calls
These do not produce any useful data and just crash our frontend.
2025-12-10 10:11:41 +01:00
Jeroen Ketema
e9aa6ddf53 Swift: Strip more unsupported arguments
We had customer reports where these occur in practise, although we have not
observed these ourselves in frontend calls.
2025-12-10 10:08:21 +01:00
Geoffrey White
819a12216e Merge branch 'main' into copilot/add-ecb-cbc-test-cases 2025-12-10 08:56:20 +00:00
Taus
e6e05012c8 Python: Add change note 2025-12-09 22:55:40 +00:00
Taus
ad68a5e4e9 Python: Add modelling for zstd.compression
See https://docs.python.org/3/library/compression.zstd.html for
information about this library.

As far as I can tell, the `zstd` library is not vulnerable to things
like ZipSlip, but it _could_ be vulnerable to a decompression bomb
attack, so I extended those models accordingly.
2025-12-09 22:52:16 +00:00
Joe Farebrother
94fcee5340 minor formatting tweak 2025-12-09 14:15:36 +00:00
Joe Farebrother
d0cd4ee959 Add change note 2025-12-09 14:13:38 +00:00
Joe Farebrother
d98e660803 Test fixes + more tests 2025-12-09 14:13:28 +00:00
Joe Farebrother
1d61da51a6 Generate stubs 2025-12-09 14:13:02 +00:00
Joe Farebrother
a594ca9de8 Add tests 2025-12-09 14:12:45 +00:00
Joe Farebrother
41b94e7031 Add spring websocket handler models 2025-12-09 14:12:39 +00:00
Tom Hvitved
fe18e0e414 Merge pull request #20997 from paldepind/rust/fix-expected
Rust: Accept changes to expected files
2025-12-09 14:25:36 +01:00
Tom Hvitved
a5f513f178 Merge pull request #20954 from hvitved/rust/stats-more-calls
Rust: Include more calls in DB quality metrics
2025-12-09 14:14:07 +01:00
Simon Friis Vindum
53ad3282c3 Rust: Accept changes to expected files 2025-12-09 14:01:31 +01:00
Owen Mansel-Chan
cf19586516 Merge pull request #20993 from github/dependabot/go_modules/go/extractor/extractor-dependencies-955632e86c
Bump the extractor-dependencies group in /go/extractor with 2 updates
2025-12-09 09:36:16 +00:00
Anders Schack-Mulligen
139dc0acaf Merge pull request #20922 from aschackmull/csharp/object-initializer
C#: Replace initializer splitting with an ObjectInitMethod.
2025-12-09 10:35:02 +01:00
yoff
5c6d83ed65 Merge pull request #20877 from joefarebrother/python-tornado-websocket
Python: Add models for websocket handlers for Tornado
2025-12-09 10:08:59 +01:00
Michael Nebel
8ecae77887 Merge pull request #20991 from github/dependabot/nuget/csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/nuget-335537b6a2
Bump the nuget group with 1 update
2025-12-09 10:01:15 +01:00
Tom Hvitved
e054741061 Update expected test output 2025-12-09 09:13:26 +01:00
tesseractjh
789ea8b247 Allow arbitrary suffixes for use cache directives 2025-12-09 08:59:16 +01:00
tesseractjh
012d3b944c change note 2025-12-09 08:59:16 +01:00
tesseractjh
2e840dcd5f Add use cache directives 2025-12-09 08:59:16 +01:00
Tom Hvitved
31b184a404 Rust: Exclude deref expressions on raw pointers from call resolution stats 2025-12-09 08:54:51 +01:00
dependabot[bot]
9eb1eb8f0d Bump the extractor-dependencies group in /go/extractor with 2 updates
Bumps the extractor-dependencies group in /go/extractor with 2 updates: [golang.org/x/mod](https://github.com/golang/mod) and [golang.org/x/tools](https://github.com/golang/tools).


Updates `golang.org/x/mod` from 0.30.0 to 0.31.0
- [Commits](https://github.com/golang/mod/compare/v0.30.0...v0.31.0)

Updates `golang.org/x/tools` from 0.39.0 to 0.40.0
- [Release notes](https://github.com/golang/tools/releases)
- [Commits](https://github.com/golang/tools/compare/v0.39.0...v0.40.0)

---
updated-dependencies:
- dependency-name: golang.org/x/mod
  dependency-version: 0.31.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: extractor-dependencies
- dependency-name: golang.org/x/tools
  dependency-version: 0.40.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: extractor-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-09 03:07:27 +00:00
Owen Mansel-Chan
e7147244e8 Merge pull request #20992 from myvyang/main
Change MethodAccess to MethodCall in query example.
2025-12-09 01:22:55 +00:00
Owen Mansel-Chan
d15342db1f Fix table padding 2025-12-09 01:12:53 +00:00
i
134312173f MethodAccess has been deprecated, Change MethodAccess to MethodCall in query example. 2025-12-09 08:41:01 +08:00
dependabot[bot]
c8992fc834 Bump the nuget group with 1 update
Bumps Newtonsoft.Json from 6.0.4 to 13.0.1

---
updated-dependencies:
- dependency-name: Newtonsoft.Json
  dependency-version: 13.0.1
  dependency-type: direct:production
  dependency-group: nuget
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-09 00:33:13 +00:00
github-actions[bot]
2854330759 Post-release preparation for codeql-cli-2.23.8 2025-12-08 15:49:10 +00:00
Paolo Tranquilli
28b6aa8616 Merge pull request #20988 from github/release-prep/2.23.8
Release preparation for version 2.23.8
2025-12-08 15:45:10 +01:00
github-actions[bot]
66c51e979e Release preparation for version 2.23.8 2025-12-08 14:38:23 +00:00
Paolo Tranquilli
b5f705a4f1 Merge pull request #20985 from asgerf/js/overlay-local-optional
JS: Use question-mark variant in all overlay annotations
2025-12-08 15:27:23 +01:00
Chris Smowton
359a28e409 Merge pull request #20984 from github/rc/3.20
Java: Add change note for Maven compiler flags
2025-12-08 14:24:58 +00:00
Tom Hvitved
0280771c51 Merge pull request #20953 from hvitved/rust/data-flow-call-models
Rust: Model more data flow constructs as calls using MaD
2025-12-08 15:22:02 +01:00
Tom Hvitved
57ce2ee749 Address review comments 2025-12-08 13:27:36 +01:00
Asger F
4d1200fd13 Revert changes in synced files 2025-12-08 13:26:19 +01:00
Chris Smowton
ef991e5ba5 Merge pull request #20983 from smowton/smowton/feature/csharp-csrf-aspnetcore
C# CSRF query: add support for ASP.NET Core
2025-12-08 12:14:48 +00:00
Asger F
294089fe35 JS: Use question-mark variant in all overlay annotations 2025-12-08 13:13:09 +01:00
Idriss Riouak
877669d1f0 Merge pull request #20981 from github/idrissrio/java/java-maven-sap
Java: Add change note for Maven compiler flags
2025-12-08 12:55:50 +01:00
Chris Smowton
79718b6dcb Change note 2025-12-08 11:54:02 +00:00
Chris Smowton
5bb31afc83 C# CSRF query: add support for ASP.NET Core 2025-12-08 11:51:01 +00:00
idrissrio
a0e7afde8e Java: Add change note for Maven compiler flags 2025-12-08 12:14:03 +01:00
Simon Friis Vindum
cd6429a39e Merge pull request #20969 from paldepind/rust/dispath-default-trait
Rust: Do not dispatch to all implementations when trait target is accurate
2025-12-08 10:45:55 +01:00
Tom Hvitved
bfa37b8488 Fix typo 2025-12-08 10:17:47 +01:00
Geoffrey White
24852c6664 Merge pull request #20966 from geoffw0/lifetimetest
Rust: Fix FPs from rust/access-after-lifetime-ended
2025-12-08 09:03:51 +00:00
Michael Nebel
10c01832b0 Merge pull request #20964 from michaelnebel/csharp/nugetversionsorting
C#: Fix NuGet version bug and a .NET10 compatibility issue.
2025-12-08 09:35:53 +01:00
Óscar San José
3230df02d9 Merge pull request #20975 from github/oscarsj/merge-back-rc-3.20
Merge back rc/3.20
2025-12-05 21:16:18 +01:00
Óscar San José
bc6133de5c Merge branch 'main' of https://github.com/github/codeql into oscarsj/merge-back-rc-3.20 2025-12-05 19:31:47 +01:00
Tom Hvitved
9a95acadb5 Merge pull request #20963 from hvitved/rust/call-refactor-follow-up
Rust: Remove some predicates
2025-12-05 14:38:47 +01:00
Paolo Tranquilli
2acb02bf67 Merge pull request #20971 from github/redsun82/ripunzip
Ripunzip: update to 2.0.4
2025-12-05 14:32:55 +01:00
Taus
1b519384d7 Merge pull request #20739 from github/tausbn/python-remove-top-level-points-to-imports
Python: Hide points-to imports in `python.qll`
2025-12-05 14:24:41 +01:00
Geoffrey White
108db75124 Update rust/ql/lib/codeql/rust/security/AccessAfterLifetimeExtensions.qll
Co-authored-by: Simon Friis Vindum <paldepind@github.com>
2025-12-05 13:19:38 +00:00
Simon Friis Vindum
f200dba7dd Rust: Add change note 2025-12-05 14:12:58 +01:00
Simon Friis Vindum
fa4b212020 Rust: Fix grammar
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-05 14:03:29 +01:00
Paolo Tranquilli
90aeccab07 Ripunzip: update to 2.0.4 2025-12-05 13:55:33 +01:00
Chris Smowton
86962c6055 Merge pull request #20970 from github/smowton/admin/document-missing-actions-permissions-shortcomings
Actions: note imprecision of MissingActionsPermissions.ql
2025-12-05 12:43:49 +00:00
Chris Smowton
02caa098bc Actions: note imprecision of MissingActionsPermissions.ql
Added a note to the query's qhelp to note its imprecision, but also encourage usage of a permissions block regardless as a belt-and-braces measure.
2025-12-05 12:36:07 +00:00
Simon Friis Vindum
5888ed30bd Rust: Do not dispatch to all implementations when trait target is accurate 2025-12-05 13:01:22 +01:00
Óscar San José
5addb53e0f Merge pull request #20946 from github/post-release-prep/codeql-cli-2.23.7
Post-release preparation for codeql-cli-2.23.7
2025-12-05 12:51:51 +01:00
Tom Hvitved
12a6dcc4ff Rust: Remove some predicates 2025-12-05 12:50:36 +01:00
Anders Schack-Mulligen
28e9420476 C#: Fix lambda flow. 2025-12-05 10:58:01 +01:00
Paolo Tranquilli
795bfdf02d Merge pull request #20962 from github/redsun82/dependabot
Dependabot: add bazel
2025-12-05 10:51:29 +01:00
Simon Friis Vindum
59ce721f7d Rust: Add global data flow example 2025-12-05 09:38:22 +01:00
Tom Hvitved
5a5679bd51 Rust: Taint flow through operations using MaD 2025-12-05 09:19:03 +01:00
Tom Hvitved
41916640c3 Rust: Taint flow tests for operations 2025-12-05 09:19:02 +01:00
Tom Hvitved
294c489fd8 Rust: Handle x[y] expressions as *.index(y) calls in data flow 2025-12-05 09:18:59 +01:00
Tom Hvitved
e72c8acb6c Rust: Add data flow tests for collections 2025-12-05 09:16:57 +01:00
Tom Hvitved
09461e9cb6 Merge pull request #20967 from hvitved/rust/call-refactor-fix
Rust: Call refactor follow-up fixes
2025-12-05 09:16:18 +01:00
Tom Hvitved
57bca5ca9b Rust: Include more calls in DB quality metrics 2025-12-05 09:15:26 +01:00
Simon Friis Vindum
1a19df2044 Merge pull request #20950 from paldepind/rust/ti-raw-pointer
Rust: Type inference for raw pointers
2025-12-05 09:06:13 +01:00
Owen Mansel-Chan
6d301f27d0 Merge pull request #20937 from owen-mc/actions/fix/code-injection-privileged-context
Actions: fix filtering of code injection results between medium and critical version of query
2025-12-05 07:54:13 +00:00
Joe Farebrother
d70c596c86 Merge pull request #20914 from joefarebrother/python-socketio
Python: Add models for socketio
2025-12-04 23:14:58 +00:00
Tom Hvitved
be1d756de4 Rust: Call refactor follow-up fixes 2025-12-04 21:15:28 +01:00
Geoffrey White
4109848927 Rust: Clean up following merge. 2025-12-04 17:55:34 +00:00
Geoffrey White
b7402fef09 Merge remote-tracking branch 'upstream/main' into lifetimetest 2025-12-04 17:33:39 +00:00
Geoffrey White
3cdbef71f1 Rust: Change note. 2025-12-04 17:25:34 +00:00
Geoffrey White
32e9fdfe19 Rust: Fix the false positives. 2025-12-04 17:19:41 +00:00
Owen Mansel-Chan
4a16de2bc8 Pull out logic into separate predicate 2025-12-04 16:50:39 +00:00
Owen Mansel-Chan
fb841ea591 Make predicates containing query logic more self-contained 2025-12-04 16:50:37 +00:00
Owen Mansel-Chan
8bac1dec83 Add change note 2025-12-04 16:50:36 +00:00
Owen Mansel-Chan
f6bdb3a126 Fix filtering of code injection alerts between medium and critical 2025-12-04 16:50:34 +00:00
Owen Mansel-Chan
e2acd1b668 Add test with push and workflow_dispatch triggers
This is based on push.yml, and it should still be found by
actions/code-injection/medium, but it isn't.
2025-12-04 16:50:33 +00:00
Tom Hvitved
8b89e15dfa Merge pull request #20863 from hvitved/rust/call-refactor
Rust: Restructure classes representing calls
2025-12-04 17:02:17 +01:00
Simon Friis Vindum
27ddc813af Rust: Cleanup of raw pointer types based in PR feedback 2025-12-04 16:41:28 +01:00
Owen Mansel-Chan
5c8ab1f6d1 Merge pull request #20956 from owen-mc/java/improve-regex-sanitizer
Java: improve regex sanitizer for `java/ssrf`
2025-12-04 15:32:12 +00:00
Geoffrey White
8594c7a29a Rust: Add test for rust/access-after-lifetime-ended FP involving generic calls. 2025-12-04 15:28:15 +00:00
Michael Nebel
5a33f9fcd8 C#: Update integration test expected output. 2025-12-04 15:58:02 +01:00
Michael Nebel
4112cfc8f1 C#: Add change note. 2025-12-04 15:42:18 +01:00
Michael Nebel
a3e545ddd5 C#: Use NuGetVersion instead of homemade version implementation. 2025-12-04 15:34:28 +01:00
Michael Nebel
1b84f70d1c C#: Use NuGet version sorting instead of lexicographic directory name sorting for finding newest package version. 2025-12-04 15:34:26 +01:00
Michael Nebel
4274af4f73 C#: Set AllowMissingPrunePackageData=true to true when purposely using non-existing framework targets. 2025-12-04 15:26:15 +01:00
Anders Schack-Mulligen
e4ee7c95c5 C#: Address review comments. 2025-12-04 15:06:20 +01:00
Michael Nebel
cdd8aa49e1 Merge pull request #20933 from michaelnebel/csharp/runtraceraftercompilation
C#: Invoke the extractor after the compiler to ensure that source generators have been executed.
2025-12-04 13:41:38 +01:00
Owen Mansel-Chan
a20c8cfd52 Add post-update nodes for implicit field read nodes 2025-12-04 12:00:02 +00:00
Owen Mansel-Chan
dcfa721037 (Refactor) Make lookThroughImplicitFieldRead public 2025-12-04 12:00:00 +00:00
Owen Mansel-Chan
9bf20702c6 Remove identity steps 2025-12-04 11:59:58 +00:00
Tom Hvitved
bc6d38ebb4 Address review comments 2025-12-04 10:38:47 +01:00
Anders Schack-Mulligen
607ad1f886 Merge pull request #20961 from aschackmull/dataflow/flowfrom
Dataflow: Add flowFrom predicates to mirror flowTo.
2025-12-04 10:09:29 +01:00
Michael Nebel
e74031bee4 Merge pull request #20936 from michaelnebel/csharp/nocrashdotnetinfo
C#: Retry logic for `dotnet --info` when it fails with exit code 143.
2025-12-04 09:13:12 +01:00
Tom Hvitved
38a572dfa0 Rust: Run codegen 2025-12-03 20:47:05 +01:00
Tom Hvitved
a707527022 Address review comments in annotations.py 2025-12-03 20:46:30 +01:00
Geoffrey White
2665d8395a Merge pull request #20939 from geoffw0/saltmodel
Rust: Add heuristic sinks for passwords, initialization vectors etc
2025-12-03 18:01:48 +00:00
Tom Hvitved
ca9d327280 Merge pull request #20915 from hvitved/content-flow-ap-limit
Shared: Improvements to content-sensitive model generation
2025-12-03 15:54:57 +01:00
Michael Nebel
a903420122 C#: Add change note. 2025-12-03 15:49:37 +01:00
Michael Nebel
0d08f24a2d C#: Invoke the extractor after the compiler to ensure that source generators have been executed. 2025-12-03 15:49:35 +01:00
yoff
7fd4755e93 Merge pull request #20919 from yoff/python/header-splitting-experiments
Python: detecting header splitting in synthetic app
2025-12-03 15:48:54 +01:00
Tom Hvitved
3ba256a72a C#/Java: Go back to access path limit 2 2025-12-03 15:05:02 +01:00
Paolo Tranquilli
599d342b33 Dependabot: add bazel 2025-12-03 14:52:02 +01:00
Anders Schack-Mulligen
78e1879c9e Use more flowTo. 2025-12-03 14:12:08 +01:00
Anders Schack-Mulligen
dc6d3fe7ba Use flowFrom. 2025-12-03 14:04:18 +01:00
Anders Schack-Mulligen
4191b18410 Dataflow: Add flowFrom predicates to mirror flowTo. 2025-12-03 13:46:44 +01:00
Simon Friis Vindum
299fed5901 Rust: Apply fixes from code review 2025-12-03 13:04:54 +01:00
Simon Friis Vindum
a05d0a906c Rust: Add change note for raw pointer type inference 2025-12-03 11:56:54 +01:00
Michael Nebel
c1793ab529 C#: Code quality improvement. 2025-12-03 11:48:32 +01:00
Paolo Tranquilli
5784a216a2 Merge pull request #20810 from github/redsun82/update-bazel
Bazel: update to 8.4.2
2025-12-03 11:45:38 +01:00
Geoffrey White
3028e5dac0 Rust: CallExpr -> Call. 2025-12-02 17:31:35 +00:00
Owen Mansel-Chan
e710c150de Add change note 2025-12-02 17:12:05 +00:00
Owen Mansel-Chan
a85d0ea8a3 Make tests pass 2025-12-02 17:08:16 +00:00
Owen Mansel-Chan
8fd8fc07b7 Add failing tests for more regex match methods 2025-12-02 17:06:34 +00:00
github-actions[bot]
085faa2bdb Post-release preparation for codeql-cli-2.23.7 2025-12-02 16:39:43 +00:00
Óscar San José
dce6d0e222 Merge pull request #20955 from github/release-prep/2.23.7
Release preparation for version 2.23.7
2025-12-02 17:06:20 +01:00
Owen Mansel-Chan
566aa8f201 Refactor regex sanitizer
Move it to Sanitizers.qll and rename it to be more general (mostly
following Go).
2025-12-02 16:04:39 +00:00
Owen Mansel-Chan
9f2a7f712a Apply suggestion from @owen-mc 2025-12-02 15:52:01 +00:00
github-actions[bot]
a045b317ac Release preparation for version 2.23.7 2025-12-02 15:31:27 +00:00
Michael Nebel
3197b50da7 C#: Address review comments. 2025-12-02 16:16:29 +01:00
Simon Friis Vindum
236df0ab65 Rust: Accept changes to expected files 2025-12-02 15:07:54 +01:00
Michael Nebel
1d9b88de8b C#: Comment back in the .NET 10 tests. 2025-12-02 14:59:45 +01:00
Simon Friis Vindum
ea1b0a8476 Rust: Fix path resolution for raw pointer types 2025-12-02 14:43:52 +01:00
Simon Friis Vindum
c15e12c9ff Rust: Accept test changes 2025-12-02 14:43:51 +01:00
Simon Friis Vindum
785025f1e3 Rust: Type inference for raw pointers 2025-12-02 14:43:50 +01:00
Michael Nebel
4a6ae216a4 C#: Gracefully handle non-zero exitcodes for dotnet --info. 2025-12-02 14:42:00 +01:00
Owen Mansel-Chan
afb810cdeb Fix double space in change note 2025-12-02 13:32:58 +00:00
Anders Schack-Mulligen
5d63b6e723 C#: Accept integration test change 2025-12-02 14:03:31 +01:00
Owen Mansel-Chan
e52f819df0 Merge pull request #20949 from owen-mc/go/reinstate-dummy-test
Go: Reinstate dummy test so consistency tests are run
2025-12-02 12:55:36 +00:00
Anders Schack-Mulligen
67a2bced0d C#: Accept CFG dead ends for compilation errors. 2025-12-02 13:49:18 +01:00
Anders Schack-Mulligen
2eb2a50ccd C#: Fix enclosing DataFlowCallable of ObjectInitMethods with multiple bodies. 2025-12-02 13:49:17 +01:00
Anders Schack-Mulligen
ba7b517a4a C#: Tweaks from review comments. 2025-12-02 13:49:17 +01:00
Anders Schack-Mulligen
7e4e872430 C#: Accept expected changes. 2025-12-02 13:49:16 +01:00
Anders Schack-Mulligen
541dce4d17 C#: Accept PrintAst index shift. 2025-12-02 13:49:16 +01:00
Anders Schack-Mulligen
02e5f4545a C#: Fixup test 2025-12-02 13:49:15 +01:00
Anders Schack-Mulligen
85121e88b4 C#: Move and rename module. 2025-12-02 13:49:14 +01:00
Anders Schack-Mulligen
24a575a7a5 C#: Replace initializer splitting with ObjectInitMethod. 2025-12-02 13:49:14 +01:00
Anders Schack-Mulligen
9414cfbd03 C#: Add extractor support for object initializer methods. 2025-12-02 13:49:13 +01:00
Anders Schack-Mulligen
a7066ec758 C#: Add object initializer test. 2025-12-02 13:49:13 +01:00
Simon Friis Vindum
3e7a7d541b Rust: Include certain types in type inference tests 2025-12-02 13:16:33 +01:00
Simon Friis Vindum
6a2502c97a Rust: Add type inference tests for raw pointers 2025-12-02 13:14:09 +01:00
Owen Mansel-Chan
e9cb183670 Revert "Delete dummy.ql for now"
This reverts commit 38cb6e5a00.
2025-12-02 11:41:39 +00:00
Owen Mansel-Chan
848677e580 Merge pull request #20917 from owen-mc/go/enable-data-flow-consistency-checks
Go: enable data flow consistency checks
2025-12-02 10:52:47 +00:00
Tom Hvitved
7378fbc567 Rust: Restructure classes representing calls 2025-12-02 10:08:04 +01:00
Joe Farebrother
ac55cf9544 Update test and qldoc 2025-12-01 20:41:59 +00:00
Joe Farebrother
7cf3964e44 Update expectations 2025-12-01 20:27:48 +00:00
Tom Hvitved
666855dbd7 Shared: Improvements to content-sensitive model generation 2025-12-01 21:23:14 +01:00
Joe Farebrother
6fbae45d49 Update qldoc 2025-12-01 20:14:36 +00:00
Joe Farebrother
6a1e26c566 Add change note 2025-12-01 20:06:24 +00:00
Tom Hvitved
3e5ea5664c Rust: Add DB downgrade script 2025-12-01 20:59:31 +01:00
Tom Hvitved
b350a000e3 Rust: Add DB upgrade script 2025-12-01 20:59:30 +01:00
Tom Hvitved
a2782a12f2 Rust: Run codegen 2025-12-01 20:59:28 +01:00
Tom Hvitved
b40353f88f Rust: Remove CallExprBase and elaborate QL doc 2025-12-01 20:59:26 +01:00
Óscar San José
871d5c9045 Merge pull request #20944 from github/release-prep/2.23.7
Release preparation for version 2.23.7
2025-12-01 19:34:17 +01:00
Tom Hvitved
464d2cd5fc Merge pull request #20891 from hvitved/rust/data-flow-implicit-deref-borrow
Rust: Improve handling of implicit derefs/borrows in data flow
2025-12-01 19:03:55 +01:00
Joe Farebrother
384e17a4ef Implement websockets models 2025-12-01 16:24:59 +00:00
github-actions[bot]
19a13467e0 Release preparation for version 2.23.7 2025-12-01 16:07:37 +00:00
Óscar San José
f1aaefc107 Merge pull request #20943 from github/oscarsj/update-codeql-cli-2.23.7
Update branch with previous release notes, and fix date format in change note file
2025-12-01 17:05:45 +01:00
Florin Coada
10a53e61cf Merge pull request #20927 from github/changedocs/2.23.6
Add changelog entry for CodeQL CLI version 2.23.6
2025-12-01 15:40:22 +01:00
Óscar San José
1cc5b3444a Fix date format in change note file 2025-12-01 15:39:37 +01:00
Florin Coada
d41a2d475b Merge pull request #20927 from github/changedocs/2.23.6
Add changelog entry for CodeQL CLI version 2.23.6
2025-12-01 13:55:33 +00:00
Simon Friis Vindum
87d6a60814 Merge pull request #20924 from paldepind/rust/struct-field-tostring
Rust: Implement `toString` for struct fields and visibility
2025-12-01 14:52:23 +01:00
Geoffrey White
c64f19f6eb Rust: Change note. 2025-12-01 12:39:19 +00:00
Geoffrey White
450403883b Rust: Add test cases for a small number of FPs we see. 2025-12-01 12:39:18 +00:00
Geoffrey White
e834e8665a Rust: Remove one of the cases that is causing FP results in MRVA. 2025-12-01 12:39:16 +00:00
Geoffrey White
faf69b821b Rust: Add sinks as barriers to prevent duplicate results. 2025-12-01 12:39:13 +00:00
Geoffrey White
bb50e9fb40 Rust: Add heuristic sinks for rust/hard-coded-cryptographic-value. 2025-12-01 12:39:12 +00:00
Tom Hvitved
6ddb9c784c Merge pull request #20853 from hvitved/rust/path-resolution-impl-self
Rust: Refine `Self` resolution inside `impl` blocks
2025-12-01 12:50:30 +01:00
Tom Hvitved
4bfe1a81dc Rust: Update expected test output following rebase 2025-12-01 11:38:50 +01:00
Tom Hvitved
d8177274a8 Rust: Improve handling of deref expressions in data flow 2025-12-01 11:34:06 +01:00
Tom Hvitved
4255f7f560 Address review comments 2025-12-01 11:34:03 +01:00
Tom Hvitved
6b003580d1 Rust: Improve handling of implicit derefs/borrows in data flow 2025-12-01 11:34:01 +01:00
Tom Hvitved
9b25a3112d Rust: Use TaintFlow instead of ValueFlow in tests 2025-12-01 11:33:57 +01:00
Tom Hvitved
d45f8f7236 Rust: Document overlapping function resoltion with test cases 2025-12-01 11:16:15 +01:00
Simon Friis Vindum
1fe7e2ec45 Rust: Change concat to strictconcat 2025-12-01 10:35:43 +01:00
Asger F
b8cff77cab Merge pull request #20873 from github/shared-xml-discard
Share XML discard predicates
2025-12-01 10:06:02 +01:00
Tom Hvitved
34f3892c35 Rust: Extend Self resolution logic to all item kinds 2025-12-01 09:58:27 +01:00
Tom Hvitved
250d15aef2 Rust: More path resolution tests 2025-12-01 09:54:22 +01:00
Tom Hvitved
77df65f2bc Address review comment 2025-12-01 09:07:47 +01:00
Paolo Tranquilli
50929ef566 Merge pull request #20872 from github/redsun82/update-fmt
Swift: update `fmt`
2025-12-01 08:23:48 +01:00
Geoffrey White
8e099480ab Rust: Add tests for heuristics. 2025-11-28 18:02:41 +00:00
Michael Nebel
1d56f17059 Merge pull request #20935 from michaelnebel/csharp/flakynet10
C#: Pin tests and disable .NET 10 tests.
2025-11-28 15:29:27 +01:00
Idriss Riouak
9fd31bf685 Merge pull request #20909 from github/idrissrio/cpp/overlay/overlay.qll
C/C++ overlay: Add basic `Overlay.qll` file
2025-11-28 15:09:39 +01:00
Michael Nebel
6c9d15879f C#: Skip .NET 10 tests for now. 2025-11-28 14:20:06 +01:00
idrissrio
4ad25e4d92 C/C++ overlay: Address review comments 2025-11-28 14:16:10 +01:00
Michael Nebel
af41ca0b1c C#: Fix syntax error. 2025-11-28 14:13:17 +01:00
Michael Nebel
a69e78185b C#: Pin tests and mark .NET 10 tests as flaky. 2025-11-28 13:59:30 +01:00
idrissrio
eac06ddd8f C/C++ overlay: Address review comments
Split the discard predicate into two: one for single-location elements and one for multi-location elements.
2025-11-28 11:31:16 +01:00
Owen Mansel-Chan
c43b03ba34 Merge pull request #20931 from owen-mc/go/fix-misc-ql
Go/Java: fix miscellaneous trivial issues highlighted by ql-for-ql
2025-11-28 09:42:00 +00:00
Asger F
6257bed089 Sync OverlayXml.qll 2025-11-28 09:23:49 +01:00
Asger F
38a1bb0e29 Use string instead of @file in XML discards 2025-11-28 09:23:27 +01:00
Simon Friis Vindum
86eb949673 Merge pull request #20902 from paldepind/rust/xss-query
Rust: Add new query for XSS vulnerabilities
2025-11-28 09:09:14 +01:00
Owen Mansel-Chan
992bd68d4b Use set literals #2 2025-11-28 03:48:50 +00:00
Owen Mansel-Chan
220fd08428 Improve formatting of tags #2 2025-11-28 03:34:30 +00:00
Owen Mansel-Chan
22b614ac48 Use set literals 2025-11-28 03:34:17 +00:00
Owen Mansel-Chan
62238fcbd7 Fix variable name in qldoc 2025-11-28 03:33:18 +00:00
Owen Mansel-Chan
b8ccaf3b11 Improve formatting of tags metadata 2025-11-28 02:26:58 +00:00
Owen Mansel-Chan
fe1c4e2eee Make class qldoc start with "A". 2025-11-28 02:26:39 +00:00
Owen Mansel-Chan
0b79087782 Make predicate name start with has instead of get 2025-11-28 02:26:14 +00:00
Owen Mansel-Chan
303deab608 Remove redundant conjunct 2025-11-28 02:12:12 +00:00
Owen Mansel-Chan
fb0b4071a7 Remove redundant import 2025-11-28 02:09:17 +00:00
Owen Mansel-Chan
2058c4a79c Remove redundant char pred 2025-11-28 02:08:19 +00:00
Owen Mansel-Chan
89546cbc83 Fix qldoc inaccuracies 2025-11-28 01:09:07 +00:00
Owen Mansel-Chan
8debe49563 Correct mistake in qldoc
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-28 01:00:16 +00:00
Owen Mansel-Chan
42c955ea62 Add change note 2025-11-27 23:49:28 +00:00
Owen Mansel-Chan
969b0cf439 Add SSRF sinks for uriVariables arguments of more methods on Spring RestTemplate 2025-11-27 23:44:35 +00:00
Taus
ec336a0334 Python: Fix list bullets in change note
Co-authored-by: Mathias Vorreiter Pedersen <mathiasvp@github.com>
2025-11-27 17:49:13 +01:00
Taus
bc8ed286ac Python: Make some more points-to imports private
This makes things a bit cleaner.

After this, the only non-private (and non-`LegacyPointsTo`) imports of
`semmle.python.{types,objects,pointsto}.*` are in
`semmle.python.objects.ObjectInternal`, which is reasonable, as that is
the entry point for the entire internal object API.
2025-11-27 16:47:53 +00:00
Taus
0c358acc24 Merge pull request #20908 from akoeplinger/patch-1
Fix KeyError: 'name' in python/extractor/imp.py on Python 3.14
2025-11-27 15:29:54 +01:00
Taus
f55ff96674 Python: Bump extractor version and add change note 2025-11-27 13:52:37 +00:00
Asger F
bde983b66d Update 2025-11-26-response-default-content-type.md 2025-11-27 13:18:56 +01:00
Asger F
7c0243fc6d Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-27 13:18:11 +01:00
Asger F
0896be0df6 Merge pull request #20844 from Eliav2/20823-globalVarRef-document-defaultView
javascript: Add support for `document.defaultView` in global variable references
2025-11-27 11:50:23 +01:00
Simon Friis Vindum
1e305851ee Rust: Accept changes to expected files 2025-11-27 11:48:36 +01:00
Simon Friis Vindum
97dad2db17 Rust: Apply suggestions from docs review
Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com>
2025-11-27 11:43:41 +01:00
Geoffrey White
7db06ca573 Merge pull request #20876 from szsam/fix-CWE-119-tests
C++: Fix CWE-119 memcpy tests
2025-11-27 10:18:23 +00:00
Geoffrey White
2371b65d11 Merge pull request #20925 from geoffw0/barrier-doc
Rust: Fix a few comments.
2025-11-27 10:16:40 +00:00
Geoffrey White
803e9fcb88 Merge branch 'main' into fix-CWE-119-tests 2025-11-27 09:57:23 +00:00
Florin Coada
22ca2273cb Add changelog entry for CodeQL CLI version 2.23.6 2025-11-27 09:51:30 +00:00
Geoffrey White
e8cb6b8f54 Rust: Fix a couple of comments. 2025-11-27 09:24:34 +00:00
Asger F
d8027fb6d6 Merge pull request #20885 from asgerf/js/local-module-exports
JS: Split module exports into a local and global variant
2025-11-27 10:05:22 +01:00
Tom Hvitved
f0cac321b2 Merge pull request #20236 from hvitved/rust/type-inference-async-dyn-future
Rust: Model `async` return types as `dyn Future`
2025-11-27 09:41:02 +01:00
Simon Friis Vindum
d88cfe98f8 Rust: Implement toString for struct fields and visibility 2025-11-27 09:35:31 +01:00
idrissrio
3d69286382 C/C++ overlay: Address review comments 2025-11-27 09:22:33 +01:00
idrissrio
6c09325838 C/C++ Overlay: Preserve entities that have at least one location in an unchanged file
Previously, an entity would be discarded if it had any location in a changed
file. This caused issues for entities with multiple declaration entries, such
as extern variables declared in one file and defined in another.

For example, given:
  // a.c (changed)       // b.c (unchanged)
  extern int x;          int x;

The variable `x` should be preserved because it has a location in the
unchanged file b.c, even though it also has a location in the changed file a.c.
2025-11-27 09:22:31 +01:00
idrissrio
39136f3827 C/C++ overlay: Add basic Overlay.qll file 2025-11-27 09:22:29 +01:00
Simon Friis Vindum
8b32679475 Merge pull request #20921 from paldepind/rust/barrier-tweaks
Rust: Tweaks and improvements to data flow barriers
2025-11-27 08:56:04 +01:00
Mingjie Shen
25a46a82ba C++: Use appropriate sizeof in CWE-119 memcpy tests
Signed-off-by: Mingjie Shen <shen497@purdue.edu>
2025-11-27 05:15:51 +00:00
Taus
a7458df0a4 Python: Appease the QLDoc checker 2025-11-26 22:13:21 +00:00
Taus
c6ad438bfc Python: Add change note 2025-11-26 21:58:26 +00:00
Taus
24a29f46be Python: Fix all metrics-related compilation failures
In hindsight, having a `.getMetrics()` method that just returns `this`
is somewhat weird. It's possible that it predates the existence of the
inline cast, however.
2025-11-26 21:28:51 +00:00
Eliav2
69ba764e9d Merge branch 'main' into 20823-globalVarRef-document-defaultView 2025-11-26 23:26:26 +02:00
Tom Hvitved
a9b58b8db3 Rust: Model async return types as dyn Future 2025-11-26 21:03:03 +01:00
Taus
c75329d7b7 Python: Move metrics-related API to LegacyPointsTo module
Gets rid of the `getMetrics` methods on the `Function`, `Class`, and
`Module` classes. To access the metrics, one must first import the
`LegacyPointsTo` module, and then either change the type to
`{Function,Class,Module}Metrics` or cast to the appropriate type.
2025-11-26 17:06:55 +00:00
Taus
cd1619b43e Python: Fix queries and tests 2025-11-26 17:06:55 +00:00
Taus
b9a5b3b628 Python: Remove points-to from SSA.ql
Happily, this was not as deeply entwined as it looked at first glance.
2025-11-26 17:06:55 +00:00
Jeroen Ketema
982950ffc6 Merge pull request #20923 from github/felicity-fix-query-names
Remove trailing periods from @name metadata in query files
2025-11-26 17:08:02 +01:00
Joe Farebrother
16018e91a2 Minor test fix 2025-11-26 15:47:56 +00:00
Owen Mansel-Chan
38cb6e5a00 Delete dummy.ql for now
This is needed because a PR to another repo is needed to update the
location of the consistency queries, and until that PR is merged we
don't want to runny dummy.ql as a consistency query. After that PR is
merged we should reinstate these files so that consistency tests are
run on this test folder.
2025-11-26 15:03:09 +00:00
Jeroen Ketema
4a8fbba521 Merge branch 'main' into felicity-fix-query-names 2025-11-26 16:01:34 +01:00
Simon Friis Vindum
329df20e55 Rust: Fix typo
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-26 15:48:34 +01:00
Owen Mansel-Chan
6fbed9037f Be more specific to avoid CP 2025-11-26 14:39:58 +00:00
Owen Mansel-Chan
9481fc9451 Add QLDoc explaining reverseRead 2025-11-26 14:30:23 +00:00
Felicity Chapman
caf6b950ac Remove trailing periods from @name metadata in query files
Fixed 73 .ql query files where the @name metadata contained an ending period.
This ensures consistency with the CodeQL query metadata style guidelines.
2025-11-26 14:29:51 +00:00
Mathias Vorreiter Pedersen
d869b00672 Merge pull request #20899 from MathiasVP/ignore-non-type-template-params
C++: Ignore non-type template parameters when matching signatures in MaD
2025-11-26 14:26:45 +00:00
Jeroen Ketema
adc13e374e Merge pull request #20920 from jketema/feature-incorrect
C++: Remove incorrect tests
2025-11-26 15:01:50 +01:00
Simon Friis Vindum
815af34c66 Rust: Add additional barriers to queries 2025-11-26 14:54:11 +01:00
Simon Friis Vindum
081ab499c2 Rust: Add barrier for fieldless enum types 2025-11-26 14:46:58 +01:00
Simon Friis Vindum
6050a0e1a8 Rust: Split boolean from number barriers 2025-11-26 14:45:31 +01:00
yoff
2c835dc33c python: add changenote 2025-11-26 14:03:15 +01:00
yoff
24e55c0691 python: update MAD expectations 2025-11-26 14:00:22 +01:00
Asger F
818f4815dd JS: Change note 2025-11-26 13:49:50 +01:00
Asger F
cc7bf4e880 JS: Handle default 'content-type' header in Response() objects 2025-11-26 13:49:48 +01:00
Jeroen Ketema
33c7057066 C++: Remove incorrect tests
`__has_feature` is not available in GCC versions before GCC 14.

Our frontend was exposing `__has_feature` when emulating earlier versions of
GCC. This will be fixed with the latest major frontend update though.
2025-11-26 13:42:43 +01:00
yoff
ebe29dd143 python: model urllib.ParseResult 2025-11-26 13:36:05 +01:00
yoff
a878bc61e1 python: add model for urllib.urlparse 2025-11-26 13:32:54 +01:00
yoff
d59f721341 python: add test for header injection 2025-11-26 13:32:54 +01:00
Taus
5b47fcbfa4 Python: Remove dependence on Builtins from attribute module
The `Builtins` module is deeply entwined with points-to, so it would be
nice to not have this dependence. Happily, the only thing we used
`Builtin` for was to get the names of known builtins, and for this we
already maintain such a set of names in
`dataflow.new.internal.Builtins`.
2025-11-26 12:30:31 +00:00
Taus
9dc774aaa3 Python: Remove points-to dependency from parts of SSA
For whatever reason, the CFG node for exceptions and exception groups
was placed with the points-to code. (Probably because a lot of the
predicates depended on points-to.)

However, as it turned out, two of the SSA modules only depended on
non-points-to properties of these nodes, and so it was fairly
straightforward to remove the imports of `LegacyPointsTo` for those
modules.

In the process, I moved the aforementioned CFG node types into
`Flow.qll`, and changed the classes in the `Exceptions` module to the
`...WithPointsTo` form that we introduced elsewhere.
2025-11-26 12:30:31 +00:00
Taus
e09840426c Python: Get rid of points-to from Definitions.qll
Turns out the `ImportTime` module (despite living in
`semmle.python.types` does not actually depend on points-to, so some of
the `LegacyPointsTo` imports could be replaced or removed.
2025-11-26 12:30:31 +00:00
Taus
7328f26311 Python: Fix reachability-related test failures 2025-11-26 12:30:31 +00:00
Taus
21e74a3f01 Python: Fully remove points-to from Flow.qll
Gets rid of a bunch of predicates relating to reachability (which
depended on the modelling of exceptions, which uses points-to), moving
them to `LegacyPointsTo`. In the process, we gained a new class
`BasicBlockWithPointsTo`.
2025-11-26 12:30:31 +00:00
Taus
7176898503 Python: Fix library tests 2025-11-26 12:30:31 +00:00
Taus
b3b87c968b Python: Fix extractor/experimental tests 2025-11-26 12:30:31 +00:00
Taus
665104e626 Python: Fix Python 3 tests 2025-11-26 12:30:31 +00:00
Taus
85029bd77d Python: Fix Python 2 tests 2025-11-26 12:30:30 +00:00
Taus
5b63b4957c Python: Fix query tests
Mostly just adding `private import LegacyPointsTo`. Sometimes getting
rid of other imports that are superceded by that module.
2025-11-26 12:30:30 +00:00
Taus
2732a652ab Python: Fix example snippets
One might argue that these should be rewritten entirely to use more
modern APIs, but for now I'll be content with just having them compile
properly.
2025-11-26 12:30:30 +00:00
Taus
0a4ec2ca10 Python: Move some non-points-to methods out of points-to
These methods were in `pointsto.Base` but did not actually interact with
the points-to machinery directly, so they were easy to move out.
2025-11-26 12:30:30 +00:00
Taus
f0465f441f Python: Get rid of some get...Object methods
This frees `Class.qll`, `Exprs.qll`, and `Function.qll` from the
clutches of points-to. For the somewhat complicated setup with
`getLiteralObject` (an abstract method), I opted for a slightly ugly but
workable solution of just defining a predicate on `ImmutableLiteral`
that inlines each predicate body, special-cased to the specific instance
to which it applies.
2025-11-26 12:30:30 +00:00
Taus
78c33ab55a Python: Remove points-to references from python.qll
For now, these have just been made into `private` imports. After doing
this, I went through all of the (now not compiling) files and added in
private imports to the modules that they actually depended on.

I also added an explicit import of `LegacyPointsTo` (even though it may
be unnecessary) in cases where the points-to dependency was somewhat
surprising (and one we want to get rid of). This was primarily inside
the various SSA layers.

For modules inside `semmle.python.{types, objects, pointsto}` I did not
bother, as these are fairly clearly related to points-to.
2025-11-26 12:30:30 +00:00
Simon Friis Vindum
1c8cc39a6a Merge pull request #20906 from paldepind/rust/enum-fieldless
Rust: Add predicates for fieldless and unit-only enums
2025-11-26 12:52:28 +01:00
Owen Mansel-Chan
1d0fcd77d8 Add change note 2025-11-26 11:24:04 +00:00
Joe Farebrother
8d313ff85b qldoc fixes 2025-11-26 11:23:04 +00:00
Joe Farebrother
6207137ef0 Add changenote 2025-11-26 11:21:05 +00:00
Owen Mansel-Chan
eca9ec59c4 Add exclusions to data flow consistency checks 2025-11-26 11:12:44 +00:00
Owen Mansel-Chan
a2e68487ea Shared: allow exclusions to localFlowIsLocal 2025-11-26 11:00:30 +00:00
Owen Mansel-Chan
916fe69e65 Accept data flow consistency test results 2025-11-26 11:00:25 +00:00
Joe Farebrother
eb7fe71557 Fix namespace instances and update tests 2025-11-26 10:51:16 +00:00
Tom Hvitved
7e5131891c Rust: Special-case Self::AssocType in path resolution 2025-11-26 11:50:35 +01:00
Asger F
dbf14c190a Factor XML discard predicates into OverlayXml.qll 2025-11-26 11:48:32 +01:00
Owen Mansel-Chan
7cd04e346e Move existing consistency query to new place 2025-11-26 10:44:59 +00:00
Owen Mansel-Chan
fba53b58f8 Run data flow consistency tests in CI 2025-11-26 10:44:56 +00:00
Asger F
037f354abf JS: Update another expected file 2025-11-26 11:42:39 +01:00
Asger F
b33af5b377 JS: Fix typo 2025-11-26 11:40:41 +01:00
Tom Hvitved
0d46dc0461 Rust: More path resolution tests 2025-11-26 11:33:17 +01:00
Asger F
7bd1985407 JS: Add proxy as a route handler name 2025-11-26 11:22:08 +01:00
Asger F
7848369f77 JS: Change note 2025-11-26 11:20:42 +01:00
Asger F
f9033f2abd JS: Look for special folders in root, even if 'src' exists 2025-11-26 11:16:40 +01:00
Asger F
f0ecf1599c JS: Add test with file named 'page' 2025-11-26 11:16:12 +01:00
Asger F
e54789d1bd JS: Recognise route.ts outside api folder 2025-11-26 11:16:11 +01:00
Asger F
f52f5b63e6 JS: Add test with route.ts outside 'api' 2025-11-26 11:16:09 +01:00
Owen Mansel-Chan
0414555e43 Merge pull request #20741 from aegilops/java-kotlin-sensitive-logging-substring-barriers
java: Added Java/Kotlin Sensitive Logging barriers (substrings)
2025-11-26 09:55:14 +00:00
Asger F
0245b9d609 Merge pull request #20911 from asgerf/js/next-folders
JS: Fix project layout detection for Next.js apps
2025-11-26 09:09:54 +01:00
Simon Friis Vindum
7278bc75ca Rust: Remove unused function in XSS tests 2025-11-26 08:57:47 +01:00
Owen Mansel-Chan
f0dec21b9b Merge branch 'main' into java-kotlin-sensitive-logging-substring-barriers 2025-11-25 23:24:58 +00:00
Joe Farebrother
83eadbad60 Add namespace models 2025-11-25 16:56:36 +00:00
Joe Farebrother
85cb3e026c Merge pull request #20762 from joefarebrother/go-insecure-cookie
Go: Promote non-httponly cookie query, and add insecure cookie query
2025-11-25 16:39:45 +00:00
Mathias Vorreiter Pedersen
295dc6971f Merge branch 'main' into ignore-non-type-template-params 2025-11-25 15:37:25 +00:00
Simon Friis Vindum
7c7663629e Rust: Fix typo in change note for XSS query
Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
2025-11-25 16:13:11 +01:00
Asger F
5b4e114955 JS: Add test 2025-11-25 16:04:30 +01:00
Mathias Vorreiter Pedersen
73b6fa69a9 C++: Fix Code Scanning alert. 2025-11-25 15:03:26 +00:00
Mathias Vorreiter Pedersen
0deac833e4 C++: Accept test changes. 2025-11-25 14:59:09 +00:00
Asger F
a91969b7e1 JS: Change note 2025-11-25 15:58:11 +01:00
Mathias Vorreiter Pedersen
05737af165 C++: Only support non-type template parameters in tail position. 2025-11-25 14:55:44 +00:00
Mathias Vorreiter Pedersen
faa55f50e7 C++: Add another test with a template function whose non-type template parameter is in tail position. 2025-11-25 14:55:18 +00:00
Asger F
e95b3590f0 JS: Fix project layout detection for Next.js apps
Some parts of the code did not handle case where 'pages' was located at 'app/pages'.
2025-11-25 15:54:45 +01:00
Joe Farebrother
cece73bdbf Remove references to gorilla 2025-11-25 14:36:16 +00:00
Joe Farebrother
c7b16a043e Address reviews - update comments, remove unneeded stubs 2025-11-25 14:36:00 +00:00
Joe Farebrother
c6110ed541 Split SecureCookies into query specific files 2025-11-25 14:35:47 +00:00
Joe Farebrother
5b702d963e Refactor parts of SensitiveCookieNameConfig 2025-11-25 14:35:42 +00:00
Joe Farebrother
03d63dec2e Address reviews - rename and update doc comments 2025-11-25 14:35:29 +00:00
Joe Farebrother
1bd5005fc1 Fix typos 2025-11-25 14:35:17 +00:00
Joe Farebrother
6282c34396 Update formatting 2025-11-25 14:35:09 +00:00
Joe Farebrother
a25861d8a3 Update integration test 2025-11-25 14:35:02 +00:00
Joe Farebrother
ed483dd5b2 Add change note 2025-11-25 14:34:57 +00:00
Joe Farebrother
d633120f4d Update integration tests 2025-11-25 14:34:48 +00:00
Joe Farebrother
536e885f18 Remove experimental query 2025-11-25 14:34:41 +00:00
Joe Farebrother
fa30041498 Add qhelp & fix tests 2025-11-25 14:34:28 +00:00
Joe Farebrother
2b1cd846b3 Fixes and doc updates 2025-11-25 14:34:10 +00:00
Joe Farebrother
8d544e5b15 Add tests 2025-11-25 14:33:51 +00:00
Joe Farebrother
5094784a4b Add modeling for gin 2025-11-25 14:33:43 +00:00
Joe Farebrother
74c424dc4c Fixes, add secure query 2025-11-25 14:33:33 +00:00
Joe Farebrother
7d76619bea Implement cookie write concepts and httponly query 2025-11-25 14:33:23 +00:00
Mathias Vorreiter Pedersen
26e5320a80 Merge pull request #20901 from MathiasVP/canonical-content
C++: Don't use `Field`s to define `FieldContent`
2025-11-25 13:54:19 +00:00
Simon Friis Vindum
9ae4c14ffb Rust: Address PR feedback 2025-11-25 14:20:17 +01:00
Jeroen Ketema
861ca7526e Merge branch 'main' into canonical-content 2025-11-25 14:08:42 +01:00
Mathias Vorreiter Pedersen
2024f32e81 C++: Add an example with missing flow. 2025-11-25 12:36:29 +00:00
Simon Friis Vindum
4f13ae3fc9 Rust: Add qldoc 2025-11-25 13:35:14 +01:00
Simon Friis Vindum
393da4567e Rust: Add tests for Enum 2025-11-25 13:35:12 +01:00
Simon Friis Vindum
50e8d0ca20 Rust: Add isFieldless and isUnitOnly to Enum 2025-11-25 13:35:11 +01:00
Simon Friis Vindum
b4ae58871a Rust: Tweak existing isStruct predicates 2025-11-25 13:35:10 +01:00
Mathias Vorreiter Pedersen
47ab307410 C++: Respond to review comments. 2025-11-25 12:06:58 +00:00
Alexander Köplinger
458f8570e8 Fix KeyError: 'name' in python/extractor/imp.py on Python 3.14
Follow-up to https://github.com/github/codeql/pull/20630

The fix didn't fully work since when we raise the ImportError in `find_module` we don't pass a named argument into the format string which causes a `KeyError`.

We need to use a format string without named arguments, like Python 3.13 and earlier did.
2025-11-25 12:38:55 +01:00
Geoffrey White
1c2d8bb70e Merge pull request #20851 from geoffw0/access-invalid-pointer-fp
Rust: Improve rust/access-invalid-pointer
2025-11-25 09:49:07 +00:00
Simon Friis Vindum
411d1fa861 Rust: Fix grammar and typos
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-25 09:31:00 +01:00
Simon Friis Vindum
ce25def71e Rust: Update integration test expected files 2025-11-25 08:23:52 +01:00
Joe Farebrother
b0be8184ac Add taint test 2025-11-24 16:54:21 +00:00
Geoffrey White
5893dc699d Rust: Change the majority of variant tests to be on AES not DES, since the focus of these new tests should be the block mode not the encryption algorithm. 2025-11-24 16:29:23 +00:00
Mathias Vorreiter Pedersen
eb6b08591d Update cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-24 15:01:09 +00:00
Mathias Vorreiter Pedersen
2e53370716 Update cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-24 15:01:00 +00:00
Simon Friis Vindum
597c81d659 Rust: Add change note for XSS query 2025-11-24 15:46:27 +01:00
Simon Friis Vindum
9c2858d69b Rust: Add qhelp for XSS query 2025-11-24 15:46:26 +01:00
Simon Friis Vindum
9e2bf76a7f Rust: Add XSS sinks for Actix and Warp 2025-11-24 15:46:25 +01:00
Simon Friis Vindum
ae9c753371 Rust: Add XSS query 2025-11-24 15:46:24 +01:00
Simon Friis Vindum
0f4561efc3 Rust: Add XSS examples 2025-11-24 15:46:23 +01:00
Owen Mansel-Chan
1a59839f3c Range library recognises long literals now 2025-11-24 14:10:54 +00:00
Owen Mansel-Chan
e37336d550 No need for getUnderlyingExpr to look through casts 2025-11-24 14:10:20 +00:00
Mathias Vorreiter Pedersen
0487e0622a C++: Accept test changes from tests that use getAQlClass. 2025-11-24 14:04:35 +00:00
Joe Farebrother
dada49f402 Fix qldoc and tests 2025-11-24 13:57:43 +00:00
Tom Hvitved
551e7ada5c Rust: Refine Self resolution inside impl blocks 2025-11-24 14:53:00 +01:00
Tom Hvitved
17c3ee1745 Rust: More path resolution tests 2025-11-24 14:46:14 +01:00
Mathias Vorreiter Pedersen
6bae58e29c C++: Accept more test changes. 2025-11-24 12:35:19 +00:00
Mathias Vorreiter Pedersen
ecb80cb4fc C++: Represent field content using a column that is shared by all template instantiations. 2025-11-24 12:29:49 +00:00
Mathias Vorreiter Pedersen
fd566780a6 Update cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-24 12:17:06 +00:00
Mathias Vorreiter Pedersen
98879d0f1a C++: Accept test changes. 2025-11-24 12:06:38 +00:00
Mathias Vorreiter Pedersen
732e55df11 C++: Ignore template non-type parameters in MaD signature matching. 2025-11-24 12:06:24 +00:00
Mathias Vorreiter Pedersen
c9e9322143 C++: Add an example of missing MaD supporrt for non-type template parameters. 2025-11-24 12:02:54 +00:00
Joe Farebrother
a83c70f99d Add tests 2025-11-24 11:03:16 +00:00
Eliav2
192f254b41 Merge branch 'main' into 20823-globalVarRef-document-defaultView 2025-11-23 22:03:30 +02:00
copilot-swe-agent[bot]
9b65a33b4a Add ECB and CBC block mode test cases
Co-authored-by: geoffw0 <40627776+geoffw0@users.noreply.github.com>
2025-11-21 18:32:39 +00:00
Geoffrey White
988aca1f85 Rust: Correct QLDoc comment. 2025-11-21 18:13:08 +00:00
copilot-swe-agent[bot]
2c22f94852 Initial plan 2025-11-21 18:10:43 +00:00
Geoffrey White
03fc4cb0aa Merge remote-tracking branch 'upstream/main' into access-invalid-pointer-fp 2025-11-21 17:39:56 +00:00
Geoffrey White
9db1722060 Rust: Accept consistency check changes. 2025-11-21 17:35:34 +00:00
Owen Mansel-Chan
d2fc6a7b5b Merge branch 'main' into java-kotlin-sensitive-logging-substring-barriers 2025-11-21 12:20:04 +00:00
Asger F
51e1bda608 JS: Move isTypeOnly() check into a direct check, instead of an override 2025-11-21 13:10:32 +01:00
Asger F
9c4f85f15b JS: Split getSourceNode into getDirectSourceNode and getReExportedSourceNode 2025-11-21 12:42:30 +01:00
Asger F
94566e5e1e JS: Remove unnecessary override in OriginalExportDeclaration 2025-11-21 12:42:10 +01:00
Asger F
3a393ecd54 Fixup! qldoc for reExportsAs 2025-11-21 12:41:34 +01:00
Asger F
78c8ab11f2 JS: Split exportsAs into exportsDirectlyAs and reExportsAs 2025-11-21 12:31:34 +01:00
Asger F
74d725ef21 JS: Remove unnecessary override in OriginalExportDeclaration 2025-11-21 12:31:09 +01:00
Asger F
ce9986c449 JS: Change signature of isShadowedFromBulkExport 2025-11-21 12:30:31 +01:00
Owen Mansel-Chan
ec381e4ec5 Use range analysis and improve tests 2025-11-21 10:31:50 +00:00
aegilops
ce136684e6 Fixed formatting 2025-11-20 17:39:32 +00:00
aegilops
e904520779 Fixed formatting 2025-11-20 17:34:42 +00:00
aegilops
29a5b27b13 Removed bounds checking and only using literals - bounded() predicate did not work 2025-11-20 17:31:56 +00:00
Paolo Tranquilli
794b328802 Bazel: remove unneeded file from registry 2025-11-20 17:07:09 +01:00
Paolo Tranquilli
195a7234d3 Merge branch 'main' into redsun82/update-fmt 2025-11-20 17:06:24 +01:00
Eliav2
6df789d114 Merge branch 'main' into 20823-globalVarRef-document-defaultView 2025-11-20 15:18:15 +02:00
eliav
91451b73ef javascript: Update expected results for global variable references 2025-11-20 15:15:06 +02:00
Paul Hodgkinson
801cd72965 Merge branch 'main' into java-kotlin-sensitive-logging-substring-barriers 2025-11-20 12:24:22 +00:00
aegilops
1e67907516 Merge commit 2025-11-20 12:22:39 +00:00
aegilops
62ee6d3a33 Made changes requested by reviewers - bounded() for range checking, style and better comments 2025-11-20 11:46:42 +00:00
Joe Farebrother
9c3f4e2bfb Add changenote 2025-11-20 10:59:05 +00:00
Joe Farebrother
cdc44c3267 Model tornado websockets 2025-11-20 10:49:30 +00:00
Joe Farebrother
ba06990290 Add socketio models 2025-11-20 10:47:41 +00:00
Paolo Tranquilli
b54abc7a6d C++: move -DFMT_UNICODE into a module patch 2025-11-20 10:47:54 +01:00
eliav
08dfb95155 javascript: Add change note for document.defaultView aliasing window
Introduced a new change note detailing that `DataFlow::globalVarRef` now recognizes `document.defaultView` as an alias of `window`, enhancing the modeling of data flows involving `history` in queries.
2025-11-20 00:17:14 +02:00
Mingjie Shen
b293dfe3a6 C++: Fix CWE-119 memcpy tests
sizeof(pointer) only gives the pointer size, not the buffer
size, so use explicit 10/20 lengths in tests.cpp and update
OverflowBuffer.expected to accept the resulting memcpy diagnostics.

Signed-off-by: Mingjie Shen <shen497@purdue.edu>
2025-11-19 22:06:06 +00:00
Paolo Tranquilli
83b3711973 Swift: update fmt 2025-11-19 14:32:37 +01:00
Geoffrey White
81096131b6 Rust: Correct + clarify qldoc. 2025-11-17 15:27:49 +00:00
Geoffrey White
7c8e44db8e Rust: Change note. 2025-11-17 15:09:57 +00:00
Geoffrey White
725899389b Rust: Clean up the query slightly. 2025-11-17 15:08:53 +00:00
Geoffrey White
41a6bf079d Rust: Add barrier for null pointer checks to the query. 2025-11-17 15:00:22 +00:00
Geoffrey White
d804229158 Rust: Add missing model. 2025-11-17 14:41:14 +00:00
Geoffrey White
6c3566ab52 Rust: It turns out we need test cases for immutable pointers as well. 2025-11-17 14:32:57 +00:00
Paul Hodgkinson
7b25e22a37 Merge branch 'main' into java-kotlin-sensitive-logging-substring-barriers 2025-11-17 11:03:39 +00:00
aegilops
528c451007 Added change note, adjusted spacing in comment 2025-11-17 11:02:59 +00:00
eliav
8047450668 javascript: Update property access for `document.defaultView as getAPropertyRead
Changed the method for accessing `defaultView` from `getAPropertyReference` to `getAPropertyRead` to improve accuracy in data flow analysis for global variable references.
2025-11-17 01:05:58 +02:00
eliav
bd18e862eb javascript: add change note 2025-11-17 01:02:21 +02:00
eliav
30cc91421d javascript: Add support for document.defaultView in global variable references
Updated the data flow analysis to include `document.defaultView` as a source node for global variable references. Added a new test file `tst4.js` and updated existing tests to verify the inclusion of `defaultView` and its properties in the expected results.
2025-11-17 00:52:06 +02:00
aegilops
0c0fbc1457 Fixed sensitive logging barriers for substring to allow single-arg use 2025-11-14 18:12:05 +00:00
aegilops
fa703e3e60 Test cases for sensitive logging sanitizer 2025-11-14 16:53:46 +00:00
Geoffrey White
e0f0305ace Rust: Add test cases for rust/access-invalid-pointer based on real world FPs. 2025-11-13 16:07:22 +00:00
Kristen Newbury
7b8a3d044e Update javascript/ql/lib/semmle/javascript/frameworks/React.qll
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-13 15:38:41 +01:00
Kristen Newbury
ee60f8e6c6 Update javascript/ql/lib/semmle/javascript/frameworks/React.qll
Co-authored-by: Asger F <asgerf@github.com>
2025-11-13 15:38:41 +01:00
Kristen Newbury
7f8ccb7d46 Simplify addition 2025-11-13 15:38:41 +01:00
Kristen Newbury
dd6db16550 Add DomValueSource for react useRef output (object's prop named current) 2025-11-13 15:38:41 +01:00
Kristen Newbury
9534188f1f Add react precallgraphstep useRef 2025-11-13 15:38:41 +01:00
Owen Mansel-Chan
f22429de2d Merge branch 'main' into java-mad-test 2025-11-13 10:06:14 +00:00
Owen Mansel-Chan
7b533db4fb Sort models and tests alphabetically 2025-11-12 15:10:29 +00:00
Owen Mansel-Chan
f598027cbd Apply suggestions from code review 2025-11-12 15:02:42 +00:00
Paolo Tranquilli
8d6a45008a Bazel: update to 8.4.2 2025-11-11 11:42:58 +01:00
aegilops
d1eceee9d4 Fixed format/docs issues 2025-10-31 18:19:27 +00:00
aegilops
26087f6060 Added java-kotlin Sensitive Logging barriers (substrings) 2025-10-31 17:56:04 +00:00
Owen Mansel-Chan
f3f256d070 Add back import that was accidentally deleted from options file 2025-10-29 12:26:19 +00:00
Owen Mansel-Chan
fe6b4330de Fix test import 2025-10-28 23:14:23 +00:00
Owen Mansel-Chan
74dbafa553 Merge branch 'main' into java-mad-test 2025-10-28 13:28:35 +00:00
Kevin Stubbings
88f9f90236 Fix merge problems 2025-10-06 22:41:16 -07:00
Kevin Stubbings
0d3b65a35b Resolved merge conflicts and completed merge 2025-10-06 22:37:28 -07:00
REDMOND\brodes
26b8a394b3 Adjusting acryonym for SSRF for casing standards. 2025-09-30 14:09:06 -04:00
REDMOND\brodes
a660eaba95 Adding docs. 2025-09-30 14:07:32 -04:00
REDMOND\brodes
acddb2c272 Moved change log to correct location. 2025-09-30 14:02:43 -04:00
Ben Rodes
d790c6df57 Update python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/test_azure_client.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-30 14:00:25 -04:00
Ben Rodes
fab96d9539 Update python/ql/test/query-tests/Security/CWE-918-ServerSideRequestForgery/test_azure_client.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-30 14:00:16 -04:00
Ben Rodes
5ca9ff2082 Update python/ql/lib/semmle/python/frameworks/SSRFSink.qll
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-30 14:00:05 -04:00
REDMOND\brodes
341f553866 Added change logs. 2025-09-30 13:55:31 -04:00
REDMOND\brodes
704e2966cb Adding azure sdk test cases and updated test expected file. 2025-09-30 13:32:56 -04:00
REDMOND\brodes
d27d4fdb27 Updating comments. 2025-09-30 13:31:48 -04:00
REDMOND\brodes
47fac883b8 Azure SDK models for SSRF analysis.
(cherry picked from commit 0274962612c02af09729526a3c44a545c1e69be8)
2025-09-30 11:58:26 -04:00
Alex Eyers-Taylor
f5134e3125 Java: Eliminate pointless use of PathNodes over DataFlow::Node
The use of PathNode prevents these from being overlay informed.
2025-09-16 17:20:44 +01:00
Kevin Stubbings
9c63033d45 Fix tests 2024-11-20 16:53:39 +00:00
Kevin Stubbings
981f67598c Formatting 2024-11-20 07:51:11 +00:00
Kevin Stubbings
ddcf852d3f Add taint steps 2024-11-20 01:07:03 +00:00
Kevin Stubbings
58e4a40323 Merge branch 'github:main' into java-mad-test 2024-11-19 13:54:26 -08:00
Kevin Stubbings
999fcca8f3 Add summary steps 2024-10-15 23:24:41 +00:00
Kevin Stubbings
f0560458af Finished up 2024-09-27 19:24:40 +00:00
Kevin Stubbings
1b5299de5a Forgot something 2024-09-25 22:00:42 +00:00
Kevin Stubbings
6445074fea Fixed but errors still 2024-09-25 21:46:52 +00:00
Kevin Stubbings
a8efb92b9b Simple Test 2024-09-25 17:27:41 +00:00
Kevin Stubbings
d99f552cb3 Test Issues 2024-09-25 08:08:02 +00:00
Kevin Stubbings
0a697e49c1 Add MaD 2024-09-24 17:29:25 -07:00
3465 changed files with 366380 additions and 166071 deletions

View File

@@ -1 +1 @@
8.1.1
8.4.2

View File

@@ -40,3 +40,8 @@ updates:
- dependency-name: "*"
reviewers:
- "github/codeql-go"
- package-ecosystem: bazel
directory: "/"
schedule:
interval: weekly

View File

@@ -34,7 +34,7 @@ jobs:
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.300
dotnet-version: 10.0.100
- name: Checkout repository
uses: actions/checkout@v5

View File

@@ -17,9 +17,41 @@ permissions:
contents: read
jobs:
compile-queries:
detect-changes:
if: github.repository_owner == 'github'
runs-on: ubuntu-latest
outputs:
languages: ${{ steps.detect.outputs.languages }}
steps:
- uses: actions/checkout@v5
- name: Detect changed languages
id: detect
run: |
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
# For PRs, detect which languages have changes
changed_files=$(gh pr view ${{ github.event.pull_request.number }} --json files --jq '.files.[].path')
languages=()
for lang in actions cpp csharp go java javascript python ql ruby rust swift; do
if echo "$changed_files" | grep -qE "^($lang/|shared/)" ; then
languages+=("$lang")
fi
done
echo "languages=$(jq -c -n '$ARGS.positional' --args "${languages[@]}")" >> $GITHUB_OUTPUT
else
# For pushes to main/rc branches, run all languages
echo 'languages=["actions","cpp","csharp","go","java","javascript","python","ql","ruby","rust","swift"]' >> $GITHUB_OUTPUT
fi
env:
GH_TOKEN: ${{ github.token }}
compile-queries:
needs: detect-changes
if: github.repository_owner == 'github' && needs.detect-changes.outputs.languages != '[]'
runs-on: ubuntu-latest-xl
strategy:
fail-fast: false
matrix:
language: ${{ fromJson(needs.detect-changes.outputs.languages) }}
steps:
- uses: actions/checkout@v5
@@ -31,16 +63,16 @@ jobs:
id: query-cache
uses: ./.github/actions/cache-query-compilation
with:
key: all-queries
key: ${{ matrix.language }}-queries
- name: check formatting
run: find shared */ql -type f \( -name "*.qll" -o -name "*.ql" \) -print0 | xargs -0 -n 3000 -P 10 codeql query format -q --check-only
run: find shared ${{ matrix.language }}/ql -type f \( -name "*.qll" -o -name "*.ql" \) -print0 | xargs -0 -n 3000 -P 10 codeql query format -q --check-only
- name: compile queries - check-only
# run with --check-only if running in a PR (github.sha != main)
if : ${{ github.event_name == 'pull_request' }}
shell: bash
run: codeql query compile -q -j0 */ql/{src,examples} --keep-going --warnings=error --check-only --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" --compilation-cache-size=500 --ram=56000
run: codeql query compile -q -j0 ${{ matrix.language }}/ql/{src,examples} --keep-going --warnings=error --check-only --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" --compilation-cache-size=500 --ram=56000
- name: compile queries - full
# do full compile if running on main - this populates the cache
if : ${{ github.event_name != 'pull_request' }}
shell: bash
run: codeql query compile -q -j0 */ql/{src,examples} --keep-going --warnings=error --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" --compilation-cache-size=500 --ram=56000
run: codeql query compile -q -j0 ${{ matrix.language }}/ql/{src,examples} --keep-going --warnings=error --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" --compilation-cache-size=500 --ram=56000

View File

@@ -43,14 +43,14 @@ jobs:
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.300
dotnet-version: 10.0.100
- name: Extractor unit tests
run: |
dotnet tool restore
dotnet test -p:RuntimeFrameworkVersion=9.0.5 extractor/Semmle.Util.Tests
dotnet test -p:RuntimeFrameworkVersion=9.0.5 extractor/Semmle.Extraction.Tests
dotnet test -p:RuntimeFrameworkVersion=9.0.5 autobuilder/Semmle.Autobuild.CSharp.Tests
dotnet test -p:RuntimeFrameworkVersion=9.0.5 autobuilder/Semmle.Autobuild.Cpp.Tests
dotnet test -p:RuntimeFrameworkVersion=10.0.0 extractor/Semmle.Util.Tests
dotnet test -p:RuntimeFrameworkVersion=10.0.0 extractor/Semmle.Extraction.Tests
dotnet test -p:RuntimeFrameworkVersion=10.0.0 autobuilder/Semmle.Autobuild.CSharp.Tests
dotnet test -p:RuntimeFrameworkVersion=10.0.0 autobuilder/Semmle.Autobuild.Cpp.Tests
shell: bash
stubgentest:
runs-on: ubuntu-latest

View File

@@ -27,6 +27,7 @@ jobs:
uses: github/codeql-action/init@main
with:
languages: javascript # does not matter
tools: nightly
- uses: ./.github/actions/os-version
id: os_version
### Build the extractor ###

View File

@@ -30,6 +30,7 @@ jobs:
uses: github/codeql-action/init@main
with:
languages: javascript # does not matter
tools: nightly
- uses: ./.github/actions/os-version
id: os_version
- uses: actions/cache@v3
@@ -75,6 +76,7 @@ jobs:
uses: github/codeql-action/init@main
with:
languages: javascript # does not matter
tools: nightly
- uses: ./.github/actions/os-version
id: os_version
- uses: actions/cache@v3

View File

@@ -23,10 +23,10 @@ bazel_dep(name = "rules_shell", version = "0.5.0")
bazel_dep(name = "bazel_skylib", version = "1.8.1")
bazel_dep(name = "abseil-cpp", version = "20240116.1", repo_name = "absl")
bazel_dep(name = "nlohmann_json", version = "3.11.3", repo_name = "json")
bazel_dep(name = "fmt", version = "10.0.0")
bazel_dep(name = "rules_kotlin", version = "2.1.3-codeql.1")
bazel_dep(name = "fmt", version = "12.1.0-codeql.1")
bazel_dep(name = "rules_kotlin", version = "2.2.0-codeql.1")
bazel_dep(name = "gazelle", version = "0.40.0")
bazel_dep(name = "rules_dotnet", version = "0.19.2-codeql.1")
bazel_dep(name = "rules_dotnet", version = "0.21.5-codeql.1")
bazel_dep(name = "googletest", version = "1.14.0.bcr.1")
bazel_dep(name = "rules_rust", version = "0.66.0")
bazel_dep(name = "zstd", version = "1.5.5.bcr.1")
@@ -172,7 +172,7 @@ http_archive(
)
dotnet = use_extension("@rules_dotnet//dotnet:extensions.bzl", "dotnet")
dotnet.toolchain(dotnet_version = "9.0.300")
dotnet.toolchain(dotnet_version = "10.0.100")
use_repo(dotnet, "dotnet_toolchains")
register_toolchains("@dotnet_toolchains//:all")
@@ -221,10 +221,6 @@ use_repo(
kotlin_extractor_deps,
"codeql_kotlin_defaults",
"codeql_kotlin_embeddable",
"kotlin-compiler-1.6.0",
"kotlin-compiler-1.6.20",
"kotlin-compiler-1.7.0",
"kotlin-compiler-1.7.20",
"kotlin-compiler-1.8.0",
"kotlin-compiler-1.9.0-Beta",
"kotlin-compiler-1.9.20-Beta",
@@ -234,10 +230,7 @@ use_repo(
"kotlin-compiler-2.1.20-Beta1",
"kotlin-compiler-2.2.0-Beta1",
"kotlin-compiler-2.2.20-Beta2",
"kotlin-compiler-embeddable-1.6.0",
"kotlin-compiler-embeddable-1.6.20",
"kotlin-compiler-embeddable-1.7.0",
"kotlin-compiler-embeddable-1.7.20",
"kotlin-compiler-2.3.0",
"kotlin-compiler-embeddable-1.8.0",
"kotlin-compiler-embeddable-1.9.0-Beta",
"kotlin-compiler-embeddable-1.9.20-Beta",
@@ -247,10 +240,7 @@ use_repo(
"kotlin-compiler-embeddable-2.1.20-Beta1",
"kotlin-compiler-embeddable-2.2.0-Beta1",
"kotlin-compiler-embeddable-2.2.20-Beta2",
"kotlin-stdlib-1.6.0",
"kotlin-stdlib-1.6.20",
"kotlin-stdlib-1.7.0",
"kotlin-stdlib-1.7.20",
"kotlin-compiler-embeddable-2.3.0",
"kotlin-stdlib-1.8.0",
"kotlin-stdlib-1.9.0-Beta",
"kotlin-stdlib-1.9.20-Beta",
@@ -260,25 +250,26 @@ use_repo(
"kotlin-stdlib-2.1.20-Beta1",
"kotlin-stdlib-2.2.0-Beta1",
"kotlin-stdlib-2.2.20-Beta2",
"kotlin-stdlib-2.3.0",
)
go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
go_sdk.download(version = "1.25.0")
go_sdk.download(version = "1.26.0")
go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps")
go_deps.from_file(go_mod = "//go/extractor:go.mod")
use_repo(go_deps, "org_golang_x_mod", "org_golang_x_tools")
use_repo(go_deps, "com_github_stretchr_testify", "org_golang_x_mod", "org_golang_x_tools")
ripunzip_archive = use_repo_rule("//misc/ripunzip:ripunzip.bzl", "ripunzip_archive")
# go to https://github.com/GoogleChrome/ripunzip/releases to find latest version and corresponding sha256s
ripunzip_archive(
name = "ripunzip",
sha256_linux = "ee0e8a957687a5dc3a66b2a4b25883bf762df4c9c07f0651af527a32a405054b",
sha256_macos_arm = "8a88eea54eac232d162a72a42065e0429b82dbf4f05e9642915dff9d7a81f846",
sha256_macos_intel = "4457a18bfcc5feabe09f5ea3d1157128e07b4873392cb404a870e611924abf64",
sha256_windows = "66d0c1375301bf5ab815348048f43b110631d3fa7200acd50d50a8ed8655ca62",
version = "2.0.3",
sha256_linux = "71482d7a7e4ea9176d5596161c49250c34b136b157c45f632b1111323fbfc0de",
sha256_macos_arm = "604194ab13f0aba3972995d995f11002b8fc285c8170401fcd46655065df20c9",
sha256_macos_intel = "65367b94fd579d93d46f2d2595cc4c9a60cfcf497e3c824f9d1a7b80fa8bd38a",
sha256_windows = "ac3874075def2b9e5074a3b5945005ab082cc6e689e1de658da8965bc23e643e",
version = "2.0.4",
)
register_toolchains(

View File

@@ -0,0 +1,4 @@
---
lockVersion: 1.0.0
dependencies: {}
compiled: false

View File

@@ -0,0 +1,7 @@
name: codeql/actions-examples
groups:
- actions
- examples
dependencies:
codeql/actions-all: ${workspace}
warnOnImplicitThis: true

View File

@@ -0,0 +1,12 @@
/**
* @name Uses step with pinned SHA
* @description Finds 'uses' steps where the version is a pinned SHA.
* @id actions/examples/uses-pinned-sha
* @tags example
*/
import actions
from UsesStep uses
where uses.getVersion().regexpMatch("^[A-Fa-f0-9]{40}$")
select uses, "This 'uses' step has a pinned SHA version."

View File

@@ -1,3 +1,35 @@
## 0.4.28
No user-facing changes.
## 0.4.27
### Bug Fixes
* Fixed a crash when analysing a `${{ ... }}` expression over around 300 characters in length.
## 0.4.26
### Major Analysis Improvements
* The query `actions/code-injection/medium` has been updated to include results which were incorrectly excluded while filtering out results that are reported by `actions/code-injection/critical`.
## 0.4.25
No user-facing changes.
## 0.4.24
No user-facing changes.
## 0.4.23
No user-facing changes.
## 0.4.22
No user-facing changes.
## 0.4.21
No user-facing changes.

View File

@@ -0,0 +1,3 @@
## 0.4.22
No user-facing changes.

View File

@@ -0,0 +1,3 @@
## 0.4.23
No user-facing changes.

View File

@@ -0,0 +1,3 @@
## 0.4.24
No user-facing changes.

View File

@@ -0,0 +1,3 @@
## 0.4.25
No user-facing changes.

View File

@@ -0,0 +1,5 @@
## 0.4.26
### Major Analysis Improvements
* The query `actions/code-injection/medium` has been updated to include results which were incorrectly excluded while filtering out results that are reported by `actions/code-injection/critical`.

View File

@@ -0,0 +1,5 @@
## 0.4.27
### Bug Fixes
* Fixed a crash when analysing a `${{ ... }}` expression over around 300 characters in length.

View File

@@ -0,0 +1,3 @@
## 0.4.28
No user-facing changes.

View File

@@ -1,2 +1,2 @@
---
lastReleaseVersion: 0.4.21
lastReleaseVersion: 0.4.28

View File

@@ -27,8 +27,8 @@ string getADelimitedExpression(YamlString s, int offset) {
// not just the last (greedy match) or first (reluctant match).
result =
s.getValue()
.regexpFind("\\$\\{\\{(?:[^}]|}(?!}))*\\}\\}", _, offset)
.regexpCapture("(\\$\\{\\{(?:[^}]|}(?!}))*\\}\\})", 1)
.regexpFind("\\$\\{\\{(?:[^}]|}(?!}))*+\\}\\}", _, offset)
.regexpCapture("(\\$\\{\\{(?:[^}]|}(?!}))*+\\}\\})", 1)
.trim()
}

View File

@@ -19,12 +19,7 @@ class CodeInjectionSink extends DataFlow::Node {
Event getRelevantCriticalEventForSink(DataFlow::Node sink) {
inPrivilegedContext(sink.asExpr(), result) and
not exists(ControlCheck check | check.protects(sink.asExpr(), result, "code-injection")) and
// exclude cases where the sink is a JS script and the expression uses toJson
not exists(UsesStep script |
script.getCallee() = "actions/github-script" and
script.getArgumentExpr("script") = sink.asExpr() and
exists(getAToJsonReferenceExpression(sink.asExpr().(Expression).getExpression(), _))
)
not isGithubScriptUsingToJson(sink.asExpr())
}
/**
@@ -91,3 +86,38 @@ private module CodeInjectionConfig implements DataFlow::ConfigSig {
/** Tracks flow of unsafe user input that is used to construct and evaluate a code script. */
module CodeInjectionFlow = TaintTracking::Global<CodeInjectionConfig>;
/**
* Holds if there is a code injection flow from `source` to `sink` with
* critical severity, linked by `event`.
*/
predicate criticalSeverityCodeInjection(
CodeInjectionFlow::PathNode source, CodeInjectionFlow::PathNode sink, Event event
) {
CodeInjectionFlow::flowPath(source, sink) and
event = getRelevantCriticalEventForSink(sink.getNode()) and
source.getNode().(RemoteFlowSource).getEventName() = event.getName()
}
/**
* Holds if there is a code injection flow from `source` to `sink` with medium severity.
*/
predicate mediumSeverityCodeInjection(
CodeInjectionFlow::PathNode source, CodeInjectionFlow::PathNode sink
) {
CodeInjectionFlow::flowPath(source, sink) and
not criticalSeverityCodeInjection(source, sink, _) and
not isGithubScriptUsingToJson(sink.getNode().asExpr())
}
/**
* Holds if `expr` is the `script` input to `actions/github-script` and it uses
* `toJson`.
*/
predicate isGithubScriptUsingToJson(Expression expr) {
exists(UsesStep script |
script.getCallee() = "actions/github-script" and
script.getArgumentExpr("script") = expr and
exists(getAToJsonReferenceExpression(expr.getExpression(), _))
)
}

View File

@@ -1,5 +1,5 @@
name: codeql/actions-all
version: 0.4.22-dev
version: 0.4.28
library: true
warnOnImplicitThis: true
dependencies:

View File

@@ -1,3 +1,31 @@
## 0.6.20
No user-facing changes.
## 0.6.19
No user-facing changes.
## 0.6.18
No user-facing changes.
## 0.6.17
No user-facing changes.
## 0.6.16
No user-facing changes.
## 0.6.15
No user-facing changes.
## 0.6.14
No user-facing changes.
## 0.6.13
No user-facing changes.

View File

@@ -20,10 +20,7 @@ import CodeInjectionFlow::PathGraph
import codeql.actions.security.ControlChecks
from CodeInjectionFlow::PathNode source, CodeInjectionFlow::PathNode sink, Event event
where
CodeInjectionFlow::flowPath(source, sink) and
event = getRelevantCriticalEventForSink(sink.getNode()) and
source.getNode().(RemoteFlowSource).getEventName() = event.getName()
where criticalSeverityCodeInjection(source, sink, event)
select sink.getNode(), source, sink,
"Potential code injection in $@, which may be controlled by an external user ($@).", sink,
sink.getNode().asExpr().(Expression).getRawExpression(), event, event.getName()

View File

@@ -19,15 +19,7 @@ import codeql.actions.security.CodeInjectionQuery
import CodeInjectionFlow::PathGraph
from CodeInjectionFlow::PathNode source, CodeInjectionFlow::PathNode sink
where
CodeInjectionFlow::flowPath(source, sink) and
inNonPrivilegedContext(sink.getNode().asExpr()) and
// exclude cases where the sink is a JS script and the expression uses toJson
not exists(UsesStep script |
script.getCallee() = "actions/github-script" and
script.getArgumentExpr("script") = sink.getNode().asExpr() and
exists(getAToJsonReferenceExpression(sink.getNode().asExpr().(Expression).getExpression(), _))
)
where mediumSeverityCodeInjection(source, sink)
select sink.getNode(), source, sink,
"Potential code injection in $@, which may be controlled by an external user.", sink,
sink.getNode().asExpr().(Expression).getRawExpression()

View File

@@ -2,6 +2,8 @@
If a GitHub Actions job or workflow has no explicit permissions set, then the repository permissions are used. Repositories created under organizations inherit the organization permissions. The organizations or repositories created before February 2023 have the default permissions set to read-write. Often these permissions do not adhere to the principle of least privilege and can be reduced to read-only, leaving the `write` permission only to a specific types as `issues: write` or `pull-requests: write`.
Note that this query cannot check whether the organization or repository token settings are set to read-only. However, even if they are, it is recommended to define explicit permissions (`contents: read` and `packages: read` are equivalent to the read-only default) so that (a) the actual needs of the workflow are documented, and (b) the permissions will remain restricted if the default is subsequently changed, or the workflow is copied to a different repository or organization.
## Recommendation
Add the `permissions` key to the job or the root of workflow (in this case it is applied to all jobs in the workflow that do not have their own `permissions` key) and assign the least privileges required to complete the task.

View File

@@ -0,0 +1,3 @@
## 0.6.14
No user-facing changes.

View File

@@ -0,0 +1,3 @@
## 0.6.15
No user-facing changes.

View File

@@ -0,0 +1,3 @@
## 0.6.16
No user-facing changes.

View File

@@ -0,0 +1,3 @@
## 0.6.17
No user-facing changes.

View File

@@ -0,0 +1,3 @@
## 0.6.18
No user-facing changes.

View File

@@ -0,0 +1,3 @@
## 0.6.19
No user-facing changes.

View File

@@ -0,0 +1,3 @@
## 0.6.20
No user-facing changes.

View File

@@ -1,2 +1,2 @@
---
lastReleaseVersion: 0.6.13
lastReleaseVersion: 0.6.20

View File

@@ -1,5 +1,5 @@
/**
* @name Artifact Poisoning (Path Traversal).
* @name Artifact Poisoning (Path Traversal)
* @description An attacker may be able to poison the workflow's artifacts and influence on consequent steps.
* @kind problem
* @problem.severity error

View File

@@ -1,5 +1,5 @@
name: codeql/actions-queries
version: 0.6.14-dev
version: 0.6.20
library: false
warnOnImplicitThis: true
groups: [actions, queries]

View File

@@ -0,0 +1,5 @@
import codeql.actions.ast.internal.Ast
int getAnExpressionLength() { result = any(ExpressionImpl e).toString().length() }
select max(getAnExpressionLength())

View File

@@ -0,0 +1,18 @@
on:
push:
workflow_dispatch:
jobs:
echo-chamber:
runs-on: ubuntu-latest
steps:
- run: echo '${{ github.event.commits[11].message }}'
- run: echo '${{ github.event.commits[11].author.email }}'
- run: echo '${{ github.event.commits[11].author.name }}'
- run: echo '${{ github.event.head_commit.message }}'
- run: echo '${{ github.event.head_commit.author.email }}'
- run: echo '${{ github.event.head_commit.author.name }}'
- run: echo '${{ github.event.head_commit.committer.email }}'
- run: echo '${{ github.event.head_commit.committer.name }}'
- run: echo '${{ github.event.commits[11].committer.email }}'
- run: echo '${{ github.event.commits[11].committer.name }}'

View File

@@ -435,6 +435,16 @@ nodes
| .github/workflows/push.yml:14:19:14:64 | github.event.head_commit.committer.name | semmle.label | github.event.head_commit.committer.name |
| .github/workflows/push.yml:15:19:15:65 | github.event.commits[11].committer.email | semmle.label | github.event.commits[11].committer.email |
| .github/workflows/push.yml:16:19:16:64 | github.event.commits[11].committer.name | semmle.label | github.event.commits[11].committer.name |
| .github/workflows/push_and_workflow_dispatch.yml:9:19:9:57 | github.event.commits[11].message | semmle.label | github.event.commits[11].message |
| .github/workflows/push_and_workflow_dispatch.yml:10:19:10:62 | github.event.commits[11].author.email | semmle.label | github.event.commits[11].author.email |
| .github/workflows/push_and_workflow_dispatch.yml:11:19:11:61 | github.event.commits[11].author.name | semmle.label | github.event.commits[11].author.name |
| .github/workflows/push_and_workflow_dispatch.yml:12:19:12:57 | github.event.head_commit.message | semmle.label | github.event.head_commit.message |
| .github/workflows/push_and_workflow_dispatch.yml:13:19:13:62 | github.event.head_commit.author.email | semmle.label | github.event.head_commit.author.email |
| .github/workflows/push_and_workflow_dispatch.yml:14:19:14:61 | github.event.head_commit.author.name | semmle.label | github.event.head_commit.author.name |
| .github/workflows/push_and_workflow_dispatch.yml:15:19:15:65 | github.event.head_commit.committer.email | semmle.label | github.event.head_commit.committer.email |
| .github/workflows/push_and_workflow_dispatch.yml:16:19:16:64 | github.event.head_commit.committer.name | semmle.label | github.event.head_commit.committer.name |
| .github/workflows/push_and_workflow_dispatch.yml:17:19:17:65 | github.event.commits[11].committer.email | semmle.label | github.event.commits[11].committer.email |
| .github/workflows/push_and_workflow_dispatch.yml:18:19:18:64 | github.event.commits[11].committer.name | semmle.label | github.event.commits[11].committer.name |
| .github/workflows/reusable-workflow-1.yml:6:7:6:11 | input taint | semmle.label | input taint |
| .github/workflows/reusable-workflow-1.yml:36:21:36:39 | inputs.taint | semmle.label | inputs.taint |
| .github/workflows/reusable-workflow-1.yml:44:19:44:56 | github.event.pull_request.title | semmle.label | github.event.pull_request.title |

View File

@@ -435,6 +435,16 @@ nodes
| .github/workflows/push.yml:14:19:14:64 | github.event.head_commit.committer.name | semmle.label | github.event.head_commit.committer.name |
| .github/workflows/push.yml:15:19:15:65 | github.event.commits[11].committer.email | semmle.label | github.event.commits[11].committer.email |
| .github/workflows/push.yml:16:19:16:64 | github.event.commits[11].committer.name | semmle.label | github.event.commits[11].committer.name |
| .github/workflows/push_and_workflow_dispatch.yml:9:19:9:57 | github.event.commits[11].message | semmle.label | github.event.commits[11].message |
| .github/workflows/push_and_workflow_dispatch.yml:10:19:10:62 | github.event.commits[11].author.email | semmle.label | github.event.commits[11].author.email |
| .github/workflows/push_and_workflow_dispatch.yml:11:19:11:61 | github.event.commits[11].author.name | semmle.label | github.event.commits[11].author.name |
| .github/workflows/push_and_workflow_dispatch.yml:12:19:12:57 | github.event.head_commit.message | semmle.label | github.event.head_commit.message |
| .github/workflows/push_and_workflow_dispatch.yml:13:19:13:62 | github.event.head_commit.author.email | semmle.label | github.event.head_commit.author.email |
| .github/workflows/push_and_workflow_dispatch.yml:14:19:14:61 | github.event.head_commit.author.name | semmle.label | github.event.head_commit.author.name |
| .github/workflows/push_and_workflow_dispatch.yml:15:19:15:65 | github.event.head_commit.committer.email | semmle.label | github.event.head_commit.committer.email |
| .github/workflows/push_and_workflow_dispatch.yml:16:19:16:64 | github.event.head_commit.committer.name | semmle.label | github.event.head_commit.committer.name |
| .github/workflows/push_and_workflow_dispatch.yml:17:19:17:65 | github.event.commits[11].committer.email | semmle.label | github.event.commits[11].committer.email |
| .github/workflows/push_and_workflow_dispatch.yml:18:19:18:64 | github.event.commits[11].committer.name | semmle.label | github.event.commits[11].committer.name |
| .github/workflows/reusable-workflow-1.yml:6:7:6:11 | input taint | semmle.label | input taint |
| .github/workflows/reusable-workflow-1.yml:36:21:36:39 | inputs.taint | semmle.label | inputs.taint |
| .github/workflows/reusable-workflow-1.yml:44:19:44:56 | github.event.pull_request.title | semmle.label | github.event.pull_request.title |
@@ -719,6 +729,16 @@ subpaths
| .github/workflows/push.yml:14:19:14:64 | github.event.head_commit.committer.name | .github/workflows/push.yml:14:19:14:64 | github.event.head_commit.committer.name | .github/workflows/push.yml:14:19:14:64 | github.event.head_commit.committer.name | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/push.yml:14:19:14:64 | github.event.head_commit.committer.name | ${{ github.event.head_commit.committer.name }} |
| .github/workflows/push.yml:15:19:15:65 | github.event.commits[11].committer.email | .github/workflows/push.yml:15:19:15:65 | github.event.commits[11].committer.email | .github/workflows/push.yml:15:19:15:65 | github.event.commits[11].committer.email | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/push.yml:15:19:15:65 | github.event.commits[11].committer.email | ${{ github.event.commits[11].committer.email }} |
| .github/workflows/push.yml:16:19:16:64 | github.event.commits[11].committer.name | .github/workflows/push.yml:16:19:16:64 | github.event.commits[11].committer.name | .github/workflows/push.yml:16:19:16:64 | github.event.commits[11].committer.name | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/push.yml:16:19:16:64 | github.event.commits[11].committer.name | ${{ github.event.commits[11].committer.name }} |
| .github/workflows/push_and_workflow_dispatch.yml:9:19:9:57 | github.event.commits[11].message | .github/workflows/push_and_workflow_dispatch.yml:9:19:9:57 | github.event.commits[11].message | .github/workflows/push_and_workflow_dispatch.yml:9:19:9:57 | github.event.commits[11].message | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/push_and_workflow_dispatch.yml:9:19:9:57 | github.event.commits[11].message | ${{ github.event.commits[11].message }} |
| .github/workflows/push_and_workflow_dispatch.yml:10:19:10:62 | github.event.commits[11].author.email | .github/workflows/push_and_workflow_dispatch.yml:10:19:10:62 | github.event.commits[11].author.email | .github/workflows/push_and_workflow_dispatch.yml:10:19:10:62 | github.event.commits[11].author.email | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/push_and_workflow_dispatch.yml:10:19:10:62 | github.event.commits[11].author.email | ${{ github.event.commits[11].author.email }} |
| .github/workflows/push_and_workflow_dispatch.yml:11:19:11:61 | github.event.commits[11].author.name | .github/workflows/push_and_workflow_dispatch.yml:11:19:11:61 | github.event.commits[11].author.name | .github/workflows/push_and_workflow_dispatch.yml:11:19:11:61 | github.event.commits[11].author.name | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/push_and_workflow_dispatch.yml:11:19:11:61 | github.event.commits[11].author.name | ${{ github.event.commits[11].author.name }} |
| .github/workflows/push_and_workflow_dispatch.yml:12:19:12:57 | github.event.head_commit.message | .github/workflows/push_and_workflow_dispatch.yml:12:19:12:57 | github.event.head_commit.message | .github/workflows/push_and_workflow_dispatch.yml:12:19:12:57 | github.event.head_commit.message | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/push_and_workflow_dispatch.yml:12:19:12:57 | github.event.head_commit.message | ${{ github.event.head_commit.message }} |
| .github/workflows/push_and_workflow_dispatch.yml:13:19:13:62 | github.event.head_commit.author.email | .github/workflows/push_and_workflow_dispatch.yml:13:19:13:62 | github.event.head_commit.author.email | .github/workflows/push_and_workflow_dispatch.yml:13:19:13:62 | github.event.head_commit.author.email | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/push_and_workflow_dispatch.yml:13:19:13:62 | github.event.head_commit.author.email | ${{ github.event.head_commit.author.email }} |
| .github/workflows/push_and_workflow_dispatch.yml:14:19:14:61 | github.event.head_commit.author.name | .github/workflows/push_and_workflow_dispatch.yml:14:19:14:61 | github.event.head_commit.author.name | .github/workflows/push_and_workflow_dispatch.yml:14:19:14:61 | github.event.head_commit.author.name | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/push_and_workflow_dispatch.yml:14:19:14:61 | github.event.head_commit.author.name | ${{ github.event.head_commit.author.name }} |
| .github/workflows/push_and_workflow_dispatch.yml:15:19:15:65 | github.event.head_commit.committer.email | .github/workflows/push_and_workflow_dispatch.yml:15:19:15:65 | github.event.head_commit.committer.email | .github/workflows/push_and_workflow_dispatch.yml:15:19:15:65 | github.event.head_commit.committer.email | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/push_and_workflow_dispatch.yml:15:19:15:65 | github.event.head_commit.committer.email | ${{ github.event.head_commit.committer.email }} |
| .github/workflows/push_and_workflow_dispatch.yml:16:19:16:64 | github.event.head_commit.committer.name | .github/workflows/push_and_workflow_dispatch.yml:16:19:16:64 | github.event.head_commit.committer.name | .github/workflows/push_and_workflow_dispatch.yml:16:19:16:64 | github.event.head_commit.committer.name | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/push_and_workflow_dispatch.yml:16:19:16:64 | github.event.head_commit.committer.name | ${{ github.event.head_commit.committer.name }} |
| .github/workflows/push_and_workflow_dispatch.yml:17:19:17:65 | github.event.commits[11].committer.email | .github/workflows/push_and_workflow_dispatch.yml:17:19:17:65 | github.event.commits[11].committer.email | .github/workflows/push_and_workflow_dispatch.yml:17:19:17:65 | github.event.commits[11].committer.email | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/push_and_workflow_dispatch.yml:17:19:17:65 | github.event.commits[11].committer.email | ${{ github.event.commits[11].committer.email }} |
| .github/workflows/push_and_workflow_dispatch.yml:18:19:18:64 | github.event.commits[11].committer.name | .github/workflows/push_and_workflow_dispatch.yml:18:19:18:64 | github.event.commits[11].committer.name | .github/workflows/push_and_workflow_dispatch.yml:18:19:18:64 | github.event.commits[11].committer.name | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/push_and_workflow_dispatch.yml:18:19:18:64 | github.event.commits[11].committer.name | ${{ github.event.commits[11].committer.name }} |
| .github/workflows/reusable-workflow-1.yml:36:21:36:39 | inputs.taint | .github/workflows/reusable-workflow-caller-1.yml:11:15:11:52 | github.event.pull_request.title | .github/workflows/reusable-workflow-1.yml:36:21:36:39 | inputs.taint | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/reusable-workflow-1.yml:36:21:36:39 | inputs.taint | ${{ inputs.taint }} |
| .github/workflows/reusable-workflow-1.yml:53:26:53:39 | env.log | .github/workflows/reusable-workflow-1.yml:44:19:44:56 | github.event.pull_request.title | .github/workflows/reusable-workflow-1.yml:53:26:53:39 | env.log | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/reusable-workflow-1.yml:53:26:53:39 | env.log | ${{ env.log }} |
| .github/workflows/reusable-workflow-1.yml:66:34:66:52 | env.prev_log | .github/workflows/reusable-workflow-1.yml:45:24:45:61 | github.event.changes.title.from | .github/workflows/reusable-workflow-1.yml:66:34:66:52 | env.prev_log | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/reusable-workflow-1.yml:66:34:66:52 | env.prev_log | ${{ env.prev_log }} |
@@ -729,6 +749,10 @@ subpaths
| .github/workflows/test10.yml:333:34:333:77 | github.event.workflow_run.head_branch | .github/workflows/test10.yml:333:34:333:77 | github.event.workflow_run.head_branch | .github/workflows/test10.yml:333:34:333:77 | github.event.workflow_run.head_branch | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/test10.yml:333:34:333:77 | github.event.workflow_run.head_branch | ${{ github.event.workflow_run.head_branch }} |
| .github/workflows/test10.yml:423:34:423:77 | github.event.workflow_run.head_branch | .github/workflows/test10.yml:423:34:423:77 | github.event.workflow_run.head_branch | .github/workflows/test10.yml:423:34:423:77 | github.event.workflow_run.head_branch | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/test10.yml:423:34:423:77 | github.event.workflow_run.head_branch | ${{ github.event.workflow_run.head_branch }} |
| .github/workflows/test10.yml:518:34:518:77 | github.event.workflow_run.head_branch | .github/workflows/test10.yml:518:34:518:77 | github.event.workflow_run.head_branch | .github/workflows/test10.yml:518:34:518:77 | github.event.workflow_run.head_branch | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/test10.yml:518:34:518:77 | github.event.workflow_run.head_branch | ${{ github.event.workflow_run.head_branch }} |
| .github/workflows/test20.yml:15:54:15:94 | github.event.pull_request.head.ref | .github/workflows/test20.yml:15:54:15:94 | github.event.pull_request.head.ref | .github/workflows/test20.yml:15:54:15:94 | github.event.pull_request.head.ref | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/test20.yml:15:54:15:94 | github.event.pull_request.head.ref | ${{ github.event.pull_request.head.ref }} |
| .github/workflows/test21.yml:22:35:22:73 | github.event.head_commit.message | .github/workflows/test21.yml:22:35:22:73 | github.event.head_commit.message | .github/workflows/test21.yml:22:35:22:73 | github.event.head_commit.message | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/test21.yml:22:35:22:73 | github.event.head_commit.message | ${{ github.event.head_commit.message }} |
| .github/workflows/test21.yml:23:36:23:74 | github.event.head_commit.message | .github/workflows/test21.yml:23:36:23:74 | github.event.head_commit.message | .github/workflows/test21.yml:23:36:23:74 | github.event.head_commit.message | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/test21.yml:23:36:23:74 | github.event.head_commit.message | ${{ github.event.head_commit.message }} |
| .github/workflows/test21.yml:24:50:24:88 | github.event.head_commit.message | .github/workflows/test21.yml:24:50:24:88 | github.event.head_commit.message | .github/workflows/test21.yml:24:50:24:88 | github.event.head_commit.message | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/test21.yml:24:50:24:88 | github.event.head_commit.message | ${{ github.event.head_commit.message }} |
| .github/workflows/workflow_run_branches1.yml:13:20:13:63 | github.event.workflow_run.head_branch | .github/workflows/workflow_run_branches1.yml:13:20:13:63 | github.event.workflow_run.head_branch | .github/workflows/workflow_run_branches1.yml:13:20:13:63 | github.event.workflow_run.head_branch | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/workflow_run_branches1.yml:13:20:13:63 | github.event.workflow_run.head_branch | ${{ github.event.workflow_run.head_branch }} |
| .github/workflows/workflow_run_branches2.yml:13:20:13:63 | github.event.workflow_run.head_branch | .github/workflows/workflow_run_branches2.yml:13:20:13:63 | github.event.workflow_run.head_branch | .github/workflows/workflow_run_branches2.yml:13:20:13:63 | github.event.workflow_run.head_branch | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/workflow_run_branches2.yml:13:20:13:63 | github.event.workflow_run.head_branch | ${{ github.event.workflow_run.head_branch }} |
| .github/workflows/workflow_run_branches4.yml:13:20:13:63 | github.event.workflow_run.head_branch | .github/workflows/workflow_run_branches4.yml:13:20:13:63 | github.event.workflow_run.head_branch | .github/workflows/workflow_run_branches4.yml:13:20:13:63 | github.event.workflow_run.head_branch | Potential code injection in $@, which may be controlled by an external user. | .github/workflows/workflow_run_branches4.yml:13:20:13:63 | github.event.workflow_run.head_branch | ${{ github.event.workflow_run.head_branch }} |

View File

@@ -276,5 +276,13 @@
"Python model summaries test extension": [
"python/ql/test/library-tests/dataflow/model-summaries/InlineTaintTest.ext.yml",
"python/ql/test/library-tests/dataflow/model-summaries/NormalDataflowTest.ext.yml"
],
"XML discard predicates": [
"javascript/ql/lib/semmle/javascript/internal/OverlayXml.qll",
"java/ql/lib/semmle/code/java/internal/OverlayXml.qll",
"go/ql/lib/semmle/go/internal/OverlayXml.qll",
"python/ql/lib/semmle/python/internal/OverlayXml.qll",
"csharp/ql/lib/semmle/code/csharp/internal/OverlayXml.qll",
"cpp/ql/lib/semmle/code/cpp/internal/OverlayXml.qll"
]
}

View File

@@ -0,0 +1,17 @@
class Expr extends @expr {
string toString() { none() }
}
class Location extends @location_default {
string toString() { none() }
}
predicate isExprWithNewBuiltin(Expr expr) {
exists(int kind | exprs(expr, kind, _) | 394 <= kind and kind <= 396)
}
from Expr expr, int kind, int kind_new, Location location
where
exprs(expr, kind, location) and
if isExprWithNewBuiltin(expr) then kind_new = 1 else kind_new = kind
select expr, kind_new, location

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,4 @@
description: Add new builtin operations and this parameter access table
compatibility: partial
exprs.rel: run exprs.qlo
param_ref_to_this.rel: delete

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,5 @@
description: Add trap_filename, source_file_uses_trap and in_trap relations
compatibility: full
trap_filename.rel: delete
source_file_uses_trap.rel: delete
in_trap.rel: delete

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
description: Sections for databaseMetadata and overlayChangedFiles
compatibility: full

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,13 @@
class PreprocessorDirective extends @preprocdirect {
string toString() { none() }
}
class Location extends @location_default {
string toString() { none() }
}
from PreprocessorDirective ppd, int kind, int kind_new, Location l
where
preprocdirects(ppd, kind, l) and
if kind = 17 then kind_new = /* ppd_warning */ 18 else kind_new = kind
select ppd, kind_new, l

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,4 @@
description: Support embed preprocessor directive
compatibility: partial
embeds.rel: delete
preprocdirects.rel: run preprocdirects.qlo

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
description: Remove _Decimal{32,64,128} types
compatibility: full

View File

@@ -1,3 +1,69 @@
## 7.1.1
### Minor Analysis Improvements
* Added remote flow source models for the `winhttp.h` windows header and the Azure SDK core library for C/C++.
## 7.1.0
### New Features
* Added a subclass `Embed` of `PreprocessorDirective` for C23 and C++26 `#embed` preprocessor directives.
* Added modules `DataFlow::ParameterizedBarrierGuard` and `DataFlow::ParameterizedInstructionBarrierGuard`. These modules provide the same features as `DataFlow::BarrierGuard` and `DataFlow::InstructionBarrierGuard`, but allow for an additional parameter to support properly using them in dataflow configurations that uses flow states.
### Minor Analysis Improvements
* The `Buffer.qll` library will no longer report incorrect buffer sizes on certain malformed databases. As a result, the queries `cpp/static-buffer-overflow`, `cpp/overflow-buffer`, `cpp/badly-bounded-write`, `cpp/overrunning-write`, `cpp/overrunning-write-with-float`, and `cpp/very-likely-overrunning-write` will report fewer false positives on such databases.
* Added `taint` summary models and `sql-injection` barrier models for the MySQL `mysql_real_escape_string` and `mysql_real_escape_string_quote` escaping functions.
* The predicate `SummarizedCallable.propagatesFlow` has been extended with the columns `Provenance p` and `boolean isExact`, and as a consequence the predicates `SummarizedCallable.hasProvenance` and `SummarizedCallable.hasExactModel` have been removed.
### Bug Fixes
* Fixed a bug in the `GuardCondition` library which sometimes prevented binary logical operators from being recognized as guard conditions. As a result, queries using `GuardCondition` may see improved results.
* Fixed a bug which caused `Node.asDefinition()` to not have a result for certain assignments.
## 7.0.0
### Breaking Changes
* The `_Decimal32`, `_Decimal64`, and `_Decimal128` types are no longer exposed as builtin types. Support for these gcc-specific types was incomplete, and are generally not used in C/C++ codebases.
### Deprecated APIs
* The `OverloadedArrayExpr::getArrayOffset/0` predicate has been deprecated. Use `OverloadedArrayExpr::getArrayOffset/1` and `OverloadedArrayExpr::getAnArrayOffset` instead.
### New Features
* Added subclasses of `BuiltInOperations` for the `__is_bitwise_cloneable`, `__is_invocable`, and `__is_nothrow_invocable` builtin operations.
* Added a `isThisAccess` predicate to `ParamAccessForType` that holds when the access is to the implicit object parameter.
* Predicates `getArrayOffset/1` and `getAnArrayOffset` have been added to the `OverloadedArrayExpr` class to support C++23 multidimensional subscript operators.
### Minor Analysis Improvements
* Some constants will now be represented by their unfolded expression trees. The `isConstant` predicate of `Expr` will no longer yield a result for those constants.
### Bug Fixes
* Fixed a bug in the `DataFlow::BarrierGuard<...>::getABarrierNode` predicate which caused the predicate to return `DataFlow::Node`s with incorrect indirections. If you use `getABarrierNode` to implement barriers in a dataflow/taint-tracking query it may result in more query results. You can use `DataFlow::BarrierGuard<...>::getAnIndirectBarrierNode` to remove those query results.
## 6.1.4
No user-facing changes.
## 6.1.3
No user-facing changes.
## 6.1.2
No user-facing changes.
## 6.1.1
### Minor Analysis Improvements
* The class `DataFlow::FieldContent` now covers both `union` and `struct`/`class` types. A new predicate `FieldContent.getAField` has been added to access the union members associated with the `FieldContent`. The old `FieldContent` has been renamed to `NonUnionFieldContent`.
## 6.1.0
### New Features

View File

@@ -1,4 +1,5 @@
---
category: minorAnalysis
---
* The class `DataFlow::FieldContent` now covers both `union` and `struct`/`class` types. A new predicate `FieldContent.getAField` has been added to access the union members associated with the `FieldContent`. The old `FieldContent` has been renamed to `NonUnionFieldContent`.
## 6.1.1
### Minor Analysis Improvements
* The class `DataFlow::FieldContent` now covers both `union` and `struct`/`class` types. A new predicate `FieldContent.getAField` has been added to access the union members associated with the `FieldContent`. The old `FieldContent` has been renamed to `NonUnionFieldContent`.

View File

@@ -0,0 +1,3 @@
## 6.1.2
No user-facing changes.

View File

@@ -0,0 +1,3 @@
## 6.1.3
No user-facing changes.

View File

@@ -0,0 +1,3 @@
## 6.1.4
No user-facing changes.

View File

@@ -0,0 +1,23 @@
## 7.0.0
### Breaking Changes
* The `_Decimal32`, `_Decimal64`, and `_Decimal128` types are no longer exposed as builtin types. Support for these gcc-specific types was incomplete, and are generally not used in C/C++ codebases.
### Deprecated APIs
* The `OverloadedArrayExpr::getArrayOffset/0` predicate has been deprecated. Use `OverloadedArrayExpr::getArrayOffset/1` and `OverloadedArrayExpr::getAnArrayOffset` instead.
### New Features
* Added subclasses of `BuiltInOperations` for the `__is_bitwise_cloneable`, `__is_invocable`, and `__is_nothrow_invocable` builtin operations.
* Added a `isThisAccess` predicate to `ParamAccessForType` that holds when the access is to the implicit object parameter.
* Predicates `getArrayOffset/1` and `getAnArrayOffset` have been added to the `OverloadedArrayExpr` class to support C++23 multidimensional subscript operators.
### Minor Analysis Improvements
* Some constants will now be represented by their unfolded expression trees. The `isConstant` predicate of `Expr` will no longer yield a result for those constants.
### Bug Fixes
* Fixed a bug in the `DataFlow::BarrierGuard<...>::getABarrierNode` predicate which caused the predicate to return `DataFlow::Node`s with incorrect indirections. If you use `getABarrierNode` to implement barriers in a dataflow/taint-tracking query it may result in more query results. You can use `DataFlow::BarrierGuard<...>::getAnIndirectBarrierNode` to remove those query results.

View File

@@ -0,0 +1,17 @@
## 7.1.0
### New Features
* Added a subclass `Embed` of `PreprocessorDirective` for C23 and C++26 `#embed` preprocessor directives.
* Added modules `DataFlow::ParameterizedBarrierGuard` and `DataFlow::ParameterizedInstructionBarrierGuard`. These modules provide the same features as `DataFlow::BarrierGuard` and `DataFlow::InstructionBarrierGuard`, but allow for an additional parameter to support properly using them in dataflow configurations that uses flow states.
### Minor Analysis Improvements
* The `Buffer.qll` library will no longer report incorrect buffer sizes on certain malformed databases. As a result, the queries `cpp/static-buffer-overflow`, `cpp/overflow-buffer`, `cpp/badly-bounded-write`, `cpp/overrunning-write`, `cpp/overrunning-write-with-float`, and `cpp/very-likely-overrunning-write` will report fewer false positives on such databases.
* Added `taint` summary models and `sql-injection` barrier models for the MySQL `mysql_real_escape_string` and `mysql_real_escape_string_quote` escaping functions.
* The predicate `SummarizedCallable.propagatesFlow` has been extended with the columns `Provenance p` and `boolean isExact`, and as a consequence the predicates `SummarizedCallable.hasProvenance` and `SummarizedCallable.hasExactModel` have been removed.
### Bug Fixes
* Fixed a bug in the `GuardCondition` library which sometimes prevented binary logical operators from being recognized as guard conditions. As a result, queries using `GuardCondition` may see improved results.
* Fixed a bug which caused `Node.asDefinition()` to not have a result for certain assignments.

View File

@@ -0,0 +1,5 @@
## 7.1.1
### Minor Analysis Improvements
* Added remote flow source models for the `winhttp.h` windows header and the Azure SDK core library for C/C++.

View File

@@ -1,2 +1,2 @@
---
lastReleaseVersion: 6.1.0
lastReleaseVersion: 7.1.1

View File

@@ -74,3 +74,4 @@ import semmle.code.cpp.Preprocessor
import semmle.code.cpp.Iteration
import semmle.code.cpp.NameQualifiers
import DefaultOptions
private import semmle.code.cpp.internal.Overlay

View File

@@ -0,0 +1,14 @@
# partial model of the MySQL api
extensions:
- addsTo:
pack: codeql/cpp-all
extensible: summaryModel
data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance
- ["", "", False, "mysql_real_escape_string", "", "", "Argument[*2]", "Argument[*1]", "taint", "manual"]
- ["", "", False, "mysql_real_escape_string_quote", "", "", "Argument[*2]", "Argument[*1]", "taint", "manual"]
- addsTo:
pack: codeql/cpp-all
extensible: barrierModel
data: # namespace, type, subtypes, name, signature, ext, output, kind, provenance
- ["", "", False, "mysql_real_escape_string", "", "", "Argument[*1]", "sql-injection", "manual"]
- ["", "", False, "mysql_real_escape_string_quote", "", "", "Argument[*1]", "sql-injection", "manual"]

View File

@@ -24,6 +24,13 @@ extensions:
- ["", "", False, "MapViewOfFileNuma2", "", "", "ReturnValue[*]", "local", "manual"]
# ntifs.h
- ["", "", False, "NtReadFile", "", "", "Argument[*5]", "local", "manual"]
# winhttp.h
- ["", "", False, "WinHttpReadData", "", "", "Argument[*1]", "remote", "manual"]
- ["", "", False, "WinHttpReadDataEx", "", "", "Argument[*1]", "remote", "manual"]
- ["", "", False, "WinHttpQueryHeaders", "", "", "Argument[*3]", "remote", "manual"]
- ["", "", False, "WinHttpQueryHeadersEx", "", "", "Argument[*5]", "remote", "manual"]
- ["", "", False, "WinHttpQueryHeadersEx", "", "", "Argument[*6]", "remote", "manual"]
- ["", "", False, "WinHttpQueryHeadersEx", "", "", "Argument[**8]", "remote", "manual"]
- addsTo:
pack: codeql/cpp-all
extensible: summaryModel
@@ -46,4 +53,6 @@ extensions:
- ["", "", False, "RtlMoveMemory", "", "", "Argument[*@1]", "Argument[*@0]", "value", "manual"]
- ["", "", False, "RtlMoveVolatileMemory", "", "", "Argument[*@1]", "Argument[*@0]", "value", "manual"]
# winternl.h
- ["", "", False, "RtlInitUnicodeString", "", "", "Argument[*1]", "Argument[*0].Field[*Buffer]", "value", "manual"]
- ["", "", False, "RtlInitUnicodeString", "", "", "Argument[*1]", "Argument[*0].Field[*Buffer]", "value", "manual"]
# winhttp.h
- ["", "", False, "WinHttpCrackUrl", "", "", "Argument[*0]", "Argument[*3]", "taint", "manual"]

View File

@@ -0,0 +1,41 @@
extensions:
- addsTo:
pack: codeql/cpp-all
extensible: sourceModel
data: # namespace, type, subtypes, name, signature, ext, output, kind, provenance
- ["Azure::Core::Http", "RawResponse", True, "GetHeaders", "", "", "ReturnValue[*]", "remote", "manual"]
- ["Azure::Core::Http", "RawResponse", True, "GetBody", "", "", "ReturnValue[*]", "remote", "manual"]
- ["Azure::Core::Http", "RawResponse", True, "ExtractBodyStream", "", "", "ReturnValue[*]", "remote", "manual"]
- ["Azure::Core::Http", "Request", True, "GetHeaders", "", "", "ReturnValue", "remote", "manual"]
- ["Azure::Core::Http", "Request", True, "GetHeader", "", "", "ReturnValue", "remote", "manual"]
- ["Azure::Core::Http", "Request", True, "GetBodyStream", "", "", "ReturnValue[*]", "remote", "manual"]
- addsTo:
pack: codeql/cpp-all
extensible: summaryModel
data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance
- ["Azure::Core", "Url", True, "Url", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
- ["Azure::Core", "Url", True, "SetScheme", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
- ["Azure::Core", "Url", True, "SetHost", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
- ["Azure::Core", "Url", True, "SetPort", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"]
- ["Azure::Core", "Url", True, "SetPath", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
- ["Azure::Core", "Url", True, "SetQueryParameters", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"]
- ["Azure::Core", "Url", True, "AppendPath", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"]
- ["Azure::Core", "Url", True, "AppendQueryParameter", "", "", "Argument[*1]", "Argument[-1]", "taint", "manual"]
- ["Azure::Core", "Url", True, "GetHost", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
- ["Azure::Core", "Url", True, "GetPath", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
- ["Azure::Core", "Url", True, "GetPort", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
- ["Azure::Core", "Url", True, "GetQueryParameters", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
- ["Azure::Core", "Url", True, "GetScheme", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
- ["Azure::Core", "Url", True, "GetRelativeUrl", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
- ["Azure::Core", "Url", True, "GetAbsoluteUrl", "", "", "Argument[-1]", "ReturnValue", "taint", "manual"]
- ["Azure::Core", "Url", True, "Decode", "", "", "Argument[*0]", "ReturnValue", "taint", "manual"]
- ["Azure::Core", "Url", True, "Encode", "", "", "Argument[*0]", "ReturnValue", "taint", "manual"]
- ["Azure::Core::IO", "BodyStream", True, "Read", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"]
- ["Azure::Core::IO", "BodyStream", True, "ReadToCount", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"]
- ["Azure::Core::IO", "BodyStream", True, "ReadToEnd", "", "", "Argument[-1]", "ReturnValue.Element", "taint", "manual"]
- ["Azure", "Nullable", True, "Nullable", "", "", "Argument[0]", "Argument[-1]", "taint", "manual"]
- ["Azure", "Nullable", True, "operator=", "", "", "Argument[*0]", "Argument[-1]", "value", "manual"]
- ["Azure", "Nullable", True, "Value", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
- ["Azure", "Nullable", True, "operator->", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]
- ["Azure", "Nullable", True, "operator*", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"]

View File

@@ -9,6 +9,14 @@ extensions:
pack: codeql/cpp-all
extensible: sinkModel
data: []
- addsTo:
pack: codeql/cpp-all
extensible: barrierModel
data: []
- addsTo:
pack: codeql/cpp-all
extensible: barrierGuardModel
data: []
- addsTo:
pack: codeql/cpp-all
extensible: summaryModel

View File

@@ -1,5 +1,5 @@
name: codeql/cpp-all
version: 6.1.1-dev
version: 7.1.1
groups: cpp
dbscheme: semmlecode.cpp.dbscheme
extractor: cpp

View File

@@ -192,6 +192,15 @@ class Element extends ElementBase {
*/
predicate isAffectedByMacro() { affectedByMacro(this) }
/**
* INTERNAL: Do not use.
*
* Holds if this element is affected by the expansion of `mi`.
*/
predicate isAffectedByMacro(MacroInvocation mi) {
affectedbymacroexpansion(underlyingElement(this), unresolveElement(mi))
}
private Element getEnclosingElementPref() {
enclosingfunction(underlyingElement(this), unresolveElement(result)) or
result.(Function) = stmtEnclosingElement(this) or

View File

@@ -239,6 +239,9 @@ class MacroInvocation extends MacroAccess {
macro_argument_unexpanded(underlyingElement(this), i, result)
}
/** Gets the number of arguments for this macro invocation. */
int getNumberOfArguments() { result = count(int i | exists(this.getUnexpandedArgument(i)) | i) }
/**
* Gets the `i`th _expanded_ argument of this macro invocation, where the
* first argument has `i = 0`. The result has been expanded for macros _and_

View File

@@ -328,3 +328,27 @@ class PreprocessorPragma extends PreprocessorDirective, @ppd_pragma {
class PreprocessorLine extends PreprocessorDirective, @ppd_line {
override string toString() { result = "#line " + this.getHead() }
}
/**
* A C23 or C++26 `#embed` preprocessor directive. For example, the following code
* contains one `Embed` directive:
* ```cpp
* char arr[] = {
* #embed "bin"
* };
* ```
*/
class Embed extends PreprocessorDirective, @ppd_embed {
override string toString() { result = "#embed " + this.getIncludeText() }
/**
* Gets the token which occurs after `#embed`, for example `"filename"`
* or `<filename>`.
*/
string getIncludeText() { result = this.getHead() }
/**
* Gets the file directly embedded by this `#embed`.
*/
File getEmbeddedFile() { embeds(underlyingElement(this), unresolveElement(result)) }
}

View File

@@ -1050,10 +1050,10 @@ private predicate namedExprChildPredicates(Expr expr, Element ele, string pred)
expr.(Call).getQualifier() = ele and
pred = "getQualifier()"
or
// OverloadedArrayExpr::getArrayBase/0 and OverloadedArrayExpr::getArrayOffset/0 also consider arguments, and are already handled below.
// OverloadedArrayExpr::getArrayBase/0 and OverloadedArrayExpr::getArrayOffset/1 also consider arguments, and are already handled below.
exists(int n, Expr arg | expr.(Call).getArgument(n) = arg |
not expr.(OverloadedArrayExpr).getArrayBase() = arg and
not expr.(OverloadedArrayExpr).getArrayOffset() = arg and
not expr.(OverloadedArrayExpr).getAnArrayOffset() = arg and
arg = ele and
pred = "getArgument(" + n.toString() + ")"
)
@@ -1062,7 +1062,10 @@ private predicate namedExprChildPredicates(Expr expr, Element ele, string pred)
or
expr.(OverloadedArrayExpr).getArrayBase() = ele and pred = "getArrayBase()"
or
expr.(OverloadedArrayExpr).getArrayOffset() = ele and pred = "getArrayOffset()"
exists(int n |
expr.(OverloadedArrayExpr).getArrayOffset(n) = ele and
pred = "getArrayOffset(" + n.toString() + ")"
)
or
// OverloadedPointerDereferenceExpr::getExpr/0 also considers qualifiers, and is already handled above for all Call classes.
not expr.(OverloadedPointerDereferenceExpr).getQualifier() =

View File

@@ -802,15 +802,6 @@ private predicate floatingPointTypeMapping(
// _Complex __float128
kind = 39 and base = 2 and domain = TComplexDomain() and realKind = 38 and extended = false
or
// _Decimal32
kind = 40 and base = 10 and domain = TRealDomain() and realKind = 40 and extended = false
or
// _Decimal64
kind = 41 and base = 10 and domain = TRealDomain() and realKind = 41 and extended = false
or
// _Decimal128
kind = 42 and base = 10 and domain = TRealDomain() and realKind = 42 and extended = false
or
// _Float32
kind = 45 and base = 2 and domain = TRealDomain() and realKind = 45 and extended = false
or
@@ -871,9 +862,8 @@ private predicate floatingPointTypeMapping(
/**
* The C/C++ floating point types. See 4.5. This includes `float`, `double` and `long double`, the
* fixed-size floating-point types like `_Float32`, the extended-precision floating-point types like
* `_Float64x`, and the decimal floating-point types like `_Decimal32`. It also includes the complex
* and imaginary versions of all of these types.
* fixed-size floating-point types like `_Float32`, and the extended-precision floating-point types
* like `_Float64x`. It also includes the complex and imaginary versions of all of these types.
*/
class FloatingPointType extends ArithmeticType {
final int base;
@@ -991,42 +981,6 @@ class Float128Type extends RealNumberType, BinaryFloatingPointType {
override string getAPrimaryQlClass() { result = "Float128Type" }
}
/**
* The GNU C `_Decimal32` primitive type. This is not standard C/C++.
* ```
* _Decimal32 d32;
* ```
*/
class Decimal32Type extends RealNumberType, DecimalFloatingPointType {
Decimal32Type() { builtintypes(underlyingElement(this), _, 40, _, _, _) }
override string getAPrimaryQlClass() { result = "Decimal32Type" }
}
/**
* The GNU C `_Decimal64` primitive type. This is not standard C/C++.
* ```
* _Decimal64 d64;
* ```
*/
class Decimal64Type extends RealNumberType, DecimalFloatingPointType {
Decimal64Type() { builtintypes(underlyingElement(this), _, 41, _, _, _) }
override string getAPrimaryQlClass() { result = "Decimal64Type" }
}
/**
* The GNU C `_Decimal128` primitive type. This is not standard C/C++.
* ```
* _Decimal128 d128;
* ```
*/
class Decimal128Type extends RealNumberType, DecimalFloatingPointType {
Decimal128Type() { builtintypes(underlyingElement(this), _, 42, _, _, _) }
override string getAPrimaryQlClass() { result = "Decimal128Type" }
}
/**
* The C/C++ `void` type. See 4.7.
* ```

View File

@@ -62,11 +62,13 @@ private Class getRootType(FieldAccess fa) {
* unspecified type of `v` is a `ReferenceType`.
*/
private int getVariableSize(Variable v) {
exists(Type t |
t = v.getUnspecifiedType() and
not t instanceof ReferenceType and
result = t.getSize()
)
result =
unique(Type t |
t = v.getUnspecifiedType() and
not t instanceof ReferenceType
|
t.getSize()
)
}
/**
@@ -79,30 +81,32 @@ private int getSize(VariableAccess va) {
not v instanceof Field and
result = getVariableSize(v)
or
exists(Class c, int trueSize |
// Otherwise, we find the "outermost" object and compute the size
// as the difference between the size of the type of the "outermost
// object" and the offset of the field relative to that type.
// For example, consider the following structs:
// ```
// struct S {
// uint32_t x;
// uint32_t y;
// };
// struct S2 {
// S s;
// uint32_t z;
// };
// ```
// Given an object `S2 s2` the size of the buffer `&s2.s.y`
// is the size of the base object type (i.e., `S2`) minutes the offset
// of `y` relative to the type `S2` (i.e., `4`). So the size of the
// buffer is `12 - 4 = 8`.
c = getRootType(va) and
// we calculate the size based on the last field, to avoid including any padding after it
trueSize = max(Field f | | f.getOffsetInClass(c) + getVariableSize(f)) and
result = trueSize - v.(Field).getOffsetInClass(c)
)
result =
unique(Class c, int trueSize |
// Otherwise, we find the "outermost" object and compute the size
// as the difference between the size of the type of the "outermost
// object" and the offset of the field relative to that type.
// For example, consider the following structs:
// ```
// struct S {
// uint32_t x;
// uint32_t y;
// };
// struct S2 {
// S s;
// uint32_t z;
// };
// ```
// Given an object `S2 s2` the size of the buffer `&s2.s.y`
// is the size of the base object type (i.e., `S2`) minus the offset
// of `y` relative to the type `S2` (i.e., `4`). So the size of the
// buffer is `12 - 4 = 8`.
c = getRootType(va) and
// we calculate the size based on the last field, to avoid including any padding after it
trueSize = max(Field f | | f.getOffsetInClass(c) + getVariableSize(f))
|
trueSize - v.(Field).getOffsetInClass(c)
)
)
}
@@ -116,12 +120,8 @@ private int isSource(Expr bufferExpr, Element why) {
exists(Variable bufferVar | bufferVar = bufferExpr.(VariableAccess).getTarget() |
// buffer is a fixed size array
exists(bufferVar.getUnspecifiedType().(ArrayType).getSize()) and
result =
unique(int size | // more generous than .getSize() itself, when the array is a class field or similar.
size = getSize(bufferExpr)
|
size
) and
// more generous than .getSize() itself, when the array is a class field or similar.
result = getSize(bufferExpr) and
why = bufferVar and
not memberMayBeVarSize(_, bufferVar) and
not exists(BuiltInOperationBuiltInOffsetOf offsetof | offsetof.getAChild*() = bufferExpr) and

View File

@@ -8,7 +8,8 @@ import semmle.code.cpp.ir.IR
private import codeql.util.Void
private import codeql.controlflow.Guards as SharedGuards
private import semmle.code.cpp.ir.ValueNumbering
private import semmle.code.cpp.ir.implementation.raw.internal.TranslatedExpr
private import semmle.code.cpp.ir.implementation.raw.internal.TranslatedExpr as TE
private import semmle.code.cpp.ir.implementation.raw.internal.TranslatedFunction as TF
private import semmle.code.cpp.ir.implementation.raw.internal.InstructionTag
private class BasicBlock = IRCfg::BasicBlock;
@@ -683,24 +684,26 @@ final class GuardCondition = GuardConditionImpl;
*/
private class GuardConditionFromBinaryLogicalOperator extends GuardConditionImpl instanceof Cpp::BinaryLogicalOperation
{
GuardConditionImpl l;
GuardConditionImpl r;
GuardConditionFromBinaryLogicalOperator() {
super.getLeftOperand() = l and
super.getRightOperand() = r
}
override predicate valueControls(Cpp::BasicBlock controlled, GuardValue v) {
exists(Cpp::BinaryLogicalOperation binop, GuardCondition lhs, GuardCondition rhs |
this = binop and
lhs = binop.getLeftOperand() and
rhs = binop.getRightOperand() and
lhs.valueControls(controlled, v) and
rhs.valueControls(controlled, v)
)
// `l || r` does not control `r` even though `l` does.
not r.(Cpp::Expr).getBasicBlock() = controlled and
l.valueControls(controlled, v)
or
r.valueControls(controlled, v)
}
override predicate valueControlsEdge(Cpp::BasicBlock pred, Cpp::BasicBlock succ, GuardValue v) {
exists(Cpp::BinaryLogicalOperation binop, GuardCondition lhs, GuardCondition rhs |
this = binop and
lhs = binop.getLeftOperand() and
rhs = binop.getRightOperand() and
lhs.valueControlsEdge(pred, succ, v) and
rhs.valueControlsEdge(pred, succ, v)
)
l.valueControlsEdge(pred, succ, v)
or
r.valueControlsEdge(pred, succ, v)
}
pragma[nomagic]
@@ -1026,7 +1029,7 @@ private class GuardConditionFromIR extends GuardConditionImpl {
private predicate excludeAsControlledInstruction(Instruction instr) {
// Exclude the temporaries generated by a ternary expression.
exists(TranslatedConditionalExpr tce |
exists(TE::TranslatedConditionalExpr tce |
instr = tce.getInstruction(ConditionValueFalseStoreTag())
or
instr = tce.getInstruction(ConditionValueTrueStoreTag())
@@ -1038,6 +1041,14 @@ private predicate excludeAsControlledInstruction(Instruction instr) {
or
// Exclude unreached instructions, as their AST is the whole function and not a block.
instr instanceof UnreachedInstruction
or
// Exclude instructions generated by a translated function as they map to the function itself
// and the function is considered the last basic block of a function body.
any(TF::TranslatedFunction tf).getInstruction(_) = instr
or
// `ChiInstruction`s generated by instructions in the above case don't come from `getInstruction` (since they are generated by AliasedSSA)
// so we need to special case them.
excludeAsControlledInstruction(instr.(ChiInstruction).getPartial())
}
/**

View File

@@ -15,16 +15,17 @@
* reading.
* 1. The `namespace` column selects a namespace.
* 2. The `type` column selects a type within that namespace. This column can
* introduce template names that can be mentioned in the `signature` column.
* introduce template type names that can be mentioned in the `signature` column.
* For example, `vector<T,Allocator>` introduces the template names `T` and
* `Allocator`.
* `Allocator`. Non-type template parameters cannot be specified.
* 3. The `subtypes` is a boolean that indicates whether to jump to an
* arbitrary subtype of that type. Set this to `false` if leaving the `type`
* blank (for example, a free function).
* 4. The `name` column optionally selects a specific named member of the type.
* Like the `type` column, this column can introduce template names that can
* be mentioned in the `signature` column. For example, `insert<InputIt>`
* introduces the template name `InputIt`.
* Like the `type` column, this column can introduce template type names
* that can be mentioned in the `signature` column. For example,
* `insert<InputIt>` introduces the template name `InputIt`. Non-type
* template parameters cannot be specified.
* 5. The `signature` column optionally restricts the named member. If
* `signature` is blank then no such filtering is done. The format of the
* signature is a comma-separated list of types enclosed in parentheses. The
@@ -94,15 +95,17 @@
import cpp
private import new.DataFlow
private import semmle.code.cpp.controlflow.IRGuards
private import semmle.code.cpp.ir.dataflow.internal.DataFlowPrivate as Private
private import semmle.code.cpp.ir.dataflow.internal.DataFlowUtil
private import internal.FlowSummaryImpl
private import internal.FlowSummaryImpl::Public
private import internal.FlowSummaryImpl::Private
private import internal.FlowSummaryImpl::Private::External
private import internal.ExternalFlowExtensions as Extensions
private import internal.ExternalFlowExtensions::Extensions as Extensions
private import codeql.mad.ModelValidation as SharedModelVal
private import codeql.util.Unit
private import codeql.mad.static.ModelsAsData as SharedMaD
/**
* A unit class for adding additional source model rows.
@@ -143,134 +146,81 @@ predicate sinkModel(string row) { any(SinkModelCsv s).row(row) }
/** Holds if `row` is a summary model. */
predicate summaryModel(string row) { any(SummaryModelCsv s).row(row) }
/** Holds if a source model exists for the given parameters. */
predicate sourceModel(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string output, string kind, string provenance, string model
) {
exists(string row |
sourceModel(row) and
row.splitAt(";", 0) = namespace and
row.splitAt(";", 1) = type and
row.splitAt(";", 2) = subtypes.toString() and
subtypes = [true, false] and
row.splitAt(";", 3) = name and
row.splitAt(";", 4) = signature and
row.splitAt(";", 5) = ext and
row.splitAt(";", 6) = output and
row.splitAt(";", 7) = kind
) and
provenance = "manual" and
model = ""
or
exists(QlBuiltins::ExtensionId madId |
Extensions::sourceModel(namespace, type, subtypes, name, signature, ext, output, kind,
provenance, madId) and
model = "MaD:" + madId.toString()
)
private module MadInput implements SharedMaD::InputSig {
/** Holds if a source model exists for the given parameters. */
predicate additionalSourceModel(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string output, string kind, string provenance, string model
) {
exists(string row |
sourceModel(row) and
row.splitAt(";", 0) = namespace and
row.splitAt(";", 1) = type and
row.splitAt(";", 2) = subtypes.toString() and
subtypes = [true, false] and
row.splitAt(";", 3) = name and
row.splitAt(";", 4) = signature and
row.splitAt(";", 5) = ext and
row.splitAt(";", 6) = output and
row.splitAt(";", 7) = kind
) and
provenance = "manual" and
model = ""
}
/** Holds if a sink model exists for the given parameters. */
predicate additionalSinkModel(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string input, string kind, string provenance, string model
) {
exists(string row |
sinkModel(row) and
row.splitAt(";", 0) = namespace and
row.splitAt(";", 1) = type and
row.splitAt(";", 2) = subtypes.toString() and
subtypes = [true, false] and
row.splitAt(";", 3) = name and
row.splitAt(";", 4) = signature and
row.splitAt(";", 5) = ext and
row.splitAt(";", 6) = input and
row.splitAt(";", 7) = kind
) and
provenance = "manual" and
model = ""
}
/**
* Holds if a summary model exists for the given parameters.
*
* This predicate does not expand `@` to `*`s.
*/
predicate additionalSummaryModel(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string input, string output, string kind, string provenance, string model
) {
exists(string row |
summaryModel(row) and
row.splitAt(";", 0) = namespace and
row.splitAt(";", 1) = type and
row.splitAt(";", 2) = subtypes.toString() and
subtypes = [true, false] and
row.splitAt(";", 3) = name and
row.splitAt(";", 4) = signature and
row.splitAt(";", 5) = ext and
row.splitAt(";", 6) = input and
row.splitAt(";", 7) = output and
row.splitAt(";", 8) = kind
) and
provenance = "manual" and
model = ""
}
string namespaceSegmentSeparator() { result = "::" }
}
/** Holds if a sink model exists for the given parameters. */
predicate sinkModel(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string input, string kind, string provenance, string model
) {
exists(string row |
sinkModel(row) and
row.splitAt(";", 0) = namespace and
row.splitAt(";", 1) = type and
row.splitAt(";", 2) = subtypes.toString() and
subtypes = [true, false] and
row.splitAt(";", 3) = name and
row.splitAt(";", 4) = signature and
row.splitAt(";", 5) = ext and
row.splitAt(";", 6) = input and
row.splitAt(";", 7) = kind
) and
provenance = "manual" and
model = ""
or
exists(QlBuiltins::ExtensionId madId |
Extensions::sinkModel(namespace, type, subtypes, name, signature, ext, input, kind, provenance,
madId) and
model = "MaD:" + madId.toString()
)
}
private module MaD = SharedMaD::ModelsAsData<Extensions, MadInput>;
/**
* Holds if a summary model exists for the given parameters.
*
* This predicate does not expand `@` to `*`s.
*/
private predicate summaryModel0(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string input, string output, string kind, string provenance, string model
) {
exists(string row |
summaryModel(row) and
row.splitAt(";", 0) = namespace and
row.splitAt(";", 1) = type and
row.splitAt(";", 2) = subtypes.toString() and
subtypes = [true, false] and
row.splitAt(";", 3) = name and
row.splitAt(";", 4) = signature and
row.splitAt(";", 5) = ext and
row.splitAt(";", 6) = input and
row.splitAt(";", 7) = output and
row.splitAt(";", 8) = kind
) and
provenance = "manual" and
model = ""
or
exists(QlBuiltins::ExtensionId madId |
Extensions::summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind,
provenance, madId) and
model = "MaD:" + madId.toString()
)
}
/**
* Holds if the given extension tuple `madId` should pretty-print as `model`.
*
* This predicate should only be used in tests.
*/
predicate interpretModelForTest(QlBuiltins::ExtensionId madId, string model) {
exists(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string output, string kind, string provenance
|
Extensions::sourceModel(namespace, type, subtypes, name, signature, ext, output, kind,
provenance, madId)
|
model =
"Source: " + namespace + "; " + type + "; " + subtypes + "; " + name + "; " + signature + "; "
+ ext + "; " + output + "; " + kind + "; " + provenance
)
or
exists(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string input, string kind, string provenance
|
Extensions::sinkModel(namespace, type, subtypes, name, signature, ext, input, kind, provenance,
madId)
|
model =
"Sink: " + namespace + "; " + type + "; " + subtypes + "; " + name + "; " + signature + "; " +
ext + "; " + input + "; " + kind + "; " + provenance
)
or
exists(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string input, string output, string kind, string provenance
|
Extensions::summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind,
provenance, madId)
|
model =
"Summary: " + namespace + "; " + type + "; " + subtypes + "; " + name + "; " + signature +
"; " + ext + "; " + input + "; " + output + "; " + kind + "; " + provenance
)
}
import MaD
/**
* Holds if `input` is `input0`, but with all occurrences of `@` replaced
@@ -293,69 +243,13 @@ predicate summaryModel(
string input, string output, string kind, string provenance, string model
) {
exists(string input0, string output0 |
summaryModel0(namespace, type, subtypes, name, signature, ext, input0, output0, kind,
MaD::summaryModel(namespace, type, subtypes, name, signature, ext, input0, output0, kind,
provenance, model) and
expandInputAndOutput(input0, input, output0, output,
[0 .. Private::getMaxElementContentIndirectionIndex() - 1])
)
}
private predicate relevantNamespace(string namespace) {
sourceModel(namespace, _, _, _, _, _, _, _, _, _) or
sinkModel(namespace, _, _, _, _, _, _, _, _, _) or
summaryModel(namespace, _, _, _, _, _, _, _, _, _, _)
}
private predicate namespaceLink(string shortns, string longns) {
relevantNamespace(shortns) and
relevantNamespace(longns) and
longns.prefix(longns.indexOf("::")) = shortns
}
private predicate canonicalNamespace(string namespace) {
relevantNamespace(namespace) and not namespaceLink(_, namespace)
}
private predicate canonicalNamespaceLink(string namespace, string subns) {
canonicalNamespace(namespace) and
(subns = namespace or namespaceLink(namespace, subns))
}
/**
* Holds if MaD framework coverage of `namespace` is `n` api endpoints of the
* kind `(kind, part)`, and `namespaces` is the number of subnamespaces of
* `namespace` which have MaD framework coverage (including `namespace`
* itself).
*/
predicate modelCoverage(string namespace, int namespaces, string kind, string part, int n) {
namespaces = strictcount(string subns | canonicalNamespaceLink(namespace, subns)) and
(
part = "source" and
n =
strictcount(string subns, string type, boolean subtypes, string name, string signature,
string ext, string output, string provenance, string model |
canonicalNamespaceLink(namespace, subns) and
sourceModel(subns, type, subtypes, name, signature, ext, output, kind, provenance, model)
)
or
part = "sink" and
n =
strictcount(string subns, string type, boolean subtypes, string name, string signature,
string ext, string input, string provenance, string model |
canonicalNamespaceLink(namespace, subns) and
sinkModel(subns, type, subtypes, name, signature, ext, input, kind, provenance, model)
)
or
part = "summary" and
n =
strictcount(string subns, string type, boolean subtypes, string name, string signature,
string ext, string input, string output, string provenance |
canonicalNamespaceLink(namespace, subns) and
summaryModel(subns, type, subtypes, name, signature, ext, input, output, kind, provenance, _)
)
)
}
/** Provides a query predicate to check the CSV data for validation errors. */
module CsvValidation {
private string getInvalidModelInput() {
@@ -474,6 +368,8 @@ private predicate elementSpec(
) {
sourceModel(namespace, type, subtypes, name, signature, ext, _, _, _, _) or
sinkModel(namespace, type, subtypes, name, signature, ext, _, _, _, _) or
barrierModel(namespace, type, subtypes, name, signature, ext, _, _, _, _) or
barrierGuardModel(namespace, type, subtypes, name, signature, ext, _, _, _, _, _) or
summaryModel(namespace, type, subtypes, name, signature, ext, _, _, _, _, _)
}
@@ -633,6 +529,28 @@ string getParameterTypeWithoutTemplateArguments(Function f, int n, boolean canon
canonical = true
}
/**
* Gets the largest index of a template parameter of `templateFunction` that
* is a type template parameter.
*/
private int getLastTypeTemplateFunctionParameterIndex(Function templateFunction) {
result =
max(int index | templateFunction.getTemplateArgument(index) instanceof TypeTemplateParameter)
}
/** Gets the number of supported template parameters for `templateFunction`. */
private int getNumberOfSupportedFunctionTemplateArguments(Function templateFunction) {
result = count(int i | exists(getSupportedFunctionTemplateArgument(templateFunction, i)) | i)
}
/** Gets the `i`'th supported template parameter for `templateFunction`. */
private Locatable getSupportedFunctionTemplateArgument(Function templateFunction, int i) {
result = templateFunction.getTemplateArgument(i) and
// We don't yet support non-type template parameters in the middle of a
// template parameter list
i <= getLastTypeTemplateFunctionParameterIndex(templateFunction)
}
/**
* Normalize the `n`'th parameter of `f` by replacing template names
* with `func:N` (where `N` is the index of the template).
@@ -640,18 +558,41 @@ string getParameterTypeWithoutTemplateArguments(Function f, int n, boolean canon
private string getTypeNameWithoutFunctionTemplates(Function f, int n, int remaining) {
exists(Function templateFunction |
templateFunction = getFullyTemplatedFunction(f) and
remaining = templateFunction.getNumberOfTemplateArguments() and
remaining = getNumberOfSupportedFunctionTemplateArguments(templateFunction) and
result = getParameterTypeWithoutTemplateArguments(templateFunction, n, _)
)
or
exists(string mid, TypeTemplateParameter tp, Function templateFunction |
mid = getTypeNameWithoutFunctionTemplates(f, n, remaining + 1) and
templateFunction = getFullyTemplatedFunction(f) and
tp = templateFunction.getTemplateArgument(remaining) and
tp = getSupportedFunctionTemplateArgument(templateFunction, remaining)
|
result = mid.replaceAll(tp.getName(), "func:" + remaining.toString())
)
}
/**
* Gets the largest index of a template parameter of `templateClass` that
* is a type template parameter.
*/
private int getLastTypeTemplateClassParameterIndex(Class templateClass) {
result =
max(int index | templateClass.getTemplateArgument(index) instanceof TypeTemplateParameter)
}
/** Gets the `i`'th supported template parameter for `templateClass`. */
private Locatable getSupportedClassTemplateArgument(Class templateClass, int i) {
result = templateClass.getTemplateArgument(i) and
// We don't yet support non-type template parameters in the middle of a
// template parameter list
i <= getLastTypeTemplateClassParameterIndex(templateClass)
}
/** Gets the number of supported template parameters for `templateClass`. */
private int getNumberOfSupportedClassTemplateArguments(Class templateClass) {
result = count(int i | exists(getSupportedClassTemplateArgument(templateClass, i)) | i)
}
/**
* Normalize the `n`'th parameter of `f` by replacing template names
* with `class:N` (where `N` is the index of the template).
@@ -661,7 +602,7 @@ private string getTypeNameWithoutClassTemplates(Function f, int n, int remaining
// If there is a declaring type then we start by expanding the function templates
exists(Class template |
isClassConstructedFrom(f.getDeclaringType(), template) and
remaining = template.getNumberOfTemplateArguments() and
remaining = getNumberOfSupportedClassTemplateArguments(template) and
result = getTypeNameWithoutFunctionTemplates(f, n, 0)
)
or
@@ -673,7 +614,8 @@ private string getTypeNameWithoutClassTemplates(Function f, int n, int remaining
exists(string mid, TypeTemplateParameter tp, Class template |
mid = getTypeNameWithoutClassTemplates(f, n, remaining + 1) and
isClassConstructedFrom(f.getDeclaringType(), template) and
tp = template.getTemplateArgument(remaining) and
tp = getSupportedClassTemplateArgument(template, remaining)
|
result = mid.replaceAll(tp.getName(), "class:" + remaining.toString())
)
}
@@ -1089,6 +1031,84 @@ private module Cached {
isSinkNode(n, kind, model) and n.asNode() = node
)
}
private newtype TKindModelPair =
TMkPair(string kind, string model) { isBarrierGuardNode(_, _, kind, model) }
private GuardValue convertAcceptingValue(Public::AcceptingValue av) {
av.isTrue() and result.asBooleanValue() = true
or
av.isFalse() and result.asBooleanValue() = false
or
// NOTE: The below cases don't contribute anything currently since the
// callers immediately use `.asBooleanValue()` to convert the `GuardValue`
// to a boolean. Once we're willing to accept the breaking change of
// converting the barrier guard API to use `GuardValue`s instead `Boolean`s
// we can remove this restriction.
av.isNoException() and result.getDualValue().isThrowsException()
or
av.isZero() and result.asIntValue() = 0
or
av.isNotZero() and result.getDualValue().asIntValue() = 0
or
av.isNull() and result.isNullValue()
or
av.isNotNull() and result.isNonNullValue()
}
private predicate barrierGuardChecks(IRGuardCondition g, Expr e, boolean gv, TKindModelPair kmp) {
exists(
SourceSinkInterpretationInput::InterpretNode n, Public::AcceptingValue acceptingvalue,
string kind, string model
|
isBarrierGuardNode(n, acceptingvalue, kind, model) and
n.asNode().asExpr() = e and
kmp = TMkPair(kind, model) and
gv = convertAcceptingValue(acceptingvalue).asBooleanValue() and
n.asNode().(Private::ArgumentNode).getCall().asCallInstruction() = g
)
}
private newtype TKindModelPairIntPair =
MkKindModelPairIntPair(TKindModelPair pair, int indirectionIndex) {
indirectionIndex > 0 and
Private::nodeHasInstruction(_, _, indirectionIndex) and
exists(pair)
}
private predicate indirectBarrierGuardChecks(
IRGuardCondition g, Expr e, boolean gv, TKindModelPairIntPair kmp
) {
exists(
SourceSinkInterpretationInput::InterpretNode interpretNode,
Public::AcceptingValue acceptingvalue, string kind, string model, int indirectionIndex,
Private::ArgumentNode arg
|
isBarrierGuardNode(interpretNode, acceptingvalue, kind, model) and
arg = interpretNode.asNode() and
arg.asIndirectExpr(indirectionIndex) = e and
kmp = MkKindModelPairIntPair(TMkPair(kind, model), indirectionIndex) and
gv = convertAcceptingValue(acceptingvalue).asBooleanValue() and
arg.getCall().asCallInstruction() = g
)
}
/**
* Holds if `node` is specified as a barrier with the given kind in a MaD flow
* model.
*/
cached
predicate barrierNode(DataFlow::Node node, string kind, string model) {
exists(SourceSinkInterpretationInput::InterpretNode n |
isBarrierNode(n, kind, model) and n.asNode() = node
)
or
DataFlow::ParameterizedBarrierGuard<TKindModelPair, barrierGuardChecks/4>::getABarrierNode(TMkPair(kind,
model)) = node
or
DataFlow::ParameterizedBarrierGuard<TKindModelPairIntPair, indirectBarrierGuardChecks/4>::getAnIndirectBarrierNode(MkKindModelPairIntPair(TMkPair(kind,
model), _)) = node
}
}
import Cached
@@ -1105,6 +1125,12 @@ predicate sourceNode(DataFlow::Node node, string kind) { sourceNode(node, kind,
*/
predicate sinkNode(DataFlow::Node node, string kind) { sinkNode(node, kind, _) }
/**
* Holds if `node` is specified as a barrier with the given kind in a MaD flow
* model.
*/
predicate barrierNode(DataFlow::Node node, string kind) { barrierNode(node, kind, _) }
private predicate interpretSummary(
Function f, string input, string output, string kind, string provenance, string model
) {
@@ -1119,40 +1145,22 @@ private predicate interpretSummary(
// adapter class for converting Mad summaries to `SummarizedCallable`s
private class SummarizedCallableAdapter extends SummarizedCallable {
SummarizedCallableAdapter() { interpretSummary(this, _, _, _, _, _) }
string input_;
string output_;
string kind;
Provenance p_;
string model_;
private predicate relevantSummaryElementManual(
string input, string output, string kind, string model
) {
exists(Provenance provenance |
interpretSummary(this, input, output, kind, provenance, model) and
provenance.isManual()
)
}
private predicate relevantSummaryElementGenerated(
string input, string output, string kind, string model
) {
exists(Provenance provenance |
interpretSummary(this, input, output, kind, provenance, model) and
provenance.isGenerated()
)
}
SummarizedCallableAdapter() { interpretSummary(this, input_, output_, kind, p_, model_) }
override predicate propagatesFlow(
string input, string output, boolean preservesValue, string model
string input, string output, boolean preservesValue, Provenance p, boolean isExact, string model
) {
exists(string kind |
this.relevantSummaryElementManual(input, output, kind, model)
or
not this.relevantSummaryElementManual(_, _, _, _) and
this.relevantSummaryElementGenerated(input, output, kind, model)
|
if kind = "value" then preservesValue = true else preservesValue = false
)
}
override predicate hasProvenance(Provenance provenance) {
interpretSummary(this, _, _, _, provenance, _)
input = input_ and
output = output_ and
(if kind = "value" then preservesValue = true else preservesValue = false) and
p = p_ and
isExact = true and
model = model_
}
}

Some files were not shown because too many files have changed in this diff Show More