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
Geoffrey White
46332d4849
C++: Eliminate recursion from toString().
2020-05-01 14:12:52 +01: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
4ddf12119d
C++: Don't suppress consistency checks for calls
...
See https://github.com/github/codeql/pull/3162#discussion_r400849713 .
2020-05-01 11:04:42 +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
Cornelius Riemenschneider
c856552b64
Add preOffset to the bindingset for simpleArrayLengthStep.
2020-04-30 15:00:12 +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
Cornelius Riemenschneider
b838426421
Move ArrayLengthAnalysis library to the correct location.
2020-04-29 21:07:44 +02:00
Jason Reed
62c128f9a4
C++: Add QLDoc.
2020-04-29 11:06:06 -04:00
Jason Reed
e73833eda6
C++: Factor out file encoding predicate
2020-04-29 10:15:26 -04:00
Jason Reed
0500715bc1
C++: Fix docstring in localReferences.ql
2020-04-29 10:15:26 -04:00
Jason Reed
f0a7ff0d9d
Exclude ide queries from lgtm suite.
2020-04-29 10:15:26 -04:00
Jason Reed
b341f768de
C++: Fix formatting
2020-04-29 10:15:26 -04:00
Jason Reed
3b7fecab93
C++: Fix duplicate query ids
2020-04-29 10:15:26 -04:00
Jason Reed
5390f4b255
C++: Scope tags meant for ide contextual queries
2020-04-29 10:15:26 -04:00
Jason Reed
aa7a0e6879
CPP: Add tags for VS Code jump-to-defition
2020-04-29 10:15:26 -04:00
alexet
6a41028d3a
CPP:Add preliminary local jump to def queries
2020-04-29 10:15:26 -04:00
Matthew Gretton-Dann
5b29a49c73
C++: Add library support for consteval
2020-04-29 14:31:35 +01:00
Cornelius Riemenschneider
f83c3452a1
Switch allocation size expression analysis to unconverted result expression.
2020-04-29 15:13:00 +02:00
Cornelius Riemenschneider
64cf0906b5
Address review.
...
Most important fix is that VNLength is now restricted to the subset
of value numbers that are Bounds in the RangeAnalysis.
2020-04-29 15:10:30 +02: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
Cornelius Riemenschneider
9d2533c8ab
Fix bug in handling of subtractions.
2020-04-29 13:07:15 +02: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
Cornelius Riemenschneider
e6d193294a
Experimental library that tracks the length of memory.
...
For each pointer, we start tracking (starting from the allocation or an array declaration)
1) how long is the chunk of memory allocated
2) where the current pointer is in this chunk of memory.
This information might not always exist, but when it does, it is reliable.
Currently only works intraprocedurally.
2020-04-29 12:55:54 +02:00
Cornelius Riemenschneider
55cd0fac5c
Move useful helper predicate and types from RangeAnalysis to RangeUtils.
2020-04-29 12:55:54 +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
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
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
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