Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
375da38
Python: Minimal compilation of shared dataflow
yoff Jun 12, 2020
1af2e56
Summary of recent meeting.
yoff Jun 15, 2020
6dfb3a5
Python: Address QL docs
yoff Jun 15, 2020
f8eb583
Python: start on local flow
yoff Jun 15, 2020
ad04ec5
Python: group related predicates
yoff Jun 16, 2020
0abba23
Python: bit more local flow and fix ql docs
yoff Jun 16, 2020
f3e879a
Python: small test of local flow
yoff Jun 16, 2020
0f77403
Python: small start on global flow
yoff Jun 16, 2020
e192b66
Python: move shared dataflow to `experimental`
yoff Jun 17, 2020
47f5b04
Python: fix `identical-files.json` after move
yoff Jun 17, 2020
52898f1
Python: update paths after move
yoff Jun 17, 2020
71f364e
Python: Implement OutNode
yoff Jun 17, 2020
8e51b2f
Python: refactor test for global flow
yoff Jun 17, 2020
25d624d
Python: Implement parameter nodes
yoff Jun 17, 2020
a45b5a7
Python: Implemented return node
yoff Jun 17, 2020
f24dc69
Python: add flow from `ArgumentNode`s
yoff Jun 17, 2020
ce57a28
Python: Use `CallableValue` and improve tests
yoff Jun 17, 2020
c20219c
Python: more local flow and more tests
yoff Jun 17, 2020
d283919
Python: implemented ParameterNode, updated test
yoff Jun 18, 2020
1562f5c
Python: General comment on dataflow
yoff Jun 18, 2020
03b26f7
Python: Remove excessive type pruning
yoff Jun 18, 2020
9669a6a
Python: test for `getASuccessor`
yoff Jun 18, 2020
5a864aa
Python: override `genEnclosingCallable`
yoff Jun 19, 2020
5ca6391
Python: update call graph test
yoff Jun 19, 2020
9e078da
Python: Better definition of all flows
yoff Jun 19, 2020
426b1da
Python: update sources and sinks
yoff Jun 19, 2020
47819bb
Python: obtain remaining expected flows
yoff Jun 22, 2020
cc8367b
Python: update readme with lessons learned
yoff Jun 22, 2020
b65e6fb
Python: attempt at capturing maximal flows
yoff Jun 22, 2020
94a828a
Merge branch 'master' of github.com:github/codeql into SharedDataflow
yoff Jun 22, 2020
8d564e0
Python: sync data flow files
yoff Jun 22, 2020
13bb971
Python: sort out some enclosing callable confusion
yoff Jun 22, 2020
656c765
Merge branch 'master' of github.com:github/codeql into SharedDataflow
yoff Jun 22, 2020
aa04a2a
Python: sync dataflow files
yoff Jun 22, 2020
e8289d6
Python: add regression tests and organise tests
yoff Jun 22, 2020
a55b466
Python: support for `with`-definitions
yoff Jun 23, 2020
b759b71
Python: explain the regression test
yoff Jun 23, 2020
c70cf6d
Python: better (if imperfect) handling of phi node
yoff Jun 23, 2020
5973fe8
Python: scaffold for testing data flow coverage
yoff Jun 25, 2020
415e0c4
Python: add suggestion for test cases
yoff Jun 25, 2020
c5c1c4c
Python: started adding some coverage tests
yoff Jun 25, 2020
43f85ef
Python: typo
yoff Jun 26, 2020
e147e59
Merge branch 'master' of github.com:github/codeql into SharedDataflow
yoff Jun 26, 2020
6e5f71b
Python: sync dataflow files
yoff Jun 26, 2020
2487174
Python: quick status added to `readme.md`
yoff Jun 26, 2020
f84adb3
Python: stub for `clearsContent`
yoff Jun 26, 2020
64af5f5
Python: Update status description
yoff Jun 26, 2020
e259281
Merge branch 'master' of github.com:github/codeql into SharedDataflow
yoff Jul 1, 2020
3388ca4
Python: sync dataflow library
yoff Jul 1, 2020
825f24a
Python: simplify according to review comments
yoff Jul 1, 2020
7787900
Python: make compile and simplify
yoff Jul 1, 2020
79e4f1e
Python: Enable consistency check (currently fails)
yoff Jul 1, 2020
7fb97d7
Merge branch 'master' of github.com:github/codeql into SharedDataflow
yoff Jul 1, 2020
0175d5b
Sync dataflow files
yoff Jul 1, 2020
0b11e77
Python: make compile
yoff Jul 1, 2020
5f18fb4
Python: update TODO
yoff Jul 2, 2020
bdc68ce
Python: refactor `Node` class
yoff Jul 3, 2020
a9e0288
Python: exclude global vars from local flow
yoff Jul 3, 2020
e366600
Python: add some links to readme
yoff Jul 3, 2020
40a6728
Update python/ql/src/experimental/dataflow/internal/TaintTrackingPriv…
yoff Jul 3, 2020
8891fbf
Update python/ql/src/experimental/dataflow/internal/DataFlowPublic.qll
yoff Jul 3, 2020
59d611d
Update python/ql/src/experimental/dataflow/internal/DataFlowPublic.qll
yoff Jul 3, 2020
d201eb2
Update python/ql/src/experimental/dataflow/internal/DataFlowPrivate.qll
yoff Jul 3, 2020
33cf96c
Python: Address review comments
yoff Jul 3, 2020
fe9520b
Python: correct doc for toString
yoff Jul 3, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 13 additions & 8 deletions config/identical-files.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"DataFlow Java/C++/C#": [
"DataFlow Java/C++/C#/Python": [
"java/ql/src/semmle/code/java/dataflow/internal/DataFlowImpl.qll",
"java/ql/src/semmle/code/java/dataflow/internal/DataFlowImpl2.qll",
"java/ql/src/semmle/code/java/dataflow/internal/DataFlowImpl3.qll",
Expand All @@ -18,15 +18,18 @@
"csharp/ql/src/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll",
"csharp/ql/src/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll",
"csharp/ql/src/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll",
"csharp/ql/src/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll"
"csharp/ql/src/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll",
"python/ql/src/experimental/dataflow/internal/DataFlowImpl.qll",
"python/ql/src/experimental/dataflow/internal/DataFlowImpl2.qll"
],
"DataFlow Java/C++/C# Common": [
"DataFlow Java/C++/C#/Python Common": [
"java/ql/src/semmle/code/java/dataflow/internal/DataFlowImplCommon.qll",
"cpp/ql/src/semmle/code/cpp/dataflow/internal/DataFlowImplCommon.qll",
"cpp/ql/src/semmle/code/cpp/ir/dataflow/internal/DataFlowImplCommon.qll",
"csharp/ql/src/semmle/code/csharp/dataflow/internal/DataFlowImplCommon.qll"
"csharp/ql/src/semmle/code/csharp/dataflow/internal/DataFlowImplCommon.qll",
"python/ql/src/experimental/dataflow/internal/DataFlowImplCommon.qll"
],
"TaintTracking::Configuration Java/C++/C#": [
"TaintTracking::Configuration Java/C++/C#/Python": [
"cpp/ql/src/semmle/code/cpp/dataflow/internal/tainttracking1/TaintTrackingImpl.qll",
"cpp/ql/src/semmle/code/cpp/dataflow/internal/tainttracking2/TaintTrackingImpl.qll",
"cpp/ql/src/semmle/code/cpp/ir/dataflow/internal/tainttracking1/TaintTrackingImpl.qll",
Expand All @@ -37,13 +40,15 @@
"csharp/ql/src/semmle/code/csharp/dataflow/internal/tainttracking4/TaintTrackingImpl.qll",
"csharp/ql/src/semmle/code/csharp/dataflow/internal/tainttracking5/TaintTrackingImpl.qll",
"java/ql/src/semmle/code/java/dataflow/internal/tainttracking1/TaintTrackingImpl.qll",
"java/ql/src/semmle/code/java/dataflow/internal/tainttracking2/TaintTrackingImpl.qll"
"java/ql/src/semmle/code/java/dataflow/internal/tainttracking2/TaintTrackingImpl.qll",
"python/ql/src/experimental/dataflow/internal/tainttracking1/TaintTrackingImpl.qll"
],
"DataFlow Java/C++/C# Consistency checks": [
"DataFlow Java/C++/C#/Python Consistency checks": [
"java/ql/src/semmle/code/java/dataflow/internal/DataFlowImplConsistency.qll",
"cpp/ql/src/semmle/code/cpp/dataflow/internal/DataFlowImplConsistency.qll",
"cpp/ql/src/semmle/code/cpp/ir/dataflow/internal/DataFlowImplConsistency.qll",
"csharp/ql/src/semmle/code/csharp/dataflow/internal/DataFlowImplConsistency.qll"
"csharp/ql/src/semmle/code/csharp/dataflow/internal/DataFlowImplConsistency.qll",
"python/ql/src/experimental/dataflow/internal/DataFlowImplConsistency.qll"
],
"C++ SubBasicBlocks": [
"cpp/ql/src/semmle/code/cpp/controlflow/SubBasicBlocks.qll",
Expand Down
26 changes: 26 additions & 0 deletions python/ql/src/experimental/dataflow/DataFlow.qll
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/**
* Provides a library for local (intra-procedural) and global (inter-procedural)
* data flow analysis: deciding whether data can flow from a _source_ to a
* _sink_.
*
* Unless configured otherwise, _flow_ means that the exact value of
* the source may reach the sink. We do not track flow across pointer
* dereferences or array indexing. To track these types of flow, where the
* exact value may not be preserved, import
* `experimental.dataflow.TaintTracking`.
*
* To use global (interprocedural) data flow, extend the class
* `DataFlow::Configuration` as documented on that class. To use local
* (intraprocedural) data flow, call `DataFlow::localFlow` or
* `DataFlow::localFlowStep` with arguments of type `DataFlow::Node`.
*/

import python

/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) data flow analyses.
*/
module DataFlow {
import experimental.dataflow.internal.DataFlowImpl
}
26 changes: 26 additions & 0 deletions python/ql/src/experimental/dataflow/DataFlow2.qll
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/**
* Provides a library for local (intra-procedural) and global (inter-procedural)
* data flow analysis: deciding whether data can flow from a _source_ to a
* _sink_.
*
* Unless configured otherwise, _flow_ means that the exact value of
* the source may reach the sink. We do not track flow across pointer
* dereferences or array indexing. To track these types of flow, where the
* exact value may not be preserved, import
* `experimental.dataflow.TaintTracking`.
*
* To use global (interprocedural) data flow, extend the class
* `DataFlow::Configuration` as documented on that class. To use local
* (intraprocedural) data flow, call `DataFlow::localFlow` or
* `DataFlow::localFlowStep` with arguments of type `DataFlow::Node`.
*/

import python

/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) data flow analyses.
*/
module DataFlow2 {
import experimental.dataflow.internal.DataFlowImpl2
}
19 changes: 19 additions & 0 deletions python/ql/src/experimental/dataflow/TaintTracking.qll
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) taint-tracking analyses.
*
* To use global (interprocedural) taint tracking, extend the class
* `TaintTracking::Configuration` as documented on that class. To use local
* (intraprocedural) taint tracking, call `TaintTracking::localTaint` or
* `TaintTracking::localTaintStep` with arguments of type `DataFlow::Node`.
*/

import python

/**
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) taint-tracking analyses.
*/
module TaintTracking {
import experimental.dataflow.internal.tainttracking1.TaintTrackingImpl
}
Loading