File tree Expand file tree Collapse file tree 3 files changed +105
-0
lines changed Expand file tree Collapse file tree 3 files changed +105
-0
lines changed Original file line number Diff line number Diff line change
1
+ # Improvements to C/C++ analysis
2
+
3
+ The following changes in version 1.25 affect C/C++ analysis in all applications.
4
+
5
+ ## General improvements
6
+
7
+ ## New queries
8
+
9
+ | ** Query** | ** Tags** | ** Purpose** |
10
+ | -----------------------------| -----------| --------------------------------------------------------------------|
11
+
12
+ ## Changes to existing queries
13
+
14
+ | ** Query** | ** Expected impact** | ** Change** |
15
+ | ----------------------------| ------------------------| ------------------------------------------------------------------|
16
+
17
+ ## Changes to libraries
18
+
19
+ * The data-flow library has been improved, which affects most security queries by potentially
20
+ adding more results. Flow through functions now takes nested field reads/writes into account.
21
+ For example, the library is able to track flow from ` taint() ` to ` sink() ` via the method
22
+ ` getf2f1() ` in
23
+ ``` c
24
+ struct C {
25
+ int f1;
26
+ };
27
+
28
+ struct C2
29
+ {
30
+ C f2;
31
+
32
+ int getf2f1() {
33
+ return f2.f1; // Nested field read
34
+ }
35
+
36
+ void m() {
37
+ f2.f1 = taint();
38
+ sink (getf2f1 ()); // NEW: taint() reaches here
39
+ }
40
+ };
41
+ ```
Original file line number Diff line number Diff line change @@ -24,5 +24,28 @@ The following changes in version 1.25 affect C# analysis in all applications.
24
24
have type parameters. This means that non-generic nested types inside construced types,
25
25
such as ` A<int>.B ` , no longer are considered unbound generics. (Such nested types do,
26
26
however, still have relevant ` .getSourceDeclaration() ` s, for example ` A<>.B ` .)
27
+ * The data-flow library has been improved, which affects most security queries by potentially
28
+ adding more results. Flow through methods now takes nested field reads/writes into account.
29
+ For example, the library is able to track flow from ` "taint" ` to ` Sink() ` via the method
30
+ ` GetF2F1() ` in
31
+ ``` csharp
32
+ class C1
33
+ {
34
+ string F1 ;
35
+ }
36
+
37
+ class C2
38
+ {
39
+ C1 F2 ;
40
+
41
+ string GetF2F1 () => F2 .F1 ; // Nested field read
42
+
43
+ void M ()
44
+ {
45
+ F2 = new C1 () { F1 = " taint" };
46
+ Sink (GetF2F1 ()); // NEW: "taint" reaches here
47
+ }
48
+ }
49
+ ```
27
50
28
51
## Changes to autobuilder
Original file line number Diff line number Diff line change
1
+ # Improvements to Java analysis
2
+
3
+ The following changes in version 1.25 affect Java analysis in all applications.
4
+
5
+ ## General improvements
6
+
7
+ ## New queries
8
+
9
+ | ** Query** | ** Tags** | ** Purpose** |
10
+ | -----------------------------| -----------| --------------------------------------------------------------------|
11
+
12
+
13
+ ## Changes to existing queries
14
+
15
+ | ** Query** | ** Expected impact** | ** Change** |
16
+ | ------------------------------| ------------------------| -----------------------------------|
17
+
18
+
19
+ ## Changes to libraries
20
+
21
+ * The data-flow library has been improved, which affects most security queries by potentially
22
+ adding more results. Flow through methods now takes nested field reads/writes into account.
23
+ For example, the library is able to track flow from ` "taint" ` to ` sink() ` via the method
24
+ ` getF2F1() ` in
25
+ ``` java
26
+ class C1 {
27
+ String f1;
28
+ C1 (String f1) { this . f1 = f1; }
29
+ }
30
+
31
+ class C2 {
32
+ C1 f2;
33
+ String getF2F1 () {
34
+ return this . f2. f1; // Nested field read
35
+ }
36
+ void m () {
37
+ this . f2 = new C1 (" taint" );
38
+ sink(this . getF2F1()); // NEW: "taint" reaches here
39
+ }
40
+ }
41
+ ```
You can’t perform that action at this time.
0 commit comments