Geoffrey White
01dc3661b7
C++: Autoformat.
2020-01-28 12:17:56 +00:00
Geoffrey White
30580e97dc
C++: Add a TaintFunction model to FormattingFunction.
2020-01-28 08:46:46 +00:00
Geoffrey White
1d46971bb7
C++: Add an ArrayFunction model to FormattingFunction.
2020-01-28 08:46:46 +00:00
Robert Marsh
a9bcc1dcc6
Merge pull request #2667 from dbartol/dbartol/NoEscape
...
C++/C#: Make escape analysis unsound by default
2020-01-27 19:17:33 -05:00
Robert Marsh
c7975e83a7
Merge pull request #2657 from jbj/DefaultTaintTracking-models
...
C++: wire up models library to DefaultTaintTracking
2020-01-27 17:41:54 -05:00
Dave Bartolomeo
3b3502060b
Merge remote-tracking branch 'upstream/master' into dbartol/NoEscape
2020-01-27 13:29:18 -07:00
Robert Marsh
79a72a3496
Merge pull request #2680 from geoffw0/modelstrndup
...
CPP: Model strndup.
2020-01-27 15:19:52 -05:00
Robert Marsh
4d743d2bce
Merge pull request #2692 from jbj/pure-string-read
...
C++: Model that string functions read their buffer
2020-01-27 11:40:03 -05:00
Geoffrey White
4778914154
CPP: Repair flow.
2020-01-27 14:08:03 +00:00
Geoffrey White
d9f6895602
CPP: 'sometimes copying' is considered data flow.
2020-01-27 14:07:39 +00:00
Geoffrey White
2c7e2c4506
CPP: Not in std namespace.
2020-01-27 10:20:56 +00:00
Dave Bartolomeo
6988241b09
Merge from master
2020-01-26 16:38:48 -07:00
Robert Marsh
0180672dc0
Merge pull request #2687 from jbj/DefaultTaintTracking-asExpr
...
C++: Use asExpr, not getConvertedResultExpression
2020-01-24 15:42:58 -05:00
Jonas Jensen
b290c7b47a
C++: Model that string functions read their buffer
2020-01-24 15:53:38 +01:00
Jonas Jensen
6606b2e18a
C++: autoformat fixup
2020-01-24 10:48:03 +01:00
Jonas Jensen
5eeb5c6e67
C++: Use asExpr, not getConvertedResultExpression
...
We designed the IR's `DataFlow::Node.asExpr` very carefully so that it's
suitable for taint tracking, but then we didn't use it in
`DefaultTaintTracking.qll`. This meant that the sources in
`ArithmeticWithExtremeValues.ql` didn't get associated with any
`Instruction` and thus didn't propagate anywhere.
With this commit, the mapping of `Expr`-based sources to IR data-flow
nodes uses `asExpr`.
2020-01-24 09:42:26 +01:00
yo-h
eb6f8da080
Merge pull request #2679 from aschackmull/java/remove-depr-flow-fwd-back
...
Java/C++/C#: Remove the deprecated hasFlowForward/hasFlowBackward.
2020-01-23 14:10:28 -05:00
Geoffrey White
f16870f8c6
CPP: Autoformat.
2020-01-23 16:20:18 +00:00
Jonas Jensen
33070cc16d
Merge pull request #2678 from MathiasVP/union-access-global-virtual-dispatch
...
C++: IR virtual dispatch through union field access
2020-01-23 15:32:31 +01:00
Geoffrey White
edf2b54813
CPP: Model strndup.
2020-01-23 13:46:57 +00:00
Anders Schack-Mulligen
e7f7c7370a
Java/C++/C#: Remove the deprecated hasFlowForward/hasFlowBackward.
2020-01-23 14:05:18 +01:00
Mathias Vorreiter Pedersen
5fd1c6fedb
C++: Remove parameter from predicate for some tiny performance benefits
2020-01-23 13:29:48 +01:00
Jonas Jensen
8a0089a875
Merge pull request #2672 from geoffw0/qualifierflow
...
CPP: Support taint flow in and out of qualifiers
2020-01-23 13:17:17 +01:00
Geoffrey White
ccf268d048
CPP: Autoformat.
2020-01-23 10:07:21 +00:00
Mathias Vorreiter Pedersen
9412ec7f4f
C++: Added union field flow for globals
2020-01-23 10:17:36 +01:00
Geoffrey White
1867d58034
CPP: Allow flow to return value.
2020-01-22 16:25:40 +00:00
Geoffrey White
704bfe7184
CPP: Support taint flow from qualifiers.
2020-01-22 16:22:29 +00:00
Geoffrey White
e6daf3b7ee
CPP: Support taint flow to qualifiers.
2020-01-22 16:16:31 +00:00
Geoffrey White
974994ed49
CPP: Slight rearrange.
2020-01-22 16:11:51 +00:00
Jonas Jensen
5ae1e2c4e8
C++: Autoformat
2020-01-22 14:07:55 +01:00
Jonas Jensen
6cdca29aa6
C++: Flow through read side effects
...
Until we have better tracking of indirections, these flow rules conflate
pointers and their contents.
2020-01-22 13:27:10 +01:00
Jonas Jensen
c24bceddcd
C++: Add ReadSideEffectInstruction to IR
...
There was already a `WriteSideEffectInstruction` class that served as a
superclass for all the specific write side effects. This new class
serves the same purpose for read side effects.
2020-01-22 13:27:10 +01:00
Jonas Jensen
2aaf41a0d8
C++: Test lack of flow through read side effect
2020-01-22 13:27:10 +01:00
Tom Hvitved
d5daee4450
Merge pull request #2661 from aschackmull/java/remove-dataflowlocation
...
Java/C++/C#: Remove DataFlowLocation as it's no longer needed.
2020-01-22 12:11:24 +01:00
Dave Bartolomeo
9d35ff73c4
C++/C#: Make escape analysis unsound by default
...
When building SSA, we'll be assuming that stack variables do not escape, at least until we improve our alias analysis. I've added a new `IREscapeAnalysisConfiguration` class to allow the query to control this, and a new `UseSoundEscapeAnalysis.qll` module that can be imported to switch to the sound escape analysis. I've cloned the existing IR and SSA tests to have both sound and unsound versions. There were relatively few diffs in the IR dump tests, and the sanity tests still give the same results after one change described below.
Assuming that stack variables do not escape exposed an existing bug where we do not emit an `Uninitialized` instruction for the temporary variables used by `return` statements and `throw` expressions, even if the initializer is a constructor call or array initializer. I've refactored the code for handling elements that initialize a variable to share a common base class. I added a test case for returning an object initialized by constructor call, and ensured that the IR diffs for the existing `throw` test cases are correct.
2020-01-22 00:15:30 -07:00
Anders Schack-Mulligen
9cc0d3d1f4
Java/C++/C#: Remove DataFlowLocation as it's no longer needed.
2020-01-21 15:08:39 +01:00
Jonas Jensen
84811f66a2
C++: autoformat
2020-01-21 13:21:16 +01:00
Jonas Jensen
6d46e4d946
C++: Wire up models to DefaultTaintTracking
...
This adds support for arg-to-arg and arg-to-return taint.
2020-01-21 12:04:45 +01:00
Jonas Jensen
5ac56c2e3a
C++: Add DataFlow::Node.asDefiningArgument in IR
2020-01-21 11:52:06 +01:00
Jonas Jensen
cdcd3ed748
Merge pull request #2647 from geoffw0/modelpure
...
CPP: Improve strlen model
2020-01-21 09:42:10 +01:00
Geoffrey White
952b9e1581
CPP: Use hasGlobalName where appropriate.
2020-01-20 14:24:38 +00:00
Geoffrey White
79811fcccd
Merge pull request #2642 from jbj/TaintTracking-indirection
...
C++: Indirection for security.TaintTracking impl
2020-01-20 12:25:51 +00:00
Geoffrey White
5a20e85598
Merge pull request #2638 from jbj/ir-dispatch
...
C++ IR: Support for global virtual dispatch
2020-01-20 12:04:09 +00:00
Jonas Jensen
2a0fc31b68
C++: Comment and rename getSrc -> getDispatchValue
...
Better clarity was requested in the PR review.
2020-01-20 11:03:03 +01:00
Jonas Jensen
742bd1c6ad
Merge pull request #2648 from rdmarsh2/getMemoryOperandDefinition-perf
...
C++: Performance fix for getMemoryOperandDefinition
2020-01-20 08:49:55 +01:00
Jonas Jensen
d3a1856793
Merge pull request #2646 from geoffw0/modelinet
...
CPP: Fix a mistake in Inet.qll.
2020-01-17 22:53:43 +01:00
Geoffrey White
fcea3693f9
CPP: Remove now redundant special cases.
2020-01-17 18:56:21 +00:00
Geoffrey White
200545d88c
CPP: Add detail to the model.
2020-01-17 18:56:21 +00:00
Geoffrey White
77a3778eef
CPP: Add some strlen variants to the PureStrFunction model.
2020-01-17 18:56:21 +00:00
Jonas Jensen
3632d51abc
Merge pull request #2635 from geoffw0/modelstrdup
...
CPP: Model strdup
2020-01-17 19:26:26 +01:00