Граф коммитов

3728 Коммитов

Автор SHA1 Сообщение Дата
Dave Bartolomeo 8e9e3c8919
Merge pull request #3395 from jbj/IRBlock-unique
C++: Use `unique` aggregate in IRBlock computation
2020-05-03 07:54:51 -04:00
Jonas Jensen 0a59045dc3 C++: Use `unique` aggregate in IRBlock computation
This gives a slight speedup, and I think it makes the code shorter and
clearer.

On Wireshark, the time from the beginning of the `IRBlock` stage until
just before evaluation of `getInstruction` drops from 44s to 34s.
2020-05-03 10:07:09 +02:00
Robert Marsh 83e222e5bd C++/C#: sync files 2020-05-01 14:17:43 -07:00
Robert Marsh 537db53a8d C++/C#: improve qldoc on IR get*ResultExpression 2020-05-01 14:12:44 -07:00
Nick Rolfe 4ce896b856
Merge pull request #3378 from matt-gretton-dann/codeql-c-extractor/49-consteval
Add support for C++20's consteval specifier
2020-05-01 17:56:56 +01:00
Geoffrey White c8292e4b8e
Merge pull request #3148 from jbj/minmax-to-unique
C++: Replace "min = max" with "unique"
2020-05-01 17:43:32 +01:00
Jonas Jensen 4ec0ae6698
Merge pull request #3388 from geoffw0/cleanupstuff
C++: Small tidy up
2020-05-01 17:29:12 +02:00
Mathias Vorreiter Pedersen 2e3463740d
Merge pull request #3382 from jbj/escape-qualifier
C++: Addresses may escape through call qualifiers
2020-05-01 16:23:46 +02:00
Geoffrey White 9b4884dfaf C++: Backticks. 2020-05-01 14:26:34 +01:00
Geoffrey White 200d7ed360 C++: Remove if-else. 2020-05-01 14:26:34 +01:00
Geoffrey White 4907677351 C++: Try to improve QLDoc on deconstructSizeExpr. 2020-05-01 14:26:33 +01:00
Jonas Jensen 9b9f5248af C++: Accept test changes
Lambda invocations are apparently const. This was exposed by the fix in
the previous commit.
2020-05-01 15:23:00 +02:00
Jonas Jensen 36bdcfa42d C++: Remove an unneeded local-flow case
This case was added in dccc0f4db. The surrounding code has changed a lot
since then, and the case no longer seems to have an effect except to
create some dead ends and possibly cycles in the local flow graph.
2020-05-01 15:08:15 +02:00
Jonas Jensen 9fc27e9130 C++: Fix "is constant" check
The check was supposed to check for constant type, not constant value.
This fixes a false negative that appeared in
`LargeParameter/test.cpp:106`.
2020-05-01 09:04:31 +02:00
Jonas Jensen 8ffa124bf9 C++: Addresses may escape through call qualifiers
Also clarify the docs on `Call` to decrease the likelyhood of such an
omission happening again.

The updated test reflects that `f1.operator()` lets the address of `f1`
escape from the caller.
2020-04-30 14:27:40 +02:00
Matthew Gretton-Dann 7d605095a5 C++: Update expected test results 2020-04-29 14:31:35 +01:00
Matthew Gretton-Dann 5b29a49c73 C++: Add library support for consteval 2020-04-29 14:31:35 +01:00
Nick Rolfe 55301b4b2f
Merge pull request #3074 from matt-gretton-dann/codeql-c-extractor/50-char8_t
Add support for C++20's char8_t type.
2020-04-29 12:15:25 +01:00
Mathias Vorreiter Pedersen 8a1d96b313
Merge pull request #3374 from jbj/PartialDefinition-refactor
C++: Refactor `PartialDefinition` charpred
2020-04-29 13:03:40 +02:00
Jonas Jensen de3fa8e68b
Merge pull request #3337 from Cornelius-Riemenschneider/alloc-type
C++: Allocation.qll: Provide getAllocatedElementType predicate for AllocationExprs.
2020-04-29 11:55:02 +02:00
Matthew Gretton-Dann a6947e0296 C++: Complete support for char8_t 2020-04-29 10:18:13 +01:00
Matthew Gretton-Dann c0d0f7862b C++: Add DB Upgrade script 2020-04-29 10:18:13 +01:00
Matthew Gretton-Dann 52670dd956 C++: Update expected test output. 2020-04-29 10:18:13 +01:00
Matthew Gretton-Dann 2d898af2fe C++: Add library support for char8_t type. 2020-04-29 10:18:13 +01:00
Matthew Gretton-Dann 79b3a995e9 C++: Add DB support for C++20's char8_t 2020-04-29 10:18:13 +01:00
Shati Patel 5c80cd5032 Merge branch 'rc/1.24' into mergeback 2020-04-29 08:05:53 +01:00
Jonas Jensen 796041af72 C++: Refactor `PartialDefinition` charpred
This class used `newtype` for seemingly no reason. The new code is
shorter and should be faster as well.
2020-04-28 17:10:25 +02:00
Mathias Vorreiter Pedersen b1a94d8809 Merge branch 'master' into get-an-assigned-value-join-order 2020-04-27 14:11:30 +02:00
Tom Hvitved d28c4fb0f5
Merge pull request #3202 from jbj/pathStep-join-unique
Java/C++/C#: Use `unique` to improve join order fix
2020-04-27 13:06:27 +02:00
Cornelius Riemenschneider 3f7d68178c Use stripTopLevelSpecifiers() to get the allocated element type for malloc(). 2020-04-27 12:46:14 +02:00
Cornelius Riemenschneider 92e8604fa1 Provide getAllocatedElementType predicate for AllocationExprs.
This predicate tries to determine the type of the allocated elements of an allocation expression.
2020-04-27 12:41:19 +02:00
Cornelius Riemenschneider 203315ae33 Assign malloc results in test to variables. 2020-04-27 12:40:35 +02:00
Geoffrey White 230e5a3a9a
Merge pull request #3326 from Cornelius-Riemenschneider/alloc-size-mul
C++: Allocation.qll: Analyze common pattern of malloc() invocations to provide more accurate getSizeMult()
2020-04-27 11:18:54 +01:00
Jonas Jensen 20c956e0a9
Merge pull request #3320 from Semmle/rdmarsh/cpp/taint-tracking-util-port
C++: move logic from DefaultTaintTracking into TaintTrackingUtil
2020-04-27 11:34:03 +02:00
Cornelius Riemenschneider a50d5b7c6a Accept changed test output. 2020-04-27 09:17:16 +02:00
Robert Marsh 4eea62cbde
Merge pull request #3345 from Cornelius-Riemenschneider/openssl-allocators
C++: Allocation.qll: Add support for openssl allocation/deallocation functions.
2020-04-24 14:48:05 -07:00
Jonas Jensen 718f4cd3f9 C++: Speed up SuspiciousAddWithSizeof select
This `select` clause had become very slow after we started caching
`ElementBase::toString` because the query used string concatenation to
produce alert messages, and those string concatenations were done very
early in the pipeline, producing lots of strings that would be discarded
moments later.

By using `$@` to interpolate elements into strings, the concatenation is
done outside of QL.

Testing on a Chromium snapshot, this commit takes us from

    #select#ff ................ 6m2s

to

    #select#cpe#134#fff ....... 15.2s
2020-04-24 16:18:18 +02:00
Mathias Vorreiter Pedersen 98c2fd8401 Merge branch 'master' into get-an-assigned-value-join-order 2020-04-24 15:03:59 +02:00
Mathias Vorreiter Pedersen 7df45a9bb4
Merge pull request #3316 from jbj/arithTypesMatch-perf
C++: inline arithTypesMatch predicate
2020-04-24 09:13:02 +02:00
Jonas Jensen d98e956c2b
Merge pull request #3322 from felicitymay/merge-124-master
Merge rc/1.24 into master
2020-04-24 08:48:54 +02:00
Cornelius Riemenschneider c25eb19b18 Add support for openssl allocation/deallocation functions. 2020-04-24 01:57:14 +02:00
Cornelius Riemenschneider 0ea7fedeb0 Address review and fix bug in deconstructSizeExpr/3.
Logic is hard, and I made a mistake inverting the formula for the second case, so the
predicate never held for a sizeExpr like sizeof(int)*sizeof(void).
Now, this case is correctly handled by the fallback.
2020-04-23 16:39:29 +02:00
Cornelius Riemenschneider 492f1f446a Remove pragma[inline] from deconstructSizeExpr/3. 2020-04-23 15:53:11 +02:00
Mathias Vorreiter Pedersen deff2820c2 C++: Modernize getAnAssignedValue following PR comments 2020-04-23 14:14:35 +02:00
Jonas Jensen 37e3bc4b3e C++: invoke `unique` without `| |`
Based on PR feedback. This will avoid a syntactic wart and make the
invocation do the right thing both with and without
`language[monotonicAggregates]`.
2020-04-23 13:10:05 +02:00
Jonas Jensen 312e6229fb
Merge pull request #3330 from MathiasVP/libc-assert
C++: Generalize charpred of LibcAssert
2020-04-23 13:06:41 +02:00
Cornelius Riemenschneider a33b7f8c99 Make getSizeMult() functional. 2020-04-23 12:15:31 +02:00
Jonas Jensen d6f77c0f98
Merge pull request #3328 from MathiasVP/literal-comment
C++: Remove unnecessary part of comment
2020-04-23 11:10:16 +02:00
Mathias Vorreiter Pedersen 0fb534c79e C++: Fix join order in getAnAssignedValue 2020-04-23 11:04:40 +02:00
Jonas Jensen f696594d35
Merge pull request #3295 from MathiasVP/field-flow-single-struct
C++: Add PostUpdateNode for updates to structs with no chi instructions
2020-04-23 10:02:10 +02:00