Mathias Vorreiter Pedersen
b82dfa9a21
C++: Fix failing test by allocating 'TFunctionInput's and 'TFunctionOutput's for more indirections. Note that we now mark two output nodes coming out of 'getaddrinfo' as a remote flow source (the first indirection and the second indirection). We'll fix that in the next commit.
2023-11-02 16:45:50 +00:00
Mathias Vorreiter Pedersen
5487b404ed
C++: Add failing test.
2023-11-02 16:41:19 +00:00
Mathias Vorreiter Pedersen
08b528b5c4
C++: Add a taint-model for 'realloc' and accept test changes.
2023-10-30 17:08:01 +00:00
Mathias Vorreiter Pedersen
0837e400a2
C++: Add failing test.
2023-10-30 17:05:43 +00:00
Mathias Vorreiter Pedersen
33494fe9e1
C++: Extend the taint model and accept test changes.
2023-10-27 16:26:37 +01:00
Mathias Vorreiter Pedersen
e4683449cb
C++: Add failing test.
2023-10-27 16:26:37 +01:00
Mathias Vorreiter Pedersen
032572b924
C++: Fix 'strtok' model.
2023-10-25 09:39:36 +01:00
Mathias Vorreiter Pedersen
f54379d096
C++: Add failing test.
2023-10-25 09:38:49 +01:00
Mathias Vorreiter Pedersen
67ed12c916
C++: Correctly model that 'operator->', and 'get'
...
on smart pointers perform a load.
2023-10-23 20:11:23 +01:00
Mathias Vorreiter Pedersen
b107c4c641
C++: Fix missing result in 'ModelUtil'. The problem was that 'n.asInstruction()' on line 81 wasn't necessarily a 'CallInstruction' (it could be a conversion).
2023-10-23 19:34:25 +01:00
Mathias Vorreiter Pedersen
c0b04eac7c
C++: Add failing test.
2023-10-23 19:29:28 +01:00
Jeroen Ketema
a972d0943a
C++: Accept test changes after changes in IR generation
2023-10-19 10:45:14 +02:00
Mathias Vorreiter Pedersen
20f501d1c7
C++: Change queries to use 'asExpr' instead of 'asConvertedExpr'.
2023-09-01 15:01:32 +01:00
Mathias Vorreiter Pedersen
f1c4fa2345
C++: When we generate a string for the node we avoid multiple results by only using the 0'th result from the 'asExpr' predicate. However, when we want to convert between nodes and expressions we don't care about which one we get.
2023-09-01 14:04:52 +01:00
Mathias Vorreiter Pedersen
d2bb73ba1f
C++: Use the index to to get the 'most converted' and 'least converted' instruction in a bunch of places.
2023-09-01 13:47:06 +01:00
Mathias Vorreiter Pedersen
16d62186c0
C++: Use this new predicate everywhere we need to convert an instruction to an expression.
2023-09-01 13:32:25 +01:00
Mathias Vorreiter Pedersen
c46f9e4572
C++: Don't consider additional loads when reusing dataflow operands.
2023-08-21 12:51:41 +01:00
Mathias Vorreiter Pedersen
50190efe1c
C++: Don't limit instruction and operand reuse to those cases where we have a result for 'isUseImpl'.
2023-08-21 12:51:00 +01:00
Mathias Vorreiter Pedersen
f662cceb0b
C++: Use value numbering to better detect whether a write is certain.
2023-08-15 11:07:14 +01:00
Mathias Vorreiter Pedersen
8c21699040
C++: Accept test changes.
2023-07-17 10:51:42 +01:00
Mathias Vorreiter Pedersen
fe97572f70
C++: Fix strncpy model.
2023-06-22 10:59:12 +01:00
Mathias Vorreiter Pedersen
273e5bc21f
C++: Add testcase demonstrating that the model for 'strncpy' is broken.
2023-06-22 10:59:12 +01:00
Mathias Vorreiter Pedersen
57ae1e9ff7
C++: Add a testcase that started to fail in #13326 .
2023-06-08 12:49:08 +01:00
Mathias Vorreiter Pedersen
8daa8d78ff
Merge pull request #13246 from MathiasVP/fix-pointer-pointee-conflation-2
...
C++: Fix more pointer/pointee conflation
2023-05-23 12:03:29 -07:00
Jeroen Ketema
aeb6293757
C++: Rewrite flow test common to use inline expectation test module
...
This also rewrites all uses of flow test common to use `DataFlow::ConfigSig`.
Note that the removed deprecated aliases are 14 months old by now and, hence,
can be safely removed.
2023-05-23 16:34:41 +02:00
Mathias Vorreiter Pedersen
b32d55a21d
C++: Accept test changes.
2023-05-22 18:26:29 -07:00
Mathias Vorreiter Pedersen
b36d4931f2
C++: Fix test annotation.
2023-02-27 15:47:52 +00:00
Mathias Vorreiter Pedersen
2cb4a554ea
C++: Fix a bug in Expr <-> Node mapping.
2023-02-27 14:57:35 +00:00
Mathias Vorreiter Pedersen
09df318e9e
C++: Also track flow out of indirect sources.
2023-02-27 14:57:35 +00:00
Mathias Vorreiter Pedersen
5a8b900394
C++: Properly track smart pointer wrappers.
2023-02-27 14:57:35 +00:00
Mathias Vorreiter Pedersen
b951bf0f8f
C++: Remove conflation from taint-tracking.
2023-02-27 14:57:35 +00:00
Jeroen Ketema
996eb6c63c
C++: Fix Ql-for-QL warnings
2023-02-13 09:22:31 +01:00
Jeroen Ketema
ecdeb9a970
C++: Revert semmle.code.cpp.dataflow to its old state
...
While here make sure all queries and tests use IR dataflow when appropriate.
2023-02-10 14:21:44 +01:00
Mathias Vorreiter Pedersen
946e301ed6
Merge pull request #12079 from rdmarsh2/rdmarsh2/use-use-taint-test-reads
...
C++: allow read steps at the sink in IR taint test
2023-02-08 15:08:00 +00:00
Mathias Vorreiter Pedersen
825628675e
C++: Only allow implicit reads of fields that exist on the sink node's type.
2023-02-08 13:08:22 +00:00
Mathias Vorreiter Pedersen
559c799309
C++: Also recognize iterators obtained via a function that doesn't receive the container as a qualiifer.
2023-02-03 21:43:21 +00:00
Mathias Vorreiter Pedersen
09a7573163
C++: Add comments to the new FP.
2023-02-03 17:09:19 +00:00
Robert Marsh
ad8e82ac65
C++: allow read steps at the sink in IR taint test
2023-02-03 11:38:49 -05:00
Mathias Vorreiter Pedersen
eb31160ae0
C++: Accept test changes.
2023-02-01 13:42:03 +00:00
Mathias Vorreiter Pedersen
bfe9ae22ad
Merge branch 'main' into mathiasvp/replace-ast-with-ir-use-usedataflow
2023-01-26 13:03:49 +00:00
Mathias Vorreiter Pedersen
13baa5b60b
C++: Add iterator typedefs to properly instantiate 'int_iterator_by_trait' and 'insert_iterator_by_trait'.
2023-01-26 11:43:33 +00:00
Mathias Vorreiter Pedersen
a36afc6bff
C++: Accept more test changes.
2022-12-15 13:29:05 +00:00
Mathias Vorreiter Pedersen
cb47bdd9fd
C++: Accept test changes.
2022-12-15 11:55:25 +00:00
Mathias Vorreiter Pedersen
623372238d
C++: Better support for flow-through.
2022-11-22 13:54:44 +00:00
Mathias Vorreiter Pedersen
b12955e220
C++: Fix flow out of const member functions.
2022-11-16 22:46:21 +00:00
Jeroen Ketema
2b37ebd7ed
Merge remote-tracking branch 'upstream/main' into mathiasvp/replace-ast-with-ir-use-usedataflow
2022-11-11 17:24:34 +01:00
Jeroen Ketema
62f5d10d03
C++: Fix localTaint expected results
2022-11-10 16:08:07 +01:00
Jeroen Ketema
62a0bcddd9
C++: Fix the accept prototype in the dataflow taint tests
2022-11-10 14:23:26 +01:00
Jeroen Ketema
d8e96ef12a
Merge remote-tracking branch 'upstream/main' into mathiasvp/replace-ast-with-ir-use-usedataflow
2022-11-10 12:09:43 +01:00
Jeroen Ketema
4d7aeced3f
C++: Simplify dataflow taint test query
...
The complexity seems a left-over from before these tests were turned into
inline expectation tests, where the aim seems to have been to have exactly
one sink node for each `sink` call. Multiple sink nodes for the same `sink`
call are not made visible in the inline expecation tests, and I am not
conviced this was very useful before, so remove the complexity.
2022-11-10 10:38:22 +01:00