Ziemowit Laski
970c45e896
Merge branch 'master' into cpp340a
2019-04-03 17:52:46 -07:00
Jonas Jensen
d0091b28ee
Merge pull request #1199 from geoffw0/printfld
...
CPP: Support %Ld in printf.qll
2019-04-03 15:38:16 +02:00
Geoffrey White
d4c931cf11
CPP: Permit %Ld and similar.
2019-04-03 11:46:48 +01:00
Geoffrey White
b3fd7ab757
CPP: Add test cases.
2019-04-03 11:46:30 +01:00
Jonas Jensen
4b159fd2a5
C++: Fix the suppression for alerts about enums
...
The suppression mechanism broke when I changed `relOpWithSwap` to take
fully-converted expressions as parameters.
2019-04-03 10:45:39 +02:00
Geoffrey White
8979361255
CPP: Exclude functions containing preprocessor logic.
2019-04-02 14:24:37 +01:00
Geoffrey White
5cb30b04cc
CPP: Add a test case.
2019-04-02 13:15:40 +01:00
Jonas Jensen
842aafc888
C++: Fix new UnsafeDaclSecurityDescriptor FP
...
This query uses data flow for nullness analysis, which is always going
to be a large overapproximation. The overapproximation became too big
for one of the test cases after the recent change to make data flow go
across assignment by reference.
To make this query more conservative, it will now only report that the
`pDacl` argument can be null if there isn't also evidence that it can be
non-null.
2019-04-02 11:31:12 +02:00
Ziemowit Laski
03aa86ed4d
Merge branch 'master' into cpp340a
...
So as to get to change-notes/1.21/analysis-cpp.md
2019-04-01 18:51:03 -07:00
Ziemowit Laski
bd139829ea
[CPP-340] Delete old 'UnspecifiedFunctions' folders
2019-04-01 18:44:49 -07:00
Ziemowit Laski
3ec988c39b
[CPP-340] Rename 'UnspecifiedFunctions' to 'Unspecified Functions'
...
Make MistypedFunctionArguments.ql more restrictive (allowing
type matching only in the presence of no-op conversions).
2019-04-01 18:39:46 -07:00
Jonas Jensen
04a48e9034
Merge remote-tracking branch 'upstream/master' into SimpleRangeAnalysis-use-after-cast
2019-04-01 09:10:57 +02:00
Ziemowit Laski
cb5bbd2197
[CPP-340] When warning about mismatched parameters, follow what C
...
compilers do. Various integral and floating-point types
are treated as mutually implicitly convertible. Remaining
warnings deal with misuse of pointer and array types.
2019-03-29 20:19:45 -07:00
Geoffrey White
c8caca3305
CPP: Add test cases for %ls, %hs.
2019-03-29 11:19:20 +00:00
Geoffrey White
66e87fc34c
CPP: Detect Microsoft compilations even more reliably.
2019-03-29 11:18:32 +00:00
Geoffrey White
eef050dd47
CPP: Improve deduction of %S types in FormattingFunction.qll.
2019-03-29 11:18:31 +00:00
Geoffrey White
975a0bbf0d
CPP: Handle %s/%c/%S/%C correctly on non-MS platforms.
2019-03-29 11:18:31 +00:00
Geoffrey White
648cdbab6c
CPP: Add FormattingFunction.getFormatCharType() and test.
2019-03-29 11:18:31 +00:00
Geoffrey White
162c9981bd
CPP: Add some test cases.
2019-03-29 11:18:31 +00:00
Jonas Jensen
68a19d7d3e
Merge branch 'master' into taintedmalloc
2019-03-29 09:12:38 +01:00
Jason Reed
23ee7ee928
C++: Teach range analysis to pay attention to NaNs.
2019-03-28 20:39:29 -04:00
Geoffrey White
faa23a53be
CPP: Update expected for changes elsewhere.
2019-03-28 15:49:36 +00:00
Geoffrey White
e7c02027f5
CPP: Fix 'BAD'.
2019-03-28 15:49:36 +00:00
Geoffrey White
8c75e730e4
CPP: Widen TaintedAllocationSize.ql.
2019-03-28 15:49:36 +00:00
Geoffrey White
dab1bba25c
CPP: Add a test of TaintedAllocationSize.
2019-03-28 15:49:36 +00:00
Geoffrey White
885df8754e
Merge pull request #1165 from dave-bartolomeo/dave/CompareFP
...
C++: Fix FP in PointlessComparison due to preprocessor
2019-03-27 10:54:26 +00:00
Jonas Jensen
36ba56c690
C++: Tests for PointlessComparison shortcomings
2019-03-27 10:48:35 +01:00
Jonas Jensen
1ffeebcfea
C++: Range analysis: support casts from/to typedef
2019-03-27 10:48:35 +01:00
Jonas Jensen
1c71c74ce5
C++: Tests showing problems with casts of typedefs
2019-03-27 10:48:35 +01:00
Jonas Jensen
50559d5e63
C++: Accept test output change
...
The new output looks correct, although I'm not sure if it's correct for
the right reasons.
2019-03-27 10:48:34 +01:00
Jonas Jensen
581e765f97
Merge pull request #1168 from geoffw0/format-amp
...
CPP: %@ in format strings
2019-03-27 09:08:39 +01:00
Geoffrey White
69f87d8eee
CPP: Fix ODASA-3654.
2019-03-26 12:54:44 +00:00
Geoffrey White
bd138238b0
CPP: Add a test of ODASA-3654.
2019-03-26 12:37:32 +00:00
Dave Bartolomeo
669ac2f4b4
C++: Fix FP in PointlessComparison due to preprocessor
...
Reported by an LGTM customer here: https://discuss.lgtm.com/t/2-false-positives-in-c-for-comparison-is-always-same/1943 .
Even though the comparison is pointless in the preprocessor configuration in effect during extraction, it is not pointless in other preprocessor configurations. Similar to ExprHasNoEffect, we'll now exclude results in functions that contain preprocessor-excluded code. I factored the similar code already used in ExprHasNoEffect in a non-recursive version into Preprocessor.qll, leaving the recursive version in ExprHasNoEffect.ql. I believe the recursive version is too aggressive for PointerlessComparison, which does no interprocedural analysis.
2019-03-25 16:19:18 -07:00
Geoffrey White
9b31b4e364
CPP: Fix false positive.
2019-03-25 11:57:23 +00:00
Geoffrey White
7b88bf7617
CPP: Add a test.
2019-03-25 09:22:18 +00:00
Ziemowit Laski
29af56d21b
[CPP-340] Refine the test query for mismatching args/params by applying
...
C promotion rules. The following issues are now flagged:
(1) passing a larger type than the receiver can accept
(e.g., long long -> int)
(2) passing a type of different signedness than the
parameter specified.
2019-03-24 19:42:05 -07:00
Jonas Jensen
db8db8669b
Merge pull request #1141 from geoffw0/newfreebug
...
CPP: Fix a bug in NewFree.qll
2019-03-21 17:22:00 +01:00
Jonas Jensen
552842346c
C++: Fix special-casing of Qt library
...
The `Expr.getType` predicate returns a pointer type since that's the
type of the `new`-expression as a whole. To find the class type, we use
`NewExpr.getAllocatedType`.
This commit reduces the number of alerts in a Qt snapshot from 229 to
51, and it removes the two false positives in
https://github.com/Subsurface-divelog/subsurface .
2019-03-21 13:37:18 +01:00
Jonas Jensen
a59a9f6075
C++: Add test cases for Qt's QObject
...
The Qt library requires client code to call `new` but not `delete`.
2019-03-21 13:31:50 +01:00
Geoffrey White
867f357b36
CPP: Correct the test.
2019-03-21 10:57:44 +00:00
Ziemowit Laski
5a092d0fed
[CPP-340] Create three QL queries: (1) mismatched argument types,
...
(2) too few arguments and (3) too many arguments.
Create new 'UnderspecifiedFunction' folders for both queries and tests.
2019-03-20 19:42:51 -07:00
Geoffrey White
faeb326bf8
CPP: Use newer dataflow for the fix.
2019-03-20 15:47:48 +00:00
Geoffrey White
7d8886e30c
CPP: Fix over-enthusiastic dataflow in allocExprOrIndirect.
2019-03-20 15:40:02 +00:00
Geoffrey White
ea7e8927fe
CPP: Add a test similar to the false positive in arvidn/libtorrent.
2019-03-20 15:35:58 +00:00
Ziemowit Laski
2def0ee9c1
[CPP-340] Re-work QL query; treat undeclared C functions the same way as
...
()-declared functions.
2019-03-19 16:01:35 -07:00
Ziemowit Laski
0c350dc504
[CPP-340] Create QL query for function call argument count mismatches.
...
Update QHELP file, test and test results.
2019-03-19 16:00:02 -07:00
zlaski-semmle
241994d1f8
Merge pull request #1107 from zlaski-semmle/cpp355
...
Updated query to look for Microsoft-specific '_alloca' and '_malloca'
Merge to Semmle/ql:master.
2019-03-19 13:40:27 -07:00
Ziemowit Laski
09e729ff59
Turns out that '__builtin_alloca' takes 'unsigned long', not 'unsigned long long'; rename some parameters to align with C11 standard.
2019-03-19 13:27:14 -07:00
Ziemowit Laski
11ed4f3312
Change __builtin_alloca declaration to use an unsigned long long parameter.
2019-03-19 13:12:29 -07:00