You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: change-notes/1.22/analysis-cpp.md
+18-11Lines changed: 18 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,19 +17,26 @@ The following changes in version 1.22 affect C/C++ analysis in all applications.
17
17
18
18
## Changes to QL libraries
19
19
20
+
- The data flow library (`semmle.code.cpp.dataflow.DataFlow`) has had the
21
+
following improvements, all of which benefit the taint tracking library
22
+
(`semmle.code.cpp.dataflow.TaintTracking`) as well.
23
+
- This release includes preliminary support for interprocedural flow through
24
+
fields (non-static data members). In some cases, data stored in a field in
25
+
one function can now flow to a read of the same field in a different
26
+
function.
27
+
- The possibility of specifying barrier edges using
28
+
`isBarrierEdge`/`isSanitizerEdge` in data-flow and taint-tracking
29
+
configurations has been replaced with the option of specifying in- and
30
+
out-barriers on nodes by overriding `isBarrierIn`/`isSanitizerIn` and
31
+
`isBarrierOut`/`isSanitizerOut`. This should be simpler to use effectively,
32
+
as it does not require knowledge about the actual edges used internally by
33
+
the library.
34
+
- The library now models data flow through `std::swap`.
35
+
- Recursion through the `DataFlow` library is now always a compile error. Such recursion has been deprecated since release 1.16 in March 2018. If one `DataFlow::Configuration` needs to depend on the results of another, switch one of them to use one of the `DataFlow2` through `DataFlow4` libraries.
36
+
- In the `semmle.code.cpp.dataflow.TaintTracking` library, the second copy of `Configuration` has been renamed from `TaintTracking::Configuration2` to `TaintTracking2::Configuration`, and the old name is now deprecated. Import `semmle.code.cpp.dataflow.TaintTracking2` to access the new name.
37
+
- The `semmle.code.cpp.security.TaintTracking` library now considers a pointer difference calculation as blocking taint flow.
20
38
- The predicate `Variable.getAnAssignedValue()` now reports assignments to fields resulting from aggregate initialization (` = {...}`).
21
39
- The predicate `TypeMention.toString()` has been simplified to always return the string "`type mention`". This may improve performance when using `Element.toString()` or its descendants.
22
-
- The `semmle.code.cpp.security.TaintTracking` library now considers a pointer difference calculation as blocking taint flow.
23
-
- The second copy of the interprocedural `TaintTracking` library has been renamed from `TaintTracking::Configuration2` to `TaintTracking2::Configuration`, and the old name is now deprecated. Import `semmle.code.cpp.dataflow.TaintTracking2` to access the new name.
24
40
- Fixed the `LocalScopeVariableReachability.qll` library's handling of loops where the entry condition is always true on first entry, and where there is more than one control flow path through the loop condition. This change increases the accuracy of the `LocalScopeVariableReachability.qll` library and queries that depend on it.
25
-
- The `semmle.code.cpp.models` library now models data flow through `std::swap`.
26
41
- There is a new `Variable.isThreadLocal()` predicate. It can be used to tell whether a variable is `thread_local`.
27
-
- Recursion through the `DataFlow` library is now always a compile error. Such recursion has been deprecated since release 1.16 in March 2018. If one `DataFlow::Configuration` needs to depend on the results of another, switch one of them to use one of the `DataFlow2` through `DataFlow4` libraries.
28
-
- The possibility of specifying barrier edges using
29
-
`isBarrierEdge`/`isSanitizerEdge` in data-flow and taint-tracking
30
-
configurations has been replaced with the option of specifying in- and
31
-
out-barriers on nodes by overriding `isBarrierIn`/`isSanitizerIn` and
32
-
`isBarrierOut`/`isSanitizerOut`. This should be simpler to use effectively,
33
-
as it does not require knowledge about the actual edges used internally by
34
-
the library.
35
42
- C/C++ code examples have been added to QLDoc comments on many more classes in the QL libraries.
0 commit comments