Skip to content

Commit ec268c1

Browse files
authored
Merge pull request #1794 from aschackmull/java/changenotes-dataflow
Java/C#/C++: Add change notes for in/out barriers and barrierguards.
2 parents 06f5545 + 66ea665 commit ec268c1

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed

change-notes/1.22/analysis-cpp.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,10 @@
3030
- The `semmle.code.cpp.models` library now models data flow through `std::swap`.
3131
- There is a new `Variable.isThreadLocal()` predicate. It can be used to tell whether a variable is `thread_local`.
3232
- Recursion through the `DataFlow` library is now always a compile error. Such recursion has been deprecated since release 1.16. 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.
33+
- The possibility of specifying barrier edges using
34+
`isBarrierEdge`/`isSanitizerEdge` in data-flow and taint-tracking
35+
configurations has been replaced with the option of specifying in- and
36+
out-barriers on nodes by overriding `isBarrierIn`/`isSanitizerIn` and
37+
`isBarrierOut`/`isSanitizerOut`. This should be simpler to use effectively,
38+
as it does not require knowledge about the actual edges used internally by
39+
the library.

change-notes/1.22/analysis-csharp.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,12 @@
4242
- The new predicate `TypeParameterConstraints.getAnAnnotatedTypeConstraint()` gets a type constraint with type annotations
4343
* The new class `SuppressNullableWarningExpr` models suppress-nullable-warning expressions such as `x!`
4444
* The data-flow library (and taint-tracking library) now supports flow through fields. All existing configurations will have field-flow enabled by default, but it can be disabled by adding `override int fieldFlowBranchLimit() { result = 0 }` to the configuration class. Field assignments, `this.Foo = x`, object initializers, `new C() { Foo = x }`, and field initializers `int Foo = 0` are supported.
45+
* The possibility of specifying barrier edges using
46+
`isBarrierEdge`/`isSanitizerEdge` in data-flow and taint-tracking
47+
configurations has been replaced with the option of specifying in- and
48+
out-barriers on nodes by overriding `isBarrierIn`/`isSanitizerIn` and
49+
`isBarrierOut`/`isSanitizerOut`. This should be simpler to use effectively,
50+
as it does not require knowledge about the actual edges used internally by
51+
the library.
4552

4653
## Changes to autobuilder

change-notes/1.22/analysis-java.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,18 @@
1616
removes false positives that arose from paths through impossible `toString()`
1717
calls.
1818
* The library `VCS.qll` and all queries that imported it have been removed.
19-
* 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.java.dataflow.TaintTracking2` to access the new name.
19+
* The second copy of the interprocedural `TaintTracking` library has been
20+
renamed from `TaintTracking::Configuration2` to
21+
`TaintTracking2::Configuration`, and the old name is now deprecated. Import
22+
`semmle.code.java.dataflow.TaintTracking2` to access the new name.
23+
* The data-flow library now makes it easier to specify barriers/sanitizers
24+
arising from guards by overriding the predicate
25+
`isBarrierGuard`/`isSanitizerGuard` on data-flow and taint-tracking
26+
configurations respectively.
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.

0 commit comments

Comments
 (0)