Robert Marsh
c455db9e59
C++: update test expectations
2019-01-10 11:24:13 -08:00
Geoffrey White
28261d6787
Merge pull request #737 from jbj/cfg-perf
...
C++: QL CFG performance and tweaks
2019-01-10 14:45:53 +00:00
Geoffrey White
f2e68da322
CPP: Use dataflow to find wrapped rounding functions.
2019-01-10 14:44:11 +00:00
Geoffrey White
207c4d365a
CPP: Test wrapped rounding functions more thoroughly.
2019-01-10 14:39:23 +00:00
Jonas Jensen
aa0f2f2da3
C++: Support ?: in UsingStrcpyAsBoolean.ql
...
I removed some unnecessary parentheses for symmetry, causing whitespace
changes.
2019-01-10 08:35:54 +01:00
Jonas Jensen
0f88a4b312
C++: Test ?: support in UsingStrcpyAsBoolean.ql
...
This test shows that the query only supports the ternary operator in
C++, not C.
2019-01-10 08:35:54 +01:00
Jonas Jensen
4dd36772ef
C++: Remove UsingStrcpyAsBoolean.ql duplicates
2019-01-10 08:35:54 +01:00
Jonas Jensen
3a6a515a1d
C++: Tabs to spaces and // Bug comments in test
...
This changes the column numbers in the expected test output.
2019-01-10 08:35:53 +01:00
Jonas Jensen
9219214d64
Merge pull request #695 from raulgarciamsft/users/raulga/c6324
...
cpp - Using the return value of a strcpy or related string copy function in an if statement
2019-01-10 08:34:17 +01:00
Geoffrey White
7a877bfe14
CPP: Add exception for wrapped whitelisted functions.
2019-01-09 18:30:19 +00:00
Geoffrey White
f983391cbf
CPP: Add exception for pow.
2019-01-09 15:06:23 +00:00
Geoffrey White
11013b0ec6
CPP: Add a few more test cases.
2019-01-09 14:58:25 +00:00
Jonas Jensen
9146b8e32e
C++: Add example of conditional destruction
...
The QL CFG and extractor CFG are the same, so the test passes. Neither
of them model that `ref` may or may not be destructed.
2019-01-09 15:02:25 +01:00
Geoffrey White
cbe69f2daf
CPP: Fix false positive.
2019-01-09 13:59:24 +00:00
Geoffrey White
e26c709dbf
CPP: Add a test for LossyFunctionResultCast.ql.
2019-01-09 13:59:24 +00:00
Geoffrey White
6088ca5d5b
CPP: Update our uses of MacroInvocationExpr.
2019-01-09 12:17:29 +00:00
Geoffrey White
b59c2868cd
CPP: Add test cases for the macro logic and other details of ArithmeticUncontrolled.ql.
2019-01-09 12:17:29 +00:00
Robert Marsh
0040a2d123
C++: respond to further PR comments
2019-01-08 09:34:28 -08:00
Robert Marsh
8c9c316e1b
C++: performance and termination fixes
2019-01-08 09:34:27 -08:00
Robert Marsh
567eee1114
C++: allow phi nodes to self-bound
2019-01-08 09:34:27 -08:00
Robert Marsh
b2cd9a29f2
C++: add test for false comparisons
2019-01-08 09:34:26 -08:00
Robert Marsh
2f8ca8802b
C++: switch to using ValueNumbers as bounds
...
This reduces the number of bounds computed, and will simplify use of the
library. The resulting locations in the tests may be slightly strange,
because the example `Instruction` for a `ValueNumber` is the first
appearing in the IR, regardless of source order, and may not be the most
closely related `Instruction` to the bounded value. I think that's worth
doing for the performance and usability benefits.
2019-01-08 09:34:26 -08:00
Robert Marsh
89148a9ec7
C++: respond to further PR comments
2019-01-08 09:34:26 -08:00
Robert Marsh
ae4ffd9166
C++: respond to PR comments, add some TODOs
2019-01-08 09:34:25 -08:00
Robert Marsh
fe32aea31f
C++: fix/add comments
2019-01-08 09:34:25 -08:00
Robert Marsh
ed68f9150a
C++: Initial implementation of new range analysis
2019-01-08 09:34:23 -08:00
Robert Marsh
a06a20dbab
C++: move SimpleRangeAnalysis tests
2019-01-08 09:34:23 -08:00
Raul Garcia
18bb6696e0
Fixing conditional only issue.
...
I changed to detect any logical operation usage (i.e. !, ==), but I kept usage in a conditional directly as a separate detection condition. I found no false positives on the projects you shared with me previously.
2019-01-07 10:44:11 -08:00
Raul Garcia
880306c621
Removing duplicated results
2019-01-04 10:45:43 -08:00
Jonas Jensen
26f32f0d6d
C++: Initial version of CFG.qll
...
This implements calculation of the control-flow graph in QL. The new
code is not enabled yet as we'll need more extractor changes first.
The `SyntheticDestructorCalls.qll` file is a temporary solution that can
be removed when the extractor produces this information directly.
2019-01-04 13:34:36 +01:00
Jonas Jensen
8f9849b30b
C++: Add BuiltInIntAddr class for __INTADDR__
2019-01-04 10:24:08 +01:00
Ian Lynagh
98e8858dc6
C++: Accept test changes
2019-01-03 21:09:49 +00:00
Raul Garcia
28932e85d9
Fixing the code based on PR feedback.
2019-01-02 16:23:19 -08:00
Dave Bartolomeo
a7cb2d6d7c
C++: Ignore Unreached blocks in IR Guards
2018-12-20 11:57:25 -08:00
Dave Bartolomeo
fda8605aae
C++: One Unreached per function
2018-12-17 11:03:15 -08:00
Raul Garcia
f8ab945b91
Merge branch 'master' into users/raulga/c6324
2018-12-14 15:46:38 -08:00
Raul Garcia
16f2bacf4d
cpp - Using the return value of a strcpy or related string copy function in an if statement
2018-12-14 15:42:49 -08:00
Dave Bartolomeo
56bb9dcde0
C++: Remove infeasible edges to reachable blocks
...
The existing unreachable IR removal code only retargeted an infeasible edge to an `Unreached` instruction if the successor of the edge was an unreachable block. This is too conservative, because it doesn't remove an infeasible edge that targets a block that is still reachable via other paths. The trivial example of this is `do { } while (false);`, where the back edge is infeasible, but the body block is still reachable from the loop entry.
This change retargets all infeasible edges to `Unreached` instructions, regardless of the reachability of the successor block.
2018-12-14 12:13:22 -08:00
Aditya Sharad
ce8ca5979b
Merge rc/1.19 into next.
2018-12-13 12:23:59 +00:00
Geoffrey White
e443eb8889
CPP: Fix type logic.
2018-12-13 09:49:32 +00:00
Geoffrey White
c904a338f7
CPP: Add test cases.
2018-12-12 23:47:48 +00:00
Aditya Sharad
f92456fcad
Merge master into next.
...
Conflict in `cpp/ql/test/library-tests/sideEffects/functions/sideEffects.expected`,
resolved by accepting test output (combining changes).
2018-12-12 17:26:18 +00:00
Geoffrey White
2f3a874c7d
CPP: Fix false positives when a member variable is released via the target of a function pointer.
2018-12-12 11:38:44 +00:00
Geoffrey White
370387a9ca
CPP: Fix false positives when member variable is released via an ExprCall.
2018-12-12 11:38:44 +00:00
Geoffrey White
e408f18766
CPP: Fix false positives when member variable is released via capture inside lambda expression.
2018-12-12 11:38:44 +00:00
Geoffrey White
8e2459a6b7
CPP: Add similar test cases with function pointers.
2018-12-12 11:38:44 +00:00
Geoffrey White
77c1ad47f9
CPP: Add test cases with lambdas.
2018-12-12 11:38:44 +00:00
Dave Bartolomeo
be5ac2f2ff
Merge pull request #648 from dave-bartolomeo/dave/UnreachableIR
...
C++: Remove unreachable IR
2018-12-11 20:58:49 -08:00
Dave Bartolomeo
0140cd23d0
C++: Accept correct test output
2018-12-11 17:11:51 -08:00
Dave Bartolomeo
283c1d43c3
C++: Restore previous test expectations
2018-12-11 17:07:25 -08:00