Geoffrey White
e1efdd7d47
CPP: Add a test where continue is used in a switch to exit the loop.
2019-07-11 20:00:50 +01:00
Geoffrey White
83d4b23ae3
CPP: Fix false positives in while/for loops.
2019-07-11 20:00:50 +01:00
Geoffrey White
136ca72297
CPP: Add a test.
2019-07-11 20:00:49 +01:00
Robert Marsh
c195420ba1
C++: respond to PR comments
2019-07-11 11:00:52 -07:00
Jonas Jensen
0889d5d27a
C++ IR: Improve ErrorExpr test
...
The previous version of the test used `0 = 1;` to test an lvalue-typed
`ErrorExpr`, but the extractor replaced the whole assignment expression
with `ErrorExpr` instead of just the LHS. This variation of the test
only leads to an `ErrorExpr` for the part of the syntax that's supposed
to be an lvalue-typed expression, so that's an improvement.
Unfortunately it still doesn't demonstrate that we can `Store` into an
address computed by an `ErrorExpr`.
2019-07-09 13:35:20 +02:00
Jonas Jensen
4324c97d39
C++: Use Opcode::Error for ErrorExpr translation
2019-07-09 13:26:00 +02:00
Jonas Jensen
a86ddd50de
C++ IR: Translate ErrorExpr to NoOp
2019-07-09 13:18:11 +02:00
Jonas Jensen
e2a43eeed6
C++ IR: Tests with ErrorExpr
2019-07-09 13:18:09 +02:00
Jonas Jensen
46d779248d
Merge pull request #1559 from zlaski-semmle/zlaski/futile-params-fix
...
Reduce precision from `very-high` to `low` due to inability to handle…
2019-07-09 06:51:56 +02:00
Dave Bartolomeo
7bbfffec4d
Merge pull request #1552 from jbj/ir-builtin_addressof
...
C++ IR: Support __builtin_addressof
2019-07-08 17:08:38 -07:00
Dave Bartolomeo
52e0f3fb62
Merge pull request #1551 from jbj/ir-DeleteExpr-placeholder
...
C++: Placeholder translation of delete expressions
2019-07-08 17:07:16 -07:00
Robert Marsh
41e4d920e3
C++: alias and side effect info for pure functions
2019-07-08 12:26:58 -07:00
Ziemowit Laski
ed5e2f3211
It turns out that the bminor/bash alert spewage was caused by
...
a bug in the extractor, which is verified fixed in the next release.
Reverting query to its original form.
2019-07-08 12:11:15 -07:00
Robert Marsh
ea7602b571
C++: add test for Alias and SideEffect models
2019-07-08 11:41:46 -07:00
Ziemowit Laski
be0db66a55
Squelch bminor/bash alerts and set query precision to high.
2019-07-06 14:27:02 -07:00
Jonas Jensen
8d3cb78a9d
C++: Fix DeclarationHidesVariable FP
...
We don't want alerts about the compiler-generated variables that appear
in the desugaring of range-based `for`.
2019-07-05 20:39:43 +02:00
Jonas Jensen
443a8fbc07
C++: Test for DeclarationHidesVariable FP
2019-07-05 20:34:30 +02:00
Jonas Jensen
4b4e7caf9f
C++ IR: Support __builtin_addressof
2019-07-05 11:05:00 +02:00
Jonas Jensen
6fe9945c04
C++: Placeholder translation of delete expressions
...
Before this change, `delete` and `delete[]` expressions had no control
flow after them, which caused the reachability analysis to remove all
code after a delete expression. This commit adds placeholder support for
delete expression by translating them to `NoOp` instructions so their
presence doesn't cause large chunks of the program to be removed.
2019-07-05 10:54:35 +02:00
Jonas Jensen
2f8787379a
Merge pull request #1535 from geoffw0/nospacezero
...
CPP: Fix false positives from NoSpaceForZeroTerminator.ql
2019-07-04 22:36:04 +02:00
Jonas Jensen
8c733fd58d
Merge pull request #1537 from geoffw0/add-tests
...
CPP: Add some tests
2019-07-04 21:20:55 +02:00
Geoffrey White
7fc31f263a
CPP: Basic fix.
2019-07-04 17:27:40 +01:00
Geoffrey White
34d307ecef
CPP: Test a common false positive.
2019-07-04 17:27:40 +01:00
Geoffrey White
8ce6822d6f
CPP: Fix format literal.
2019-07-04 16:31:35 +01:00
Jonas Jensen
984405be2e
C++ IR: Change many uses of getAnyDef to getDef
...
This changes all the getters on `Instruction` to use `getDef` instead of
`getAnyDef`, with the result that these getters now only have a result
if the definition is exact.
This is a backwards-INCOMPATIBLE change.
2019-07-03 11:04:57 +02:00
Jonas Jensen
206a96df94
C++ IR: Rename getters for def/use on Operand
...
This renames `getDefinitionInstruction` to `getAnyDef`, reflecting that
it includes definitions without exact overlap. It renames
`getUseInstruction` to `getUse` for consistency.
perl -p -i -e 's/\bgetUseInstruction\b/getUse/g; s/\bgetDefinitionInstruction\b/getAnyDef/g' \
cpp/ql/src/semmle/code/cpp/ir/**/*.ql* \
cpp/ql/test/**/*.ql* \
cpp/ql/src/semmle/code/cpp/rangeanalysis/**/*.ql*
2019-07-03 10:06:48 +02:00
Jonas Jensen
757ec97e7a
Merge pull request #1251 from zlaski-semmle/zlaski/cpp370
...
[CPP-370] Non-constant `format` arguments to `printf` and friends
2019-07-01 14:43:19 +02:00
Geoffrey White
95ab8cc706
CPP: Add a test of More64BitWaste.ql.
2019-06-27 17:14:46 +01:00
Geoffrey White
5e328908a0
CPP: Modify violation message of NonPortablePrintf.ql for consistency with WrongTypeFormatArguments.ql.
2019-06-27 17:11:37 +01:00
Geoffrey White
5cef0e21c6
CPP: Add a test of NonPortablePrintf.ql.
2019-06-27 16:51:07 +01:00
Geoffrey White
a7fb2e1261
CPP: More test cases for ArithmeticWithExtremeValues.
2019-06-26 15:38:23 +01:00
Geoffrey White
f8655b1664
CPP: Add a test that uses Function.getAThrownType() and Function.isNoThrow().
2019-06-26 15:20:46 +01:00
Geoffrey White
e237507208
CPP: Add a reference to the ReturnConstType tests.
2019-06-26 15:20:46 +01:00
Geoffrey White
627fba81ce
CPP: Improve wording of UnsafeArrayForDAysOfYear.ql.
2019-06-25 14:42:18 +01:00
Jonas Jensen
d2f8029625
Merge pull request #1492 from geoffw0/exprnoeffectweak
...
CPP: Fix for 'Expression has no effect' on calls to weak functions
2019-06-25 10:58:28 +02:00
Jonas Jensen
de65dc5501
Merge pull request #1490 from geoffw0/leapyeararith
...
CPP: Improvements to LeapYear.qll
2019-06-25 10:46:12 +02:00
Geoffrey White
9a0645ac0b
CPP: Calls to weak functions should be considered impure.
2019-06-24 22:04:12 +01:00
Geoffrey White
aee2af7ca1
CPP: Add a test of ExprHasNoEffect.ql with a call to a 'weak' function.
2019-06-24 22:01:46 +01:00
Geoffrey White
69533a7fd3
CPP: Clean up duplication in Adding365DaysPerYear.ql.
2019-06-24 15:18:29 +01:00
Geoffrey White
7fca220eda
CPP: Fix UncheckedLeapYearAfterYearModification FPs.
2019-06-24 11:21:48 +01:00
Geoffrey White
cff3f9bdaf
CPP: Add another test case based on a real world case.
2019-06-21 17:43:17 +01:00
Geoffrey White
b1f6294083
CPP: Add a test case where a date is created.
2019-06-21 14:32:44 +01:00
Geoffrey White
09b33bc1a7
CPP: Adjust file name case for consistency.
2019-06-21 12:53:04 +01:00
Geoffrey White
1a7269b206
CPP: Rename the test subdirectories.
2019-06-21 12:51:25 +01:00
Jonas Jensen
cace411974
C++: NonConstantFormat taint only for string types
...
To speed up the taint analysis in `NonConstantFormat.ql` and to remove
FPs that were due to taint spreading from `i` to `a[i]`, this commit
stops the taint tracking in `NonConstantFormat.ql` at every node that
could not possibly contain a string.
I tested performance on Wireshark, and it's fine. Pulling out the
`isSanitizerNode` prevented `isSanitizer` from turning into four
half-slow RA predicates due to both CPE and `#antijoin_rhs`
transformations happening.
2019-06-20 15:39:47 +02:00
Jonas Jensen
e99c68885c
C++: Demonstrate ArrayExpr FP
2019-06-20 14:00:42 +02:00
Jonas Jensen
ad337de6ce
Merge branch 'master' into taintedallocfp
2019-06-19 15:35:09 +02:00
Jonas Jensen
53d4b2dfc9
Merge pull request #1365 from geoffw0/uninit
...
CPP: Fix for the 'LoopConditionAlwaysTrueUponEntry' logic
2019-06-19 11:01:57 +02:00
Geoffrey White
ef3ceb5910
CPP: Don't use getFollowingStmt.
2019-06-18 15:56:22 +01:00
Geoffrey White
536adaae7f
CPP: Additional test cases.
2019-06-18 15:56:22 +01:00