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
Dave Bartolomeo
b29f35f564
Fix formatting
2021-04-14 11:15:16 -04:00
Geoffrey White
64fed4cb10
Merge pull request #5677 from MathiasVP/fix-duplicate-ids-in-experimental
...
C++: Fix duplicate names in experimental queries
2021-04-14 15:58:49 +01: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
53a320a810
C++: Fix duplicate names.
2021-04-14 16:33:18 +02:00
Mathias Vorreiter Pedersen
bb447d7174
C++: Make sure missingGuardAgainstOverflow (and underflow) holds when range analysis fails to deduce a bound.
2021-04-14 16:30:43 +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
Mathias Vorreiter Pedersen
2e40d01397
Update cpp/ql/src/semmle/code/cpp/security/Overflow.qll
...
Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com >
2021-04-14 13:01:31 +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
aa52585120
C++: Add change-note.
2021-04-13 17:17:05 +02:00
Mathias Vorreiter Pedersen
d1457995dd
C++: Use range analysis in Overflow.qll
2021-04-13 16:39:28 +02:00
Mathias Vorreiter Pedersen
3cfd30ef6f
Merge pull request #5629 from hvitved/cpp/remove-unique
...
C++: Remove `unique` wrapper from `DataFlow::Node::getEnclosingCallable`
2021-04-13 09:42:34 +02:00
Dave Bartolomeo
afd2f58f9f
C++: Fix PR feedback
2021-04-12 18:21:05 -04: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
Robert Marsh
0102d68f38
Merge pull request #5658 from MathiasVP/fix-partial-def-diff-test
...
C++: Fix performance in test
2021-04-12 13:08:30 -07:00
Mathias Vorreiter Pedersen
037e6369ce
C++: Ensure all values are bound in both disjunctions.
2021-04-12 18:27:21 +02:00
ihsinme
a43698802f
Update InsufficientControlFlowManagementWhenUsingBitOperations.ql
2021-04-12 17:36:50 +03: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
Tom Hvitved
57016ddbde
C++: Remove unique wrapper from DataFlow::Node::getEnclosingCallable()
2021-04-12 14:41:52 +02:00
Tom Hvitved
7d2a60e910
Merge pull request #5640 from hvitved/dataflow/path-step-perf
...
Data flow: Prevent bad join-order in `pathStep`
2021-04-12 14:40:46 +02: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
Tom Hvitved
f130616369
Data flow: Make getLocalCc private again
2021-04-09 16:22:58 +02: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
cd310eb9d5
C++: Remove unused import.
2021-04-09 15:08:48 +02:00
Mathias Vorreiter Pedersen
996cda9b97
C++: Fix incorrect test annotation.
2021-04-09 14:46:46 +02:00
Tom Hvitved
6874b8d4b3
Data flow: Prevent bad join-order in pathStep
2021-04-09 14:24:47 +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
02eb447a35
Update InsufficientControlFlowManagementWhenUsingBitOperations.expected
2021-04-08 22:04:08 +03:00
ihsinme
a6b486a448
Update InsufficientControlFlowManagementWhenUsingBitOperations.ql
2021-04-08 22:01:43 +03:00
Jonas Jensen
51bab81f56
Merge pull request #5622 from MathiasVP/inline-is-before
...
C++: Inline Location::isBefore
2021-04-08 11:24:33 +02:00
ihsinme
ed34c96357
Update InsufficientControlFlowManagementWhenUsingBitOperations.ql
2021-04-07 21:40:49 +03:00
ihsinme
eb9b41acab
Apply suggestions from code review
...
Co-authored-by: Mathias Vorreiter Pedersen <mathiasvp@github.com >
2021-04-07 21:31:12 +03:00
Jonas Jensen
ab58cb3d44
Merge pull request #5604 from MathiasVP/fix-false-positive-in-assign-where-compare-meant
...
C++: Fix FP in cpp/assign-where-compare-meant
2021-04-07 16:54:45 +02:00
Mathias Vorreiter Pedersen
03b12dbc6d
C++: Inline Location::isBefore.
2021-04-07 15:45:08 +02:00
ihsinme
ed2a8db8c9
Add files via upload
2021-04-07 13:10:01 +03:00
ihsinme
9c3b7e81c7
Add files via upload
2021-04-07 13:10:00 +03:00
Robert Marsh
e22ec50dee
Merge pull request #5613 from github/hmakholm/pr/fix-redos
...
Fix ReDOS in cpp/ql/src/Security/CWE/CWE-428/UnsafeCreateProcessCall.ql
2021-04-06 15:54:27 -07:00
Henning Makholm
2d615ef503
Fix ReDOS in cpp/ql/src/Security/CWE/CWE-428/UnsafeCreateProcessCall.ql
...
The sub-regex `(\s|.)*` aims to capture arbitrary string content
(in contrast to `.*` which doesn't match newlines), but it is
unsafe, since non-newline whitespace can match both alternatives.
This caused an evaluator crash in the wild.
Replace with `[\s\S]*`, which matches everything in a safe way.
2021-04-06 20:10:57 +02: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