Skip to content

Commit d1fcbb6

Browse files
committed
[analyzer] Moving TaintPropagation checker out of alpha
This commit renames alpha.security.taint.TaintPropagation checker to optin.security.taint.TaintPropagation. This checker was stabilized and improved by recent commits thus it's ready for production use. The checker is placed in the optin package as it implements an optional security analysis.
1 parent 10edd5d commit d1fcbb6

25 files changed

+295
-290
lines changed

clang/docs/analyzer/checkers.rst

Lines changed: 248 additions & 244 deletions
Large diffs are not rendered by default.

clang/docs/analyzer/user-docs/TaintAnalysisConfiguration.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Taint Analysis Configuration
33
============================
44

55
The Clang Static Analyzer uses taint analysis to detect security-related issues in code.
6-
The backbone of taint analysis in the Clang SA is the `GenericTaintChecker`, which the user can access via the :ref:`alpha-security-taint-TaintPropagation` checker alias and this checker has a default taint-related configuration.
6+
The backbone of taint analysis in the Clang SA is the `GenericTaintChecker`, which the user can access via the :ref:`optin-security-taint-TaintPropagation` checker alias and this checker has a default taint-related configuration.
77
The built-in default settings are defined in code, and they are always in effect once the checker is enabled, either directly or via the alias.
88
The checker also provides a configuration interface for extending the default settings by providing a configuration file in `YAML <http://llvm.org/docs/YamlIO.html#introduction-to-yaml>`_ format.
99
This documentation describes the syntax of the configuration file and gives the informal semantics of the configuration options.
@@ -18,7 +18,7 @@ ________
1818

1919
Taint analysis works by checking for the occurrence of special operations during the symbolic execution of the program.
2020
Taint analysis defines sources, sinks, and propagation rules. It identifies errors by detecting a flow of information that originates from a taint source, reaches a taint sink, and propagates through the program paths via propagation rules.
21-
A source, sink, or an operation that propagates taint is mainly domain-specific knowledge, but there are some built-in defaults provided by :ref:`alpha-security-taint-TaintPropagation`.
21+
A source, sink, or an operation that propagates taint is mainly domain-specific knowledge, but there are some built-in defaults provided by :ref:`optin-security-taint-TaintPropagation`.
2222
It is possible to express that a statement sanitizes tainted values by providing a ``Filters`` section in the external configuration (see :ref:`clangsa-taint-configuration-example` and :ref:`clangsa-taint-filter-details`).
2323
There are no default filters defined in the built-in settings.
2424
The checker's documentation also specifies how to provide a custom taint configuration with command-line options.

clang/include/clang/StaticAnalyzer/Checkers/Checkers.td

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,9 @@ def Performance : Package<"performance">, ParentPackage<OptIn>;
6868

6969
def Security : Package <"security">;
7070
def InsecureAPI : Package<"insecureAPI">, ParentPackage<Security>;
71+
def SecurityOptIn : Package<"security">, ParentPackage<OptIn>;
72+
def Taint : Package<"taint">, ParentPackage<SecurityOptIn>;
7173
def SecurityAlpha : Package<"security">, ParentPackage<Alpha>;
72-
def Taint : Package<"taint">, ParentPackage<SecurityAlpha>;
7374

7475
def CERT : Package<"cert">, ParentPackage<SecurityAlpha>;
7576
def POS : Package<"pos">, ParentPackage<CERT>;
@@ -1050,11 +1051,11 @@ def GenericTaintChecker : Checker<"TaintPropagation">,
10501051
"Config",
10511052
"Specifies the name of the configuration file.",
10521053
"",
1053-
InAlpha>,
1054+
Released>,
10541055
]>,
10551056
Documentation<HasDocumentation>;
10561057

1057-
} // end "alpha.security.taint"
1058+
} // end "optin.security.taint"
10581059

10591060
//===----------------------------------------------------------------------===//
10601061
// Mac OS X, Cocoa, and Core Foundation checkers.

clang/test/Analysis/analyzer-config.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
// CHECK-NEXT: alpha.osx.cocoa.DirectIvarAssignment:AnnotatedFunctions = false
1212
// CHECK-NEXT: alpha.security.MmapWriteExec:MmapProtExec = 0x04
1313
// CHECK-NEXT: alpha.security.MmapWriteExec:MmapProtRead = 0x01
14-
// CHECK-NEXT: alpha.security.taint.TaintPropagation:Config = ""
1514
// CHECK-NEXT: alpha.unix.Errno:AllowErrnoReadOutsideConditionExpressions = true
1615
// CHECK-NEXT: alpha.unix.StdCLibraryFunctions:DisplayLoadedSummaries = false
1716
// CHECK-NEXT: alpha.unix.StdCLibraryFunctions:ModelPOSIX = false
@@ -112,6 +111,7 @@
112111
// CHECK-NEXT: optin.cplusplus.VirtualCall:ShowFixIts = false
113112
// CHECK-NEXT: optin.osx.cocoa.localizability.NonLocalizedStringChecker:AggressiveReport = false
114113
// CHECK-NEXT: optin.performance.Padding:AllowedPad = 24
114+
// CHECK-NEXT: optin.security.taint.TaintPropagation:Config = ""
115115
// CHECK-NEXT: osx.NumberObjectConversion:Pedantic = false
116116
// CHECK-NEXT: osx.cocoa.RetainCount:TrackNSCFStartParam = false
117117
// CHECK-NEXT: prune-paths = true

clang/test/Analysis/assume-controlled-environment.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
// RUN: %clang_analyze_cc1 -verify=untrusted-env %s \
22
// RUN: -analyzer-checker=core \
3-
// RUN: -analyzer-checker=alpha.security.taint \
3+
// RUN: -analyzer-checker=optin.security.taint \
44
// RUN: -analyzer-checker=debug.TaintTest
55

66
// RUN: %clang_analyze_cc1 -verify %s -DEXPECT_NO_WARNINGS \
77
// RUN: -analyzer-config assume-controlled-environment=true \
88
// RUN: -analyzer-checker=core \
9-
// RUN: -analyzer-checker=alpha.security.taint \
9+
// RUN: -analyzer-checker=optin.security.taint \
1010
// RUN: -analyzer-checker=debug.TaintTest
1111

1212

clang/test/Analysis/bool-assignment.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core.BoolAssignment,alpha.security.taint -verify -std=c99 -Dbool=_Bool %s
2-
// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core.BoolAssignment,alpha.security.taint -verify -x c++ %s
1+
// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core.BoolAssignment,optin.security.taint -verify -std=c99 -Dbool=_Bool %s
2+
// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.core.BoolAssignment,optin.security.taint -verify -x c++ %s
33

44
// Test C++'s bool and C's _Bool.
55
// FIXME: We stopped warning on these when SValBuilder got smarter about

clang/test/Analysis/cxx-method-names.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix,osx,alpha.unix,alpha.security.taint -verify %s
1+
// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix,osx,alpha.unix,optin.security.taint -verify %s
22
// expected-no-diagnostics
33

44
class Evil {

clang/test/Analysis/debug-exprinspection-istainted.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// RUN: %clang_analyze_cc1 -verify %s \
22
// RUN: -analyzer-checker=core \
33
// RUN: -analyzer-checker=debug.ExprInspection \
4-
// RUN: -analyzer-checker=alpha.security.taint
4+
// RUN: -analyzer-checker=optin.security.taint
55

66
int scanf(const char *restrict format, ...);
77
void clang_analyzer_isTainted(char);

clang/test/Analysis/diagnostics/sarif-diagnostics-taint-test.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.security.taint,debug.TaintTest %s -verify -analyzer-output=sarif -o - | %normalize_sarif | diff -U1 -b %S/Inputs/expected-sarif/sarif-diagnostics-taint-test.c.sarif -
1+
// RUN: %clang_analyze_cc1 -analyzer-checker=optin.security.taint,debug.TaintTest %s -verify -analyzer-output=sarif -o - | %normalize_sarif | diff -U1 -b %S/Inputs/expected-sarif/sarif-diagnostics-taint-test.c.sarif -
22
#include "../Inputs/system-header-simulator.h"
33

44
int atoi(const char *nptr);

clang/test/Analysis/diagnostics/sarif-multi-diagnostic-test.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.security.taint,debug.TaintTest,unix.Malloc %s -verify -analyzer-output=sarif -o - | %normalize_sarif | diff -U1 -b %S/Inputs/expected-sarif/sarif-multi-diagnostic-test.c.sarif -
1+
// RUN: %clang_analyze_cc1 -analyzer-checker=core,optin.security.taint,debug.TaintTest,unix.Malloc %s -verify -analyzer-output=sarif -o - | %normalize_sarif | diff -U1 -b %S/Inputs/expected-sarif/sarif-multi-diagnostic-test.c.sarif -
22
#include "../Inputs/system-header-simulator.h"
33
#include "../Inputs/system-header-simulator-for-malloc.h"
44
#define ERR -1

clang/test/Analysis/global-region-invalidation-errno.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -disable-free -verify %s \
2-
// RUN: -analyzer-checker=core,deadcode,alpha.security.taint \
2+
// RUN: -analyzer-checker=core,deadcode,optin.security.taint \
33
// RUN: -DERRNO_VAR
44

55
// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -disable-free -verify %s \
6-
// RUN: -analyzer-checker=core,deadcode,alpha.security.taint \
6+
// RUN: -analyzer-checker=core,deadcode,optin.security.taint \
77
// RUN: -DERRNO_FUNC
88

99
// Note, we do need to include headers here, since the analyzer checks if the function declaration is located in a system header.

clang/test/Analysis/global-region-invalidation.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 -disable-free -verify %s \
2-
// RUN: -analyzer-checker=core,deadcode,alpha.security.taint,debug.TaintTest,debug.ExprInspection
2+
// RUN: -analyzer-checker=core,deadcode,optin.security.taint,debug.TaintTest,debug.ExprInspection
33

44
void clang_analyzer_eval(int);
55

clang/test/Analysis/redefined_system.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %clang_analyze_cc1 -analyzer-checker=osx,unix,core,alpha.security.taint -w -verify %s
1+
// RUN: %clang_analyze_cc1 -analyzer-checker=osx,unix,core,optin.security.taint -w -verify %s
22
// expected-no-diagnostics
33

44
// Make sure we don't crash when someone redefines a system function we reason about.

clang/test/Analysis/string.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
// RUN: %clang_analyze_cc1 -verify %s -Wno-null-dereference \
2626
// RUN: -DUSE_BUILTINS -DVARIANT \
2727
// RUN: -analyzer-checker=core \
28-
// RUN: -analyzer-checker=alpha.security.taint \
28+
// RUN: -analyzer-checker=optin.security.taint \
2929
// RUN: -analyzer-checker=unix.cstring \
3030
// RUN: -analyzer-checker=unix.Malloc \
3131
// RUN: -analyzer-checker=alpha.unix.cstring \

clang/test/Analysis/taint-checker-callback-order-has-definition.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// RUN: %clang_analyze_cc1 %s \
2-
// RUN: -analyzer-checker=core,alpha.security.taint \
2+
// RUN: -analyzer-checker=core,optin.security.taint \
33
// RUN: -mllvm -debug-only=taint-checker \
44
// RUN: 2>&1 | FileCheck %s
55

clang/test/Analysis/taint-checker-callback-order-without-definition.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// RUN: %clang_analyze_cc1 %s \
2-
// RUN: -analyzer-checker=core,alpha.security.taint \
2+
// RUN: -analyzer-checker=core,optin.security.taint \
33
// RUN: -mllvm -debug-only=taint-checker \
44
// RUN: 2>&1 | FileCheck %s
55

clang/test/Analysis/taint-diagnostic-visitor.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.security.taint,core,alpha.security.ArrayBoundV2 -analyzer-output=text -verify %s
1+
// RUN: %clang_cc1 -analyze -analyzer-checker=optin.security.taint,core,alpha.security.ArrayBoundV2 -analyzer-output=text -verify %s
22

33
// This file is for testing enhanced diagnostics produced by the GenericTaintChecker
44

clang/test/Analysis/taint-dumps.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.security.taint\
1+
// RUN: %clang_analyze_cc1 -analyzer-checker=optin.security.taint\
22
// RUN: -analyzer-checker=debug.ExprInspection %s\
33
// RUN: 2>&1 | FileCheck %s
44

clang/test/Analysis/taint-generic.c

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,57 @@
11
// RUN: %clang_analyze_cc1 -Wno-format-security -Wno-pointer-to-int-cast \
22
// RUN: -Wno-incompatible-library-redeclaration -verify %s \
3-
// RUN: -analyzer-checker=alpha.security.taint \
3+
// RUN: -analyzer-checker=optin.security.taint \
44
// RUN: -analyzer-checker=core \
55
// RUN: -analyzer-checker=alpha.security.ArrayBoundV2 \
66
// RUN: -analyzer-checker=debug.ExprInspection \
77
// RUN: -analyzer-config \
8-
// RUN: alpha.security.taint.TaintPropagation:Config=%S/Inputs/taint-generic-config.yaml
8+
// RUN: optin.security.taint.TaintPropagation:Config=%S/Inputs/taint-generic-config.yaml
99

1010
// RUN: %clang_analyze_cc1 -Wno-format-security -Wno-pointer-to-int-cast \
1111
// RUN: -Wno-incompatible-library-redeclaration -verify %s \
1212
// RUN: -DFILE_IS_STRUCT \
13-
// RUN: -analyzer-checker=alpha.security.taint \
13+
// RUN: -analyzer-checker=optin.security.taint \
1414
// RUN: -analyzer-checker=core \
1515
// RUN: -analyzer-checker=alpha.security.ArrayBoundV2 \
1616
// RUN: -analyzer-checker=debug.ExprInspection \
1717
// RUN: -analyzer-config \
18-
// RUN: alpha.security.taint.TaintPropagation:Config=%S/Inputs/taint-generic-config.yaml
18+
// RUN: optin.security.taint.TaintPropagation:Config=%S/Inputs/taint-generic-config.yaml
1919

2020
// RUN: not %clang_analyze_cc1 -Wno-pointer-to-int-cast \
2121
// RUN: -Wno-incompatible-library-redeclaration -verify %s \
22-
// RUN: -analyzer-checker=alpha.security.taint \
22+
// RUN: -analyzer-checker=optin.security.taint \
2323
// RUN: -analyzer-checker=debug.ExprInspection \
2424
// RUN: -analyzer-config \
25-
// RUN: alpha.security.taint.TaintPropagation:Config=justguessit \
25+
// RUN: optin.security.taint.TaintPropagation:Config=justguessit \
2626
// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-INVALID-FILE
2727

2828
// CHECK-INVALID-FILE: (frontend): invalid input for checker option
29-
// CHECK-INVALID-FILE-SAME: 'alpha.security.taint.TaintPropagation:Config',
29+
// CHECK-INVALID-FILE-SAME: 'optin.security.taint.TaintPropagation:Config',
3030
// CHECK-INVALID-FILE-SAME: that expects a valid filename instead of
3131
// CHECK-INVALID-FILE-SAME: 'justguessit'
3232

3333
// RUN: not %clang_analyze_cc1 -Wno-incompatible-library-redeclaration \
3434
// RUN: -verify %s \
35-
// RUN: -analyzer-checker=alpha.security.taint \
35+
// RUN: -analyzer-checker=optin.security.taint \
3636
// RUN: -analyzer-checker=debug.ExprInspection \
3737
// RUN: -analyzer-config \
38-
// RUN: alpha.security.taint.TaintPropagation:Config=%S/Inputs/taint-generic-config-ill-formed.yaml \
38+
// RUN: optin.security.taint.TaintPropagation:Config=%S/Inputs/taint-generic-config-ill-formed.yaml \
3939
// RUN: 2>&1 | FileCheck -DMSG=%errc_EINVAL %s -check-prefix=CHECK-ILL-FORMED
4040

4141
// CHECK-ILL-FORMED: (frontend): invalid input for checker option
42-
// CHECK-ILL-FORMED-SAME: 'alpha.security.taint.TaintPropagation:Config',
42+
// CHECK-ILL-FORMED-SAME: 'optin.security.taint.TaintPropagation:Config',
4343
// CHECK-ILL-FORMED-SAME: that expects a valid yaml file: [[MSG]]
4444

4545
// RUN: not %clang_analyze_cc1 -Wno-incompatible-library-redeclaration \
4646
// RUN: -verify %s \
47-
// RUN: -analyzer-checker=alpha.security.taint \
47+
// RUN: -analyzer-checker=optin.security.taint \
4848
// RUN: -analyzer-checker=debug.ExprInspection \
4949
// RUN: -analyzer-config \
50-
// RUN: alpha.security.taint.TaintPropagation:Config=%S/Inputs/taint-generic-config-invalid-arg.yaml \
50+
// RUN: optin.security.taint.TaintPropagation:Config=%S/Inputs/taint-generic-config-invalid-arg.yaml \
5151
// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-INVALID-ARG
5252

5353
// CHECK-INVALID-ARG: (frontend): invalid input for checker option
54-
// CHECK-INVALID-ARG-SAME: 'alpha.security.taint.TaintPropagation:Config',
54+
// CHECK-INVALID-ARG-SAME: 'optin.security.taint.TaintPropagation:Config',
5555
// CHECK-INVALID-ARG-SAME: that expects an argument number for propagation
5656
// CHECK-INVALID-ARG-SAME: rules greater or equal to -1
5757

clang/test/Analysis/taint-generic.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.security.taint,core,alpha.security.ArrayBoundV2 -analyzer-config alpha.security.taint.TaintPropagation:Config=%S/Inputs/taint-generic-config.yaml -Wno-format-security -verify -std=c++11 %s
1+
// RUN: %clang_analyze_cc1 -analyzer-checker=optin.security.taint,core,alpha.security.ArrayBoundV2 -analyzer-config optin.security.taint.TaintPropagation:Config=%S/Inputs/taint-generic-config.yaml -Wno-format-security -verify -std=c++11 %s
22

33
#define BUFSIZE 10
44
int Buffer[BUFSIZE];

clang/test/Analysis/taint-tester.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %clang_analyze_cc1 -Wno-int-to-pointer-cast -analyzer-checker=alpha.security.taint,debug.TaintTest %s -verify
1+
// RUN: %clang_analyze_cc1 -Wno-int-to-pointer-cast -analyzer-checker=optin.security.taint,debug.TaintTest %s -verify
22

33
#include "Inputs/system-header-simulator.h"
44

clang/test/Analysis/taint-tester.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.security.taint,debug.TaintTest %s -verify
1+
// RUN: %clang_analyze_cc1 -analyzer-checker=optin.security.taint,debug.TaintTest %s -verify
22
// expected-no-diagnostics
33

44
typedef struct _FILE FILE;

clang/test/Analysis/taint-tester.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.security.taint,debug.TaintTest %s -verify
1+
// RUN: %clang_analyze_cc1 -analyzer-checker=optin.security.taint,debug.TaintTest %s -verify
22
// expected-no-diagnostics
33

44
#import <stdarg.h>
@@ -14,8 +14,8 @@ void TestLog (NSString *format, ...) {
1414
va_list ap;
1515
va_start(ap, format);
1616
NSString *string = @"AAA: ";
17-
17+
1818
NSLogv([string stringByAppendingString:format], ap);
19-
19+
2020
va_end(ap);
2121
}

clang/utils/analyzer/SATestBuild.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ def stdout(message: str):
176176
CHECKERS = ",".join(
177177
[
178178
"alpha.unix.SimpleStream",
179-
"alpha.security.taint",
179+
"optin.security.taint",
180180
"cplusplus.NewDeleteLeaks",
181181
"core",
182182
"cplusplus",

clang/www/analyzer/alpha_checks.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -722,7 +722,7 @@ <h3 id="security_alpha_checkers">Security Alpha Checkers</h3>
722722
}
723723
</pre></div><div class="separator"></div>
724724
<div class="example"><pre>
725-
// note: requires alpha.security.taint check turned on.
725+
// note: requires optin.security.taint check turned on.
726726
void test() {
727727
char s[] = "abc";
728728
int x = getchar();
@@ -781,8 +781,8 @@ <h3 id="security_alpha_checkers">Security Alpha Checkers</h3>
781781
</pre></div></div></td></tr>
782782

783783

784-
<tr><td><a id="alpha.security.taint.TaintPropagation"><div class="namedescr expandable"><span class="name">
785-
alpha.security.taint.TaintPropagation</span><span class="lang">
784+
<tr><td><a id="optin.security.taint.TaintPropagation"><div class="namedescr expandable"><span class="name">
785+
optin.security.taint.TaintPropagation</span><span class="lang">
786786
(C)</span><div class="descr">
787787
Generate taint information used by other checkers.</div></div></a></td>
788788
<td><div class="exampleContainer expandable">

0 commit comments

Comments
 (0)