Compare commits

..

574 Commits

Author SHA1 Message Date
Nick Rolfe
a05ffdbc81 Merge pull request #20545 from github/release-prep/2.23.2
Release preparation for version 2.23.2
2025-09-29 15:35:24 +01:00
Nick Rolfe
a76d736136 C#: tweak changelog wording 2025-09-29 15:32:52 +01:00
github-actions[bot]
d2130a589b Release preparation for version 2.23.2 2025-09-29 10:28:45 +00:00
Jeroen Ketema
9dfd87c284 Merge pull request #20514 from jketema/permissive
C++: Update tests after extractor changes
2025-09-28 16:56:31 +02:00
Owen Mansel-Chan
18a1075e70 Merge pull request #20523 from smowton/smowton/fix/mistyped-exp-fp
Go: mistyped-exponentiation: notice constants with likely-bitmask values
2025-09-26 16:02:30 +01:00
Owen Mansel-Chan
f5f61193a0 Delete change note 2025-09-26 15:33:26 +01:00
Geoffrey White
a0b533bd40 Merge pull request #20529 from geoffw0/convert
Rust: Correct from model to taint
2025-09-26 14:48:58 +01:00
Florin Coada
ba07daa50a Merge pull request #20532 from github/coadaflorin/changelog-fixes
Update changelog for CodeQL CLI 2.23.1
2025-09-26 14:21:21 +01:00
Geoffrey White
1635ef9ad9 Merge branch 'main' into convert 2025-09-26 14:11:04 +01:00
Florin Coada
5a0bae27ac Update changelog for CodeQL CLI 2.23.1 2025-09-26 13:57:57 +01:00
Anders Schack-Mulligen
f4388c80d0 Merge pull request #20519 from aschackmull/controlflowreach/perf2
ControlFlow: Split only on relevant values.
2025-09-26 14:51:49 +02:00
Florin Coada
a4f5e9aaf5 Update changelog for CodeQL CLI 2.23.1
Added acknowledgment for the original contributor of the 'Permissive CORS configuration' query and clarified the detection of path injection in Go.
2025-09-26 13:46:12 +01:00
Florin Coada
f6fe469e02 Merge pull request #20531 from github/coadaflorin-formatingfix2
Fix formatting in codeql-cli-2.23.1.rst
2025-09-26 13:31:22 +01:00
Florin Coada
3e9332edfa Fix formatting in codeql-cli-2.23.1.rst 2025-09-26 13:16:45 +01:00
Florin Coada
f8388c521e Merge pull request #20530 from github/coadaflorin/attributer-query
Attribute `js/cors-permissive-configuration` to original author
2025-09-26 13:11:08 +01:00
Anders Schack-Mulligen
2c29f21004 Shared: Address review comments. 2025-09-26 13:59:53 +02:00
Tom Hvitved
615b0a0310 Merge pull request #20502 from hvitved/rust/path-resolution-check-arity
Rust: Check call arities in path resolution
2025-09-26 13:45:26 +02:00
Tom Hvitved
4c7b66c66a Address review comments 2025-09-26 13:14:44 +02:00
Florin Coada
ba520c60d2 Update 2.1.0.md 2025-09-26 10:11:03 +01:00
Florin Coada
09833e2541 Update CHANGELOG for query promotion and acknowledgment
Promote 'Permissive CORS configuration' query to default suite and acknowledge contributor.
2025-09-26 10:09:30 +01:00
Florin Coada
2f96e32ec9 Update 2.1.0.md 2025-09-26 10:08:31 +01:00
Geoffrey White
3a03bb5a0b Rust: Repair rust/hard-coded-cryptographic-value, which had an unintentional dependence on the taint flow. 2025-09-26 10:03:38 +01:00
Geoffrey White
74a350a432 Rust: Effect on tests. 2025-09-26 09:55:16 +01:00
Tom Hvitved
c52709a5f0 Merge pull request #20516 from hvitved/rust/type-inference-union-pointer-never
Rust: Model union, never, and pointer types
2025-09-26 10:26:05 +02:00
Tom Hvitved
7a74efcc82 Update rust/ql/lib/codeql/rust/elements/internal/UnionImpl.qll
Co-authored-by: Simon Friis Vindum <paldepind@github.com>
2025-09-26 09:57:13 +02:00
Geoffrey White
ff554055a6 Rust: Correct 'from' model to taint. 2025-09-26 08:43:35 +01:00
Simon Friis Vindum
6678e79239 Merge pull request #20526 from geoffw0/lock
Rust: Add missing Cargo.lock files
2025-09-26 08:57:21 +02:00
Geoffrey White
39ceadaa26 Merge pull request #20520 from geoffw0/gitignore
Add .orig files to the .gitignore.
2025-09-25 18:10:24 +01:00
Geoffrey White
656a7bc378 Rust: Add missing Cargo.lock files to query tests. 2025-09-25 17:40:59 +01:00
Chris Smowton
9e7a5214f3 Change note 2025-09-25 15:40:26 +01:00
Chris Smowton
e9cccb46c0 Go: mistyped-exponentiation: notice constants with likely-bitmask values 2025-09-25 15:19:40 +01:00
Tom Hvitved
1a4cfba93a Merge pull request #20427 from felickz/ruby-framework-grape
Ruby: Add support for Grape Framework
2025-09-25 16:12:34 +02:00
Taus
e592fd60ff Merge pull request #20495 from github/tausbn/python-fix-unmatchable-dollar-in-lookahead
Python: Fix false positive for unmatchable dollar/caret
2025-09-25 15:27:32 +02:00
Geoffrey White
b22227d0f4 Add .orig files to .gitignore. 2025-09-25 14:03:39 +01:00
Anders Schack-Mulligen
109b6a1d79 ControlFlow: Split only on relevant values. 2025-09-25 15:03:35 +02:00
Tom Hvitved
2a814dd37c Rust: Model union, never, and pointer types 2025-09-25 12:33:51 +02:00
Jeroen Ketema
e41b5f2bc0 C++: Update tests after extractor changes 2025-09-25 09:52:22 +02:00
Florin Coada
2db5f0def5 Merge pull request #20510 from github/coadaflorin-patch-1
Fix escape character in changelog for Go query
2025-09-24 16:18:05 +01:00
Michael B. Gale
fd6f9cd2d5 Merge pull request #20368 from github/mbg/go/support-git-source
Go: Support `git_source`
2025-09-24 16:14:56 +01:00
Florin Coada
86fe68bb61 Fix formatting in changelog for Go path injection query
2 people + 2 models managed to tackle this insurmountable task.
2025-09-24 16:12:17 +01:00
Florin Coada
6c488e6e71 Fix formatting in codeql-cli-2.23.1.rst 2025-09-24 16:01:38 +01:00
Florin Coada
f3ef6ef3c9 Fix formatting issue in changelog for Go query 2025-09-24 16:00:40 +01:00
Florin Coada
8ad6952dda Fix escape character in changelog for Go query 2025-09-24 15:58:09 +01:00
Michael B. Gale
8c8499229d Configure git to use the certificate, if needed 2025-09-24 15:52:04 +01:00
Michael B. Gale
bc38b79c9a Convert URLs to expected format 2025-09-24 15:52:04 +01:00
Michael B. Gale
4ef8ff9a0f Append * to git_source URL if not present
Since `GOPRIVATE` / `GONOPROXY` expect a glob pattern
2025-09-24 15:52:03 +01:00
Michael B. Gale
a8fa1a76c4 Use git_source configurations for GOPRIVATE 2025-09-24 15:52:02 +01:00
Michael B. Gale
895399ff05 Rename proxy_configs to goproxy_servers and only store URLs 2025-09-24 15:52:01 +01:00
Michael B. Gale
23a04613c0 Set lower-case variants of HTTP_PROXY and HTTPS_PROXY 2025-09-24 15:52:00 +01:00
Michael B. Gale
711d49770f Improve logging to include proxy vars 2025-09-24 15:51:59 +01:00
Florin Coada
e78d0571f4 Merge pull request #20508 from github/changedocs/2.23.1
Add changelog entry for CodeQL 2.23.1 release
2025-09-24 15:35:18 +01:00
Florin Coada
6e0ce9a885 Add changelog entry for CodeQL 2.23.1 release 2025-09-24 13:30:11 +01:00
Tom Hvitved
e6b1e8ec56 Rust: Check call arities in path resolution 2025-09-24 10:19:56 +02:00
Tom Hvitved
92cced201e Merge pull request #20496 from hvitved/rust/path-resolution-use-visibility
Rust: Visibility check for qualified path resolution
2025-09-24 10:19:22 +02:00
Simon Friis Vindum
26aa938acc Merge pull request #20452 from paldepind/rust/mad-source-parameter
Rust, shared: Support `Parameter` in source MaD models
2025-09-24 09:37:25 +02:00
Asger F
2e8091f0fb Merge pull request #20419 from asgerf/js/express-json-send
JS: Model Express json and jsonp methods
2025-09-24 09:25:32 +02:00
Chad Bentz
46d330cb21 Merge branch 'ruby-framework-grape' of github.com:felickz/codeql into ruby-framework-grape 2025-09-23 10:40:46 -04:00
Chad Bentz
37e0c30842 Add expected output for VariablesConsistency test case 2025-09-23 10:40:30 -04:00
Chad Bentz
7a9a259c03 Merge branch 'main' into ruby-framework-grape 2025-09-22 19:29:36 -04:00
Chad Bentz
89fd9694ce codeql query format 2025-09-22 19:25:05 -04:00
Chad Bentz
6e56c549b2 Refactor Grape method call classes to simplify handling of API instance calls for headers, request, route_param, and cookies 2025-09-22 19:21:23 -04:00
Chad Bentz
0665c39a07 Refactor GrapeHelperMethod constructor to reuse getHelperSelf to traverse dataflow instead of AST
- add tests to check for nested helpers
2025-09-22 19:08:34 -04:00
Tom Hvitved
1183e50435 Update rust/ql/lib/change-notes/2025-09-19-parameter-mad.md 2025-09-22 19:45:34 +02:00
Geoffrey White
5ad332e37f Merge pull request #20432 from github/copilot/fix-f50317f8-0a91-4bb4-a01b-353dcf0f6f3f
Rust: Implement new query for non-HTTPS URLs (CWE-319)
2025-09-22 18:03:52 +01:00
Chad Bentz
ecd0ce65fe Refactor GrapeHeadersBlockCall and GrapeCookiesBlockCall to simplify method call checks 2025-09-22 12:52:30 -04:00
Chad Bentz
b837c56bec Refactor RootApi and GrapeApiClass constructors for improved readability; add getHelperSelf method to retrieve self parameter in helpers block. 2025-09-22 10:13:33 -04:00
Simon Friis Vindum
45b84ffb31 Rust: Ensure singleton 2025-09-22 14:23:50 +02:00
Simon Friis Vindum
4244a6569c Rust: Add change note 2025-09-22 14:19:01 +02:00
Simon Friis Vindum
a4c61f6945 Rust: Accept test changes 2025-09-22 14:18:59 +02:00
Simon Friis Vindum
7d6e2060e5 Adapt all languages to changes in shared library 2025-09-22 14:18:58 +02:00
Simon Friis Vindum
265e8b3623 Shared: Pass SummaryComponentStack to isSource and getSourceType 2025-09-22 14:18:54 +02:00
Simon Friis Vindum
014c27ee8a Rust: Discard sources with spaces in inline flow tests 2025-09-22 14:13:39 +02:00
Simon Friis Vindum
05a58323c1 Rust: Add Warp test to request forgery query tests 2025-09-22 14:13:38 +02:00
Simon Friis Vindum
cd807533f2 Rust: Add tests for parameter in source model 2025-09-22 14:13:37 +02:00
Joe Farebrother
463f79bed2 Merge pull request #20263 from joefarebrother/python-qual-exceptions
Python: Modernize the Unreachable Except Block query
2025-09-22 09:42:09 +01:00
Tom Hvitved
be260befd4 Merge pull request #20497 from hvitved/rust/missing-model
Rust: Add missing model
2025-09-22 10:30:25 +02:00
Napalys Klicius
a0ea0c9e47 Merge pull request #20492 from Napalys/js/graph-ql-obj-type
JS: mark `GraphQLObjectType` resolvers args as remote sources
2025-09-22 09:59:20 +02:00
Tom Hvitved
78641b4dde Rust: Reduce size of unqualifiedPathLookup 2025-09-22 09:46:28 +02:00
Tom Hvitved
b5b6f06005 Rust: Fix bad join
```
Evaluated relational algebra for predicate _PathResolution::CrateItemNode.getName/0#dispred#91b4dd6b_PathResolution::SourceFileItemNode#bd8f490__#antijoin_rhs@e84aee8k with tuple counts:
        35406180  ~0%    {3} r1 = JOIN PathResolution::SourceFileItemNode#bd8f4905 WITH `PathResolution::CrateItemNode.getName/0#dispred#91b4dd6b` CARTESIAN PRODUCT OUTPUT Lhs.0, Rhs.1, Rhs.0
            8455  ~2%    {4}    | JOIN WITH `PathResolution::declaresDirectly/3#7d0350fb_021#join_rhs` ON FIRST 2 OUTPUT Rhs.2, Lhs.0, Lhs.2, Lhs.1
            3259  ~0%    {3}    | JOIN WITH num#PathResolution::TTypeNamespace#4897e416 ON FIRST 1 OUTPUT Lhs.1, Lhs.2, Lhs.3
                         return r1
```
2025-09-22 09:38:43 +02:00
Tom Hvitved
b2cc01c490 Rust: Visibility check for qualified path resolution 2025-09-22 09:38:30 +02:00
Kasper Svendsen
97d62950a8 Merge pull request #20484 from kaspersv/kaspersv/future-proof-java-discarding
Overlay: Future-proof Java config & XML discard predicates
2025-09-22 08:16:44 +02:00
Chad Bentz
1bf6101967 Remove redundant exclusion of base Grape::API module from GrapeApiClass
- should not impact extracted application code
2025-09-21 20:52:28 -04:00
Chad Bentz
50bf9ae756 Refactor RootApi class to use getAnImmediateDescendent for clarity 2025-09-21 20:44:46 -04:00
Tom Hvitved
8d5d219c0f Rust: Update expected test output 2025-09-21 15:36:22 +02:00
Tom Hvitved
223ab5e60c Rust: Add missing model 2025-09-21 15:28:50 +02:00
Tom Hvitved
bdeeb3217e Rust: Add path resolution tests 2025-09-20 09:30:55 +02:00
Tom Hvitved
fdb0c6ebb5 Merge pull request #20454 from paldepind/rust/path-resolution-attribute-expansion
Rust: Account for attribute expansions in path resolution
2025-09-20 09:21:00 +02:00
Chad Bentz
f4bbbc346f Refactor Grape framework to be encapsulated properly in Module 2025-09-19 19:06:50 -04:00
Chad Bentz
89e9ee43c0 Convert from GrapeHelperMethodTaintStep extends AdditionalTaintStep to a simplified GrapeHelperMethodTarget extends AdditionalCallTarget 2025-09-19 18:28:45 -04:00
Geoffrey White
c26a07bb10 Apply suggestions from code review
Co-authored-by: Simon Friis Vindum <simonfv@gmail.com>
2025-09-19 16:49:54 +01:00
Taus
b9f073e596 Python: Update test output 2025-09-19 15:39:12 +00:00
Geoffrey White
523ec9d633 Merge pull request #20439 from geoffw0/assignment
Rust: Add a couple of simple data flow test cases
2025-09-19 16:27:14 +01:00
Taus
95a84ad655 Python: Fix false positive for unmatchable dollar/caret
Our previous modelling did not account for the fact that a lookahead can
potentially extend all the way to the end of the input (and similarly,
that a lookbehind can extend all the way to the beginning).

To fix this, I extended `firstPart` and `lastPart` to handle lookbehinds
and lookaheads correctly, and added some test cases (all of which yield
no new results).

Fixes #20429.
2025-09-19 15:06:46 +00:00
Alexander Eyers-Taylor
c1c0828082 Merge pull request #20378 from github/alexet/java-regex-local
Jave: Use force local to make parsing local after global regex finding.
2025-09-19 13:48:43 +01:00
Alexander Eyers-Taylor
27e2c4d580 Merge pull request #20459 from github/alexet/caller_tc
Java: Make a TC overlay caller.
2025-09-19 13:48:34 +01:00
Napalys Klicius
3a6a537986 JS: Add change note 2025-09-19 14:47:58 +02:00
Napalys Klicius
6cfc950159 JS: Model GraphQLObjectType resolve params as sources 2025-09-19 14:39:36 +02:00
Simon Friis Vindum
afb6d30762 Rust: Fix typo in superseded 2025-09-19 14:27:14 +02:00
Simon Friis Vindum
72103adacc Rust: Fix spurious path resolution
The annotated impl block was filtered away, but it's children where not. This caused the associated type `Foo` to appear as if it was an item in the scope outside of the impl block.
2025-09-19 14:25:11 +02:00
Simon Friis Vindum
60ceb89f01 Rust: Add debug predicate for ItemNode 2025-09-19 14:23:44 +02:00
Napalys Klicius
d88bc8e408 JS: Add test case for GraphQLObjectType 2025-09-19 14:23:40 +02:00
Simon Friis Vindum
a9d7662bb7 Rust: Add path resolution test with attribute on impl block 2025-09-19 14:23:39 +02:00
Simon Friis Vindum
2c84b49ced Rust: Update test expecations 2025-09-19 14:22:10 +02:00
Simon Friis Vindum
32365fd673 Rust: Account for attribute expansions in path resolution 2025-09-19 14:22:00 +02:00
Simon Friis Vindum
c7a9cc5a42 Rust: Use annotations also for items in macro expansions 2025-09-19 14:19:27 +02:00
Tom Hvitved
5d3b5424ba Merge pull request #20453 from hvitved/rust/path-resolution-use-reexport
Rust: Path resolution improvements
2025-09-19 13:34:56 +02:00
Philip Ginsbach
b85ab3c0ab Merge pull request #20490 from github/ginsbach/AdditionalAndExtensible
documentation: add some missing mentions of `additional` and `extensible`
2025-09-19 11:54:45 +01:00
Philip Ginsbach
b27d374578 mention 'additional' and 'extensible' annotations 2025-09-19 10:57:03 +01:00
Philip Ginsbach
a6c1ffc45d sort the annotations alphabetically 2025-09-19 10:56:57 +01:00
Tom Hvitved
f6bdfba3b3 Rust: Path resolution improvements 2025-09-19 09:43:22 +02:00
Tom Hvitved
c831a8c2d9 Rust: Add more path resolution tests 2025-09-19 09:36:54 +02:00
Kasper Svendsen
dbb9a26f78 Overlay: Future-proof Java XML discarding 2025-09-18 11:37:38 +02:00
Kasper Svendsen
3cd737e40d Overlay: Future-proof Java config discarding 2025-09-18 10:57:22 +02:00
Joe Farebrother
2cd1d2fd2f Merge pull request #20392 from joefarebrother/python-qual-file-not-closed
Python: Improve File Not Closed query to reduce false positives and provide clearer alerts
2025-09-18 09:33:08 +01:00
Anders Schack-Mulligen
8f859647c4 Merge pull request #20457 from aschackmull/shared/cfg-fix-joinblock-pred
Shared/Cfg: Fix missing JoinBlockPredecessor.
2025-09-18 09:28:24 +02:00
Tom Hvitved
51a33c279d Merge pull request #20460 from hvitved/rust/source-inline-flow-path-problem 2025-09-18 09:27:06 +02:00
Anders Schack-Mulligen
d93b2edc0d Ruby: Accept test changes. 2025-09-18 08:13:43 +02:00
Tom Hvitved
aba2cb487e Rust: Convert data flow test to @kind path-problem 2025-09-17 20:52:17 +02:00
Chad Bentz
141b470002 Merge branch 'main' into ruby-framework-grape 2025-09-17 12:12:13 -04:00
Alex Eyers-Taylor
34b40a14e8 Java: Make a TC overlay caller. 2025-09-17 16:22:22 +01:00
Anders Schack-Mulligen
d5a238768c Shared/Cfg: Fix missing JoinBlockPredecessor. 2025-09-17 16:37:23 +02:00
Napalys Klicius
4f8166a661 Merge pull request #20450 from Napalys/js/graph-ql-ench
JS: Improve graphql flow
2025-09-17 16:32:01 +02:00
Simon Friis Vindum
203788d4f1 Merge pull request #20408 from paldepind/rust/update-rust-analyzer
Rust: Upgrade to rust-analyzer 0.0.301
2025-09-17 16:04:35 +02:00
Geoffrey White
1bccf42556 Rust: Update test results following fix on main. 2025-09-17 14:02:06 +01:00
Geoffrey White
3910a348fd Merge branch 'main' into assignment 2025-09-17 13:56:57 +01:00
Michael Nebel
398f29a995 Merge pull request #20292 from michaelnebel/csharp/code-quality-extended
C#: Add most `medium` precision queries to the `code-quality-extended` suite.
2025-09-17 14:34:08 +02:00
Joe Farebrother
f3802ec60f Merge pull request #20217 from joefarebrother/python-qual-signature-mismatch
Python: Modernize the Signature Mismatch query
2025-09-17 13:29:33 +01:00
Ian Lynagh
c653d939d9 Merge pull request #20451 from github/post-release-prep/codeql-cli-2.23.1
Post-release preparation for codeql-cli-2.23.1
2025-09-17 13:00:14 +01:00
Michael Nebel
34ebed1a24 Merge pull request #20402 from michaelnebel/python/code-quality-extended
Python: Add most `medium` precision queries to the `code-quality-extended` suite.
2025-09-17 13:48:35 +02:00
Michael Nebel
6d330891db Merge pull request #20395 from michaelnebel/javascript/code-quality-extended
JS: Add most `medium` precision queries to the `code-quality-extended` suite.
2025-09-17 13:47:02 +02:00
Michael Nebel
7589d0a18a Merge pull request #20394 from michaelnebel/java/code-quality-extended
Java: Add most `medium` precision queries to the `code-quality-extended` suite.
2025-09-17 13:46:24 +02:00
Taus
f5a06bef4a Merge pull request #19929 from github/tausbn/python-update-tree-sitter-dependency
Python: Update `tree-sitter` dependency
2025-09-17 13:40:13 +02:00
Napalys Klicius
4226fd29f5 Merge pull request #20162 from Napalys/python/global_variable_tracking
Python: Add jump steps for global variable nested field access
2025-09-17 13:38:07 +02:00
Anders Schack-Mulligen
ab5f6717b6 Merge pull request #20449 from aschackmull/csharp/nullguard-pattern
C#: Bugfix for nullguards for complex patterns.
2025-09-17 13:10:16 +02:00
Anders Schack-Mulligen
afc98cacbe C#: Add change note. 2025-09-17 12:49:25 +02:00
Napalys Klicius
7affcf40c2 JS: Add variableValues to the previous summaryModel to enchance the flow. 2025-09-17 12:24:14 +02:00
Napalys Klicius
6c18b4de40 JS: Add test case for graph ql variableValues injection 2025-09-17 12:21:21 +02:00
github-actions[bot]
4e8343664f Post-release preparation for codeql-cli-2.23.1 2025-09-17 10:13:40 +00:00
Anders Schack-Mulligen
5e76d5ff3f C#: Rename predicate as per review, and fixup qltest. 2025-09-17 11:58:39 +02:00
Napalys Klicius
6d461d6b50 JS: Add change note 2025-09-17 11:48:49 +02:00
Napalys Klicius
4282005e32 JS: Add summary model for graphql's rootValue 2025-09-17 11:48:44 +02:00
Simon Friis Vindum
05d5c1dda7 Merge pull request #20398 from paldepind/rust/warp-model
Rust: Add tests and models for Warp
2025-09-17 11:37:56 +02:00
Ian Lynagh
ce9c8e6e9f Merge pull request #20447 from github/release-prep/2.23.1
Release preparation for version 2.23.1
2025-09-17 10:26:24 +01:00
Napalys Klicius
a6d728a66d JS: Add test case with missing alert using graphql 2025-09-17 11:23:49 +02:00
Napalys Klicius
e1d27f340e Merge pull request #20135 from Napalys/js/dynamodb
JS: Modeling of `aws-sdk` clients*
2025-09-17 10:47:39 +02:00
Simon Friis Vindum
c1ebe920a1 Rust: Update expected file 2025-09-17 10:38:00 +02:00
Napalys Klicius
ca667b5131 JS: fix test expectations from rebasing 2025-09-17 10:24:45 +02:00
Napalys Klicius
4df8db0d7e Renamed AWS-V3-Common to @aws-sdk/client.Client 2025-09-17 10:21:29 +02:00
Napalys Klicius
10f3a83fcb Fixed model type names
Co-authored-by: asgerf <asgerf@users.noreply.github.com>
2025-09-17 10:21:23 +02:00
Napalys Klicius
9ca4773227 Added modeling for CreatePreparedStatementCommand 2025-09-17 10:21:10 +02:00
Napalys Klicius
872b6d8bee Added test case for CreatePreparedStatementCommand 2025-09-17 10:21:01 +02:00
Napalys Klicius
b89e70b5a0 Added test cases for aws sources 2025-09-17 10:20:52 +02:00
Napalys Klicius
801a34f6a1 Moved typeModel at the start of the file 2025-09-17 10:20:24 +02:00
Napalys Klicius
9beac51586 Unified aws-db modeling into singular file 2025-09-17 10:20:10 +02:00
Napalys Klicius
5b31350e83 Added tests and modeling of database-access-result 2025-09-17 10:20:01 +02:00
Napalys Klicius
93d9ae73b7 Updated change note 2025-09-17 10:19:52 +02:00
Napalys Klicius
e5f02852e1 Added modeling of rds v2 and v3 for sql injections 2025-09-17 10:19:22 +02:00
Napalys Klicius
5b5c17100c Added test cases for client-rds-data for sql injections 2025-09-17 10:19:10 +02:00
Napalys Klicius
0e6bac73a7 Added modeling of athena v2 and v3 for sql injections 2025-09-17 10:18:58 +02:00
Napalys Klicius
af97b0edc2 Added test cases for athena v2 and v3 for sql injections 2025-09-17 10:16:38 +02:00
Napalys Klicius
ee1af432fe Added modeling of client-s3 v2 and v3 2025-09-17 10:16:25 +02:00
Napalys Klicius
5e6118ef3f Added test cases for client-s v2 and v3 sql injection 2025-09-17 10:15:43 +02:00
Napalys Klicius
1149617f7b Added change note 2025-09-17 10:15:32 +02:00
Napalys Klicius
06ab918985 Added modeling for V2 of dynamoDB 2025-09-17 10:15:19 +02:00
Napalys Klicius
ae2e8b1292 Added modeling of dynamodb v3 for sql injections 2025-09-17 10:13:24 +02:00
Napalys Klicius
0a3343a07d Added test cases for v2 and v3 sql injection of dynamodb 2025-09-17 10:11:31 +02:00
Simon Friis Vindum
e80c192cf2 Rust: Use async closure instead of async block 2025-09-17 10:01:51 +02:00
Anders Schack-Mulligen
62c8f28e74 C#: Bugfix for nullguards for complex patterns. 2025-09-17 09:28:54 +02:00
Tom Hvitved
a7173e0c05 Merge pull request #20443 from hvitved/rust/ssa-adjust-write-note
Rust: Adjust SSA write node for (compound) assignments
2025-09-17 09:25:50 +02:00
Simon Friis Vindum
46cd62bd51 Rust: Use .. notation in model 2025-09-17 09:18:41 +02:00
Simon Friis Vindum
f432498574 Rust: Use comma notation in Warp model 2025-09-17 09:18:40 +02:00
Simon Friis Vindum
1af6b37fc4 Rust: Add models for Warp 2025-09-17 09:18:39 +02:00
Simon Friis Vindum
bfe934118d Rust: Add web framework tests for Warp 2025-09-17 09:18:37 +02:00
Chad Bentz
c5e3be2c4c Grape - detect params calls inside helper methods
- added unit tests for flow using inline format
- removed grape from Arel tests (temporary)
2025-09-16 17:09:18 -04:00
Geoffrey White
6f1fcbf41b Rust: Add IPv6 private address range (and explanatory comments). 2025-09-16 17:21:08 +01:00
Taus
8fd62252fd Python: Fix bad join in globalVariableNestedFieldJumpStep 2025-09-16 18:12:29 +02:00
Napalys Klicius
431fc8880e Python: Add change note 2025-09-16 18:08:53 +02:00
Napalys Klicius
e82fe9d919 Python: Updated doc string and removed redundant predicate. 2025-09-16 18:08:53 +02:00
Taus
e228aac61f Python: Use AttrWrite.writes
Also applies @napalys' fix to the base case.
2025-09-16 18:08:53 +02:00
Taus
6f9e06c59e Python: Add AttrWrite.writes and AttrRead.reads
The latter of these is identical to `AttrRef.accesses`, but makes the
API a bit more intuitive.
2025-09-16 18:08:53 +02:00
Napalys Klicius
8393ccf39d Python: Update globalVariableAttrPathAtDepth base case 2025-09-16 18:08:53 +02:00
Taus
6133f01c81 Python: Rewrite access path computation 2025-09-16 18:08:53 +02:00
Taus
69b5853477 Python: Keep track of access path 2025-09-16 18:08:53 +02:00
Napalys Klicius
e60d0c88f1 Python: Add global variable nested field jump steps 2025-09-16 18:08:53 +02:00
Napalys Klicius
9d4b168977 Python: Added extra test for global variable nested attribute reads/writes. 2025-09-16 18:08:53 +02:00
Napalys Klicius
6c779c7fa5 Python: Added extra test cases for path injection with FastAPI 2025-09-16 18:08:53 +02:00
Napalys Klicius
f209e3a0fe Python: Updated PathInjection tests to use inline test expectations 2025-09-16 18:08:53 +02:00
Alex Eyers-Taylor
2201974844 Jave: Use force local to make parsing local after global regex finding. 2025-09-16 15:55:04 +01:00
github-actions[bot]
02a1b1efcb Release preparation for version 2.23.1 2025-09-16 14:14:42 +00:00
Geoffrey White
7c22fe269f Merge branch 'main' into https 2025-09-16 14:28:23 +01:00
Chad Bentz
ffd32efba2 codeql query format 2025-09-16 09:08:07 -04:00
Geoffrey White
31bf86fd1b Rust: Improve the flow around the qhelp example. 2025-09-16 14:04:55 +01:00
Geoffrey White
0eb602aad2 Rust: Update a redirected URL. 2025-09-16 14:00:43 +01:00
Asger F
7670a2bd77 Merge pull request #20375 from asgerf/js/promise-try
JS: Support Promise.try and Array.prototype.with
2025-09-16 14:44:07 +02:00
Geoffrey White
5d40075944 Merge branch 'main' into assignment 2025-09-16 13:30:20 +01:00
Jonas Jensen
eac8a79d49 Merge pull request #20420 from jbj/no-qll-deprecation
Docs: remove 1-year deprecation period for QL libraries
2025-09-16 14:18:36 +02:00
Napalys Klicius
97a11de1e3 Merge pull request #20435 from Napalys/js/promisification_modeling
JS: Promisification library modeling and enhance flow
2025-09-16 14:07:53 +02:00
Geoffrey White
4b281fdf12 Rust: Use case insensitive regexps. 2025-09-16 13:02:54 +01:00
Michael Nebel
d903448695 C#: Add change note. 2025-09-16 13:58:28 +02:00
Michael Nebel
f9cecfb666 C#: Update integration test expected output. 2025-09-16 13:56:14 +02:00
Michael Nebel
98a7cd24c0 C#: Remove all cs/xmldoc/* queries from the code-quality-extended suite. 2025-09-16 13:56:13 +02:00
Michael Nebel
0ce0e834ed C#: Update integration tests expected output. 2025-09-16 13:56:11 +02:00
Michael Nebel
cdd379113e C#: Remove cs/captured-foreach-variable from the code-quality-extended suite. 2025-09-16 13:56:09 +02:00
Michael Nebel
47873c20de C#: Fix incorrect tagging. 2025-09-16 13:56:07 +02:00
Michael Nebel
c9a761f202 C#: Remove the cs/xmldoc/missing-xmldoc from the code-quality-extended. 2025-09-16 13:56:05 +02:00
Michael Nebel
906e9de5ee C#: Update query-suite integration tests expected output. 2025-09-16 13:56:04 +02:00
Michael Nebel
17735a9a43 C#: Add queries medium precision queries to the code-quality-extended suite (and update tags). 2025-09-16 13:56:02 +02:00
Geoffrey White
80ce55ab10 Rust: Make the private address spaces URL more accurate. 2025-09-16 12:53:44 +01:00
Asger F
edf79a3730 JS: Change note 2025-09-16 13:53:31 +02:00
Asger F
0b900711bf Update javascript/ql/lib/semmle/javascript/frameworks/Express.qll
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-16 13:48:26 +02:00
Geoffrey White
0f5aa857b8 Rust: Remove unnecessary import. 2025-09-16 12:41:28 +01:00
Geoffrey White
9c7fc58337 Rust: Add tests for a few more edge cases. 2025-09-16 12:41:00 +01:00
Michael Nebel
6d9e489e7c Merge pull request #20445 from michaelnebel/csharp/fixintegrationtest
C#: Fix failing integration test after new version of `NewtonSoft.JSon` has been released.
2025-09-16 13:38:55 +02:00
Geoffrey White
0924dec545 Rust: Make the tests of the example code closer to the actual example code. 2025-09-16 12:28:52 +01:00
Tom Hvitved
a2d83274bc Merge pull request #20441 from geoffw0/fixrfquery
Rust: Fix a minor issue with the test for rust/request-forgery
2025-09-16 13:22:58 +02:00
Geoffrey White
7b04cf1a73 Rust: Fix up the test annotations. 2025-09-16 12:20:29 +01:00
Michael Nebel
8fbd720fe5 C#: Fix failing integration test after new version of NewtonSoft.JSon has been released. 2025-09-16 13:14:23 +02:00
Napalys Klicius
49ccb8ce2b JS: Simplify exist clause to use Promisify::PromisifyAllCall instead of DataFlow::SourceNode 2025-09-16 13:13:15 +02:00
Asger F
429c4eac96 JS: Add support for Array.prototype.with
Note: This was authored by Copilot
2025-09-16 13:06:59 +02:00
Asger F
ee78b7dc96 JS: Add support for Promise.try 2025-09-16 13:06:57 +02:00
Tom Hvitved
7cac226ad9 Rust: Adjust SSA write node for (compound) assignments 2025-09-16 13:05:50 +02:00
Tom Hvitved
4e77b1b9b8 Rust: Add self-assignment variable test 2025-09-16 13:05:48 +02:00
Asger F
45eff3dac8 Merge pull request #20399 from asgerf/js/default-interop2
JS: Refactor handling of ambiguous default imports
2025-09-16 13:02:22 +02:00
Asger F
78bfdfd931 Merge pull request #20390 from asgerf/post-update-consistency
DataFlow: Permit local flow between post-update nodes
2025-09-16 13:00:29 +02:00
Geoffrey White
49de716f10 Rust: Accept consistency check changes. 2025-09-16 10:50:28 +01:00
Mathias Vorreiter Pedersen
fa36d9f84e Merge pull request #20438 from MathiasVP/remove-antijoin-in-shared-guards
Shared: Remove antijoin from `Guards.qll`
2025-09-16 10:40:45 +01:00
Anders Schack-Mulligen
0ceb2f3f72 Merge pull request #20442 from aschackmull/csharp/default-tostring-enum
C#: Exclude enum types as they don't inherit the default toString.
2025-09-16 11:12:21 +02:00
Anders Schack-Mulligen
57e15b9a91 Merge pull request #20367 from aschackmull/shared/controlflow
Shared/Java: Introduce a shared control flow reachability library and replace the Java Nullness implementation.
2025-09-16 10:44:44 +02:00
Anders Schack-Mulligen
107d142b24 C#: Exclude enum types as they don't inherit the default toString. 2025-09-16 10:33:25 +02:00
Jeroen Ketema
6264f46970 Merge pull request #20440 from MathiasVP/converted-barrier-in-unbounded-write
C++: Fix barrier in `cpp/unbounded-write`
2025-09-16 10:19:21 +02:00
Geoffrey White
61faeef1d3 Rust: Pretty print models, so that the MaD IDs aren't reported raw / in continual flux. 2025-09-16 09:00:40 +01:00
Geoffrey White
5c33af32e3 Rust: Update .expected file. 2025-09-16 08:55:49 +01:00
Asger F
65102a073a Merge pull request #19770 from trailofbits/VF/async-package-improvements
Improve data flow in the `async` package
2025-09-16 08:55:52 +02:00
Asger F
f587273828 Merge pull request #19768 from trailofbits/VF/lodash-group-by
Add lodash GroupBy as taint step
2025-09-16 08:55:13 +02:00
Chad Bentz
0d0ce32ef2 Merge branch 'ruby-framework-grape' of github.com:felickz/codeql into ruby-framework-grape 2025-09-15 22:11:38 -04:00
Chad Bentz
fc98cd8d08 Fix naming standards 2025-09-15 22:11:33 -04:00
Chad Bentz
19cb187436 Update ruby/ql/lib/codeql/ruby/frameworks/Grape.qll
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-15 22:03:27 -04:00
Chad Bentz
6cea93919e Merge branch 'main' into ruby-framework-grape 2025-09-15 22:02:24 -04:00
Chad Bentz
a8d4d6b563 Apply naming standards + changenote 2025-09-15 22:02:03 -04:00
Chris Smowton
c375f24598 Merge pull request #20423 from smowton/smowton/fix/length-comparison-off-by-one-fp
JS: Recognise that a less-than test is as good as a non-equal test for mitigating off-by-one array access
2025-09-15 18:24:45 +01:00
Geoffrey White
3ca287454a Merge branch 'main' into assignment 2025-09-15 18:01:19 +01:00
Geoffrey White
8442146a0f Rust: Add a couple of simple data flow test cases. 2025-09-15 17:37:30 +01:00
Napalys Klicius
278a1efb4b JS: Add change note 2025-09-15 18:21:45 +02:00
Mathias Vorreiter Pedersen
18c96fd7d4 Shared: Remove antijoin. 2025-09-15 17:12:23 +01:00
Ian Lynagh
9231119b07 Merge pull request #20437 from github/igfoo/tweak-release-note
C++: Tweak a release note
2025-09-15 16:39:51 +01:00
Mathias Vorreiter Pedersen
a4c845c418 C++: Fix barrier in 'cpp/unbounded-write'. 2025-09-15 16:34:05 +01:00
Ian Lynagh
cc72314219 C++: Tweak a release note 2025-09-15 16:26:32 +01:00
Ian Lynagh
7860857b55 Merge pull request #20434 from github/igfoo/fix-typo
javascript: Fix spelling error in documentation
2025-09-15 16:21:57 +01:00
Ian Lynagh
b797df6ad5 Merge pull request #20436 from github/igfoo/fix-typo-substract
Csharp: Fix typo in LeapYear qhelp
2025-09-15 16:21:26 +01:00
Napalys Klicius
3a75500f54 JS: Add modeling for call-me-maybe 2025-09-15 17:15:31 +02:00
Napalys Klicius
0d23ab07db JS: Add data flow modeling for promisified user-defined functions 2025-09-15 17:13:13 +02:00
Napalys Klicius
2c6db00cbc JS: Add modeling for util promisify* 2025-09-15 17:09:28 +02:00
Napalys Klicius
e002f2088f JS: Add modeling for es6-promisify 2025-09-15 17:04:34 +02:00
Napalys Klicius
35c75c00ba JS: Add modeling for @gar/promisify 2025-09-15 16:58:11 +02:00
Napalys Klicius
312471e9db JS: Add modeling for @google-cloud/promisify 2025-09-15 16:55:27 +02:00
Napalys Klicius
d37425ae3e JS: Treat promisify(obj).member as obj.member 2025-09-15 16:51:19 +02:00
Ian Lynagh
5cf052dec1 Csharp: Fix typo in LeapYear qhelp
Corrects "add/substract" to "add/subtract" in the UnsafeYearConstruction.qhelp
file to improve clarity.
2025-09-15 15:44:11 +01:00
Napalys Klicius
22b61852a1 JS: Add modeling for thenify-all 2025-09-15 16:31:14 +02:00
Napalys Klicius
d6a14e63ba JS: Add test cases for promisification libraries. 2025-09-15 16:21:12 +02:00
Ian Lynagh
d0091e1b3c javascript: Fix spelling error in documentation
Corrects the spelling of "occurrences" in the Incomplete Multi-Character
Sanitization documentation to improve clarity.
2025-09-15 14:53:22 +01:00
copilot-swe-agent[bot]
e630bf86bd Implement Rust non-HTTPS URL query (CWE-319)
Co-authored-by: geoffw0 <40627776+geoffw0@users.noreply.github.com>
2025-09-15 11:44:05 +00:00
copilot-swe-agent[bot]
459f00ab41 Initial plan 2025-09-15 11:25:11 +00:00
Simon Friis Vindum
78389c8897 Merge pull request #20133 from paldepind/rust/type-inference-blanket-impl
Rust: Support blanket implementations
2025-09-15 12:46:41 +02:00
Simon Friis Vindum
af49301332 Merge pull request #20381 from paldepind/rust/request-forgery-query
Rust: Add basic request forgery query
2025-09-15 12:46:23 +02:00
Geoffrey White
00f644888c Merge pull request #20426 from geoffw0/cookie2
Rust: cookie and biscotti crypto query sinks
2025-09-15 11:07:46 +01:00
Anders Schack-Mulligen
acb4d9f681 Shared: Copy some qldoc from Guards.qll 2025-09-15 11:41:23 +02:00
Simon Friis Vindum
35438294d1 Rust: Remove condition that always holds 2025-09-15 10:58:27 +02:00
Anders Schack-Mulligen
be39c4c0cd Shared: Minor precision improvement. 2025-09-15 10:38:49 +02:00
Simon Friis Vindum
875c7da87c Rust: Improve comments in type inference 2025-09-15 10:37:38 +02:00
Anders Schack-Mulligen
b308c5438f Java: Add a change note, and a minor ql comment. 2025-09-15 10:14:26 +02:00
Simon Friis Vindum
50bdc658ba Rust: Apply documentation tweaks 2025-09-15 09:32:33 +02:00
Chad Bentz
5cfa6e83b3 Add support for route parameters(+ blocks), headers, and cookies in Grape API 2025-09-12 22:51:47 -04:00
Chad Bentz
3252bd39d2 Enhance Grape framework with additional data flow modeling and helper method support 2025-09-12 22:13:21 -04:00
Chad Bentz
738ab6fba7 Refactor Grape framework code for improved readability and consistency 2025-09-12 19:23:15 -04:00
Chad Bentz
d295acc3c3 Add initial support for Ruby Grape 2025-09-12 19:22:05 -04:00
Geoffrey White
989081ba4a Rust: Change note. 2025-09-12 18:12:59 +01:00
Geoffrey White
118ac07b71 Rust: Convert 'from' models into one generic one. 2025-09-12 18:05:30 +01:00
Geoffrey White
9f83b67a7c Rust: Model vec::from_elem. 2025-09-12 17:30:44 +01:00
Geoffrey White
e2d94127d6 Rust: Model vec::from. 2025-09-12 16:44:47 +01:00
Geoffrey White
5d3ea2f4d3 Rust: Add models for the cookie and biscotti crates. 2025-09-12 16:13:14 +01:00
Geoffrey White
2bb9e2f7be Rust: Add test cases for hardcoded cryptographic constants in cookies. 2025-09-12 15:42:56 +01:00
Simon Friis Vindum
e2e6fd0683 Rust: Address feedback from PR review 2025-09-12 16:10:58 +02:00
Simon Friis Vindum
19c529e87b Bazel: regenerate vendored cargo dependencies 2025-09-12 15:48:23 +02:00
Simon Friis Vindum
3cf1a16a13 Cargo: upgrade dependencies 2025-09-12 15:45:37 +02:00
Anders Schack-Mulligen
e302616135 Java: Accept qltest change. 2025-09-12 15:41:18 +02:00
Anders Schack-Mulligen
f9ffee010f Java: Minor nullness cleanup. 2025-09-12 15:41:17 +02:00
Anders Schack-Mulligen
2743fc0be1 Guards: Include ConditionalExpr in exprHasValue. 2025-09-12 15:41:17 +02:00
Anders Schack-Mulligen
e8f1ec68db Java: Accept guards test results. 2025-09-12 15:41:17 +02:00
Anders Schack-Mulligen
60d07cf30d Java: Clean up IntegerGuards.qll 2025-09-12 15:41:16 +02:00
Anders Schack-Mulligen
03321ff910 Java: Replace nullness implementation. 2025-09-12 15:41:16 +02:00
Anders Schack-Mulligen
4a8ffea0f6 Shared: Add control flow reachability lib. 2025-09-12 15:41:15 +02:00
Simon Friis Vindum
f48b643375 Bazel: regenerate vendored cargo dependencies 2025-09-12 15:38:18 +02:00
Simon Friis Vindum
12dcd751d3 Rust: Accept test changes 2025-09-12 15:34:09 +02:00
Simon Friis Vindum
29ba013580 Rust: Add support for resolving methods from blanket implementations 2025-09-12 15:34:04 +02:00
Chris Smowton
db5c58180e Change note 2025-09-12 14:32:12 +01:00
Chris Smowton
f5780ae369 Amend docstring 2025-09-12 14:32:10 +01:00
Chris Smowton
4fb133a43d Recognise that a less-than test is as good as a non-equal test for mitigating off-by-one array access 2025-09-12 14:32:07 +01:00
Simon Friis Vindum
d10cdfb7f1 Rust: Move existing blanket implementation test 2025-09-12 15:31:42 +02:00
Simon Friis Vindum
69a1c7e1e8 Rust: Add tests with blanket implementation 2025-09-12 15:26:19 +02:00
Anders Schack-Mulligen
452bbf7289 Java: Add some more nullness tests. 2025-09-12 13:38:21 +02:00
Anders Schack-Mulligen
924a8eac5c Java: Improve precision of SuccessorType labels in CFG. 2025-09-12 13:38:21 +02:00
Anders Schack-Mulligen
1ebdcdfa8c Guards: Support integer ranges. 2025-09-12 13:38:20 +02:00
Anders Schack-Mulligen
db1f399067 Java: Preparatory Nullness refactor. 2025-09-12 13:38:20 +02:00
Anders Schack-Mulligen
e8ddac08b7 Merge pull request #20377 from aschackmull/java/preconditions
Java: Consolidate Assertions.qll and Preconditions.qll.
2025-09-12 13:37:41 +02:00
Alexander Eyers-Taylor
e9fcd985f9 Merge pull request #20357 from github/alexet/java-global-virtual-dispatch
Java: Make Virtual Dispatch Global, but keep SSA local.
2025-09-12 12:20:46 +01:00
Geoffrey White
d638ee9741 Merge pull request #20404 from geoffw0/rustanalyzerdoc
Rust: add `rust-analyzer` update instructions
2025-09-12 11:17:10 +01:00
Jeroen Ketema
7c35835e25 Merge pull request #20422 from jketema/go-log
Go: Retrofit the change log to mention Go 1.25
2025-09-12 11:20:03 +02:00
Jeroen Ketema
a773042c5d Merge pull request #20407 from jketema/dyn-too-many
C++: Add `cpp/uninitialized-local` test
2025-09-12 11:12:28 +02:00
Jeroen Ketema
0f5bd3799e Merge branch 'main' into go-log 2025-09-12 11:12:01 +02:00
Jeroen Ketema
3de9356141 Go: Retrofit the change log to mention Go 1.25
This can only be a minor change (or something similar) to stay within the
semantic versioning contraints. This is because only the patch version of
the Go ql library pack was bumped during the release. Since there were no new
language features in Go 1.25, this might also be the most accurate choice here.
2025-09-12 11:08:42 +02:00
Jeroen Ketema
352610d651 C++: Add GOOD annotation 2025-09-12 10:29:27 +02:00
Simon Friis Vindum
fd5b5baa8f Merge pull request #20403 from paldepind/rust/certain-struct-expr
Rust: Infer certain type information for struct expressions
2025-09-12 10:28:07 +02:00
Geoffrey White
92124a9033 Update rust/README.md 2025-09-12 09:01:13 +01:00
Jonas Jensen
5ac80353d2 Docs: remove outdated link to change notes.
The change notes are now maintained under each query pack, so there's no
single place where we can link to it.
2025-09-12 09:26:23 +02:00
Jonas Jensen
cb766de37e Docs: remove 1-year deprecation period for QL libs
Internal reference: codeql-team ADR 0011.
2025-09-12 09:24:13 +02:00
Simon Friis Vindum
b456a8c4e5 Apply suggestions from code review
Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com>
2025-09-12 09:09:00 +02:00
Asger F
132a8b8b53 JS: Model json and jsonp methods 2025-09-12 08:51:23 +02:00
Asger F
d729ab501b JS: Add test that calls .json or .jsonp 2025-09-12 08:51:21 +02:00
Alex Eyers-Taylor
d5ee91b1e8 Java: Adress comments form code review. 2025-09-11 17:14:08 +01:00
Geoffrey White
aaa67a2da9 Update rust/README.md
Co-authored-by: Simon Friis Vindum <paldepind@github.com>
2025-09-11 17:12:22 +01:00
Ian Lynagh
ffeece1179 Merge pull request #20410 from igfoo/igfoo/bmn-med
C++: Remove the BMN filter from some queries, but reduce precision to medium
2025-09-11 17:01:35 +01:00
Ian Lynagh
050a9e155f C++: Add changenote for changes to some queries
Queries affected:
    cpp/wrong-type-format-argument
    cpp/comparison-with-wider-type
    cpp/integer-multiplication-cast-to-long
    cpp/implicit-function-declaration
    cpp/suspicious-add-sizeof
2025-09-11 15:56:41 +01:00
Idriss Riouak
8ce2d3954e Merge pull request #20413 from github/idrissrio/java25-change-note
Java: Add change note and update supported versions
2025-09-11 16:39:28 +02:00
Ian Lynagh
cc131a09a1 C++: Accept changes to cpp/ql/integration-tests/query-suite 2025-09-11 15:01:04 +01:00
Michael Nebel
0b43203349 Merge pull request #20401 from michaelnebel/csharp/deprecatecapturedforeachvariable
C#: Deprecate `cs/captured-foreach-variable`.
2025-09-11 15:01:29 +02:00
Asger F
ae4cf302f2 Remove failures from dataflow-consistency expectations 2025-09-11 14:49:58 +02:00
Asger F
511308746c DataFlow: Permit local flow between post-update nodes 2025-09-11 14:49:56 +02:00
idrissrio
a0e963f769 Java: Add change note and update supported versions 2025-09-11 14:37:36 +02:00
Ian Lynagh
b3f4c68a1d C++: Remove the BMN filter from some queries, but reduce precision to medium
Remove the `not any(Compilation c).buildModeNone() and` clause from:
    cpp/wrong-type-format-argument
    cpp/comparison-with-wider-type
    cpp/integer-multiplication-cast-to-long
    cpp/implicit-function-declaration
    cpp/suspicious-add-sizeof
but reduce their precision to `medium`.
2025-09-11 13:32:11 +01:00
Idriss Riouak
0b5745c24b Merge pull request #20405 from github/workflow/coverage/update
Update CSV framework coverage reports
2025-09-11 14:17:08 +02:00
Michael B. Gale
f4575d9d03 Merge pull request #20406 from github/dependabot/go_modules/go/extractor/extractor-dependencies-93606d20ee
Bump golang.org/x/tools from 0.36.0 to 0.37.0 in /go/extractor in the extractor-dependencies group
2025-09-11 13:11:28 +01:00
Simon Friis Vindum
4d0635dc8a Update qhelp for request forgery query
Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com>
2025-09-11 13:55:51 +02:00
Jeroen Ketema
d87e9ec095 Merge pull request #20409 from jketema/jketema/swift-changenote
Swift: Mention in update playbook that we want a change note
2025-09-11 13:03:56 +02:00
Owen Mansel-Chan
f74913aa4d Merge pull request #20411 from owen-mc/go/improve-pun-tests
Go: improve post-update node tests
2025-09-11 12:03:21 +01:00
Simon Friis Vindum
671bea58af Rust: Add certain type information for struct patterns 2025-09-11 12:43:26 +02:00
Owen Mansel-Chan
d9e7c89af0 Add indirect method calls 2025-09-11 11:31:28 +01:00
Owen Mansel-Chan
84e70e166e Add direct method calls 2025-09-11 11:27:56 +01:00
Owen Mansel-Chan
fa18fd2782 Add method defs 2025-09-11 11:24:53 +01:00
Owen Mansel-Chan
cbbf7c2578 Include pre-update node in output 2025-09-11 11:22:17 +01:00
Paolo Tranquilli
051da9d407 Merge branch 'main' into rustanalyzerdoc 2025-09-11 11:48:17 +02:00
Geoffrey White
32131cf9ae Update rust/README.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-11 10:36:04 +01:00
Simon Friis Vindum
50b3571124 Cargo: Revert changes to the Ruby extractors Cargo file 2025-09-11 11:35:33 +02:00
Simon Friis Vindum
61eea66c51 Bazel: regenerate vendored cargo dependencies 2025-09-11 11:35:15 +02:00
Jeroen Ketema
2f9961888a Swift: Mention in update playbook that we want a change note 2025-09-11 11:31:36 +02:00
Asger F
7a2391f848 JS: Deprecate Portals and delete tests
This is a super old attempt at model generation, from before MaD even existed. It's obsolete and just have to be removed.
2025-09-11 11:05:36 +02:00
Simon Friis Vindum
55d022f6eb Cargo: upgrade dependencies 2025-09-11 10:47:26 +02:00
Geoffrey White
8af8c6d95a Rust: Move upgrade script to the very end, add a few details. 2025-09-11 09:47:15 +01:00
Geoffrey White
9a96372f53 Rust: Add some more details. 2025-09-11 09:40:36 +01:00
Jeroen Ketema
2bc035cfcf C++: Update test results after extractor changes 2025-09-11 10:31:01 +02:00
Jeroen Ketema
d224f85b24 C++: Add uninitialized variable FP test 2025-09-11 10:31:00 +02:00
Idriss Riouak
59fc7aa8e1 Merge pull request #20385 from github/idrissrio/java-regression-statsfile
Java: Revert wrongly generated stats file
2025-09-11 10:28:59 +02:00
Anders Schack-Mulligen
e7df1b220c Java: Add change note. 2025-09-11 10:00:53 +02:00
Simon Friis Vindum
eea70069e7 Rust: Infer certain type information for struct expressions 2025-09-11 09:53:56 +02:00
Michael Nebel
c2628fe1df Python: Update integration tests expected output. 2025-09-11 08:44:18 +02:00
Michael Nebel
a774c65162 Python: Remove py/missing-docstring from code-quality-extended. 2025-09-11 08:41:33 +02:00
dependabot[bot]
b996dc3b62 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.36.0 to 0.37.0
- [Release notes](https://github.com/golang/tools/releases)
- [Commits](https://github.com/golang/tools/compare/v0.36.0...v0.37.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-11 03:08:27 +00:00
github-actions[bot]
a6714809c4 Add changed framework coverage reports 2025-09-11 00:22:32 +00:00
Paolo Tranquilli
a9a0cb928e Rust: add rust-analyzer update instructions 2025-09-10 18:30:37 +01:00
Alex Eyers-Taylor
dcc5572767 Java: Hnalde global files as exceptions rather than annotating them
This allows us to merge them without redundent annoations for now.
2025-09-10 17:26:54 +01:00
Alex Eyers-Taylor
5c19aad012 Java: Make Virtual Dispatch Global, but keep SSA local.
Use forceLocal to achive this.
2025-09-10 17:26:54 +01:00
Mathias Vorreiter Pedersen
4227dd7d73 Merge pull request #20400 from MathiasVP/cleanup-incorrect-scanf-query
C++: Cleanup `ScanfChecks.qll`
2025-09-10 16:31:49 +01:00
Michael Nebel
07932590b5 Java: Update integration test expected output. 2025-09-10 16:15:48 +02:00
Michael Nebel
8e392cf8de Java: Remove java/undocumented-* queries from the code-quality-extended suite. 2025-09-10 16:13:24 +02:00
Michael Nebel
6ff6d0f6bd Java: Update integration test expected output. 2025-09-10 16:11:22 +02:00
Michael Nebel
56802035df Java: Add some medium precision queries to the code-quality-extended suite. 2025-09-10 16:11:20 +02:00
Michael Nebel
7c58098f12 Python: Update integration tests expected output. 2025-09-10 16:08:14 +02:00
Michael Nebel
7c0aa78e39 Python: Add many medium precision queries to the code-quality-extended suite. 2025-09-10 16:06:38 +02:00
Anders Schack-Mulligen
b5c7bc1b33 Java: Accept test output. 2025-09-10 15:42:18 +02:00
Anders Schack-Mulligen
3815503314 Java: Consolidate Assertions.qll and Preconditions.qll. 2025-09-10 15:42:18 +02:00
Simon Friis Vindum
065388df91 Rust: Fix formatting 2025-09-10 14:50:35 +02:00
Simon Friis Vindum
d1a3294f06 Merge branch 'main' into rust/request-forgery-query 2025-09-10 14:48:22 +02:00
idrissrio
762d2ef793 Java: Manually add new relation to stats file 2025-09-10 14:44:52 +02:00
idrissrio
a20737308a Java: Revert wrongly generated stats file
The stats file generated in commit
a6b68ec7de (diff-a4cfdde566085b7f1c1315487c13ef64e4869729ae7886b6c8f4267e3cd4eab6)
was created using the wrong process.

This commit reverts that change and manually adds the new relation
for isImplicitClass.
2025-09-10 14:44:50 +02:00
Simon Friis Vindum
c73d081a32 Rust: Fix based on review 2025-09-10 14:41:20 +02:00
Simon Friis Vindum
50cd200ec5 Apply suggestions from code review
Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com>
2025-09-10 14:34:54 +02:00
Mathias Vorreiter Pedersen
edec76ae10 Merge pull request #20370 from MathiasVP/source-bounded-fast-tc-in-typetracking
Shared: Use `sourceBoundedFastTC` in TypeTracking
2025-09-10 13:04:49 +01:00
Michael Nebel
186e42b1fe C#: Add change note. 2025-09-10 14:04:02 +02:00
Michael Nebel
e5da0b90ce C#: Deprecate cs/captured-foreach-variable. 2025-09-10 14:04:01 +02:00
Asger F
d39263dcac Merge pull request #20317 from asgerf/js/xunit
JS: Avoid overriding Expr predicates in xUnit.qll
2025-09-10 13:41:21 +02:00
Mathias Vorreiter Pedersen
72d7223fd0 C++: Small drive by cleanup. Delete unnecessary nested 'exists'. 2025-09-10 12:35:59 +01:00
Mathias Vorreiter Pedersen
d097946e1f C++: No need for this additional case. 2025-09-10 12:35:24 +01:00
Mathias Vorreiter Pedersen
5a9b562f19 Merge branch 'main' into source-bounded-fast-tc-in-typetracking 2025-09-10 12:14:01 +01:00
Asger F
dacc9e26e9 JS: Refactor 'default' import interop 2025-09-10 13:03:36 +02:00
Mathias Vorreiter Pedersen
f8bdf924db Shared: Make 'standardFlowsTo' private. 2025-09-10 11:26:36 +01:00
Mathias Vorreiter Pedersen
b7bc94b987 Update shared/typetracking/codeql/typetracking/internal/TypeTrackingImpl.qll
Co-authored-by: Anders Schack-Mulligen <aschackmull@users.noreply.github.com>
2025-09-10 11:21:25 +01:00
Michael Nebel
046d0d4938 Merge pull request #20396 from michaelnebel/csharp/improveintegrationteststability
C#: Increase attempts to reach nuget.org in integration tests to reduce flakiness.
2025-09-10 12:19:49 +02:00
Michael Nebel
e5ba1c7a84 Merge pull request #20352 from michaelnebel/csharp/dotnet908
C#: Update to .NET SDK 9.0.300 and .NET Runtime 9.0.5.
2025-09-10 12:09:35 +02:00
Idriss Riouak
b89b68dfdb Merge pull request #20339 from github/idrissrio/scoped-values
Java: Add MaDs for `java.lang.ScopedValue`
2025-09-10 11:21:34 +02:00
Idriss Riouak
166c77d776 Merge pull request #20345 from github/idrissrio/java-kdf
Java: Add MaDs for `java.crypto.KDF`
2025-09-10 11:21:19 +02:00
Asger F
09edc29979 Merge pull request #20322 from asgerf/js/react-no-override
JS: Do not override AST methods in React model
2025-09-10 10:42:59 +02:00
Michael Nebel
fbc4f0b84f C#: Increase attempts to reach nuget.org in integration tests to reduce flakiness. 2025-09-10 09:03:11 +02:00
Asger F
d575d3c9e4 Merge pull request #20374 from asgerf/js/typescript-5.9
JS: Support TypeScript 5.9 and support 'import defer' syntax
2025-09-09 20:50:04 +02:00
Joe Farebrother
f9e094de61 Simplify choosaASignatureMismatchWitness for improved performance 2025-09-09 17:25:48 +01:00
Jeroen Ketema
174f89fbcb Merge pull request #20384 from jketema/swift-6.1.3
Swift: Update to Swift 6.1.3
2025-09-09 17:06:12 +02:00
Joe Farebrother
ea562de3e6 Fix tests 2025-09-09 15:17:16 +01:00
Tom Hvitved
125cc91ba6 Merge pull request #20358 from hvitved/shared/type-inference-generalize
Shared: Make some generalizations in type inference library
2025-09-09 16:08:30 +02:00
Michael Nebel
1c801bd856 JavaScript: Update integration test expected output. 2025-09-09 15:48:31 +02:00
Michael Nebel
58862f4ace JavaScript: Add some medium precision queries to the code-quality-extended suite. 2025-09-09 15:47:03 +02:00
Tom Hvitved
e3e1bcd63f Rename Environment -> AccessEnvironment 2025-09-09 15:06:56 +02:00
Tom Hvitved
2e90499df4 Rename State -> Environment 2025-09-09 15:05:58 +02:00
Tom Hvitved
a1980ee23c Shared: Make some generalizations in type inference library 2025-09-09 15:05:56 +02:00
Joe Farebrother
ec40ea800d Update qldoc 2025-09-09 13:46:52 +01:00
Joe Farebrother
b01b40b51b Update test output 2025-09-09 13:44:03 +01:00
Simon Friis Vindum
b34fa7abc0 Merge pull request #20393 from paldepind/rust/impl-to-string
Rust: Improve `toString` for `impl`
2025-09-09 14:16:01 +02:00
Simon Friis Vindum
f7c74664fa Rust: Improve a few toString implementations 2025-09-09 13:46:51 +02:00
Mathias Vorreiter Pedersen
417e79c3c0 Merge pull request #20382 from MathiasVP/simplify-ssl-result-not-checked
C++: Simplify `cpp/certificate-not-checked`
2025-09-09 12:23:39 +01:00
Mathias Vorreiter Pedersen
3aee4a88aa Shared: Cache the sourceBoundedFastTC structure instead of the resulting materialized relation. 2025-09-09 12:22:37 +01:00
Mathias Vorreiter Pedersen
fd7d216fe3 Shared: Replace explicit recursion with a HOP. 2025-09-09 12:22:36 +01:00
Joe Farebrother
e382f7cd43 Improve check for containment in with statement 2025-09-09 11:26:17 +01:00
Michael B. Gale
4b9d102f46 Merge pull request #20389 from github/dependabot/go_modules/go/extractor/extractor-dependencies-ee4a90dc36
Bump golang.org/x/mod from 0.27.0 to 0.28.0 in /go/extractor in the extractor-dependencies group
2025-09-09 11:12:31 +01:00
Michael Nebel
a0f8b5829a C#: Update integration tests expected output. 2025-09-09 12:04:21 +02:00
Michael Nebel
30b93d18b7 C#: Update global.json files for most integration tests to se .NET SDK 9.0.304. 2025-09-09 12:04:19 +02:00
Paolo Tranquilli
51052c74bb Bazel: patch rules_dotnet to avoid unit test failure 2025-09-09 12:04:18 +02:00
Paolo Tranquilli
6ea6f30cc5 Bazel: fix codeql_csharp_binary
A `publish` directory for a C# binary contains copies of some DLLs
inside localized subdirectories (e.g. `ru`). We want to ignore those, as
otherwise our packaging machinery now goes haywire, with the newer
version of `rules_csharp`. In any case we never shipped those.
2025-09-09 12:04:16 +02:00
Michael Nebel
91f9247c2b C#: Update extractor to use .NET Runtime 9.0.5 and .NET SDK 9.0.300. 2025-09-09 12:04:15 +02:00
Simon Friis Vindum
4f9d8271a2 Rust: Add change node for request forgery query 2025-09-09 10:38:01 +02:00
Simon Friis Vindum
387d08a1b3 Rust: Update query suite expected files 2025-09-09 10:37:59 +02:00
Simon Friis Vindum
1c922f0f45 Rust: Add request forgery query qhelp 2025-09-09 10:37:58 +02:00
Simon Friis Vindum
e1047dc40b Rust: Add request forgery query 2025-09-09 10:37:57 +02:00
Simon Friis Vindum
63a2c9da76 Rust: Add request forgery tests 2025-09-09 10:37:56 +02:00
Jeroen Ketema
c4633c7e23 Swift: Update LFS 2025-09-09 10:12:43 +02:00
Simon Friis Vindum
aa9d299230 Merge pull request #20348 from paldepind/rust/certain-shorthand-self
Rust: Infer certain type for shorthand `self`
2025-09-09 09:40:18 +02:00
Asger F
d8e943ea05 Update javascript/ql/lib/semmle/javascript/frameworks/React.qll
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-09 08:36:25 +02:00
dependabot[bot]
f104205538 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.27.0 to 0.28.0
- [Commits](https://github.com/golang/mod/compare/v0.27.0...v0.28.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 03:08:18 +00:00
Asger F
0752dbea9b Merge pull request #20360 from asgerf/js/remove-angularjs-string-special-case
JS: Remove special treatment of strings in AngularJS code
2025-09-08 22:48:23 +02:00
Asger F
b5045b3407 Merge pull request #20363 from asgerf/js/remove-fallback-type
JS: Remove unused getFallbackTypeAnnotation()
2025-09-08 22:48:07 +02:00
Jon Janego
d51361cd35 Merge pull request #20387 from github/changedocs-2.23.0
Changedocs 2.23.0
2025-09-08 13:24:26 -05:00
Jon Janego
2505272af7 Changedocs for 2.23.0 - updating 2.22.4 golang note 2025-09-08 13:07:20 -05:00
Jon Janego
2d84f8a739 Changedocs for 2.23.0 2025-09-08 13:01:03 -05:00
Mathias Vorreiter Pedersen
702d6d80c4 Update cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-08 16:19:33 +01:00
Idriss Riouak
dc247e03e0 Merge pull request #20383 from aschackmull/java/fix-more-broken-perf
Java: Fix more broken performance.
2025-09-08 14:49:43 +02:00
Michael Nebel
84df8f91a9 Merge pull request #20366 from michaelnebel/csharp/improvedatabasequalitydiagnostics
C#/Java/Rust: Improve database quality diagnostics query.
2025-09-08 14:43:57 +02:00
Jeroen Ketema
40c8c3a526 Swift: Update to Swift 6.1.3 2025-09-08 14:42:53 +02:00
Anders Schack-Mulligen
4c1fa58367 Java: Fix more broken performance. 2025-09-08 14:12:00 +02:00
Mathias Vorreiter Pedersen
a81989d2d8 C++: Simplify the 'SSLResultNotChecked' query. 2025-09-08 12:28:28 +01:00
Mathias Vorreiter Pedersen
9f47996448 C++: Lift a few more predicates to expression guards. 2025-09-08 12:28:18 +01:00
idrissrio
728a4aff22 Java: Add model for thenExpand and accept new results 2025-09-08 13:17:53 +02:00
idrissrio
3aba4d3e1e Java: Add test showing missing model for thenExpand 2025-09-08 13:17:52 +02:00
idrissrio
55ff71b760 Java: Address review comment. Fix dataflow model 2025-09-08 13:17:51 +02:00
idrissrio
89e080cd99 Java: Add new change note 2025-09-08 13:17:50 +02:00
idrissrio
311690cffe Java: accept new test results 2025-09-08 13:17:49 +02:00
idrissrio
f52a427295 Java: Add MaDs for java.crypto.KDF 2025-09-08 13:17:48 +02:00
idrissrio
16fbe8d96f Java: add dataflow test for newly added KDF API 2025-09-08 13:17:46 +02:00
Simon Friis Vindum
eea11dbf5f Rust: Relabel reqwest sinks as request-url 2025-09-08 13:05:58 +02:00
idrissrio
666678a582 Java: Address review comment. Inline dataflow annotation 2025-09-08 12:55:20 +02:00
idrissrio
117c41bd55 Java: Address review comment. Fix dataflow model 2025-09-08 12:55:19 +02:00
idrissrio
2f4c728bb9 Java: Add new change note 2025-09-08 12:55:17 +02:00
idrissrio
a8541b9f76 Java: accept new test results 2025-09-08 12:55:15 +02:00
idrissrio
9f1e60ca6d Java: Add MaDs for java.lang.scoped 2025-09-08 12:55:14 +02:00
idrissrio
0159f5b422 Java: Add failing test for Scoped Values 2025-09-08 12:55:13 +02:00
Michael Nebel
29c22e6fcf Rust: Add change note. 2025-09-08 12:05:57 +02:00
Michael Nebel
d9787efc10 Rust: Include metrics in the database quality diagnostics. 2025-09-08 12:05:44 +02:00
Michael Nebel
572da264d3 Java: Update integration test expected output. 2025-09-08 12:05:40 +02:00
Michael Nebel
3f4b2b7cc8 Java: Add change note. 2025-09-08 12:05:38 +02:00
Michael Nebel
b0ef0f06eb Java: Include metrics in the database quality diagnostics and lower threshold. 2025-09-08 12:05:37 +02:00
Michael Nebel
ed11a32f42 C#: Update integration test expected output. 2025-09-08 12:05:34 +02:00
Michael Nebel
827ea4c769 C#: Address review comments. 2025-09-08 12:05:31 +02:00
Michael Nebel
7bf05297cf C#: Update integration test expected output. 2025-09-08 12:05:29 +02:00
Michael Nebel
08298f48d0 C#: Add change note. 2025-09-08 12:05:27 +02:00
Michael Nebel
6c9a75eab3 C#: Include metrics in the database quality diagnostics. 2025-09-08 12:05:22 +02:00
Henry Mercer
b4e6d3009e Merge pull request #20371 from github/henrymercer/actions-status
Actions: Add file coverage information for status page
2025-09-08 10:37:03 +01:00
Jeroen Ketema
ba5318f63f Merge pull request #20369 from MathiasVP/value-numbering-unique-irfunc
C++: Protect the value numbering library from instructions with multiple enclosing functions
2025-09-08 10:47:55 +02:00
Joe Farebrother
eb246f6f71 Performance experiment - add getFunctionFIle for better join order 2025-09-08 09:43:22 +01:00
Joe Farebrother
869b7e09d7 Merge pull request #19932 from joefarebrother/python-qual-init-del-calls
Python: Modernize 4 queries for missing/multiple calls to init/del methods
2025-09-08 09:29:38 +01:00
Napalys Klicius
8c34b7eaea Merge pull request #20146 from Napalys/js/move-cors-query-from-experimental
JS: Move cors-misconfiguration query from experimental to Security
2025-09-08 09:32:38 +02:00
Anders Schack-Mulligen
66379deadd Merge pull request #20380 from aschackmull/java/fix-broken-perf
Java: Fix broken performance.
2025-09-08 08:59:31 +02:00
Anders Schack-Mulligen
c6adc51220 Java: Fix broken performance. 2025-09-08 08:30:07 +02:00
Idriss Riouak
c5cb86ac24 Merge pull request #20097 from github/idrissrio/module-import-declarations
Java: Add support to `ModuleImportDeclaration`
2025-09-06 13:11:48 +02:00
Joe Farebrother
ff4c11f503 Update test output. Accepting some FNs due to dataflow issue. 2025-09-06 00:45:15 +01:00
Joe Farebrother
0b293eaba5 Update test output 2025-09-05 22:43:21 +01:00
Alexander Eyers-Taylor
61485908b9 Merge pull request #20355 from github/alexet/update-java-tests-no-annotation=-proc
Java: Update tests results with disabled annotation processing when lombok is not used.
2025-09-05 18:18:56 +01:00
Joe Farebrother
bd3fa7fb21 Switch to dataflow check for guards exceptions
This reduces some confusing FPs, though appears to introduce another
2025-09-05 16:03:55 +01:00
Henry Mercer
1e77891271 Merge branch 'main' into henrymercer/actions-status 2025-09-05 14:55:58 +01:00
Henry Mercer
fea05331aa Add date to changelog note filename 2025-09-05 14:51:28 +01:00
Henry Mercer
526990e015 Add comment about GitHub API languages 2025-09-05 14:49:48 +01:00
Henry Mercer
e7fbd28505 Add changelog note 2025-09-05 14:48:12 +01:00
Henry Mercer
a6fb45b9cb Update expected files 2025-09-05 13:13:43 +01:00
Napalys Klicius
b2feaaceea Merge branch 'main' into js/move-cors-query-from-experimental 2025-09-05 12:11:09 +02:00
Asger F
ef114c4a07 JS: Add change note 2025-09-05 12:04:53 +02:00
Asger F
a08878f419 JS: Add upgrade and downgrade scripts 2025-09-05 12:03:56 +02:00
Asger F
bab2a79055 JS: Add parsing support in JS parser 2025-09-05 11:57:34 +02:00
Asger F
215602c963 JS: Preserve information about 'defer' keyword 2025-09-05 11:57:33 +02:00
Asger F
76ca1a576f JS: Add basic test for 'import defer' syntax in TypeScript 2025-09-05 11:57:31 +02:00
Asger F
0d03c813d0 JS: Also update @types/node version 2025-09-05 11:57:30 +02:00
Asger F
b2b5199055 JS: Bump TypeScript dependency to 5.9 2025-09-05 11:57:29 +02:00
Napalys Klicius
d8c4d6deb4 Rename cors-misconfiguration to cors-origin. 2025-09-05 11:30:07 +02:00
Napalys Klicius
e6eacca50b Update change note to reflect changes 2025-09-05 11:27:29 +02:00
Mathias Vorreiter Pedersen
4645bd766a C++: Sync identical files. 2025-09-04 19:27:31 +01:00
Mathias Vorreiter Pedersen
a551a55ca0 C++: Get rid of a parenthesis pair. 2025-09-04 19:27:23 +01:00
Mathias Vorreiter Pedersen
3c35e1e6ee C++: Require a unique IRFunction for each value number case and assign instructions with a non-unique IRFUnction a unique value number. 2025-09-04 19:26:42 +01:00
Mathias Vorreiter Pedersen
76f2c6a9f1 C++: Remove the IRFunction column from the TUniqueValueNumber branch. The next commits will protect the recursion from instructions which has multiple IRFunctions and assign such instructions a unique value number so it won't make sense for them to have an IRFunction column. 2025-09-04 19:10:22 +01:00
Napalys Klicius
c4c8dbcf7d Merge remote-tracking branch 'origin/main' into js/move-cors-query-from-experimental 2025-09-04 15:24:44 +02:00
Napalys Klicius
d3d608fa33 Updated query description and added a sanitizer 2025-09-04 13:16:37 +00:00
Napalys Klicius
6c751ce934 Merged config classes 2025-09-04 12:31:24 +00:00
Napalys Klicius
4dac80a998 Replace complex wrapper classes with MaD 2025-09-04 12:19:22 +00:00
Asger F
4926d278a2 JS: Update test output 2025-09-04 13:59:19 +02:00
Asger F
d8346ef106 JS: Remove unused getFallbackTypeAnnotation()
This private predicate was unused, but due to its recursive self-reference it was not reported as an unused predicate.
2025-09-04 13:40:49 +02:00
Simon Friis Vindum
26919a6c6e Rust: Rename variable as suggested in review 2025-09-04 12:50:14 +02:00
Asger F
5b0ef40a3e JS: Remove special treatment of strings in AngularJS code
String literals are already SourceNodes. But we need to add template literals as well
2025-09-04 11:06:22 +02:00
Taus
f6732a927b Python: Bump extractor version 2025-09-03 11:56:54 +00:00
Taus
13a93c7e32 Python: Add suggestions from Copilot 2025-09-03 11:55:49 +00:00
Simon Friis Vindum
e610465ee8 Rust: Suppress type inference inconsistency that can be explained by path resolution 2025-09-03 12:53:30 +02:00
Joe Farebrother
71dec0b23e Fix typos 2025-09-03 11:22:46 +01:00
Joe Farebrother
9fa630faf5 Add comments documenting helper predicates, and add call resolve condition to callMatchesSignature to avoid cartesian product 2025-09-03 11:00:59 +01:00
Joe Farebrother
cd6a151d9b Add missing predicate + update test output 2025-09-03 09:48:07 +01:00
Joe Farebrother
2dcf3c7c45 Remove erronous private 2025-09-02 22:16:41 +01:00
Simon Friis Vindum
de8e535c3a Rust: Move predicates up to right before first usage 2025-09-02 16:34:03 +02:00
Simon Friis Vindum
1b683f6359 Rust: Infer certain type for self shorthand 2025-09-02 16:30:21 +02:00
Simon Friis Vindum
f7201023de Rust: Add annotations to type inference tests 2025-09-02 16:24:40 +02:00
Taus
bda522052b Python: Update bazel dependencies 2025-09-02 12:51:36 +00:00
Taus
9802ad77dc Python: Update types_new.py and test output 2025-09-02 12:41:57 +00:00
Taus
235822d782 Python: Improve handling of syntax errors
Rather than relying on matching arbitrary nodes inside tree-sitter-graph
and then checking whether they are of type ERROR or MISSING (which seems
to have stopped working in later versions of tree-sitter), we now
explicitly go through the tree-sitter tree, locating all of the error
and missing nodes along the way. We then add these on to the graph
output in the same format as was previously produced by
tree-sitter-graph.

Note that it's very likely that some of the syntax errors will move
around a bit as a consequence of this change. In general, we don't
expect syntax errors to have stable locations, as small changes in the
grammar can cause an error to appear in a different position, even if
the underlying (erroneous) code has not changed.
2025-09-02 12:41:57 +00:00
Taus
b108d47b26 Python: Update parser test output
It seems that with a newer version of tree-sitter, we no longer parse
the (not actually valid!) syntax `Spam[**P2]` as if the `**` is an
exponentiation operation (with a missing left operand).
2025-09-02 12:41:55 +00:00
Taus
5fb28b9f6d Python: Update bazel dependencies 2025-09-02 12:41:48 +00:00
Taus
76f15a890c Python: Update tree-sitter dependency
Updates the Python extractor to depend on version 0.24.7 of tree-sitter
(and 0.12.0 of tree-sitter-graph).

A few changes were needed in order to make the code build and run after
updating the dependencies:

- In `main.rs`, the `Language` parameter is now passed as a reference.
- In `python.tsg`, many queries had captures that were not actually used
in the body of the stanza. This is no longer allowed (unless the
captures start with an underscore), as it may indicate an error. To fix
this, I added underscores in the appropriate places (and verified that
none of these unused captures were in fact bugs).
2025-09-02 12:40:20 +00:00
Joe Farebrother
318d1cd392 Increase precision in detecting call matches signature 2025-09-02 12:02:08 +01:00
Joe Farebrother
125c6534b7 Use new option name 2025-09-01 23:41:28 +01:00
Joe Farebrother
6587ad435e Update python/ql/src/Functions/SignatureOverriddenMethod.ql
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-01 16:31:24 +01:00
Joe Farebrother
0a83c11f42 Add changenote.+ fix typo 2025-09-01 16:31:18 +01:00
Joe Farebrother
900a5cd9d7 Update documentation 2025-09-01 16:31:11 +01:00
Joe Farebrother
502ea82c91 Updae other test output 2025-09-01 16:31:04 +01:00
Joe Farebrother
2bbf24b3ea Add additional test cases 2025-09-01 16:30:53 +01:00
Joe Farebrother
f429b9038c Update tests, update alert messages 2025-09-01 16:30:44 +01:00
Joe Farebrother
067c98d3ee Include conditional alert messages for various cases 2025-09-01 16:30:35 +01:00
Joe Farebrother
4212d1b5b6 Update alert messages and choose one witness 2025-09-01 16:30:26 +01:00
Joe Farebrother
5ba5007076 Modernize signature mismatch 2025-09-01 16:30:17 +01:00
Joe Farebrother
f7097136f1 Rank multiple calls so only the first 2 calls are alerted 2025-09-01 16:23:42 +01:00
Joe Farebrother
8545c7d36f Fix doc typo 2025-09-01 15:12:52 +01:00
Joe Farebrother
8c9c66c002 Fix typo in example 2025-09-01 15:12:52 +01:00
Joe Farebrother
ba68fe9a0f Adress review suggestions - cleanups 2025-09-01 15:12:52 +01:00
Joe Farebrother
fb0380bfbc Inline locationBefore 2025-09-01 15:12:52 +01:00
Joe Farebrother
cc486ddb08 Remove tostring 2025-09-01 15:12:51 +01:00
Joe Farebrother
72df584e9b Update integration test outout and fix qhelp 2025-09-01 15:12:51 +01:00
Joe Farebrother
c9dc54abf8 Fix typos 2025-09-01 15:11:59 +01:00
Joe Farebrother
58f2bd4000 Fix changenote formatting 2025-09-01 15:11:59 +01:00
Joe Farebrother
5992dc3b0a Add qldoc 2025-09-01 15:11:59 +01:00
Joe Farebrother
e01519f547 Add change note 2025-09-01 15:11:59 +01:00
Joe Farebrother
74a312735c Update integration test output 2025-09-01 15:11:58 +01:00
Joe Farebrother
ba8658491a Update qhelp + alert messages 2025-09-01 14:11:01 +01:00
Joe Farebrother
86bb0e8af2 qhelp: move examples to subfolder 2025-09-01 14:10:58 +01:00
Joe Farebrother
daa5525a10 Update tests and add an additional test 2025-09-01 14:10:55 +01:00
Joe Farebrother
b4b20d7d3f Update multiple calls queries to include call targets in alert message 2025-09-01 14:10:53 +01:00
Joe Farebrother
18b949c0a9 Remove case excluding classes with a __new__ method; as it doesn't make much sense (__init__ is still called anyway) 2025-09-01 14:10:50 +01:00
Joe Farebrother
9619ae8a2d Add additional test case + update missing del tests 2025-09-01 14:10:47 +01:00
Joe Farebrother
c9932e187a Update tests for calls to init + fixes 2025-09-01 14:10:44 +01:00
Joe Farebrother
9ac95266c7 Fixes 2025-09-01 14:10:41 +01:00
Joe Farebrother
3c74e12b9c Change implenetation of missing calls to use getASuperCallTarget, and change alerts to alert on the class and provide clearer information, using optional location links. 2025-09-01 14:10:39 +01:00
Joe Farebrother
99a05ed5a4 Update test outputs + fix semantics 2025-09-01 14:10:36 +01:00
Joe Farebrother
732c818916 Move tests and add inline expectation postprocessing 2025-09-01 14:10:33 +01:00
Joe Farebrother
45b5efad25 Fix FPs and typo 2025-09-01 14:10:30 +01:00
Joe Farebrother
4f63528844 Update alert messages 2025-09-01 14:10:25 +01:00
Joe Farebrother
d0daacd17e Modernize multple calls to init/del 2025-09-01 14:10:22 +01:00
Joe Farebrother
a02016a95f Add missing call to del 2025-09-01 14:10:17 +01:00
Joe Farebrother
38af3ac925 Update missing call to init 2025-09-01 14:10:14 +01:00
Joe Farebrother
bea8502cc5 Move missing/multiple calls to init/del queries to folder 2025-09-01 14:10:11 +01:00
Asger F
ca393a9afe JS: Do not override AST methods in React model 2025-09-01 12:57:06 +02:00
Henry Mercer
71bac5eda8 Actions: Add file coverage baseline 2025-08-29 20:10:45 +01:00
Henry Mercer
67dc01b636 Actions: Add successfully extracted files query 2025-08-29 20:10:43 +01:00
Asger F
57b4534d30 JS: Avoid overriding Expr predicates in xUnit.qll 2025-08-29 13:06:05 +02:00
Joe Farebrother
eb4841230a Add tests (WIP) 2025-08-25 13:30:45 +01:00
Joe Farebrother
9edfd7a6fb Use generator script directly 2025-08-21 14:12:26 +01:00
Joe Farebrother
f24f7d5146 Add builtin subclass models, incorporate into query 2025-08-21 13:50:26 +01:00
Joe Farebrother
e42002e1d7 Promote IncorrectExceptOrder.
However, we lose some results due to not considering builtin/stdlib types.
2025-08-19 15:30:47 +01:00
Napalys Klicius
021aa13ee2 Added change note 2025-07-31 12:45:34 +02:00
Napalys Klicius
791a7e242e Updated qhelp for cors permissive configuration 2025-07-31 11:31:10 +02:00
Napalys Klicius
2baca58b27 Removed deprecations from cors as it was moved out experimental 2025-07-31 11:08:22 +02:00
Napalys Klicius
fd4233e30e Moved apollo modeling to MaD 2025-07-31 10:58:38 +02:00
Napalys Klicius
84ffbbec33 Added missing doc strings 2025-07-30 10:51:38 +00:00
Napalys Klicius
95743d7109 Added inline test expectations for cors permissive config 2025-07-30 10:42:55 +00:00
Napalys Klicius
92daa7d42c Updated suite expectations 2025-07-30 10:32:11 +00:00
Napalys Klicius
358617f533 Move CORS misconfiguration query from experimental to Security 2025-07-30 10:22:59 +00:00
Vasco-jofra
575da5c31c Merge SummarizedCallable into single class 2025-06-26 10:10:52 +02:00
Vasco-jofra
8c4dbca23c Improve data flow in the async library 2025-06-15 17:59:49 +02:00
Vasco-jofra
26f3b40d35 Add lodash GroupBy as taint step 2025-06-14 00:13:03 +02:00
1105 changed files with 42654 additions and 27475 deletions

View File

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

View File

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

3
.gitignore vendored
View File

@@ -76,3 +76,6 @@ node_modules/
# some upgrade/downgrade checks create these files
**/upgrades/*/*.dbscheme.stats
**/downgrades/*/*.dbscheme.stats
# Mergetool files
*.orig

677
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -26,7 +26,7 @@ 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 = "gazelle", version = "0.40.0")
bazel_dep(name = "rules_dotnet", version = "0.17.4")
bazel_dep(name = "rules_dotnet", version = "0.19.2-codeql.1")
bazel_dep(name = "googletest", version = "1.14.0.bcr.1")
bazel_dep(name = "rules_rust", version = "0.63.0")
bazel_dep(name = "zstd", version = "1.5.5.bcr.1")
@@ -89,8 +89,8 @@ use_repo(
"vendor_py__cc-1.2.14",
"vendor_py__clap-4.5.30",
"vendor_py__regex-1.11.1",
"vendor_py__tree-sitter-0.20.4",
"vendor_py__tree-sitter-graph-0.7.0",
"vendor_py__tree-sitter-0.24.7",
"vendor_py__tree-sitter-graph-0.12.0",
)
# deps for ruby+rust
@@ -101,50 +101,50 @@ use_repo(
"vendor_ts__anyhow-1.0.99",
"vendor_ts__argfile-0.2.1",
"vendor_ts__chalk-ir-0.104.0",
"vendor_ts__chrono-0.4.41",
"vendor_ts__clap-4.5.44",
"vendor_ts__chrono-0.4.42",
"vendor_ts__clap-4.5.47",
"vendor_ts__dunce-1.0.5",
"vendor_ts__either-1.15.0",
"vendor_ts__encoding-0.2.33",
"vendor_ts__figment-0.10.19",
"vendor_ts__flate2-1.1.0",
"vendor_ts__flate2-1.1.2",
"vendor_ts__glob-0.3.3",
"vendor_ts__globset-0.4.15",
"vendor_ts__globset-0.4.16",
"vendor_ts__itertools-0.14.0",
"vendor_ts__lazy_static-1.5.0",
"vendor_ts__mustache-0.9.0",
"vendor_ts__num-traits-0.2.19",
"vendor_ts__num_cpus-1.17.0",
"vendor_ts__proc-macro2-1.0.97",
"vendor_ts__proc-macro2-1.0.101",
"vendor_ts__quote-1.0.40",
"vendor_ts__ra_ap_base_db-0.0.300",
"vendor_ts__ra_ap_cfg-0.0.300",
"vendor_ts__ra_ap_hir-0.0.300",
"vendor_ts__ra_ap_hir_def-0.0.300",
"vendor_ts__ra_ap_hir_expand-0.0.300",
"vendor_ts__ra_ap_hir_ty-0.0.300",
"vendor_ts__ra_ap_ide_db-0.0.300",
"vendor_ts__ra_ap_intern-0.0.300",
"vendor_ts__ra_ap_load-cargo-0.0.300",
"vendor_ts__ra_ap_parser-0.0.300",
"vendor_ts__ra_ap_paths-0.0.300",
"vendor_ts__ra_ap_project_model-0.0.300",
"vendor_ts__ra_ap_span-0.0.300",
"vendor_ts__ra_ap_stdx-0.0.300",
"vendor_ts__ra_ap_syntax-0.0.300",
"vendor_ts__ra_ap_vfs-0.0.300",
"vendor_ts__ra_ap_base_db-0.0.301",
"vendor_ts__ra_ap_cfg-0.0.301",
"vendor_ts__ra_ap_hir-0.0.301",
"vendor_ts__ra_ap_hir_def-0.0.301",
"vendor_ts__ra_ap_hir_expand-0.0.301",
"vendor_ts__ra_ap_hir_ty-0.0.301",
"vendor_ts__ra_ap_ide_db-0.0.301",
"vendor_ts__ra_ap_intern-0.0.301",
"vendor_ts__ra_ap_load-cargo-0.0.301",
"vendor_ts__ra_ap_parser-0.0.301",
"vendor_ts__ra_ap_paths-0.0.301",
"vendor_ts__ra_ap_project_model-0.0.301",
"vendor_ts__ra_ap_span-0.0.301",
"vendor_ts__ra_ap_stdx-0.0.301",
"vendor_ts__ra_ap_syntax-0.0.301",
"vendor_ts__ra_ap_vfs-0.0.301",
"vendor_ts__rand-0.9.2",
"vendor_ts__rayon-1.10.0",
"vendor_ts__regex-1.11.1",
"vendor_ts__rayon-1.11.0",
"vendor_ts__regex-1.11.2",
"vendor_ts__serde-1.0.219",
"vendor_ts__serde_json-1.0.142",
"vendor_ts__serde_json-1.0.143",
"vendor_ts__serde_with-3.14.0",
"vendor_ts__syn-2.0.104",
"vendor_ts__syn-2.0.106",
"vendor_ts__toml-0.9.5",
"vendor_ts__tracing-0.1.41",
"vendor_ts__tracing-flame-0.2.0",
"vendor_ts__tracing-subscriber-0.3.19",
"vendor_ts__tree-sitter-0.24.6",
"vendor_ts__tracing-subscriber-0.3.20",
"vendor_ts__tree-sitter-0.25.9",
"vendor_ts__tree-sitter-embedded-template-0.23.2",
"vendor_ts__tree-sitter-json-0.24.8",
"vendor_ts__tree-sitter-ql-0.23.1",
@@ -172,7 +172,7 @@ http_archive(
)
dotnet = use_extension("@rules_dotnet//dotnet:extensions.bzl", "dotnet")
dotnet.toolchain(dotnet_version = "9.0.100")
dotnet.toolchain(dotnet_version = "9.0.300")
use_repo(dotnet, "dotnet_toolchains")
register_toolchains("@dotnet_toolchains//:all")

View File

@@ -1,5 +1,4 @@
name: "actions"
aliases: []
display_name: "GitHub Actions"
version: 0.0.1
column_kind: "utf16"
@@ -8,9 +7,11 @@ build_modes:
- none
default_queries:
- codeql/actions-queries
file_coverage_languages: []
# Actions workflows are not reported separately by the GitHub API, so we can't
# associate them with a specific language.
github_api_languages: []
scc_languages: []
scc_languages:
- YAML
file_types:
- name: workflow
display_name: GitHub Actions workflow files

View File

@@ -0,0 +1,10 @@
{
"paths": [
".github/workflows/*.yml",
".github/workflows/*.yaml",
".github/reusable_workflows/**/*.yml",
".github/reusable_workflows/**/*.yaml",
"**/action.yml",
"**/action.yaml"
]
}

View File

@@ -0,0 +1,2 @@
@echo off
type "%CODEQL_EXTRACTOR_ACTIONS_ROOT%\tools\baseline-config.json"

View File

@@ -0,0 +1,3 @@
#!/bin/sh
cat "$CODEQL_EXTRACTOR_ACTIONS_ROOT/tools/baseline-config.json"

View File

@@ -1,3 +1,4 @@
ql/actions/ql/src/Diagnostics/SuccessfullyExtractedFiles.ql
ql/actions/ql/src/Security/CWE-077/EnvPathInjectionCritical.ql
ql/actions/ql/src/Security/CWE-077/EnvVarInjectionCritical.ql
ql/actions/ql/src/Security/CWE-094/CodeInjectionCritical.ql

View File

@@ -1,4 +1,5 @@
ql/actions/ql/src/Debug/SyntaxError.ql
ql/actions/ql/src/Diagnostics/SuccessfullyExtractedFiles.ql
ql/actions/ql/src/Security/CWE-077/EnvPathInjectionCritical.ql
ql/actions/ql/src/Security/CWE-077/EnvPathInjectionMedium.ql
ql/actions/ql/src/Security/CWE-077/EnvVarInjectionCritical.ql

View File

@@ -1,3 +1,4 @@
ql/actions/ql/src/Diagnostics/SuccessfullyExtractedFiles.ql
ql/actions/ql/src/Security/CWE-077/EnvPathInjectionCritical.ql
ql/actions/ql/src/Security/CWE-077/EnvPathInjectionMedium.ql
ql/actions/ql/src/Security/CWE-077/EnvVarInjectionCritical.ql

View File

@@ -1,3 +1,11 @@
## 0.4.18
No user-facing changes.
## 0.4.17
No user-facing changes.
## 0.4.16
No user-facing changes.

View File

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

View File

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

View File

@@ -1,2 +1,2 @@
---
lastReleaseVersion: 0.4.16
lastReleaseVersion: 0.4.18

View File

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

View File

@@ -1,3 +1,13 @@
## 0.6.10
No user-facing changes.
## 0.6.9
### Minor Analysis Improvements
* Actions analysis now reports file coverage information on the CodeQL status page.
## 0.6.8
No user-facing changes.

View File

@@ -0,0 +1,13 @@
/**
* @id actions/diagnostics/successfully-extracted-files
* @name Extracted files
* @description List all files that were extracted.
* @kind diagnostic
* @tags successfully-extracted-files
*/
private import codeql.Locations
from File f
where exists(f.getRelativePath())
select f, ""

View File

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

View File

@@ -0,0 +1,5 @@
## 0.6.9
### Minor Analysis Improvements
* Actions analysis now reports file coverage information on the CodeQL status page.

View File

@@ -1,2 +1,2 @@
---
lastReleaseVersion: 0.6.8
lastReleaseVersion: 0.6.10

View File

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

View File

@@ -177,6 +177,12 @@ def insert_overlay_caller_annotations(lines):
out_lines.append(line)
return out_lines
explicitly_global = set([
"java/ql/lib/semmle/code/java/dispatch/VirtualDispatch.qll",
"java/ql/lib/semmle/code/java/dispatch/DispatchFlow.qll",
"java/ql/lib/semmle/code/java/dispatch/ObjFlow.qll",
"java/ql/lib/semmle/code/java/dispatch/internal/Unification.qll",
])
def annotate_as_appropriate(filename, lines):
'''
@@ -196,6 +202,9 @@ def annotate_as_appropriate(filename, lines):
((filename.endswith("Query.qll") or filename.endswith("Config.qll")) and
any("implements DataFlow::ConfigSig" in line for line in lines))):
return None
elif filename in explicitly_global:
# These files are explicitly global and should not be annotated.
return None
elif not any(line for line in lines if line.strip()):
return None

View File

@@ -7,12 +7,10 @@ ql/cpp/ql/src/Diagnostics/ExtractedFiles.ql
ql/cpp/ql/src/Diagnostics/ExtractionWarnings.ql
ql/cpp/ql/src/Diagnostics/FailedExtractorInvocations.ql
ql/cpp/ql/src/Likely Bugs/Arithmetic/BadAdditionOverflowCheck.ql
ql/cpp/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql
ql/cpp/ql/src/Likely Bugs/Arithmetic/SignedOverflowCheck.ql
ql/cpp/ql/src/Likely Bugs/Conversion/CastArrayPointerArithmetic.ql
ql/cpp/ql/src/Likely Bugs/Format/SnprintfOverflow.ql
ql/cpp/ql/src/Likely Bugs/Format/WrongNumberOfFormatArguments.ql
ql/cpp/ql/src/Likely Bugs/Format/WrongTypeFormatArguments.ql
ql/cpp/ql/src/Likely Bugs/Memory Management/AllocaInLoop.ql
ql/cpp/ql/src/Likely Bugs/Memory Management/PointerOverflow.ql
ql/cpp/ql/src/Likely Bugs/Memory Management/ReturnStackAllocatedMemory.ql
@@ -30,7 +28,6 @@ ql/cpp/ql/src/Security/CWE/CWE-120/VeryLikelyOverrunWrite.ql
ql/cpp/ql/src/Security/CWE/CWE-131/NoSpaceForZeroTerminator.ql
ql/cpp/ql/src/Security/CWE/CWE-134/UncontrolledFormatString.ql
ql/cpp/ql/src/Security/CWE/CWE-190/ArithmeticUncontrolled.ql
ql/cpp/ql/src/Security/CWE/CWE-190/ComparisonWithWiderType.ql
ql/cpp/ql/src/Security/CWE/CWE-191/UnsignedDifferenceExpressionComparedZero.ql
ql/cpp/ql/src/Security/CWE/CWE-253/HResultBooleanConversion.ql
ql/cpp/ql/src/Security/CWE/CWE-311/CleartextFileWrite.ql
@@ -43,7 +40,6 @@ ql/cpp/ql/src/Security/CWE/CWE-367/TOCTOUFilesystemRace.ql
ql/cpp/ql/src/Security/CWE/CWE-416/IteratorToExpiredContainer.ql
ql/cpp/ql/src/Security/CWE/CWE-416/UseOfStringAfterLifetimeEnds.ql
ql/cpp/ql/src/Security/CWE/CWE-416/UseOfUniquePointerAfterLifetimeEnds.ql
ql/cpp/ql/src/Security/CWE/CWE-468/SuspiciousAddWithSizeof.ql
ql/cpp/ql/src/Security/CWE/CWE-497/ExposedSystemData.ql
ql/cpp/ql/src/Security/CWE/CWE-611/XXE.ql
ql/cpp/ql/src/Security/CWE/CWE-676/DangerousFunctionOverflow.ql

View File

@@ -1,3 +1,17 @@
## 5.6.1
No user-facing changes.
## 5.6.0
### Deprecated APIs
* The predicate `getAContructorCall` in the class `SslContextClass` has been deprecated. Use `getAConstructorCall` instead.
### New Features
* Added predicates `getTransitiveNumberOfVlaDimensionStmts`, `getTransitiveVlaDimensionStmt`, and `getParentVlaDecl` to `VlaDeclStmt` for handling `VlaDeclStmt`s whose base type is defined in terms of another `VlaDeclStmt` via a `typedef`.
## 5.5.0
### New Features

View File

@@ -1,4 +0,0 @@
---
category: feature
---
* Added predicates `getTransitiveNumberOfVlaDimensionStmts`, `getTransitiveVlaDimensionStmt`, and `getParentVlaDecl` to `VlaDeclStmt` for handling `VlaDeclStmt`s whose base type defined in terms of an other `VlaDeclStmt` via a `typedef`.

View File

@@ -1,4 +0,0 @@
---
category: deprecated
---
* The predicate `getAContructorCall` in the class `SslContextClass` has been deprecated. Use `getAConstructorCall` instead.

View File

@@ -0,0 +1,9 @@
## 5.6.0
### Deprecated APIs
* The predicate `getAContructorCall` in the class `SslContextClass` has been deprecated. Use `getAConstructorCall` instead.
### New Features
* Added predicates `getTransitiveNumberOfVlaDimensionStmts`, `getTransitiveVlaDimensionStmt`, and `getParentVlaDecl` to `VlaDeclStmt` for handling `VlaDeclStmt`s whose base type is defined in terms of another `VlaDeclStmt` via a `typedef`.

View File

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

View File

@@ -1,2 +1,2 @@
---
lastReleaseVersion: 5.5.0
lastReleaseVersion: 5.6.1

View File

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

View File

@@ -72,6 +72,20 @@ abstract private class GuardConditionImpl extends Expr {
*/
abstract predicate valueControls(BasicBlock controlled, AbstractValue v);
/**
* Holds if the control-flow edge `(pred, succ)` may be taken only if
* the value of this condition is `v`.
*/
abstract predicate valueControlsEdge(BasicBlock pred, BasicBlock succ, AbstractValue v);
/**
* Holds if the control-flow edge `(pred, succ)` may be taken only if
* this the value of this condition is `testIsTrue`.
*/
final predicate controlsEdge(BasicBlock pred, BasicBlock succ, boolean testIsTrue) {
this.valueControlsEdge(pred, succ, any(BooleanValue bv | bv.getValue() = testIsTrue))
}
/**
* Holds if this condition controls `controlled`, meaning that `controlled` is only
* entered if the value of this condition is `testIsTrue`.
@@ -175,6 +189,58 @@ abstract private class GuardConditionImpl extends Expr {
*/
pragma[inline]
abstract predicate ensuresEq(Expr e, int k, BasicBlock block, boolean areEqual);
/**
* Holds if (determined by this guard) `left == right + k` must be `areEqual` on the edge from
* `pred` to `succ`. If `areEqual = false` then this implies `left != right + k`.
*/
pragma[inline]
final predicate ensuresEqEdge(
Expr left, Expr right, int k, BasicBlock pred, BasicBlock succ, boolean areEqual
) {
exists(boolean testIsTrue |
this.comparesEq(left, right, k, areEqual, testIsTrue) and
this.controlsEdge(pred, succ, testIsTrue)
)
}
/**
* Holds if (determined by this guard) `e == k` must be `areEqual` on the edge from
* `pred` to `succ`. If `areEqual = false` then this implies `e != k`.
*/
pragma[inline]
final predicate ensuresEqEdge(Expr e, int k, BasicBlock pred, BasicBlock succ, boolean areEqual) {
exists(AbstractValue v |
this.comparesEq(e, k, areEqual, v) and
this.valueControlsEdge(pred, succ, v)
)
}
/**
* Holds if (determined by this guard) `left < right + k` must be `isLessThan` on the edge from
* `pred` to `succ`. If `isLessThan = false` then this implies `left >= right + k`.
*/
pragma[inline]
final predicate ensuresLtEdge(
Expr left, Expr right, int k, BasicBlock pred, BasicBlock succ, boolean isLessThan
) {
exists(boolean testIsTrue |
this.comparesLt(left, right, k, isLessThan, testIsTrue) and
this.controlsEdge(pred, succ, testIsTrue)
)
}
/**
* Holds if (determined by this guard) `e < k` must be `isLessThan` on the edge from
* `pred` to `succ`. If `isLessThan = false` then this implies `e >= k`.
*/
pragma[inline]
final predicate ensuresLtEdge(Expr e, int k, BasicBlock pred, BasicBlock succ, boolean isLessThan) {
exists(AbstractValue v |
this.comparesLt(e, k, isLessThan, v) and
this.valueControlsEdge(pred, succ, v)
)
}
}
final class GuardCondition = GuardConditionImpl;
@@ -187,6 +253,16 @@ private class GuardConditionFromBinaryLogicalOperator extends GuardConditionImpl
this.(BinaryLogicalOperation).getAnOperand() instanceof GuardCondition
}
override predicate valueControlsEdge(BasicBlock pred, BasicBlock succ, AbstractValue v) {
exists(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)
)
}
override predicate valueControls(BasicBlock controlled, AbstractValue v) {
exists(BinaryLogicalOperation binop, GuardCondition lhs, GuardCondition rhs |
this = binop and
@@ -274,6 +350,25 @@ private predicate controlsBlock(IRGuardCondition ir, BasicBlock controlled, Abst
)
}
/**
* Holds if `ir` controls the `(pred, succ)` edge, meaning that the edge
* `(pred, succ)` is only taken if the value of this condition is `v`. This
* helper predicate does not necessarily hold for binary logical operations
* like `&&` and `||`.
* See the detailed explanation on predicate `controlsEdge`.
*/
private predicate controlsEdge(
IRGuardCondition ir, BasicBlock pred, BasicBlock succ, AbstractValue v
) {
exists(IRBlock irPred, IRBlock irSucc |
ir.valueControlsEdge(irPred, irSucc, v) and
nonExcludedIRAndBasicBlock(irPred, pred) and
nonExcludedIRAndBasicBlock(irSucc, succ) and
not isUnreachedBlock(irPred) and
not isUnreachedBlock(irSucc)
)
}
private class GuardConditionFromNotExpr extends GuardConditionImpl {
IRGuardCondition ir;
@@ -295,6 +390,10 @@ private class GuardConditionFromNotExpr extends GuardConditionImpl {
controlsBlock(ir, controlled, v.getDualValue())
}
override predicate valueControlsEdge(BasicBlock pred, BasicBlock succ, AbstractValue v) {
controlsEdge(ir, pred, succ, v.getDualValue())
}
pragma[inline]
override predicate comparesLt(Expr left, Expr right, int k, boolean isLessThan, boolean testIsTrue) {
exists(Instruction li, Instruction ri |
@@ -383,6 +482,10 @@ private class GuardConditionFromIR extends GuardConditionImpl {
controlsBlock(ir, controlled, v)
}
override predicate valueControlsEdge(BasicBlock pred, BasicBlock succ, AbstractValue v) {
controlsEdge(ir, pred, succ, v)
}
pragma[inline]
override predicate comparesLt(Expr left, Expr right, int k, boolean isLessThan, boolean testIsTrue) {
exists(Instruction li, Instruction ri |

View File

@@ -104,7 +104,9 @@ private module StepsInput implements Impl::Private::StepsInputSig {
result.getStaticCallTarget().getUnderlyingCallable() = sc
}
Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponent sc) { none() }
DataFlowCallable getSourceNodeEnclosingCallable(Input::SourceBase source) { none() }
Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponentStack s) { none() }
Node getSinkNode(Input::SinkBase sink, Impl::Private::SummaryComponent sc) { none() }
}

View File

@@ -41,7 +41,7 @@ newtype TValueNumber =
) {
loadTotalOverlapValueNumber(_, irFunc, type, memOperand, operand)
} or
TUniqueValueNumber(IRFunction irFunc, Instruction instr) { uniqueValueNumber(instr, irFunc) }
TUniqueValueNumber(Instruction instr) { uniqueValueNumber(instr) }
/**
* A `ConvertInstruction` which converts data of type `T` to data of type `U`
@@ -129,12 +129,14 @@ private predicate filteredNumberableInstruction(Instruction instr) {
count(instr.(InheritanceConversionInstruction).getBaseClass()) != 1 or
count(instr.(InheritanceConversionInstruction).getDerivedClass()) != 1
)
or
count(instr.getEnclosingIRFunction()) != 1
}
private predicate variableAddressValueNumber(
VariableAddressInstruction instr, IRFunction irFunc, Language::AST ast
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
// The underlying AST element is used as value-numbering key instead of the
// `IRVariable` to work around a problem where a variable or expression with
// multiple types gives rise to multiple `IRVariable`s.
@@ -144,7 +146,7 @@ private predicate variableAddressValueNumber(
private predicate initializeParameterValueNumber(
InitializeParameterInstruction instr, IRFunction irFunc, Language::AST var
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
// The underlying AST element is used as value-numbering key instead of the
// `IRVariable` to work around a problem where a variable or expression with
// multiple types gives rise to multiple `IRVariable`s.
@@ -154,7 +156,7 @@ private predicate initializeParameterValueNumber(
private predicate constantValueNumber(
ConstantInstruction instr, IRFunction irFunc, IRType type, string value
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
unique( | | instr.getResultIRType()) = type and
instr.getValue() = value
}
@@ -162,7 +164,7 @@ private predicate constantValueNumber(
private predicate stringConstantValueNumber(
StringConstantInstruction instr, IRFunction irFunc, IRType type, string value
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
instr.getResultIRType() = type and
instr.getValue().getValue() = value
}
@@ -171,7 +173,7 @@ private predicate fieldAddressValueNumber(
FieldAddressInstruction instr, IRFunction irFunc, Language::Field field,
TValueNumber objectAddress
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
unique( | | instr.getField()) = field and
tvalueNumber(instr.getObjectAddress()) = objectAddress
}
@@ -182,7 +184,7 @@ private predicate binaryValueNumber0(
TValueNumber valueNumber
) {
not instr instanceof PointerArithmeticInstruction and
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
instr.getOpcode() = opcode and
(
isLeft = true and
@@ -206,7 +208,7 @@ private predicate pointerArithmeticValueNumber0(
PointerArithmeticInstruction instr, IRFunction irFunc, Opcode opcode, int elementSize,
boolean isLeft, TValueNumber valueNumber
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
instr.getOpcode() = opcode and
instr.getElementSize() = elementSize and
(
@@ -229,7 +231,7 @@ private predicate pointerArithmeticValueNumber(
private predicate unaryValueNumber(
UnaryInstruction instr, IRFunction irFunc, Opcode opcode, TValueNumber operand
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
not instr instanceof InheritanceConversionInstruction and
not instr instanceof CopyInstruction and
not instr instanceof FieldAddressInstruction and
@@ -242,7 +244,7 @@ private predicate inheritanceConversionValueNumber(
InheritanceConversionInstruction instr, IRFunction irFunc, Opcode opcode,
Language::Class baseClass, Language::Class derivedClass, TValueNumber operand
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
instr.getOpcode() = opcode and
tvalueNumber(instr.getUnary()) = operand and
unique( | | instr.getBaseClass()) = baseClass and
@@ -254,7 +256,7 @@ private predicate loadTotalOverlapValueNumber0(
LoadTotalOverlapInstruction instr, IRFunction irFunc, IRType type, TValueNumber valueNumber,
boolean isAddress
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
instr.getResultIRType() = type and
(
isAddress = true and
@@ -277,8 +279,7 @@ private predicate loadTotalOverlapValueNumber(
* Holds if `instr` should be assigned a unique value number because this library does not know how
* to determine if two instances of that instruction are equivalent.
*/
private predicate uniqueValueNumber(Instruction instr, IRFunction irFunc) {
instr.getEnclosingIRFunction() = irFunc and
private predicate uniqueValueNumber(Instruction instr) {
not instr.getResultIRType() instanceof IRVoidType and
(
not numberableInstruction(instr)
@@ -294,10 +295,8 @@ cached
TValueNumber tvalueNumber(Instruction instr) {
result = nonUniqueValueNumber(instr)
or
exists(IRFunction irFunc |
uniqueValueNumber(instr, irFunc) and
result = TUniqueValueNumber(irFunc, instr)
)
uniqueValueNumber(instr) and
result = TUniqueValueNumber(instr)
}
/**
@@ -311,68 +310,64 @@ TValueNumber tvalueNumberOfOperand(Operand op) { result = tvalueNumber(op.getDef
* value number.
*/
private TValueNumber nonUniqueValueNumber(Instruction instr) {
exists(IRFunction irFunc |
irFunc = instr.getEnclosingIRFunction() and
(
exists(Language::AST ast |
variableAddressValueNumber(instr, irFunc, ast) and
result = TVariableAddressValueNumber(irFunc, ast)
)
or
exists(Language::AST var |
initializeParameterValueNumber(instr, irFunc, var) and
result = TInitializeParameterValueNumber(irFunc, var)
)
or
exists(string value, IRType type |
constantValueNumber(instr, irFunc, type, value) and
result = TConstantValueNumber(irFunc, type, value)
)
or
exists(IRType type, string value |
stringConstantValueNumber(instr, irFunc, type, value) and
result = TStringConstantValueNumber(irFunc, type, value)
)
or
exists(Language::Field field, TValueNumber objectAddress |
fieldAddressValueNumber(instr, irFunc, field, objectAddress) and
result = TFieldAddressValueNumber(irFunc, field, objectAddress)
)
or
exists(Opcode opcode, TValueNumber leftOperand, TValueNumber rightOperand |
binaryValueNumber(instr, irFunc, opcode, leftOperand, rightOperand) and
result = TBinaryValueNumber(irFunc, opcode, leftOperand, rightOperand)
)
or
exists(Opcode opcode, TValueNumber operand |
unaryValueNumber(instr, irFunc, opcode, operand) and
result = TUnaryValueNumber(irFunc, opcode, operand)
)
or
exists(
Opcode opcode, Language::Class baseClass, Language::Class derivedClass, TValueNumber operand
|
inheritanceConversionValueNumber(instr, irFunc, opcode, baseClass, derivedClass, operand) and
result = TInheritanceConversionValueNumber(irFunc, opcode, baseClass, derivedClass, operand)
)
or
exists(Opcode opcode, int elementSize, TValueNumber leftOperand, TValueNumber rightOperand |
pointerArithmeticValueNumber(instr, irFunc, opcode, elementSize, leftOperand, rightOperand) and
result =
TPointerArithmeticValueNumber(irFunc, opcode, elementSize, leftOperand, rightOperand)
)
or
exists(IRType type, TValueNumber memOperand, TValueNumber operand |
loadTotalOverlapValueNumber(instr, irFunc, type, memOperand, operand) and
result = TLoadTotalOverlapValueNumber(irFunc, type, memOperand, operand)
)
or
// The value number of a copy is just the value number of its source value.
result = tvalueNumber(instr.(CongruentCopyInstruction).getSourceValue())
or
// The value number of a type-preserving conversion is just the value
// number of the unconverted value.
result = tvalueNumber(instr.(TypePreservingConvertInstruction).getUnary())
exists(IRFunction irFunc | irFunc = instr.getEnclosingIRFunction() |
exists(Language::AST ast |
variableAddressValueNumber(instr, irFunc, ast) and
result = TVariableAddressValueNumber(irFunc, ast)
)
or
exists(Language::AST var |
initializeParameterValueNumber(instr, irFunc, var) and
result = TInitializeParameterValueNumber(irFunc, var)
)
or
exists(string value, IRType type |
constantValueNumber(instr, irFunc, type, value) and
result = TConstantValueNumber(irFunc, type, value)
)
or
exists(IRType type, string value |
stringConstantValueNumber(instr, irFunc, type, value) and
result = TStringConstantValueNumber(irFunc, type, value)
)
or
exists(Language::Field field, TValueNumber objectAddress |
fieldAddressValueNumber(instr, irFunc, field, objectAddress) and
result = TFieldAddressValueNumber(irFunc, field, objectAddress)
)
or
exists(Opcode opcode, TValueNumber leftOperand, TValueNumber rightOperand |
binaryValueNumber(instr, irFunc, opcode, leftOperand, rightOperand) and
result = TBinaryValueNumber(irFunc, opcode, leftOperand, rightOperand)
)
or
exists(Opcode opcode, TValueNumber operand |
unaryValueNumber(instr, irFunc, opcode, operand) and
result = TUnaryValueNumber(irFunc, opcode, operand)
)
or
exists(
Opcode opcode, Language::Class baseClass, Language::Class derivedClass, TValueNumber operand
|
inheritanceConversionValueNumber(instr, irFunc, opcode, baseClass, derivedClass, operand) and
result = TInheritanceConversionValueNumber(irFunc, opcode, baseClass, derivedClass, operand)
)
or
exists(Opcode opcode, int elementSize, TValueNumber leftOperand, TValueNumber rightOperand |
pointerArithmeticValueNumber(instr, irFunc, opcode, elementSize, leftOperand, rightOperand) and
result = TPointerArithmeticValueNumber(irFunc, opcode, elementSize, leftOperand, rightOperand)
)
or
exists(IRType type, TValueNumber memOperand, TValueNumber operand |
loadTotalOverlapValueNumber(instr, irFunc, type, memOperand, operand) and
result = TLoadTotalOverlapValueNumber(irFunc, type, memOperand, operand)
)
or
// The value number of a copy is just the value number of its source value.
result = tvalueNumber(instr.(CongruentCopyInstruction).getSourceValue())
or
// The value number of a type-preserving conversion is just the value
// number of the unconverted value.
result = tvalueNumber(instr.(TypePreservingConvertInstruction).getUnary())
)
}

View File

@@ -41,7 +41,7 @@ newtype TValueNumber =
) {
loadTotalOverlapValueNumber(_, irFunc, type, memOperand, operand)
} or
TUniqueValueNumber(IRFunction irFunc, Instruction instr) { uniqueValueNumber(instr, irFunc) }
TUniqueValueNumber(Instruction instr) { uniqueValueNumber(instr) }
/**
* A `ConvertInstruction` which converts data of type `T` to data of type `U`
@@ -129,12 +129,14 @@ private predicate filteredNumberableInstruction(Instruction instr) {
count(instr.(InheritanceConversionInstruction).getBaseClass()) != 1 or
count(instr.(InheritanceConversionInstruction).getDerivedClass()) != 1
)
or
count(instr.getEnclosingIRFunction()) != 1
}
private predicate variableAddressValueNumber(
VariableAddressInstruction instr, IRFunction irFunc, Language::AST ast
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
// The underlying AST element is used as value-numbering key instead of the
// `IRVariable` to work around a problem where a variable or expression with
// multiple types gives rise to multiple `IRVariable`s.
@@ -144,7 +146,7 @@ private predicate variableAddressValueNumber(
private predicate initializeParameterValueNumber(
InitializeParameterInstruction instr, IRFunction irFunc, Language::AST var
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
// The underlying AST element is used as value-numbering key instead of the
// `IRVariable` to work around a problem where a variable or expression with
// multiple types gives rise to multiple `IRVariable`s.
@@ -154,7 +156,7 @@ private predicate initializeParameterValueNumber(
private predicate constantValueNumber(
ConstantInstruction instr, IRFunction irFunc, IRType type, string value
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
unique( | | instr.getResultIRType()) = type and
instr.getValue() = value
}
@@ -162,7 +164,7 @@ private predicate constantValueNumber(
private predicate stringConstantValueNumber(
StringConstantInstruction instr, IRFunction irFunc, IRType type, string value
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
instr.getResultIRType() = type and
instr.getValue().getValue() = value
}
@@ -171,7 +173,7 @@ private predicate fieldAddressValueNumber(
FieldAddressInstruction instr, IRFunction irFunc, Language::Field field,
TValueNumber objectAddress
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
unique( | | instr.getField()) = field and
tvalueNumber(instr.getObjectAddress()) = objectAddress
}
@@ -182,7 +184,7 @@ private predicate binaryValueNumber0(
TValueNumber valueNumber
) {
not instr instanceof PointerArithmeticInstruction and
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
instr.getOpcode() = opcode and
(
isLeft = true and
@@ -206,7 +208,7 @@ private predicate pointerArithmeticValueNumber0(
PointerArithmeticInstruction instr, IRFunction irFunc, Opcode opcode, int elementSize,
boolean isLeft, TValueNumber valueNumber
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
instr.getOpcode() = opcode and
instr.getElementSize() = elementSize and
(
@@ -229,7 +231,7 @@ private predicate pointerArithmeticValueNumber(
private predicate unaryValueNumber(
UnaryInstruction instr, IRFunction irFunc, Opcode opcode, TValueNumber operand
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
not instr instanceof InheritanceConversionInstruction and
not instr instanceof CopyInstruction and
not instr instanceof FieldAddressInstruction and
@@ -242,7 +244,7 @@ private predicate inheritanceConversionValueNumber(
InheritanceConversionInstruction instr, IRFunction irFunc, Opcode opcode,
Language::Class baseClass, Language::Class derivedClass, TValueNumber operand
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
instr.getOpcode() = opcode and
tvalueNumber(instr.getUnary()) = operand and
unique( | | instr.getBaseClass()) = baseClass and
@@ -254,7 +256,7 @@ private predicate loadTotalOverlapValueNumber0(
LoadTotalOverlapInstruction instr, IRFunction irFunc, IRType type, TValueNumber valueNumber,
boolean isAddress
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
instr.getResultIRType() = type and
(
isAddress = true and
@@ -277,8 +279,7 @@ private predicate loadTotalOverlapValueNumber(
* Holds if `instr` should be assigned a unique value number because this library does not know how
* to determine if two instances of that instruction are equivalent.
*/
private predicate uniqueValueNumber(Instruction instr, IRFunction irFunc) {
instr.getEnclosingIRFunction() = irFunc and
private predicate uniqueValueNumber(Instruction instr) {
not instr.getResultIRType() instanceof IRVoidType and
(
not numberableInstruction(instr)
@@ -294,10 +295,8 @@ cached
TValueNumber tvalueNumber(Instruction instr) {
result = nonUniqueValueNumber(instr)
or
exists(IRFunction irFunc |
uniqueValueNumber(instr, irFunc) and
result = TUniqueValueNumber(irFunc, instr)
)
uniqueValueNumber(instr) and
result = TUniqueValueNumber(instr)
}
/**
@@ -311,68 +310,64 @@ TValueNumber tvalueNumberOfOperand(Operand op) { result = tvalueNumber(op.getDef
* value number.
*/
private TValueNumber nonUniqueValueNumber(Instruction instr) {
exists(IRFunction irFunc |
irFunc = instr.getEnclosingIRFunction() and
(
exists(Language::AST ast |
variableAddressValueNumber(instr, irFunc, ast) and
result = TVariableAddressValueNumber(irFunc, ast)
)
or
exists(Language::AST var |
initializeParameterValueNumber(instr, irFunc, var) and
result = TInitializeParameterValueNumber(irFunc, var)
)
or
exists(string value, IRType type |
constantValueNumber(instr, irFunc, type, value) and
result = TConstantValueNumber(irFunc, type, value)
)
or
exists(IRType type, string value |
stringConstantValueNumber(instr, irFunc, type, value) and
result = TStringConstantValueNumber(irFunc, type, value)
)
or
exists(Language::Field field, TValueNumber objectAddress |
fieldAddressValueNumber(instr, irFunc, field, objectAddress) and
result = TFieldAddressValueNumber(irFunc, field, objectAddress)
)
or
exists(Opcode opcode, TValueNumber leftOperand, TValueNumber rightOperand |
binaryValueNumber(instr, irFunc, opcode, leftOperand, rightOperand) and
result = TBinaryValueNumber(irFunc, opcode, leftOperand, rightOperand)
)
or
exists(Opcode opcode, TValueNumber operand |
unaryValueNumber(instr, irFunc, opcode, operand) and
result = TUnaryValueNumber(irFunc, opcode, operand)
)
or
exists(
Opcode opcode, Language::Class baseClass, Language::Class derivedClass, TValueNumber operand
|
inheritanceConversionValueNumber(instr, irFunc, opcode, baseClass, derivedClass, operand) and
result = TInheritanceConversionValueNumber(irFunc, opcode, baseClass, derivedClass, operand)
)
or
exists(Opcode opcode, int elementSize, TValueNumber leftOperand, TValueNumber rightOperand |
pointerArithmeticValueNumber(instr, irFunc, opcode, elementSize, leftOperand, rightOperand) and
result =
TPointerArithmeticValueNumber(irFunc, opcode, elementSize, leftOperand, rightOperand)
)
or
exists(IRType type, TValueNumber memOperand, TValueNumber operand |
loadTotalOverlapValueNumber(instr, irFunc, type, memOperand, operand) and
result = TLoadTotalOverlapValueNumber(irFunc, type, memOperand, operand)
)
or
// The value number of a copy is just the value number of its source value.
result = tvalueNumber(instr.(CongruentCopyInstruction).getSourceValue())
or
// The value number of a type-preserving conversion is just the value
// number of the unconverted value.
result = tvalueNumber(instr.(TypePreservingConvertInstruction).getUnary())
exists(IRFunction irFunc | irFunc = instr.getEnclosingIRFunction() |
exists(Language::AST ast |
variableAddressValueNumber(instr, irFunc, ast) and
result = TVariableAddressValueNumber(irFunc, ast)
)
or
exists(Language::AST var |
initializeParameterValueNumber(instr, irFunc, var) and
result = TInitializeParameterValueNumber(irFunc, var)
)
or
exists(string value, IRType type |
constantValueNumber(instr, irFunc, type, value) and
result = TConstantValueNumber(irFunc, type, value)
)
or
exists(IRType type, string value |
stringConstantValueNumber(instr, irFunc, type, value) and
result = TStringConstantValueNumber(irFunc, type, value)
)
or
exists(Language::Field field, TValueNumber objectAddress |
fieldAddressValueNumber(instr, irFunc, field, objectAddress) and
result = TFieldAddressValueNumber(irFunc, field, objectAddress)
)
or
exists(Opcode opcode, TValueNumber leftOperand, TValueNumber rightOperand |
binaryValueNumber(instr, irFunc, opcode, leftOperand, rightOperand) and
result = TBinaryValueNumber(irFunc, opcode, leftOperand, rightOperand)
)
or
exists(Opcode opcode, TValueNumber operand |
unaryValueNumber(instr, irFunc, opcode, operand) and
result = TUnaryValueNumber(irFunc, opcode, operand)
)
or
exists(
Opcode opcode, Language::Class baseClass, Language::Class derivedClass, TValueNumber operand
|
inheritanceConversionValueNumber(instr, irFunc, opcode, baseClass, derivedClass, operand) and
result = TInheritanceConversionValueNumber(irFunc, opcode, baseClass, derivedClass, operand)
)
or
exists(Opcode opcode, int elementSize, TValueNumber leftOperand, TValueNumber rightOperand |
pointerArithmeticValueNumber(instr, irFunc, opcode, elementSize, leftOperand, rightOperand) and
result = TPointerArithmeticValueNumber(irFunc, opcode, elementSize, leftOperand, rightOperand)
)
or
exists(IRType type, TValueNumber memOperand, TValueNumber operand |
loadTotalOverlapValueNumber(instr, irFunc, type, memOperand, operand) and
result = TLoadTotalOverlapValueNumber(irFunc, type, memOperand, operand)
)
or
// The value number of a copy is just the value number of its source value.
result = tvalueNumber(instr.(CongruentCopyInstruction).getSourceValue())
or
// The value number of a type-preserving conversion is just the value
// number of the unconverted value.
result = tvalueNumber(instr.(TypePreservingConvertInstruction).getUnary())
)
}

View File

@@ -41,7 +41,7 @@ newtype TValueNumber =
) {
loadTotalOverlapValueNumber(_, irFunc, type, memOperand, operand)
} or
TUniqueValueNumber(IRFunction irFunc, Instruction instr) { uniqueValueNumber(instr, irFunc) }
TUniqueValueNumber(Instruction instr) { uniqueValueNumber(instr) }
/**
* A `ConvertInstruction` which converts data of type `T` to data of type `U`
@@ -129,12 +129,14 @@ private predicate filteredNumberableInstruction(Instruction instr) {
count(instr.(InheritanceConversionInstruction).getBaseClass()) != 1 or
count(instr.(InheritanceConversionInstruction).getDerivedClass()) != 1
)
or
count(instr.getEnclosingIRFunction()) != 1
}
private predicate variableAddressValueNumber(
VariableAddressInstruction instr, IRFunction irFunc, Language::AST ast
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
// The underlying AST element is used as value-numbering key instead of the
// `IRVariable` to work around a problem where a variable or expression with
// multiple types gives rise to multiple `IRVariable`s.
@@ -144,7 +146,7 @@ private predicate variableAddressValueNumber(
private predicate initializeParameterValueNumber(
InitializeParameterInstruction instr, IRFunction irFunc, Language::AST var
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
// The underlying AST element is used as value-numbering key instead of the
// `IRVariable` to work around a problem where a variable or expression with
// multiple types gives rise to multiple `IRVariable`s.
@@ -154,7 +156,7 @@ private predicate initializeParameterValueNumber(
private predicate constantValueNumber(
ConstantInstruction instr, IRFunction irFunc, IRType type, string value
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
unique( | | instr.getResultIRType()) = type and
instr.getValue() = value
}
@@ -162,7 +164,7 @@ private predicate constantValueNumber(
private predicate stringConstantValueNumber(
StringConstantInstruction instr, IRFunction irFunc, IRType type, string value
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
instr.getResultIRType() = type and
instr.getValue().getValue() = value
}
@@ -171,7 +173,7 @@ private predicate fieldAddressValueNumber(
FieldAddressInstruction instr, IRFunction irFunc, Language::Field field,
TValueNumber objectAddress
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
unique( | | instr.getField()) = field and
tvalueNumber(instr.getObjectAddress()) = objectAddress
}
@@ -182,7 +184,7 @@ private predicate binaryValueNumber0(
TValueNumber valueNumber
) {
not instr instanceof PointerArithmeticInstruction and
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
instr.getOpcode() = opcode and
(
isLeft = true and
@@ -206,7 +208,7 @@ private predicate pointerArithmeticValueNumber0(
PointerArithmeticInstruction instr, IRFunction irFunc, Opcode opcode, int elementSize,
boolean isLeft, TValueNumber valueNumber
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
instr.getOpcode() = opcode and
instr.getElementSize() = elementSize and
(
@@ -229,7 +231,7 @@ private predicate pointerArithmeticValueNumber(
private predicate unaryValueNumber(
UnaryInstruction instr, IRFunction irFunc, Opcode opcode, TValueNumber operand
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
not instr instanceof InheritanceConversionInstruction and
not instr instanceof CopyInstruction and
not instr instanceof FieldAddressInstruction and
@@ -242,7 +244,7 @@ private predicate inheritanceConversionValueNumber(
InheritanceConversionInstruction instr, IRFunction irFunc, Opcode opcode,
Language::Class baseClass, Language::Class derivedClass, TValueNumber operand
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
instr.getOpcode() = opcode and
tvalueNumber(instr.getUnary()) = operand and
unique( | | instr.getBaseClass()) = baseClass and
@@ -254,7 +256,7 @@ private predicate loadTotalOverlapValueNumber0(
LoadTotalOverlapInstruction instr, IRFunction irFunc, IRType type, TValueNumber valueNumber,
boolean isAddress
) {
instr.getEnclosingIRFunction() = irFunc and
unique( | | instr.getEnclosingIRFunction()) = irFunc and
instr.getResultIRType() = type and
(
isAddress = true and
@@ -277,8 +279,7 @@ private predicate loadTotalOverlapValueNumber(
* Holds if `instr` should be assigned a unique value number because this library does not know how
* to determine if two instances of that instruction are equivalent.
*/
private predicate uniqueValueNumber(Instruction instr, IRFunction irFunc) {
instr.getEnclosingIRFunction() = irFunc and
private predicate uniqueValueNumber(Instruction instr) {
not instr.getResultIRType() instanceof IRVoidType and
(
not numberableInstruction(instr)
@@ -294,10 +295,8 @@ cached
TValueNumber tvalueNumber(Instruction instr) {
result = nonUniqueValueNumber(instr)
or
exists(IRFunction irFunc |
uniqueValueNumber(instr, irFunc) and
result = TUniqueValueNumber(irFunc, instr)
)
uniqueValueNumber(instr) and
result = TUniqueValueNumber(instr)
}
/**
@@ -311,68 +310,64 @@ TValueNumber tvalueNumberOfOperand(Operand op) { result = tvalueNumber(op.getDef
* value number.
*/
private TValueNumber nonUniqueValueNumber(Instruction instr) {
exists(IRFunction irFunc |
irFunc = instr.getEnclosingIRFunction() and
(
exists(Language::AST ast |
variableAddressValueNumber(instr, irFunc, ast) and
result = TVariableAddressValueNumber(irFunc, ast)
)
or
exists(Language::AST var |
initializeParameterValueNumber(instr, irFunc, var) and
result = TInitializeParameterValueNumber(irFunc, var)
)
or
exists(string value, IRType type |
constantValueNumber(instr, irFunc, type, value) and
result = TConstantValueNumber(irFunc, type, value)
)
or
exists(IRType type, string value |
stringConstantValueNumber(instr, irFunc, type, value) and
result = TStringConstantValueNumber(irFunc, type, value)
)
or
exists(Language::Field field, TValueNumber objectAddress |
fieldAddressValueNumber(instr, irFunc, field, objectAddress) and
result = TFieldAddressValueNumber(irFunc, field, objectAddress)
)
or
exists(Opcode opcode, TValueNumber leftOperand, TValueNumber rightOperand |
binaryValueNumber(instr, irFunc, opcode, leftOperand, rightOperand) and
result = TBinaryValueNumber(irFunc, opcode, leftOperand, rightOperand)
)
or
exists(Opcode opcode, TValueNumber operand |
unaryValueNumber(instr, irFunc, opcode, operand) and
result = TUnaryValueNumber(irFunc, opcode, operand)
)
or
exists(
Opcode opcode, Language::Class baseClass, Language::Class derivedClass, TValueNumber operand
|
inheritanceConversionValueNumber(instr, irFunc, opcode, baseClass, derivedClass, operand) and
result = TInheritanceConversionValueNumber(irFunc, opcode, baseClass, derivedClass, operand)
)
or
exists(Opcode opcode, int elementSize, TValueNumber leftOperand, TValueNumber rightOperand |
pointerArithmeticValueNumber(instr, irFunc, opcode, elementSize, leftOperand, rightOperand) and
result =
TPointerArithmeticValueNumber(irFunc, opcode, elementSize, leftOperand, rightOperand)
)
or
exists(IRType type, TValueNumber memOperand, TValueNumber operand |
loadTotalOverlapValueNumber(instr, irFunc, type, memOperand, operand) and
result = TLoadTotalOverlapValueNumber(irFunc, type, memOperand, operand)
)
or
// The value number of a copy is just the value number of its source value.
result = tvalueNumber(instr.(CongruentCopyInstruction).getSourceValue())
or
// The value number of a type-preserving conversion is just the value
// number of the unconverted value.
result = tvalueNumber(instr.(TypePreservingConvertInstruction).getUnary())
exists(IRFunction irFunc | irFunc = instr.getEnclosingIRFunction() |
exists(Language::AST ast |
variableAddressValueNumber(instr, irFunc, ast) and
result = TVariableAddressValueNumber(irFunc, ast)
)
or
exists(Language::AST var |
initializeParameterValueNumber(instr, irFunc, var) and
result = TInitializeParameterValueNumber(irFunc, var)
)
or
exists(string value, IRType type |
constantValueNumber(instr, irFunc, type, value) and
result = TConstantValueNumber(irFunc, type, value)
)
or
exists(IRType type, string value |
stringConstantValueNumber(instr, irFunc, type, value) and
result = TStringConstantValueNumber(irFunc, type, value)
)
or
exists(Language::Field field, TValueNumber objectAddress |
fieldAddressValueNumber(instr, irFunc, field, objectAddress) and
result = TFieldAddressValueNumber(irFunc, field, objectAddress)
)
or
exists(Opcode opcode, TValueNumber leftOperand, TValueNumber rightOperand |
binaryValueNumber(instr, irFunc, opcode, leftOperand, rightOperand) and
result = TBinaryValueNumber(irFunc, opcode, leftOperand, rightOperand)
)
or
exists(Opcode opcode, TValueNumber operand |
unaryValueNumber(instr, irFunc, opcode, operand) and
result = TUnaryValueNumber(irFunc, opcode, operand)
)
or
exists(
Opcode opcode, Language::Class baseClass, Language::Class derivedClass, TValueNumber operand
|
inheritanceConversionValueNumber(instr, irFunc, opcode, baseClass, derivedClass, operand) and
result = TInheritanceConversionValueNumber(irFunc, opcode, baseClass, derivedClass, operand)
)
or
exists(Opcode opcode, int elementSize, TValueNumber leftOperand, TValueNumber rightOperand |
pointerArithmeticValueNumber(instr, irFunc, opcode, elementSize, leftOperand, rightOperand) and
result = TPointerArithmeticValueNumber(irFunc, opcode, elementSize, leftOperand, rightOperand)
)
or
exists(IRType type, TValueNumber memOperand, TValueNumber operand |
loadTotalOverlapValueNumber(instr, irFunc, type, memOperand, operand) and
result = TLoadTotalOverlapValueNumber(irFunc, type, memOperand, operand)
)
or
// The value number of a copy is just the value number of its source value.
result = tvalueNumber(instr.(CongruentCopyInstruction).getSourceValue())
or
// The value number of a type-preserving conversion is just the value
// number of the unconverted value.
result = tvalueNumber(instr.(TypePreservingConvertInstruction).getUnary())
)
}

View File

@@ -1,3 +1,19 @@
## 1.5.1
No user-facing changes.
## 1.5.0
### Major Analysis Improvements
* The queries `cpp/wrong-type-format-argument`, `cpp/comparison-with-wider-type`, `cpp/integer-multiplication-cast-to-long`, `cpp/implicit-function-declaration` and `cpp/suspicious-add-sizeof` have had their precisions reduced from `high` to `medium`. They will also now give alerts for projects built with `build-mode: none`.
* The queries `cpp/wrong-type-format-argument`, `cpp/comparison-with-wider-type`, `cpp/integer-multiplication-cast-to-long` and `cpp/suspicious-add-sizeof` are no longer included in the `code-scanning` suite.
### Bug Fixes
* The predicate `occurenceCount` in the file module `MagicConstants` has been deprecated. Use `occurrenceCount` instead.
* The predicate `additionalAdditionOrSubstractionCheckForLeapYear` in the file module `LeapYear` has been deprecated. Use `additionalAdditionOrSubtractionCheckForLeapYear` instead.
## 1.4.7
### Bug Fixes

View File

@@ -4,13 +4,9 @@ private import semmle.code.cpp.controlflow.IRGuards
private import semmle.code.cpp.ir.ValueNumbering
private predicate exprInBooleanContext(Expr e) {
exists(IRGuardCondition gc |
exists(Instruction i |
i.getUnconvertedResultExpression() = e and
gc.comparesEq(valueNumber(i).getAUse(), 0, _, _)
)
or
gc.getUnconvertedResultExpression() = e
exists(IRGuardCondition gc, Instruction i |
i.getUnconvertedResultExpression() = e and
gc.comparesEq(valueNumber(i).getAUse(), 0, _, _)
)
}
@@ -36,20 +32,18 @@ private string getEofValue() {
* Holds if the value of `call` has been checked to not equal `EOF`.
*/
private predicate checkedForEof(ScanfFunctionCall call) {
exists(IRGuardCondition gc |
exists(CallInstruction i | i.getUnconvertedResultExpression() = call |
exists(int val | gc.comparesEq(valueNumber(i).getAUse(), val, _, _) |
// call == EOF
val = getEofValue().toInt()
or
// call == [any positive number]
val > 0
)
exists(IRGuardCondition gc, CallInstruction i | i.getUnconvertedResultExpression() = call |
exists(int val | gc.comparesEq(valueNumber(i).getAUse(), val, _, _) |
// call == EOF
val = getEofValue().toInt()
or
exists(int val | gc.comparesLt(valueNumber(i).getAUse(), val, true, _) |
// call < [any non-negative number] (EOF is guaranteed to be negative)
val >= 0
)
// call == [any positive number]
val > 0
)
or
exists(int val | gc.comparesLt(valueNumber(i).getAUse(), val, true, _) |
// call < [any non-negative number] (EOF is guaranteed to be negative)
val >= 0
)
)
}

View File

@@ -5,7 +5,7 @@
* @kind problem
* @problem.severity warning
* @security-severity 8.1
* @precision high
* @precision medium
* @id cpp/integer-multiplication-cast-to-long
* @tags reliability
* security
@@ -179,7 +179,6 @@ predicate overflows(MulExpr me, Type t) {
from MulExpr me, Type t1, Type t2
where
not any(Compilation c).buildModeNone() and
t1 = me.getType().getUnderlyingType() and
t2 = me.getConversion().getType().getUnderlyingType() and
t1.getSize() < t2.getSize() and

View File

@@ -5,7 +5,7 @@
* @kind problem
* @problem.severity error
* @security-severity 7.5
* @precision high
* @precision medium
* @id cpp/wrong-type-format-argument
* @tags reliability
* correctness
@@ -154,7 +154,6 @@ int sizeof_IntType() { exists(IntType it | result = it.getSize()) }
from FormattingFunctionCall ffc, int n, Expr arg, Type expected, Type actual
where
not any(Compilation c).buildModeNone() and
(
formattingFunctionCallExpectedType(ffc, n, expected) and
formattingFunctionCallActualType(ffc, n, arg, actual) and

View File

@@ -5,7 +5,7 @@
* may lead to unpredictable behavior.
* @kind problem
* @problem.severity warning
* @precision high
* @precision medium
* @id cpp/implicit-function-declaration
* @tags correctness
* maintainability
@@ -38,7 +38,6 @@ predicate isCompiledAsC(File f) {
from FunctionDeclarationEntry fdeIm, FunctionCall fc
where
not any(Compilation c).buildModeNone() and
isCompiledAsC(fdeIm.getFile()) and
not isFromMacroDefinition(fc) and
fdeIm.isImplicit() and

View File

@@ -109,7 +109,7 @@ predicate lessThanOrEqual(IRGuardCondition g, Expr e, boolean branch) {
g.comparesEq(left, _, _, true, branch)
|
interestingLessThanOrEqual(left) and
left.getDef().getUnconvertedResultExpression() = e
left.getDef().getConvertedResultExpression() = e
)
}

View File

@@ -6,7 +6,7 @@
* @kind problem
* @problem.severity warning
* @security-severity 7.8
* @precision high
* @precision medium
* @tags reliability
* security
* external/cwe/cwe-190
@@ -51,7 +51,6 @@ int getComparisonSizeAdjustment(Expr e) {
from Loop l, RelationalOperation rel, VariableAccess small, Expr large
where
not any(Compilation c).buildModeNone() and
small = rel.getLesserOperand() and
large = rel.getGreaterOperand() and
rel = l.getCondition().getAChild*() and

View File

@@ -55,30 +55,9 @@ predicate resultIsChecked(SslGetPeerCertificateCall getCertCall, ControlFlowNode
predicate certIsZero(
SslGetPeerCertificateCall getCertCall, ControlFlowNode node1, ControlFlowNode node2
) {
exists(Expr cert | cert = globalValueNumber(getCertCall).getAnExpr() |
exists(GuardCondition guard, Expr zero |
zero.getValue().toInt() = 0 and
node1 = guard and
(
// if (cert == zero) {
guard.comparesEq(cert, zero, 0, true, true) and
node2 = guard.getATrueSuccessor()
or
// if (cert != zero) { }
guard.comparesEq(cert, zero, 0, false, true) and
node2 = guard.getAFalseSuccessor()
)
)
or
(
// if (cert) { }
node1 = cert
or
// if (!cert) {
node1.(NotExpr).getAChild() = cert
) and
node2 = node1.getASuccessor() and
not cert.(GuardCondition).controls(node2, true) // cert may be false
exists(Expr cert |
cert = globalValueNumber(getCertCall).getAnExpr() and
node1.(GuardCondition).ensuresEqEdge(cert, 0, _, node2.getBasicBlock(), true)
)
}

View File

@@ -6,7 +6,7 @@
* @kind problem
* @problem.severity warning
* @security-severity 8.8
* @precision high
* @precision medium
* @id cpp/suspicious-add-sizeof
* @tags security
* external/cwe/cwe-468
@@ -24,7 +24,6 @@ private predicate isCharSzPtrExpr(Expr e) {
from Expr sizeofExpr, Expr e
where
not any(Compilation c).buildModeNone() and
// If we see an addWithSizeof then we expect the type of
// the pointer expression to be `char*` or `void*`. Otherwise it
// is probably a mistake.

View File

@@ -1,5 +0,0 @@
---
category: fix
---
* The predicate `occurenceCount` in the file module `MagicConstants` has been deprecated. Use `occurrenceCount` instead.
* The predicate `additionalAdditionOrSubstractionCheckForLeapYear` in the file module `LeapYear` has been deprecated. Use `additionalAdditionOrSubtractionCheckForLeapYear` instead.

View File

@@ -0,0 +1,11 @@
## 1.5.0
### Major Analysis Improvements
* The queries `cpp/wrong-type-format-argument`, `cpp/comparison-with-wider-type`, `cpp/integer-multiplication-cast-to-long`, `cpp/implicit-function-declaration` and `cpp/suspicious-add-sizeof` have had their precisions reduced from `high` to `medium`. They will also now give alerts for projects built with `build-mode: none`.
* The queries `cpp/wrong-type-format-argument`, `cpp/comparison-with-wider-type`, `cpp/integer-multiplication-cast-to-long` and `cpp/suspicious-add-sizeof` are no longer included in the `code-scanning` suite.
### Bug Fixes
* The predicate `occurenceCount` in the file module `MagicConstants` has been deprecated. Use `occurrenceCount` instead.
* The predicate `additionalAdditionOrSubstractionCheckForLeapYear` in the file module `LeapYear` has been deprecated. Use `additionalAdditionOrSubtractionCheckForLeapYear` instead.

View File

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

View File

@@ -1,2 +1,2 @@
---
lastReleaseVersion: 1.4.7
lastReleaseVersion: 1.5.1

View File

@@ -1,5 +1,5 @@
name: codeql/cpp-queries
version: 1.4.8-dev
version: 1.5.1
groups:
- cpp
- queries

View File

@@ -50,37 +50,21 @@ argHasPostUpdate
postWithInFlow
| BarrierGuard.cpp:49:6:49:6 | x [post update] | PostUpdateNode should not be the target of local flow. |
| BarrierGuard.cpp:60:7:60:7 | x [post update] | PostUpdateNode should not be the target of local flow. |
| clang.cpp:22:9:22:20 | sourceArray1 [inner post update] | PostUpdateNode should not be the target of local flow. |
| clang.cpp:23:18:23:29 | sourceArray1 [inner post update] | PostUpdateNode should not be the target of local flow. |
| clang.cpp:29:22:29:23 | m1 [post update] | PostUpdateNode should not be the target of local flow. |
| clang.cpp:51:3:51:12 | stackArray [inner post update] | PostUpdateNode should not be the target of local flow. |
| clang.cpp:51:3:51:15 | access to array [post update] | PostUpdateNode should not be the target of local flow. |
| dispatch.cpp:60:3:60:14 | globalBottom [post update] | PostUpdateNode should not be the target of local flow. |
| dispatch.cpp:61:3:61:14 | globalMiddle [post update] | PostUpdateNode should not be the target of local flow. |
| dispatch.cpp:78:24:78:37 | call to allocateBottom [inner post update] | PostUpdateNode should not be the target of local flow. |
| dispatch.cpp:148:5:148:5 | f [post update] | PostUpdateNode should not be the target of local flow. |
| dispatch.cpp:168:8:168:8 | f [post update] | PostUpdateNode should not be the target of local flow. |
| example.c:24:9:24:9 | x [post update] | PostUpdateNode should not be the target of local flow. |
| example.c:24:20:24:20 | y [post update] | PostUpdateNode should not be the target of local flow. |
| example.c:26:9:26:9 | x [post update] | PostUpdateNode should not be the target of local flow. |
| example.c:26:19:26:24 | coords [inner post update] | PostUpdateNode should not be the target of local flow. |
| example.c:28:23:28:25 | pos [inner post update] | PostUpdateNode should not be the target of local flow. |
| flowOut.cpp:5:5:5:12 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| flowOut.cpp:5:6:5:12 | toTaint [inner post update] | PostUpdateNode should not be the target of local flow. |
| flowOut.cpp:8:5:8:12 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| flowOut.cpp:8:6:8:12 | toTaint [inner post update] | PostUpdateNode should not be the target of local flow. |
| flowOut.cpp:18:17:18:17 | x [inner post update] | PostUpdateNode should not be the target of local flow. |
| flowOut.cpp:30:12:30:12 | x [inner post update] | PostUpdateNode should not be the target of local flow. |
| flowOut.cpp:37:5:37:6 | p2 [inner post update] | PostUpdateNode should not be the target of local flow. |
| flowOut.cpp:37:5:37:9 | access to array [post update] | PostUpdateNode should not be the target of local flow. |
| flowOut.cpp:84:3:84:7 | call to deref [inner post update] | PostUpdateNode should not be the target of local flow. |
| flowOut.cpp:84:3:84:14 | access to array [post update] | PostUpdateNode should not be the target of local flow. |
| flowOut.cpp:84:10:84:10 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| flowOut.cpp:90:3:90:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| flowOut.cpp:90:4:90:4 | q [inner post update] | PostUpdateNode should not be the target of local flow. |
| flowOut.cpp:101:14:101:14 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| flowOut.cpp:168:3:168:10 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| flowOut.cpp:168:4:168:10 | toTaint [inner post update] | PostUpdateNode should not be the target of local flow. |
| globals.cpp:13:5:13:19 | flowTestGlobal1 [post update] | PostUpdateNode should not be the target of local flow. |
| globals.cpp:23:5:23:19 | flowTestGlobal2 [post update] | PostUpdateNode should not be the target of local flow. |
| lambdas.cpp:23:3:23:14 | v [post update] | PostUpdateNode should not be the target of local flow. |
@@ -106,57 +90,30 @@ postWithInFlow
| ref.cpp:109:9:109:11 | val [post update] | PostUpdateNode should not be the target of local flow. |
| ref.cpp:113:11:113:13 | val [post update] | PostUpdateNode should not be the target of local flow. |
| ref.cpp:115:11:115:13 | val [post update] | PostUpdateNode should not be the target of local flow. |
| self_parameter_flow.cpp:3:4:3:5 | ps [inner post update] | PostUpdateNode should not be the target of local flow. |
| self_parameter_flow.cpp:8:9:8:9 | s [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:91:3:91:9 | source1 [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:115:3:115:6 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:115:4:115:6 | out [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:120:3:120:6 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:120:4:120:6 | out [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:125:3:125:6 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:125:4:125:6 | out [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:333:5:333:13 | globalVar [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:347:5:347:13 | globalVar [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:359:5:359:9 | field [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:373:5:373:9 | field [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:384:10:384:13 | ref arg & ... | PostUpdateNode should not be the target of local flow. |
| test.cpp:384:11:384:13 | tmp [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:391:10:391:13 | ref arg & ... | PostUpdateNode should not be the target of local flow. |
| test.cpp:391:11:391:13 | tmp [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:400:10:400:13 | ref arg & ... | PostUpdateNode should not be the target of local flow. |
| test.cpp:400:11:400:13 | tmp [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:407:10:407:13 | ref arg & ... | PostUpdateNode should not be the target of local flow. |
| test.cpp:407:11:407:13 | tmp [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:423:21:423:25 | local [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:441:19:441:23 | local [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:472:3:472:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:472:4:472:4 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:477:22:477:22 | x [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:506:3:506:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:506:4:506:4 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:512:35:512:35 | x [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:519:3:519:12 | stackArray [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:519:3:519:15 | access to array [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:520:3:520:12 | stackArray [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:520:3:520:15 | access to array [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:526:3:526:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:526:4:526:4 | e [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:531:40:531:40 | e [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:537:5:537:6 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:537:6:537:6 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:542:5:542:6 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:542:6:542:6 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:548:25:548:25 | x [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:552:25:552:25 | y [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:562:5:562:13 | globalInt [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:576:5:576:13 | globalInt [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:589:19:589:19 | x [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:596:3:596:4 | xs [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:596:3:596:7 | access to array [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:602:3:602:3 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:602:3:602:7 | access to array [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:608:3:608:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:608:4:608:4 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:639:3:639:3 | x [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:646:3:646:3 | x [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:652:3:652:3 | x [post update] | PostUpdateNode should not be the target of local flow. |
@@ -167,40 +124,23 @@ postWithInFlow
| test.cpp:681:3:681:3 | s [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:689:3:689:3 | s [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:690:3:690:3 | s [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:694:4:694:6 | buf [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:704:23:704:25 | buf [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:715:25:715:25 | c [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:728:3:728:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:728:4:728:4 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:734:41:734:41 | x [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:808:5:808:21 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:808:6:808:21 | global_indirect1 [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:832:5:832:17 | global_direct [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:931:5:931:18 | global_pointer [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:932:5:932:19 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:932:6:932:19 | global_pointer [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1045:9:1045:11 | ref arg buf | PostUpdateNode should not be the target of local flow. |
| test.cpp:1066:5:1066:5 | i [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1069:5:1069:5 | i [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1087:5:1087:11 | content [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1088:9:1088:9 | a [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1092:5:1092:7 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1092:6:1092:7 | pp [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1098:53:1098:53 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1108:3:1108:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1108:4:1108:4 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1109:3:1109:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1109:4:1109:4 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1138:3:1138:13 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1138:5:1138:8 | data [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1139:3:1139:7 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1139:4:1139:7 | data [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1153:5:1153:6 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1153:6:1153:6 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1165:5:1165:6 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1165:6:1165:6 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1195:5:1195:6 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1195:6:1195:6 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
viableImplInCallContextTooLarge
uniqueParameterNodeAtPosition
uniqueParameterNodePosition

View File

@@ -48,8 +48,6 @@ argHasPostUpdate
postWithInFlow
| A.cpp:25:13:25:13 | c [post update] | PostUpdateNode should not be the target of local flow. |
| A.cpp:27:28:27:28 | c [post update] | PostUpdateNode should not be the target of local flow. |
| A.cpp:42:11:42:12 | cc [inner post update] | PostUpdateNode should not be the target of local flow. |
| A.cpp:43:11:43:12 | ct [inner post update] | PostUpdateNode should not be the target of local flow. |
| A.cpp:100:9:100:9 | a [post update] | PostUpdateNode should not be the target of local flow. |
| A.cpp:142:10:142:10 | c [post update] | PostUpdateNode should not be the target of local flow. |
| A.cpp:143:13:143:13 | b [post update] | PostUpdateNode should not be the target of local flow. |
@@ -67,11 +65,9 @@ postWithInFlow
| D.cpp:44:19:44:22 | elem [post update] | PostUpdateNode should not be the target of local flow. |
| D.cpp:57:5:57:12 | boxfield [post update] | PostUpdateNode should not be the target of local flow. |
| D.cpp:58:20:58:23 | elem [post update] | PostUpdateNode should not be the target of local flow. |
| E.cpp:33:19:33:19 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:9:6:9:7 | m1 [post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:13:5:13:6 | m1 [post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:17:5:17:6 | m1 [post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:25:18:25:19 | s1 [inner post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:37:8:37:9 | m1 [post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:42:6:42:7 | m1 [post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:49:9:49:10 | m1 [post update] | PostUpdateNode should not be the target of local flow. |
@@ -83,70 +79,31 @@ postWithInFlow
| aliasing.cpp:92:7:92:8 | m1 [post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:98:5:98:6 | m1 [post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:106:3:106:5 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:106:4:106:5 | pa [inner post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:111:18:111:19 | m1 [inner post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:126:15:126:16 | xs [inner post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:136:16:136:17 | xs [inner post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:147:16:147:16 | s [inner post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:147:21:147:22 | m1 [inner post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:175:21:175:22 | m1 [inner post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:181:21:181:22 | m1 [inner post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:187:21:187:22 | m1 [inner post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:194:21:194:22 | m1 [inner post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:200:23:200:24 | m1 [inner post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:205:23:205:24 | m1 [inner post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:215:14:215:15 | m1 [post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:223:17:223:18 | m1 [post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:234:19:234:20 | m1 [post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:242:22:242:23 | m1 [post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:252:5:252:31 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:252:28:252:31 | data [inner post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:262:5:262:29 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| aliasing.cpp:262:26:262:29 | data [inner post update] | PostUpdateNode should not be the target of local flow. |
| arrays.cpp:6:3:6:5 | arr [inner post update] | PostUpdateNode should not be the target of local flow. |
| arrays.cpp:6:3:6:8 | access to array [post update] | PostUpdateNode should not be the target of local flow. |
| arrays.cpp:15:3:15:10 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| arrays.cpp:15:5:15:7 | arr [inner post update] | PostUpdateNode should not be the target of local flow. |
| arrays.cpp:36:12:36:14 | arr [inner post update] | PostUpdateNode should not be the target of local flow. |
| arrays.cpp:36:19:36:22 | data [post update] | PostUpdateNode should not be the target of local flow. |
| arrays.cpp:37:17:37:19 | arr [inner post update] | PostUpdateNode should not be the target of local flow. |
| arrays.cpp:38:17:38:19 | arr [inner post update] | PostUpdateNode should not be the target of local flow. |
| arrays.cpp:42:15:42:17 | arr [inner post update] | PostUpdateNode should not be the target of local flow. |
| arrays.cpp:42:22:42:25 | data [post update] | PostUpdateNode should not be the target of local flow. |
| arrays.cpp:43:20:43:22 | arr [inner post update] | PostUpdateNode should not be the target of local flow. |
| arrays.cpp:44:20:44:22 | arr [inner post update] | PostUpdateNode should not be the target of local flow. |
| arrays.cpp:48:15:48:17 | ptr [inner post update] | PostUpdateNode should not be the target of local flow. |
| arrays.cpp:48:22:48:25 | data [post update] | PostUpdateNode should not be the target of local flow. |
| arrays.cpp:49:20:49:22 | ptr [inner post update] | PostUpdateNode should not be the target of local flow. |
| arrays.cpp:50:20:50:22 | ptr [inner post update] | PostUpdateNode should not be the target of local flow. |
| by_reference.cpp:12:8:12:8 | a [post update] | PostUpdateNode should not be the target of local flow. |
| by_reference.cpp:16:11:16:11 | a [post update] | PostUpdateNode should not be the target of local flow. |
| by_reference.cpp:68:18:68:18 | s [inner post update] | PostUpdateNode should not be the target of local flow. |
| by_reference.cpp:84:10:84:10 | a [post update] | PostUpdateNode should not be the target of local flow. |
| by_reference.cpp:88:9:88:9 | a [post update] | PostUpdateNode should not be the target of local flow. |
| by_reference.cpp:92:3:92:5 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| by_reference.cpp:92:4:92:5 | pa [inner post update] | PostUpdateNode should not be the target of local flow. |
| by_reference.cpp:96:3:96:4 | pa [post update] | PostUpdateNode should not be the target of local flow. |
| by_reference.cpp:102:28:102:39 | inner_nested [inner post update] | PostUpdateNode should not be the target of local flow. |
| by_reference.cpp:104:22:104:22 | a [inner post update] | PostUpdateNode should not be the target of local flow. |
| by_reference.cpp:106:30:106:41 | inner_nested [inner post update] | PostUpdateNode should not be the target of local flow. |
| by_reference.cpp:108:24:108:24 | a [inner post update] | PostUpdateNode should not be the target of local flow. |
| by_reference.cpp:123:28:123:36 | inner_ptr [inner post update] | PostUpdateNode should not be the target of local flow. |
| by_reference.cpp:127:30:127:38 | inner_ptr [inner post update] | PostUpdateNode should not be the target of local flow. |
| clearning.cpp:19:3:19:6 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| clearning.cpp:19:6:19:6 | x [inner post update] | PostUpdateNode should not be the target of local flow. |
| clearning.cpp:32:3:32:6 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| clearning.cpp:32:6:32:6 | x [inner post update] | PostUpdateNode should not be the target of local flow. |
| clearning.cpp:39:3:39:6 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| clearning.cpp:39:6:39:6 | x [inner post update] | PostUpdateNode should not be the target of local flow. |
| clearning.cpp:40:5:40:5 | x [post update] | PostUpdateNode should not be the target of local flow. |
| clearning.cpp:47:5:47:5 | x [post update] | PostUpdateNode should not be the target of local flow. |
| clearning.cpp:53:3:53:6 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| clearning.cpp:53:6:53:6 | x [inner post update] | PostUpdateNode should not be the target of local flow. |
| clearning.cpp:75:2:75:10 | access to array [post update] | PostUpdateNode should not be the target of local flow. |
| clearning.cpp:75:4:75:6 | val [inner post update] | PostUpdateNode should not be the target of local flow. |
| clearning.cpp:82:2:82:9 | access to array [post update] | PostUpdateNode should not be the target of local flow. |
| clearning.cpp:82:4:82:6 | val [inner post update] | PostUpdateNode should not be the target of local flow. |
| clearning.cpp:83:7:83:9 | val [post update] | PostUpdateNode should not be the target of local flow. |
| clearning.cpp:97:4:97:6 | val [post update] | PostUpdateNode should not be the target of local flow. |
| clearning.cpp:124:4:124:6 | val [post update] | PostUpdateNode should not be the target of local flow. |
@@ -162,7 +119,6 @@ postWithInFlow
| complex.cpp:11:22:11:23 | a_ [post update] | PostUpdateNode should not be the target of local flow. |
| complex.cpp:12:22:12:23 | b_ [post update] | PostUpdateNode should not be the target of local flow. |
| conflated.cpp:10:3:10:7 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| conflated.cpp:10:7:10:7 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| conflated.cpp:29:7:29:7 | x [post update] | PostUpdateNode should not be the target of local flow. |
| conflated.cpp:36:7:36:7 | x [post update] | PostUpdateNode should not be the target of local flow. |
| conflated.cpp:53:7:53:10 | next [post update] | PostUpdateNode should not be the target of local flow. |
@@ -174,19 +130,11 @@ postWithInFlow
| qualifiers.cpp:12:56:12:56 | a [post update] | PostUpdateNode should not be the target of local flow. |
| qualifiers.cpp:13:57:13:57 | a [post update] | PostUpdateNode should not be the target of local flow. |
| qualifiers.cpp:22:23:22:23 | a [post update] | PostUpdateNode should not be the target of local flow. |
| qualifiers.cpp:37:26:37:33 | call to getInner [inner post update] | PostUpdateNode should not be the target of local flow. |
| qualifiers.cpp:42:13:42:20 | call to getInner [inner post update] | PostUpdateNode should not be the target of local flow. |
| qualifiers.cpp:42:25:42:25 | a [post update] | PostUpdateNode should not be the target of local flow. |
| qualifiers.cpp:47:7:47:11 | outer [inner post update] | PostUpdateNode should not be the target of local flow. |
| qualifiers.cpp:47:27:47:27 | a [post update] | PostUpdateNode should not be the target of local flow. |
| realistic.cpp:49:13:49:15 | bar [inner post update] | PostUpdateNode should not be the target of local flow. |
| realistic.cpp:49:20:49:22 | baz [post update] | PostUpdateNode should not be the target of local flow. |
| realistic.cpp:53:13:53:15 | bar [inner post update] | PostUpdateNode should not be the target of local flow. |
| realistic.cpp:53:35:53:43 | bufferLen [post update] | PostUpdateNode should not be the target of local flow. |
| realistic.cpp:54:20:54:22 | bar [inner post update] | PostUpdateNode should not be the target of local flow. |
| realistic.cpp:60:16:60:18 | ref arg dst | PostUpdateNode should not be the target of local flow. |
| realistic.cpp:61:25:61:27 | bar [inner post update] | PostUpdateNode should not be the target of local flow. |
| realistic.cpp:65:25:65:27 | bar [inner post update] | PostUpdateNode should not be the target of local flow. |
| simple.cpp:20:24:20:25 | a_ [post update] | PostUpdateNode should not be the target of local flow. |
| simple.cpp:21:24:21:25 | b_ [post update] | PostUpdateNode should not be the target of local flow. |
| simple.cpp:65:7:65:7 | i [post update] | PostUpdateNode should not be the target of local flow. |
@@ -194,9 +142,6 @@ postWithInFlow
| simple.cpp:92:7:92:7 | i [post update] | PostUpdateNode should not be the target of local flow. |
| simple.cpp:118:7:118:7 | i [post update] | PostUpdateNode should not be the target of local flow. |
| simple.cpp:124:5:124:6 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| simple.cpp:124:6:124:6 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| struct_init.c:24:11:24:12 | ab [inner post update] | PostUpdateNode should not be the target of local flow. |
| struct_init.c:36:17:36:24 | nestedAB [inner post update] | PostUpdateNode should not be the target of local flow. |
viableImplInCallContextTooLarge
uniqueParameterNodeAtPosition
uniqueParameterNodePosition

View File

@@ -18,7 +18,6 @@ postIsInSameCallable
reverseRead
argHasPostUpdate
postWithInFlow
| tests.cpp:436:6:436:25 | [summary] to write: Argument[1] in madCallArg0WithValue | PostUpdateNode should not be the target of local flow. |
viableImplInCallContextTooLarge
uniqueParameterNodeAtPosition
uniqueParameterNodePosition

View File

@@ -1 +0,0 @@
| permissive.cpp:6:5:6:7 | str |

View File

@@ -1 +0,0 @@
| permissive.cpp:6:3:6:3 | call to f | permissive.cpp:2:13:2:13 | f |

View File

@@ -1,8 +0,0 @@
// semmle-extractor-options: --edg --permissive
static void f(char* foo) {}
static void g(void) {
const char* str = "foo";
f(str);
}

View File

@@ -48,21 +48,10 @@ argHasPostUpdate
| ir.cpp:623:5:623:5 | r | ArgumentNode is missing PostUpdateNode. |
| ir.cpp:625:5:625:5 | s | ArgumentNode is missing PostUpdateNode. |
postWithInFlow
| VacuousDestructorCall.cpp:10:22:10:22 | i [inner post update] | PostUpdateNode should not be the target of local flow. |
| allocators.cpp:4:18:4:20 | m_x [post update] | PostUpdateNode should not be the target of local flow. |
| allocators.cpp:4:24:4:26 | m_y [post update] | PostUpdateNode should not be the target of local flow. |
| assignexpr.cpp:11:4:11:4 | i [post update] | PostUpdateNode should not be the target of local flow. |
| builtin.c:34:23:34:31 | staticint [inner post update] | PostUpdateNode should not be the target of local flow. |
| builtin.c:39:37:39:45 | carry_out [inner post update] | PostUpdateNode should not be the target of local flow. |
| builtin.c:43:41:43:49 | staticint [inner post update] | PostUpdateNode should not be the target of local flow. |
| builtin.c:51:30:51:38 | staticint [inner post update] | PostUpdateNode should not be the target of local flow. |
| builtin.c:54:29:54:38 | atomic_int [inner post update] | PostUpdateNode should not be the target of local flow. |
| condition_decls.cpp:3:5:3:9 | m_ptr [post update] | PostUpdateNode should not be the target of local flow. |
| condition_decls.cpp:17:11:17:15 | m_ptr [inner post update] | PostUpdateNode should not be the target of local flow. |
| condition_decls.cpp:20:11:20:15 | m_ptr [inner post update] | PostUpdateNode should not be the target of local flow. |
| condition_decls.cpp:28:11:28:15 | m_ptr [inner post update] | PostUpdateNode should not be the target of local flow. |
| condition_decls.cpp:31:11:31:15 | m_ptr [inner post update] | PostUpdateNode should not be the target of local flow. |
| condition_decls.cpp:34:9:34:13 | m_ptr [inner post update] | PostUpdateNode should not be the target of local flow. |
| conditional_destructors.cpp:6:13:6:15 | val [post update] | PostUpdateNode should not be the target of local flow. |
| conditional_destructors.cpp:18:13:18:15 | val [post update] | PostUpdateNode should not be the target of local flow. |
| cpp11.cpp:7:7:7:8 | el [post update] | PostUpdateNode should not be the target of local flow. |
@@ -70,26 +59,16 @@ postWithInFlow
| cpp11.cpp:82:11:82:14 | call to Val | PostUpdateNode should not be the target of local flow. |
| cpp11.cpp:82:45:82:48 | call to Val | PostUpdateNode should not be the target of local flow. |
| cpp11.cpp:82:51:82:51 | call to Val | PostUpdateNode should not be the target of local flow. |
| ir.cpp:177:5:177:5 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:177:5:177:8 | access to array [post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:178:5:178:8 | access to array [post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:178:7:178:7 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:183:5:183:5 | a [inner post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:183:5:183:8 | access to array [post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:184:5:184:8 | access to array [post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:184:7:184:7 | a [inner post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:342:5:342:6 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:342:6:342:6 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:428:8:428:8 | x [post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:429:8:429:8 | y [post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:644:15:644:17 | m_a [post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:645:11:645:14 | this [inner post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:645:17:645:19 | m_a [post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:646:9:646:11 | m_a [post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:655:11:655:14 | this [inner post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:747:8:747:8 | base_s [inner post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:756:8:756:8 | middle_s [inner post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:765:8:765:8 | derived_s [inner post update] | PostUpdateNode should not be the target of local flow. |
| ir.cpp:811:7:811:13 | call to Base | PostUpdateNode should not be the target of local flow. |
| ir.cpp:812:7:812:26 | call to Base | PostUpdateNode should not be the target of local flow. |
| ir.cpp:825:7:825:13 | call to Base | PostUpdateNode should not be the target of local flow. |
@@ -97,7 +76,6 @@ postWithInFlow
| misc.c:130:7:130:7 | i [post update] | PostUpdateNode should not be the target of local flow. |
| misc.c:131:9:131:9 | i [post update] | PostUpdateNode should not be the target of local flow. |
| misc.c:220:3:220:5 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| misc.c:220:4:220:5 | sp [inner post update] | PostUpdateNode should not be the target of local flow. |
| static_init_templates.cpp:3:2:3:4 | ref [post update] | PostUpdateNode should not be the target of local flow. |
| static_init_templates.cpp:21:2:21:4 | val [post update] | PostUpdateNode should not be the target of local flow. |
| try_catch.cpp:7:8:7:8 | call to exception | PostUpdateNode should not be the target of local flow. |

View File

@@ -0,0 +1,42 @@
struct S {
int a;
int b;
int c;
unsigned long *d;
union {
struct {
const char *e;
int f;
S *g;
const char *h;
int i;
bool j;
bool k;
const char *l;
char **m;
} n;
struct {
bool o;
bool p;
} q;
} r;
};
int too_many_constants_init(S *s);
char *too_many_constants(const char *h, bool k, int i) {
const char *e = "";
char l[64] = "";
char *m;
S s[] = {
{.a = 0, .c = 0, .d = nullptr, .r = {.n = {.e = e, .f = 1, .g = nullptr, .h = h, .i = i, .j = false, .k = k, .l = l, .m = &m}}},
{.a = 0, .c = 0, .d = nullptr, .r = {.q = {.o = true, .p = true}}}
};
too_many_constants_init(s);
return m; // GOOD - initialized by too_many_constants_init
}

View File

@@ -7,7 +7,7 @@ runs:
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.100
dotnet-version: 9.0.300
- name: Build Extractor
shell: bash
run: scripts/create-extractor-pack.sh

View File

@@ -138,7 +138,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
}
// The version number should be kept in sync with the version .NET version used for building the application.
public const string LatestDotNetSdkVersion = "9.0.100";
public const string LatestDotNetSdkVersion = "9.0.300";
/// <summary>
/// Returns a script for downloading relevant versions of the

View File

@@ -2,8 +2,9 @@
load(":paket.main.bzl", _main = "main")
def _main_impl(_ctx):
def _main_impl(module_ctx):
_main()
return module_ctx.extension_metadata(reproducible = True)
main_extension = module_extension(
implementation = _main_impl,

View File

@@ -1,3 +1,11 @@
## 1.7.49
No user-facing changes.
## 1.7.48
No user-facing changes.
## 1.7.47
No user-facing changes.

View File

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

View File

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

View File

@@ -1,2 +1,2 @@
---
lastReleaseVersion: 1.7.47
lastReleaseVersion: 1.7.49

View File

@@ -1,5 +1,5 @@
name: codeql/csharp-solorigate-all
version: 1.7.48-dev
version: 1.7.49
groups:
- csharp
- solorigate

View File

@@ -1,3 +1,11 @@
## 1.7.49
No user-facing changes.
## 1.7.48
No user-facing changes.
## 1.7.47
No user-facing changes.

View File

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

View File

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

View File

@@ -1,2 +1,2 @@
---
lastReleaseVersion: 1.7.47
lastReleaseVersion: 1.7.49

View File

@@ -1,5 +1,5 @@
name: codeql/csharp-solorigate-queries
version: 1.7.48-dev
version: 1.7.49
groups:
- csharp
- solorigate

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}
}

View File

@@ -3,8 +3,8 @@
| BlazorTest/Components/Pages/TestPage.razor:11:48:11:55 | access to property UrlParam | BlazorTest/Components/Pages/TestPage.razor:11:48:11:55 | access to property UrlParam | BlazorTest/Components/Pages/TestPage.razor:11:48:11:55 | access to property UrlParam | $@ flows to here and is written to HTML or JavaScript. | BlazorTest/Components/Pages/TestPage.razor:11:48:11:55 | access to property UrlParam | User-provided value |
| BlazorTest/Components/Pages/TestPage.razor:20:60:20:69 | access to property QueryParam | BlazorTest/Components/Pages/TestPage.razor:20:60:20:69 | access to property QueryParam | BlazorTest/Components/Pages/TestPage.razor:20:60:20:69 | access to property QueryParam | $@ flows to here and is written to HTML or JavaScript. | BlazorTest/Components/Pages/TestPage.razor:20:60:20:69 | access to property QueryParam | User-provided value |
edges
| BlazorTest/Components/Pages/TestPage.razor:85:23:85:32 | access to property QueryParam : String | BlazorTest/obj/Debug/net9.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Pages_TestPage_razor.g.cs:569:16:577:13 | call to method TypeCheck<String> : String | provenance | Src:MaD:2 MaD:3 |
| BlazorTest/obj/Debug/net9.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Pages_TestPage_razor.g.cs:569:16:577:13 | call to method TypeCheck<String> : String | BlazorTest/Components/MyOutput.razor:5:53:5:57 | access to property Value | provenance | Sink:MaD:1 |
| BlazorTest/Components/Pages/TestPage.razor:85:23:85:32 | access to property QueryParam : String | BlazorTest/obj/Debug/net9.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Pages_TestPage_razor.g.cs:553:16:561:13 | call to method TypeCheck<String> : String | provenance | Src:MaD:2 MaD:3 |
| BlazorTest/obj/Debug/net9.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Pages_TestPage_razor.g.cs:553:16:561:13 | call to method TypeCheck<String> : String | BlazorTest/Components/MyOutput.razor:5:53:5:57 | access to property Value | provenance | Sink:MaD:1 |
models
| 1 | Sink: Microsoft.AspNetCore.Components; MarkupString; false; MarkupString; (System.String); ; Argument[0]; html-injection; manual |
| 2 | Source: Microsoft.AspNetCore.Components; SupplyParameterFromQueryAttribute; false; ; ; Attribute.Getter; ReturnValue; remote; manual |
@@ -14,5 +14,5 @@ nodes
| BlazorTest/Components/Pages/TestPage.razor:11:48:11:55 | access to property UrlParam | semmle.label | access to property UrlParam |
| BlazorTest/Components/Pages/TestPage.razor:20:60:20:69 | access to property QueryParam | semmle.label | access to property QueryParam |
| BlazorTest/Components/Pages/TestPage.razor:85:23:85:32 | access to property QueryParam : String | semmle.label | access to property QueryParam : String |
| BlazorTest/obj/Debug/net9.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Pages_TestPage_razor.g.cs:569:16:577:13 | call to method TypeCheck<String> : String | semmle.label | call to method TypeCheck<String> : String |
| BlazorTest/obj/Debug/net9.0/generated/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Components_Pages_TestPage_razor.g.cs:553:16:561:13 | call to method TypeCheck<String> : String | semmle.label | call to method TypeCheck<String> : String |
subpaths

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.300"
"version": "9.0.304"
}
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,6 +1,6 @@
diagnosticAttributes
| Scanning C# code completed successfully, but the scan encountered issues. This may be caused by problems identifying dependencies or use of generated source code, among other reasons -- see other CodeQL diagnostics reported on the CodeQL status page for more details of possible causes. Addressing these warnings is advisable to avoid false-positive or missing results. If they cannot be addressed, consider scanning C# using either the `autobuild` or `manual` [build modes](https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#comparison-of-the-build-modes). | visibilityCliSummaryTable | true |
| Scanning C# code completed successfully, but the scan encountered issues. This may be caused by problems identifying dependencies or use of generated source code, among other reasons -- see other CodeQL diagnostics reported on the CodeQL status page for more details of possible causes. Addressing these warnings is advisable to avoid false-positive or missing results. If they cannot be addressed, consider scanning C# using either the `autobuild` or `manual` [build modes](https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#comparison-of-the-build-modes). | visibilityStatusPage | true |
| Scanning C# code completed successfully, but the scan encountered issues. This may be caused by problems identifying dependencies or use of generated source code, among other reasons -- see other CodeQL diagnostics reported on the CodeQL status page for more details of possible causes. Addressing these warnings is advisable to avoid false-positive or missing results. If they cannot be addressed, consider scanning C# using either the `autobuild` or `manual` [build modes](https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#comparison-of-the-build-modes). | visibilityTelemetry | true |
| Scanning C# code completed successfully, but the scan encountered issues. This may be caused by problems identifying dependencies or use of generated source code. Some metrics of the database quality are: Percentage of calls with call target: 25 % (threshold 85 %). Percentage of expressions with known type: 58 % (threshold 85 %). Ideally these metrics should be above their thresholds. Addressing these issues is advisable to avoid false-positives or missing results. If they cannot be addressed, consider scanning C# using either the `autobuild` or `manual` [build modes](https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#comparison-of-the-build-modes). | visibilityCliSummaryTable | true |
| Scanning C# code completed successfully, but the scan encountered issues. This may be caused by problems identifying dependencies or use of generated source code. Some metrics of the database quality are: Percentage of calls with call target: 25 % (threshold 85 %). Percentage of expressions with known type: 58 % (threshold 85 %). Ideally these metrics should be above their thresholds. Addressing these issues is advisable to avoid false-positives or missing results. If they cannot be addressed, consider scanning C# using either the `autobuild` or `manual` [build modes](https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#comparison-of-the-build-modes). | visibilityStatusPage | true |
| Scanning C# code completed successfully, but the scan encountered issues. This may be caused by problems identifying dependencies or use of generated source code. Some metrics of the database quality are: Percentage of calls with call target: 25 % (threshold 85 %). Percentage of expressions with known type: 58 % (threshold 85 %). Ideally these metrics should be above their thresholds. Addressing these issues is advisable to avoid false-positives or missing results. If they cannot be addressed, consider scanning C# using either the `autobuild` or `manual` [build modes](https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#comparison-of-the-build-modes). | visibilityTelemetry | true |
#select
| Scanning C# code completed successfully, but the scan encountered issues. This may be caused by problems identifying dependencies or use of generated source code, among other reasons -- see other CodeQL diagnostics reported on the CodeQL status page for more details of possible causes. Addressing these warnings is advisable to avoid false-positive or missing results. If they cannot be addressed, consider scanning C# using either the `autobuild` or `manual` [build modes](https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#comparison-of-the-build-modes). | Scanning C# code completed successfully, but the scan encountered issues. This may be caused by problems identifying dependencies or use of generated source code, among other reasons -- see other CodeQL diagnostics reported on the CodeQL status page for more details of possible causes. Addressing these warnings is advisable to avoid false-positive or missing results. If they cannot be addressed, consider scanning C# using either the `autobuild` or `manual` [build modes](https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#comparison-of-the-build-modes). | 1 |
| Scanning C# code completed successfully, but the scan encountered issues. This may be caused by problems identifying dependencies or use of generated source code. Some metrics of the database quality are: Percentage of calls with call target: 25 % (threshold 85 %). Percentage of expressions with known type: 58 % (threshold 85 %). Ideally these metrics should be above their thresholds. Addressing these issues is advisable to avoid false-positives or missing results. If they cannot be addressed, consider scanning C# using either the `autobuild` or `manual` [build modes](https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#comparison-of-the-build-modes). | Scanning C# code completed successfully, but the scan encountered issues. This may be caused by problems identifying dependencies or use of generated source code. Some metrics of the database quality are: Percentage of calls with call target: 25 % (threshold 85 %). Percentage of expressions with known type: 58 % (threshold 85 %). Ideally these metrics should be above their thresholds. Addressing these issues is advisable to avoid false-positives or missing results. If they cannot be addressed, consider scanning C# using either the `autobuild` or `manual` [build modes](https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#comparison-of-the-build-modes). | 1 |

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "9.0.100"
"version": "9.0.304"
}
}

View File

@@ -2,5 +2,9 @@ import os
def test(codeql, csharp):
# Making sure the reachability test of `nuget.org` succeeds:
os.environ["CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK_FALLBACK_TIMEOUT"] = "1000"
os.environ["CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK_FALLBACK_LIMIT"] = "5"
os.environ["CODEQL_EXTRACTOR_CSHARP_BUILDLESS_EXTRACT_RESOURCES"] = "true"
codeql.database.create(build_mode="none")

View File

@@ -1,49 +1,49 @@
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/Accessibility.dll:0:0:0:0 | Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/Microsoft.VisualBasic.Forms.dll:0:0:0:0 | Microsoft.VisualBasic.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/Microsoft.VisualBasic.dll:0:0:0:0 | Microsoft.VisualBasic, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/Microsoft.Win32.Registry.AccessControl.dll:0:0:0:0 | Microsoft.Win32.Registry.AccessControl, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/Microsoft.Win32.SystemEvents.dll:0:0:0:0 | Microsoft.Win32.SystemEvents, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/PresentationCore.dll:0:0:0:0 | PresentationCore, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/PresentationFramework.Aero2.dll:0:0:0:0 | PresentationFramework.Aero2, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/PresentationFramework.Aero.dll:0:0:0:0 | PresentationFramework.Aero, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/PresentationFramework.AeroLite.dll:0:0:0:0 | PresentationFramework.AeroLite, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/PresentationFramework.Classic.dll:0:0:0:0 | PresentationFramework.Classic, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/PresentationFramework.Luna.dll:0:0:0:0 | PresentationFramework.Luna, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/PresentationFramework.Royale.dll:0:0:0:0 | PresentationFramework.Royale, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/PresentationFramework.dll:0:0:0:0 | PresentationFramework, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/PresentationUI.dll:0:0:0:0 | PresentationUI, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/ReachFramework.dll:0:0:0:0 | ReachFramework, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.CodeDom.dll:0:0:0:0 | System.CodeDom, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Configuration.ConfigurationManager.dll:0:0:0:0 | System.Configuration.ConfigurationManager, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Design.dll:0:0:0:0 | System.Design, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Diagnostics.EventLog.dll:0:0:0:0 | System.Diagnostics.EventLog, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Diagnostics.PerformanceCounter.dll:0:0:0:0 | System.Diagnostics.PerformanceCounter, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.DirectoryServices.dll:0:0:0:0 | System.DirectoryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Drawing.Common.dll:0:0:0:0 | System.Drawing.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Drawing.Design.dll:0:0:0:0 | System.Drawing.Design, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Drawing.dll:0:0:0:0 | System.Drawing, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Formats.Nrbf.dll:0:0:0:0 | System.Formats.Nrbf, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.IO.Packaging.dll:0:0:0:0 | System.IO.Packaging, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Printing.dll:0:0:0:0 | System.Printing, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Private.Windows.Core.dll:0:0:0:0 | System.Private.Windows.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Resources.Extensions.dll:0:0:0:0 | System.Resources.Extensions, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Security.Cryptography.Pkcs.dll:0:0:0:0 | System.Security.Cryptography.Pkcs, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Security.Cryptography.ProtectedData.dll:0:0:0:0 | System.Security.Cryptography.ProtectedData, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Security.Cryptography.Xml.dll:0:0:0:0 | System.Security.Cryptography.Xml, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Security.Permissions.dll:0:0:0:0 | System.Security.Permissions, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Threading.AccessControl.dll:0:0:0:0 | System.Threading.AccessControl, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Windows.Controls.Ribbon.dll:0:0:0:0 | System.Windows.Controls.Ribbon, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Windows.Extensions.dll:0:0:0:0 | System.Windows.Extensions, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Windows.Forms.Design.Editors.dll:0:0:0:0 | System.Windows.Forms.Design.Editors, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Windows.Forms.Design.dll:0:0:0:0 | System.Windows.Forms.Design, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Windows.Forms.Primitives.dll:0:0:0:0 | System.Windows.Forms.Primitives, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Windows.Forms.dll:0:0:0:0 | System.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Windows.Input.Manipulations.dll:0:0:0:0 | System.Windows.Input.Manipulations, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Windows.Presentation.dll:0:0:0:0 | System.Windows.Presentation, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/System.Xaml.dll:0:0:0:0 | System.Xaml, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/UIAutomationClient.dll:0:0:0:0 | UIAutomationClient, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/UIAutomationClientSideProviders.dll:0:0:0:0 | UIAutomationClientSideProviders, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/UIAutomationProvider.dll:0:0:0:0 | UIAutomationProvider, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/UIAutomationTypes.dll:0:0:0:0 | UIAutomationTypes, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/WindowsBase.dll:0:0:0:0 | WindowsBase, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.0/ref/net9.0/WindowsFormsIntegration.dll:0:0:0:0 | WindowsFormsIntegration, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/Accessibility.dll:0:0:0:0 | Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/Microsoft.VisualBasic.Forms.dll:0:0:0:0 | Microsoft.VisualBasic.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/Microsoft.VisualBasic.dll:0:0:0:0 | Microsoft.VisualBasic, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/Microsoft.Win32.Registry.AccessControl.dll:0:0:0:0 | Microsoft.Win32.Registry.AccessControl, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/Microsoft.Win32.SystemEvents.dll:0:0:0:0 | Microsoft.Win32.SystemEvents, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/PresentationCore.dll:0:0:0:0 | PresentationCore, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/PresentationFramework.Aero2.dll:0:0:0:0 | PresentationFramework.Aero2, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/PresentationFramework.Aero.dll:0:0:0:0 | PresentationFramework.Aero, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/PresentationFramework.AeroLite.dll:0:0:0:0 | PresentationFramework.AeroLite, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/PresentationFramework.Classic.dll:0:0:0:0 | PresentationFramework.Classic, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/PresentationFramework.Luna.dll:0:0:0:0 | PresentationFramework.Luna, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/PresentationFramework.Royale.dll:0:0:0:0 | PresentationFramework.Royale, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/PresentationFramework.dll:0:0:0:0 | PresentationFramework, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/PresentationUI.dll:0:0:0:0 | PresentationUI, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/ReachFramework.dll:0:0:0:0 | ReachFramework, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.CodeDom.dll:0:0:0:0 | System.CodeDom, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Configuration.ConfigurationManager.dll:0:0:0:0 | System.Configuration.ConfigurationManager, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Design.dll:0:0:0:0 | System.Design, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Diagnostics.EventLog.dll:0:0:0:0 | System.Diagnostics.EventLog, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Diagnostics.PerformanceCounter.dll:0:0:0:0 | System.Diagnostics.PerformanceCounter, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.DirectoryServices.dll:0:0:0:0 | System.DirectoryServices, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Drawing.Common.dll:0:0:0:0 | System.Drawing.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Drawing.Design.dll:0:0:0:0 | System.Drawing.Design, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Drawing.dll:0:0:0:0 | System.Drawing, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Formats.Nrbf.dll:0:0:0:0 | System.Formats.Nrbf, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.IO.Packaging.dll:0:0:0:0 | System.IO.Packaging, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Printing.dll:0:0:0:0 | System.Printing, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Private.Windows.Core.dll:0:0:0:0 | System.Private.Windows.Core, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Resources.Extensions.dll:0:0:0:0 | System.Resources.Extensions, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Security.Cryptography.Pkcs.dll:0:0:0:0 | System.Security.Cryptography.Pkcs, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Security.Cryptography.ProtectedData.dll:0:0:0:0 | System.Security.Cryptography.ProtectedData, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Security.Cryptography.Xml.dll:0:0:0:0 | System.Security.Cryptography.Xml, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Security.Permissions.dll:0:0:0:0 | System.Security.Permissions, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Threading.AccessControl.dll:0:0:0:0 | System.Threading.AccessControl, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Windows.Controls.Ribbon.dll:0:0:0:0 | System.Windows.Controls.Ribbon, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Windows.Extensions.dll:0:0:0:0 | System.Windows.Extensions, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Windows.Forms.Design.Editors.dll:0:0:0:0 | System.Windows.Forms.Design.Editors, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Windows.Forms.Design.dll:0:0:0:0 | System.Windows.Forms.Design, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Windows.Forms.Primitives.dll:0:0:0:0 | System.Windows.Forms.Primitives, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Windows.Forms.dll:0:0:0:0 | System.Windows.Forms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Windows.Input.Manipulations.dll:0:0:0:0 | System.Windows.Input.Manipulations, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Windows.Presentation.dll:0:0:0:0 | System.Windows.Presentation, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/System.Xaml.dll:0:0:0:0 | System.Xaml, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/UIAutomationClient.dll:0:0:0:0 | UIAutomationClient, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/UIAutomationClientSideProviders.dll:0:0:0:0 | UIAutomationClientSideProviders, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/UIAutomationProvider.dll:0:0:0:0 | UIAutomationProvider, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/UIAutomationTypes.dll:0:0:0:0 | UIAutomationTypes, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/WindowsBase.dll:0:0:0:0 | WindowsBase, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |
| test-db/working/packages/microsoft.windowsdesktop.app.ref/9.0.8/ref/net9.0/WindowsFormsIntegration.dll:0:0:0:0 | WindowsFormsIntegration, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 |

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