Asger F
|
b6e07c0cd5
|
Ruby: block API graph nodes from tracking through self-argument passing
|
2022-10-11 09:03:52 +02:00 |
|
Asger F
|
125761755a
|
Ruby: do not generate API graph edges from Attribute contents
Models should use Method[x] edges, not attribute edges
|
2022-10-11 09:03:52 +02:00 |
|
Asger F
|
38a3476d37
|
Ruby: add local field step to type tracking
fixup local field steps
|
2022-10-11 09:03:51 +02:00 |
|
Asger F
|
d55925d8d4
|
Ruby: support splat type-tracking step
|
2022-10-11 09:03:51 +02:00 |
|
Tom Hvitved
|
6c2eee3eb8
|
Ruby: Restrict regexp taint flow to String summaries
|
2022-10-10 20:58:41 +02:00 |
|
Tom Hvitved
|
ffb2b1c15e
|
Data flow: Sync files
|
2022-10-10 15:39:13 +02:00 |
|
Tom Hvitved
|
60fe370f2a
|
Merge pull request #10744 from hvitved/dataflow/has-flow-to-no-fast-tc
Data flow: Avoid call to `pathSuccPlus` in `Configuration::hasFlowTo(Expr)`
|
2022-10-10 14:02:39 +02:00 |
|
Tom Hvitved
|
099251a30a
|
Merge pull request #10741 from hvitved/ruby/no-full-fast-tc
Ruby: Avoid computing full `fastTC` for `AstNode::getParent`
|
2022-10-10 14:01:56 +02:00 |
|
Nick Rolfe
|
e38cfd5f7d
|
Ruby: add changenote for ActionMailer params
|
2022-10-10 10:25:19 +01:00 |
|
Nick Rolfe
|
d61f0559a0
|
Ruby: add ActionMailer#params as a RemoteFlowSource
|
2022-10-10 10:23:48 +01:00 |
|
Alex Ford
|
d0bdbe65ef
|
Ruby: ActiveJob::Serializers.deserialize changenote
|
2022-10-09 22:47:52 +01:00 |
|
Alex Ford
|
ee77404006
|
Ruby: Add ActiveJob::Serializers.deserialize as a code execution sink
|
2022-10-09 22:28:22 +01:00 |
|
Tom Hvitved
|
efa6b3c0c6
|
Ruby: Cache uses of DataFlowImplForHttpClientLibraries
|
2022-10-09 19:59:56 +02:00 |
|
Tom Hvitved
|
9f34bf80fd
|
Ruby: Cache use of DataFlowImplForPathname
|
2022-10-09 19:59:05 +02:00 |
|
Tom Hvitved
|
296ec94a2a
|
Data flow: Sync files
|
2022-10-09 19:48:45 +02:00 |
|
Tom Hvitved
|
d1c8c40c17
|
Data flow: Avoid call to pathSuccPlus in Configuration::hasFlowTo(Expr)
|
2022-10-09 19:48:44 +02:00 |
|
Alex Ford
|
43fec9dfc8
|
Revert "Ruby: switch rb/sensitive-get-query back to using local flow"
This reverts commit fa58c51810.
|
2022-10-09 13:06:13 +01:00 |
|
Alex Ford
|
139d3868e5
|
Merge branch 'main' into rb/sensitive-get-query
|
2022-10-09 12:26:44 +01:00 |
|
Tom Hvitved
|
02192acd5f
|
Ruby: Avoid computing full fastTC for AstNode::getParent
DIL before
```
/* AST::AstNode */ AST#87953007::Cached::TAstNode result) =
fastTC(AST#a6718388::AstNode::getAChild#0#dispred#ff/2)
.
Synthesis#d9ff06b1::Desugared::getADescendant#0#dispred#ff(/* Synthesis::Desugared */ AST#87953007::Cached::TAstNode this,
/* AST::AstNode */ AST#87953007::Cached::TAstNode result)
:-
(
exists(int arg1,
/* AST::AstNode */ dontcare AST#87953007::Cached::TAstNode _ |
arg1 = -1, AST#87953007::Cached::getSynthChild#2(_, arg1, this)
),
result = this
);
(
exists(int arg1,
/* AST::AstNode */ dontcare AST#87953007::Cached::TAstNode _ |
arg1 = -1, AST#87953007::Cached::getSynthChild#2(_, arg1, this)
),
#AST#a6718388::AstNode::getAChild#0#dispredPlus#ff(this, result)
)
.
```
DIL after
```
incremental
Synthesis#d9ff06b1::Desugared::getADescendant#ff(/* Synthesis::Desugared */ AST#87953007::Cached::TAstNode this,
/* AST::AstNode */ AST#87953007::Cached::TAstNode result)
:-
(
exists(int arg1,
/* AST::AstNode */ dontcare AST#87953007::Cached::TAstNode _ |
arg1 = -1, AST#87953007::Cached::getSynthChild#2(_, arg1, this)
),
result = this
);
exists(/* AST::AstNode */ AST#87953007::Cached::TAstNode call_result#2 |
exists(int arg1,
/* AST::AstNode */ dontcare AST#87953007::Cached::TAstNode _ |
arg1 = -1, AST#87953007::Cached::getSynthChild#2(_, arg1, this)
),
rec Synthesis#d9ff06b1::Desugared::getADescendant#ff(this, call_result#2),
exists(cached dontcare string _ |
AST#a6718388::AstNode::getAChild#1#dispred(call_result#2, _, result)
)
)
| [base_case]
exists(int arg1, /* AST::AstNode */ dontcare AST#87953007::Cached::TAstNode _ |
arg1 = -1, AST#87953007::Cached::getSynthChild#2(_, arg1, this)
),
result = this
| [delta_order]
exists(/* AST::AstNode */ AST#87953007::Cached::TAstNode call_result#2 |
exists(int arg1,
/* AST::AstNode */ dontcare AST#87953007::Cached::TAstNode _ |
arg1 = -1, AST#87953007::Cached::getSynthChild#2(_, arg1, this)
),
delta previous rec Synthesis#d9ff06b1::Desugared::getADescendant#ff(this,
call_result#2),
project#AST#a6718388::AstNode::getAChild#1#dispred(call_result#2, result)
),
not(
previous rec Synthesis#d9ff06b1::Desugared::getADescendant#ff(this, result)
)
| [delta_order_up_to_500000]
exists(/* AST::AstNode */ AST#87953007::Cached::TAstNode call_result#2 |
delta previous rec Synthesis#d9ff06b1::Desugared::getADescendant#ff(this,
call_result#2),
exists(int arg1,
/* AST::AstNode */ dontcare AST#87953007::Cached::TAstNode _ |
arg1 = -1, AST#87953007::Cached::getSynthChild#2(_, arg1, this)
),
project#AST#a6718388::AstNode::getAChild#1#dispred(call_result#2, result)
),
not(
previous rec Synthesis#d9ff06b1::Desugared::getADescendant#ff(this, result)
)
.
```
|
2022-10-09 11:12:24 +02:00 |
|
Tom Hvitved
|
d39b0fd3f4
|
Ruby: Avoid computing full fastTC for AstNode::getParent
DIL before
```
/* AST::AstNode */ AST#87953007::Cached::TAstNode result) =
fastTC(AST#a6718388::AstNode::getAChild#0#dispred#ff/2)
.
Synthesis#d9ff06b1::isInDesugaredContext#1#f(/* AST::AstNode */ unique AST#87953007::Cached::TAstNode n)
:-
exists(int arg1, /* AST::AstNode */ dontcare AST#87953007::Cached::TAstNode _ |
arg1 = -1, AST#87953007::Cached::getSynthChild#2(_, arg1, n)
);
exists(/* AST::AstNode */ AST#87953007::Cached::TAstNode call_result#2 |
exists(int arg1,
/* AST::AstNode */ dontcare AST#87953007::Cached::TAstNode _ |
arg1 = -1, AST#87953007::Cached::getSynthChild#2(_, arg1, call_result#2)
),
#AST#a6718388::AstNode::getAChild#0#dispredPlus#ff(call_result#2, n)
)
.
```
DIL after
```
incremental
Synthesis#d9ff06b1::isInDesugaredContext#1#f(/* AST::AstNode */ unique AST#87953007::Cached::TAstNode n)
:-
exists(int arg1, /* AST::AstNode */ dontcare AST#87953007::Cached::TAstNode _ |
arg1 = -1, AST#87953007::Cached::getSynthChild#2(_, arg1, n)
);
exists(/* AST::AstNode */ AST#87953007::Cached::TAstNode any#expr##2 |
rec Synthesis#d9ff06b1::isInDesugaredContext#1#f(any#expr##2),
exists(cached dontcare string _ |
AST#a6718388::AstNode::getAChild#1#dispred(any#expr##2, _, n)
)
)
| [base_case]
exists(int arg1, /* AST::AstNode */ dontcare AST#87953007::Cached::TAstNode _ |
arg1 = -1, AST#87953007::Cached::getSynthChild#2(_, arg1, n)
)
| [delta_order]
exists(/* AST::AstNode */ AST#87953007::Cached::TAstNode any#expr##2 |
delta previous rec Synthesis#d9ff06b1::isInDesugaredContext#1#f(any#expr##2),
project#AST#a6718388::AstNode::getAChild#1#dispred(any#expr##2, n)
),
not(previous rec Synthesis#d9ff06b1::isInDesugaredContext#1#f(n))
.
``
|
2022-10-09 11:11:48 +02:00 |
|
Tom Hvitved
|
262a74d03d
|
Ruby: Avoid computing full fastTC for AstNode::getParent
DIL before
```
/* AST::AstNode */ AST#87953007::Cached::TAstNode result) =
fastTC(AST#a6718388::AstNode::getAChild#0#dispred#ff/2)
.
Completion#445d5844::mayRaise#1#f(/* Call::Call */ unique AST#87953007::Cached::TAstNode c)
:-
exists(/* AST::AstNode */ AST#87953007::Cached::TAstNode call_result#2 |
exists(/* ControlFlowGraphImpl::Trees::BodyStmtTree */ AST#87953007::Cached::TAstNode bst |
(
(
project#Expr#6fb2af19::BodyStmt::getRescue#1#dispred#fff(bst),
ControlFlowGraphImpl#288ae92e::Trees::BodyStmtTree#class#f(bst)
);
(
exists(/* Expr::StmtSequence */ dontcare AST#87953007::Cached::TAstNode _ |
Expr#6fb2af19::BodyStmt::getEnsure#0#dispred#ff(bst, _)
),
ControlFlowGraphImpl#288ae92e::Trees::BodyStmtTree#class#f(bst)
)
),
ControlFlowGraphImpl#288ae92e::Trees::BodyStmtTree#class#f(bst),
project#ControlFlowGraphImpl#288ae92e::Trees::StmtSequenceTree::getBodyChild#2#dispred#ffff(bst,
call_result#2)
),
(
(c = call_result#2, Call#841c84e8::Call#f(c));
(
#AST#a6718388::AstNode::getAChild#0#dispredPlus#ff(call_result#2, c),
Call#841c84e8::Call#f(c)
)
)
)
.
```
DIL after
```
incremental
Completion#445d5844::getARescuableBodyChild#0#f(/* AST::AstNode */ unique AST#87953007::Cached::TAstNode result)
:-
exists(/* ControlFlowGraphImpl::Trees::BodyStmtTree */ AST#87953007::Cached::TAstNode bst |
(
(
exists(dontcare int _,
/* Expr::RescueClause */ dontcare AST#87953007::Cached::TAstNode _1 |
Expr#6fb2af19::BodyStmt::getRescue#1#dispred#fff(bst, _, _1)
),
ControlFlowGraphImpl#288ae92e::Trees::BodyStmtTree#class#f(bst)
);
(
exists(/* Expr::StmtSequence */ dontcare AST#87953007::Cached::TAstNode _ |
Expr#6fb2af19::BodyStmt::getEnsure#0#dispred#ff(bst, _)
),
ControlFlowGraphImpl#288ae92e::Trees::BodyStmtTree#class#f(bst)
)
),
ControlFlowGraphImpl#288ae92e::Trees::BodyStmtTree#class#f(bst),
exists(boolean arg2, dontcare int _ |
arg2 = true,
ControlFlowGraphImpl#288ae92e::Trees::StmtSequenceTree::getBodyChild#2#dispred#ffff(bst,
_,
arg2,
result)
)
);
exists(/* AST::AstNode */ AST#87953007::Cached::TAstNode call_result#5 |
rec Completion#445d5844::getARescuableBodyChild#0#f(call_result#5),
exists(cached dontcare string _ |
AST#a6718388::AstNode::getAChild#1#dispred(call_result#5, _, result)
)
)
| [base_case]
exists(/* ControlFlowGraphImpl::Trees::BodyStmtTree */ AST#87953007::Cached::TAstNode bst |
(
(
project#Expr#6fb2af19::BodyStmt::getRescue#1#dispred#fff(bst),
ControlFlowGraphImpl#288ae92e::Trees::BodyStmtTree#class#f(bst)
);
(
exists(/* Expr::StmtSequence */ dontcare AST#87953007::Cached::TAstNode _ |
Expr#6fb2af19::BodyStmt::getEnsure#0#dispred#ff(bst, _)
),
ControlFlowGraphImpl#288ae92e::Trees::BodyStmtTree#class#f(bst)
)
),
ControlFlowGraphImpl#288ae92e::Trees::BodyStmtTree#class#f(bst),
project#ControlFlowGraphImpl#288ae92e::Trees::StmtSequenceTree::getBodyChild#2#dispred#ffff(bst,
result)
)
| [delta_order]
exists(/* AST::AstNode */ AST#87953007::Cached::TAstNode call_result#5 |
delta previous rec Completion#445d5844::getARescuableBodyChild#0#f(call_result#5),
project#AST#a6718388::AstNode::getAChild#1#dispred(call_result#5, result)
),
not(previous rec Completion#445d5844::getARescuableBodyChild#0#f(result))
.
```
|
2022-10-09 11:10:39 +02:00 |
|
Tom Hvitved
|
d707c526e5
|
Ruby: Avoid computing full fastTC for AstNode::getParent
DIL before
```
/* AST::AstNode */ AST#87953007::Cached::TAstNode result) =
fastTC(Module#fe82a56b::parent#1#ff/2)
.
Module#fe82a56b::enclosingModule#1#ff(/* AST::AstNode */ AST#87953007::Cached::TAstNode node,
/* Module::ModuleBase */ AST#87953007::Cached::TAstNode result)
:-
exists(/* AST::AstNode */ AST#87953007::Cached::TAstNode call_result#2 |
Module#2a43f566::ModuleBase#f(result),
project#AST#a6718388::AstNode::getAChild#1#dispred(result, call_result#2),
(
node = call_result#2;
#Module#fe82a56b::parent#1Plus#ff(node, call_result#2)
)
)
.
```
DIL after
```
incremental
Module#fe82a56b::enclosingModule#1#ff(/* AST::AstNode */ AST#87953007::Cached::TAstNode node,
/* Module::ModuleBase */ AST#87953007::Cached::TAstNode result)
:-
(
Module#2a43f566::ModuleBase#f(result),
exists(cached dontcare string _ |
AST#a6718388::AstNode::getAChild#1#dispred(result, _, node)
)
);
exists(/* AST::AstNode */ AST#87953007::Cached::TAstNode mid |
Module#2a43f566::ModuleBase#f(result),
rec Module#fe82a56b::enclosingModule#1#ff(mid, result),
not(Module#2a43f566::ModuleBase#f(mid)),
not(Method#8b49e67f::Block#f(mid)),
exists(cached dontcare string _ |
AST#a6718388::AstNode::getAChild#1#dispred(mid, _, node)
)
)
| [base_case]
Module#2a43f566::ModuleBase#f(result),
project#AST#a6718388::AstNode::getAChild#1#dispred(result, node)
| [delta_order]
exists(/* AST::AstNode */ AST#87953007::Cached::TAstNode mid |
Module#2a43f566::ModuleBase#f(result),
delta previous rec Module#fe82a56b::enclosingModule#1#ff(mid, result),
not(Module#2a43f566::ModuleBase#f(mid)),
not(Method#8b49e67f::Block#f(mid)),
project#AST#a6718388::AstNode::getAChild#1#dispred(mid, node)
),
not(previous rec Module#fe82a56b::enclosingModule#1#ff(node, result))
| [delta_order_up_to_500000]
exists(/* AST::AstNode */ AST#87953007::Cached::TAstNode mid |
delta previous rec Module#fe82a56b::enclosingModule#1#ff(mid, result),
Module#2a43f566::ModuleBase#f(result),
not(Module#2a43f566::ModuleBase#f(mid)),
not(Method#8b49e67f::Block#f(mid)),
project#AST#a6718388::AstNode::getAChild#1#dispred(mid, node)
),
not(previous rec Module#fe82a56b::enclosingModule#1#ff(node, result))
.
```
|
2022-10-09 11:10:33 +02:00 |
|
Dave Bartolomeo
|
5ee7986649
|
Merge pull request #10736 from github/post-release-prep/codeql-cli-2.11.1
Post-release preparation for codeql-cli-2.11.1
|
2022-10-07 14:23:31 -04:00 |
|
github-actions[bot]
|
b8ef9e0ddc
|
Post-release preparation for codeql-cli-2.11.1
|
2022-10-07 15:59:45 +00:00 |
|
Nick Rolfe
|
a6674a5313
|
Ruby: fix uses of deprecated class name
|
2022-10-07 13:17:05 +01:00 |
|
Tom Hvitved
|
b065d2d3ab
|
Merge pull request #10705 from hvitved/ruby/singleton-overrides
Ruby: Take overrides into account for singleton methods defined on modules
|
2022-10-07 13:33:59 +02:00 |
|
Harry Maclean
|
75cb0efecb
|
Merge pull request #10538 from hmac/hmac/actioncontroller-parameters
Ruby: Model flow through ActionController::Parameters
|
2022-10-07 22:21:40 +13:00 |
|
Tom Hvitved
|
69fc59930f
|
Ruby: Add ql doc to lookupSingletonMethod
|
2022-10-07 10:55:30 +02:00 |
|
github-actions[bot]
|
a02dcdc5e1
|
Release preparation for version 2.11.1
|
2022-10-07 02:20:28 +00:00 |
|
Tom Hvitved
|
48bdf13c89
|
Ruby: Take overrides into account for singleton methods defined on modules
|
2022-10-06 11:56:26 +02:00 |
|
Tom Hvitved
|
0e6735b804
|
Merge pull request #10691 from hvitved/dataflow/conjunctive-clears
Data flow: Take conjunctive `With(out)Contents` into account in `prohibitsUseUseFlow`
|
2022-10-06 09:03:30 +02:00 |
|
Asger F
|
387e57546b
|
Merge pull request #10650 from asgerf/rb/summarize-more
Ruby: more type-tracking steps
|
2022-10-05 19:16:56 +02:00 |
|
Alex Ford
|
fa58c51810
|
Ruby: switch rb/sensitive-get-query back to using local flow
|
2022-10-05 15:58:05 +01:00 |
|
Tom Hvitved
|
0beea9fd1a
|
Fix typos
|
2022-10-05 15:54:52 +02:00 |
|
Asger F
|
c9c36985b2
|
Ruby: address review comments
|
2022-10-05 14:59:37 +02:00 |
|
Alex Ford
|
71670a4f75
|
Ruby: add RequestInputAccess#getKind predicate
|
2022-10-05 13:38:31 +01:00 |
|
Alex Ford
|
dea53d86c9
|
Ruby: remove some redundant imports of DataFlow
|
2022-10-05 13:22:19 +01:00 |
|
Alex Ford
|
d64f8c73be
|
Merge branch 'main' into rb/sensitive-get-query
|
2022-10-05 12:59:35 +01:00 |
|
Alex Ford
|
084efe062a
|
Ruby: limit rb/sensitive-get-query to data from query params
|
2022-10-05 12:57:57 +01:00 |
|
Arthur Baars
|
6509c19aad
|
Merge pull request #10692 from aibaars/fix-splats
Ruby: fix CFG and toString for anonymous '*' and '**'
|
2022-10-05 13:25:29 +02:00 |
|
Alex Ford
|
880fb2b14a
|
Ruby: split out rb/sensitive-get-query using query/customizations pattern
|
2022-10-05 11:59:40 +01:00 |
|
Tom Hvitved
|
3f0f16afc4
|
Ruby: Update flow summary for Hash#except
|
2022-10-05 12:58:29 +02:00 |
|
Tom Hvitved
|
e51c20bfc7
|
Data flow: Take conjunctive With(out)Contents into account in prohibitsUseUseFlow
|
2022-10-05 12:58:29 +02:00 |
|
Arthur Baars
|
a080f498be
|
Ruby: fix CFG and toString for anonymous '*' and '**'
|
2022-10-05 11:50:37 +02:00 |
|
Asger F
|
f664a77a02
|
Ruby: ensure Hash flow works again
|
2022-10-05 11:07:55 +02:00 |
|
Nick Rolfe
|
525fe12671
|
Merge pull request #10585 from github/nickrolfe/libxml-xxe
Ruby: detect uses of LibXML with entity substitution enabled by default
|
2022-10-05 09:51:39 +01:00 |
|
Asger F
|
7cf969f9c8
|
Ruby: remove mention of PairValueContent
|
2022-10-05 10:32:09 +02:00 |
|
Asger F
|
6f74a52542
|
Merge branch 'main' into rb/summarize-more
|
2022-10-05 09:55:23 +02:00 |
|
Asger F
|
8b7ec20573
|
Merge branch 'main' into rb/summarize-more
|
2022-10-05 09:43:52 +02:00 |
|
Tom Hvitved
|
1496c4f0e2
|
Merge pull request #10686 from hvitved/ruby/remove-value-pair-content
Ruby: Remove `PairValueContent`
|
2022-10-05 09:41:14 +02:00 |
|