Jonas Jensen
a61aec9e63
C++: Fix ValueNumbering for CopyInstruction
...
Querying for overlap type wasn't possible when this library was first
written. This change fixes FPs in `RedundantNullCheckSimple.ql` on
Wireshark and other real-world projects.
2019-05-30 09:42:46 +02:00
Jonas Jensen
2e7daf2308
C++: Use GVN in RedundantNullCheckSimple
2019-05-30 09:41:42 +02:00
Dave Bartolomeo
aff85c5b24
C++: IR support for range-based for loops
...
IR construction was missing support for C++ 11 range-based `for` loops. The extractor generates ASTs for the compiler-generated implementation already, so I had enough information to generate IR. I've expanded on some of the predicates in `RangeBasedForStmt` to access the desugared information.
One complication was that the `DeclStmt`s for the compiler-generated variables seem to have results for `getDeclaration()` but not for `getDeclarationEntry()`. This required handling these slightly differently than we do for other `DeclStmt`s.
The flow for range-based `for` is actually easier than for a regular `for`, because all three components (init, condition, and update) are always present.
2019-05-29 14:40:29 -07:00
Jonas Jensen
df4c57648c
C++: Support inline namespaces in hasQualifiedName
2019-05-29 15:22:42 +02:00
Jonas Jensen
f8644b1023
C++: Use Definition.qll's getName
...
It turns out we didn't have to move the `getName` implementation into
the mirror classes in `QualifiedName`. Doing so only made it harder for
the optimiser to specialize calls to `getName` on various kinds of
`Declaration`.
2019-05-29 14:18:10 +02:00
Jonas Jensen
b4f19eebdd
C++: Revert the getName() changes
...
This reverts the `getName()` parts of 56e88cbac0 and 0a2e28858a .
2019-05-29 14:15:45 +02:00
Geoffrey White
6c267f4957
CPP: Fix qhelp.
2019-05-29 10:35:49 +01:00
Geoffrey White
76d18b42b8
CPP: Repair getQualifiedName changes from elsewhere.
2019-05-29 10:35:49 +01:00
Geoffrey White
eb880c3f9f
CPP: Reference URLs.
2019-05-29 10:35:49 +01:00
Geoffrey White
dc44d686d4
CPP: Update CWE tag.
2019-05-29 10:35:49 +01:00
Geoffrey White
34444ace8b
CPP: Update the query name and description.
2019-05-29 10:35:49 +01:00
Geoffrey White
2ae38a54af
CPP: Adjust query tags.
2019-05-29 10:35:49 +01:00
Geoffrey White
88f363d564
CPP: Update the ql, qhelp and example.
2019-05-29 10:35:48 +01:00
Geoffrey White
1f80dea375
CPP: Clone PotentiallyDangerousFunction query as DangerousUseOfGets.
2019-05-29 10:35:48 +01:00
Geoffrey White
574a1d8501
Merge pull request #1037 from kevinbackhouse/RangeAnalysisAssignAddOverflow
...
Better overflow detection for AssignAdd/AssignSub
2019-05-29 09:54:06 +01:00
Jonas Jensen
b0a7f207e4
Merge pull request #1343 from rdmarsh2/rdmarsh/cpp/getUnspecifiedType
...
C++: add getUnspecifiedType() for exprs and decls
2019-05-28 20:10:28 +01:00
Robert Marsh
d20efe49dd
C++: respond to PR comments
2019-05-28 07:51:59 -07:00
Jonas Jensen
d2fa7aad1c
Merge pull request #1336 from geoffw0/cached2
...
CPP: Cache Expr.getType().
2019-05-27 12:48:56 +01:00
Geoffrey White
15e2248440
Merge pull request #1359 from jbj/definitions-column-order
...
C++: definitions.ql performance tweaks
2019-05-24 12:43:57 +01:00
Ziemowit Laski
154b9aa488
[CPP-370] Reformat both Print.qll files.
2019-05-22 08:21:05 -07:00
Jonas Jensen
dd5a2552c7
C++: Compute locations only for elements in result
...
This gains some performance by not computing locations for all
expressions since we are only interested in calls and variable accesses.
The `Top::hasLocationInfo` predicate goes from 2m28s to 1m32s on
Chromium.
2019-05-22 15:52:49 +01:00
Jonas Jensen
81f627c1c4
C++: pragma[noopt] Top::hasLocationInfo perf tweak
...
This predicate was slow, mostly because it's just very large. A manual
join order cuts the run time on Chromium from
definitions::Top::hasLocationInfo_dispred#ffffff ..................... 3m23s
definitions::MacroAccessWithHasLocationInfo::hasLocationInfo#ffffff .. 1m56s
to
definitions::Top::hasLocationInfo#ffffff .... 2m28s
The main slowdown was the two uses of `SCAN` to reorder columns in the
RA.
2019-05-22 15:52:33 +01:00
Denis Levin
1b8117ba3a
C++: Mishandling Japanese Era and Leap Year in calculations
2019-05-21 14:49:40 -07:00
Ziemowit Laski
f19f48dc1a
[CPP-370] Revert accidental changes to Printf.qll (which belong on zlaski/cpp391 branch).
2019-05-21 06:55:32 -07:00
Ziemowit Laski
a49d82d2d6
[CPP-370] Exclude UserDefinedFormattingFunction nodes.
2019-05-21 06:55:32 -07:00
Ziemowit Laski
91902e52f6
[CPP-370] Intermediate commit, file not in usable state.
2019-05-21 06:46:52 -07:00
Ziemowit Laski
d8b8dda439
[CPP-370] First attempt at isAdditionalFlowStep().
2019-05-21 06:45:52 -07:00
Ziemowit Laski
dbec17f85b
[CPP-370] Tentative implementation of NonConstantFormat.ql using the global
...
DataFlow library. This is intended solely for further discussion.
2019-05-21 06:23:51 -07:00
Ziemowit Laski
f6903c769a
[CPP-370] Remove prohibition against UserDefinedFormattingFunction
2019-05-21 06:21:12 -07:00
Ziemowit Laski
1fce5a5b40
[CPP-370] Revert accidental changes to Printf.qll (which belong on zlaski/cpp391 branch).
2019-05-21 06:21:11 -07:00
Ziemowit Laski
99047e51f2
[CPP-370] Exclude UserDefinedFormattingFunction nodes.
2019-05-21 06:19:52 -07:00
Ziemowit Laski
b205951e6d
[CPP-370] Reformat test cases so that the .expect files line up with what was
...
checked in initially. Check for DataFlow::DefinitionByReferenceNode
when computing isSource() for our taint analysis.
2019-05-21 06:18:31 -07:00
Ziemowit Laski
ed67c9fd5a
[CPP-370] Rewrite of NonConstantFormat.ql using the taint tracking library.
2019-05-21 06:18:31 -07:00
Ziemowit Laski
a962cff5df
[CPP-370] Intermediate commit, file not in usable state.
2019-05-21 06:18:31 -07:00
Ziemowit Laski
fae55d5493
[CPP-370] First attempt at isAdditionalFlowStep().
2019-05-21 06:18:30 -07:00
Ziemowit Laski
012140fcd3
[CPP-370] Reformat query.
2019-05-21 06:18:30 -07:00
Ziemowit Laski
775861c386
[CPP-370] Minor textual tweaks.
2019-05-21 06:18:30 -07:00
Ziemowit Laski
ffddc5bff6
[CPP-370] Update the NonConstantFormat.expected result template.
2019-05-21 06:18:30 -07:00
Ziemowit Laski
0c86d4c112
[CPP-370] Tentative implementation of NonConstantFormat.ql using the global
...
DataFlow library. This is intended solely for further discussion.
2019-05-21 06:18:30 -07:00
Ziemowit Laski
21eb00a5df
[CPP-370] Minor fix to QHELP file.
2019-05-21 06:18:30 -07:00
Robert Marsh
2dd1c06409
C++: fix use of getUnspecifiedType on Node
2019-05-21 11:06:15 +01:00
Geoffrey White
67527820a1
Merge pull request #1335 from EdoDodo/optimise-preprocessor
...
C++: Optimise quadratic code in PreprocessorBranchDirective
2019-05-20 15:58:33 +01:00
Robert Marsh
dbdaa1d3f3
C++: Replace getUnderlyingType().getUnspecifiedType()
2019-05-20 15:23:08 +01:00
Robert Marsh
e899120270
C++: replace getType().getUnspecifiedType()
2019-05-20 15:08:28 +01:00
Robert Marsh
a72fff7ed0
C++: add getUnspecifiedType() for exprs and decls
2019-05-20 14:49:19 +01:00
Anders Schack-Mulligen
9ebeac25ad
Merge pull request #1329 from hvitved/dataflow/performance
...
Data flow: performance improvements
2019-05-20 14:27:03 +02:00
Edoardo Pirovano
30198c326d
C++: Optimise quadratic code in PreprocessorBranchDirective
2019-05-20 12:57:47 +01:00
Tom Hvitved
bc00877ff2
Data flow: Add nomagic to storeCand()
2019-05-20 12:05:20 +02:00
Tom Hvitved
360c7a1ac5
Address review comments
2019-05-20 09:59:17 +02:00
Geoffrey White
36cd4d44d1
CPP: Cache Expr.getType().
2019-05-17 16:18:41 +01:00