Mathias Vorreiter Pedersen
1797b6c7f9
C++: Add FP test from the work on smart pointers in dataflow.
2021-04-20 13:54:57 +02:00
Jonas Jensen
d4fdd50e2c
Merge pull request #5723 from MathiasVP/cleanup-smart-ptr-model
...
C++: Simplify smart pointer model
2021-04-20 13:25:02 +02:00
Geoffrey White
2b7e599dc4
Merge pull request #5703 from MathiasVP/improve-access-of-memory-location-after-end-of-buffer-using-strncat
...
C++: Improve cpp/access-memory-location-after-end-buffer-strncat
2021-04-20 10:44:24 +01:00
Mathias Vorreiter Pedersen
61d4d17225
C++: Simplify smart pointer model and accept test changes.
2021-04-20 09:57:58 +02:00
ihsinme
c2d97b98e2
Merge branch 'main' into ihsinme-patch-259
2021-04-18 21:01:56 +03:00
Mathias Vorreiter Pedersen
95742aec69
C++: Accept test changes for the other experimental query in the directory. This is only a change in line numbers.
2021-04-16 21:29:17 +02:00
Mathias Vorreiter Pedersen
64f8316a6d
C++: Tidy up the ql file and accept test changes.
2021-04-16 21:22:13 +02:00
Mathias Vorreiter Pedersen
1e327289b2
C++: Add false negative test.
2021-04-16 18:38:51 +02:00
Mathias Vorreiter Pedersen
50abb6e3a1
C++: Cleanup test.c
2021-04-16 17:32:44 +02:00
Geoffrey White
e1028a2765
Merge pull request #5667 from MathiasVP/use-range-analysis-in-overflow
...
C++: Use range analysis in Overflow.qll
2021-04-16 12:00:28 +01:00
Mathias Vorreiter Pedersen
7fbc62358e
C++: Accept test changes after making the exprMightOverFlow predicates more sound.
2021-04-15 13:57:44 +02:00
Robert Marsh
fe57876fd8
Merge pull request #5643 from dbartol/smart-pointers/side-effect-refactor
...
C++: Refactor some side effect generation code
2021-04-14 09:59:41 -07:00
Jonas Jensen
b4f01c9afa
Merge pull request #5578 from MathiasVP/ast-flow-smart-pointers
...
C++: AST dataflow through smart pointers
2021-04-14 16:39:05 +02:00
Mathias Vorreiter Pedersen
92508beb82
Merge pull request #5600 from ihsinme/ihsinme-patch-258
...
CPP: Add query for CWE-691 Insufficient Control Flow Management When Using Bit Operations
2021-04-14 14:55:30 +02:00
Mathias Vorreiter Pedersen
bc7cc2f7ce
C++: Remove rule that wasn't needed.
2021-04-14 14:50:27 +02:00
Mathias Vorreiter Pedersen
da36508714
Revert "C++: As response to the review comments this commit adds a reference-to-pointer state to AddressFlow. A call to an unwrapper function now adds a pointer -> reference-to-pointer transition, and a ReferenceDereference adds a reference-to-pointer -> pointer transition."
...
This reverts commit 5aeaab7c6d .
2021-04-14 14:41:22 +02:00
Robert Marsh
419d25cbcf
Merge pull request #5325 from ihsinme/ihsinme-patch-245
...
CPP: Add query for CWE-783 Operator Precedence Logic Error When Use Bool Type
2021-04-13 13:24:39 -07:00
Mathias Vorreiter Pedersen
d1457995dd
C++: Use range analysis in Overflow.qll
2021-04-13 16:39:28 +02:00
Geoffrey White
4879104568
C++: Add more dataflow cases to replace the loss.
2021-04-13 15:09:12 +01:00
Geoffrey White
b0ad927fdd
C++: Remove useUsePair.
2021-04-13 15:03:06 +01:00
Dave Bartolomeo
697b2dcde8
C++: Add missing store step for single-field struct use
...
We have special code to handle field flow for single-field structs, but that special case was too specific. Some `Store`s to single-field structs have no `Chi` instruction, which is the case that we handled already. However, it is possible for the `Store` to have a `Chi` instruction (e.g. for `{AllAliased}`), but still have a use of the result of the `Store` directly. We now add a `PostUpdateNode` for the result of the `Store` itself in those cases, just like we already did if the `Store` had no `Chi`.
2021-04-12 18:11:41 -04:00
Mathias Vorreiter Pedersen
037e6369ce
C++: Ensure all values are bound in both disjunctions.
2021-04-12 18:27:21 +02:00
Mathias Vorreiter Pedersen
5aeaab7c6d
C++: As response to the review comments this commit adds a reference-to-pointer state to AddressFlow. A call to an unwrapper function now adds a pointer -> reference-to-pointer transition, and a ReferenceDereference adds a reference-to-pointer -> pointer transition.
2021-04-12 16:01:01 +02:00
ihsinme
feb3a8deb1
Update InsufficientControlFlowManagementAfterRefactoringTheCode.expected
2021-04-12 08:23:41 +03:00
ihsinme
6924c6c51c
Update test.c
2021-04-12 08:23:06 +03:00
Dave Bartolomeo
0a86642056
C++: Refactor some side effect generation code
...
This change was necessary for my upcoming changes to introduce side effect instructions for indirections of smart pointers. The code to decide which parameters have which side effects appeared in both the IPA constructor for `TTranslatedSideEffect` and in `TranslatedCall`. These two versions didn't quite agree, especially once the `SideEffectFunction` model provides its own side effects instead of the defaults.
The relevant code has now been factored out into `SideEffects.qll`. This queries the model if one exists, and provides default side effects if no model exists. This fixes at least one existing issue, where we were emitting a buffer read side effect for `*this` instead of an indirect read side effect. This accounts for all of the IR diffs in the tests.
2021-04-09 16:14:03 -04:00
Mathias Vorreiter Pedersen
1510fe370d
C++: Add cases for const pointer wrapper references to AddressFlow and FlowVar.
2021-04-09 20:58:05 +02:00
Mathias Vorreiter Pedersen
2329b31601
C++: Replace the new SmartPointerPartialDefinition with additional steps in AddressFlow.qll
2021-04-09 20:49:45 +02:00
Mathias Vorreiter Pedersen
a460e3ad3d
Merge branch 'main' into ast-flow-smart-pointers
2021-04-09 19:41:10 +02:00
Geoffrey White
3b437fe6cf
C++: Replace GVN with some other libraries.
2021-04-09 15:21:42 +01:00
Jonas Jensen
e1d0bbb021
Merge pull request #5607 from MathiasVP/smart-pointer-ast-read-store-steps
...
C++: read and store steps for smart pointers in AST dataflow
2021-04-09 16:11:48 +02:00
Mathias Vorreiter Pedersen
996cda9b97
C++: Fix incorrect test annotation.
2021-04-09 14:46:46 +02:00
Mathias Vorreiter Pedersen
80d5b17900
C++: Remove the dataflow rule for smart_ptr -> *smart_ptr.
2021-04-09 14:20:51 +02:00
Mathias Vorreiter Pedersen
cae0060a89
C++: Replace the new rules in DataFlowUtil with a dataflow model for pointer wrapper classes.
2021-04-09 14:06:58 +02:00
Mathias Vorreiter Pedersen
0a6aef71a2
C++: Respond to review comments.
2021-04-09 12:29:13 +02:00
ihsinme
9b3ccade43
Update test.c
2021-04-08 22:06:35 +03:00
ihsinme
3d117243e4
Update test.c
2021-04-08 22:05:31 +03:00
ihsinme
02eb447a35
Update InsufficientControlFlowManagementWhenUsingBitOperations.expected
2021-04-08 22:04:08 +03:00
Geoffrey White
517fd23ca5
C++: Correct and add to test cases.
2021-04-08 09:48:38 +01:00
ihsinme
cbf158ea6b
Add files via upload
2021-04-07 13:12:30 +03:00
ihsinme
ed2a8db8c9
Add files via upload
2021-04-07 13:10:01 +03:00
Geoffrey White
a8193dac08
C++: Reintroduce the exprMightOverflowNegatively bit.
2021-04-06 22:36:59 +01:00
Geoffrey White
60e4faba4c
C++: Add linear expression logic.
2021-04-06 22:28:36 +01:00
Geoffrey White
48ff8e237c
C++: Rewrite the range analysis exclusion to be recursive and more robust.
2021-04-06 22:26:55 +01:00
Geoffrey White
3ecd13531f
C++: Improve isGuarded.
2021-04-06 22:21:59 +01:00
Geoffrey White
59ff3f315b
C++: Add test cases exploring issues and potential issues with the query (especially related to simple range analysis).
2021-04-06 22:21:25 +01:00
Mathias Vorreiter Pedersen
8382e85901
C++: Add flow into the source of read step and out of the target of a store step for smart pointers in AST dataflow.
2021-04-06 14:05:55 +02:00
Mathias Vorreiter Pedersen
f07d844362
C++: Add a test containing missing read/store dataflow steps for smart pointers.
2021-04-06 13:59:27 +02:00
Mathias Vorreiter Pedersen
a5f4d43d61
C++: Fix false positive by adding another allow-list pattern in AssignWhereCompareMeant.
2021-04-06 11:01:38 +02:00
Mathias Vorreiter Pedersen
7045597139
C++: Add testcase with false positive from #5318 .
2021-04-06 10:58:15 +02:00