diff --git a/.bazelrc b/.bazelrc index a304a7b0e1a..214258e775a 100644 --- a/.bazelrc +++ b/.bazelrc @@ -1,3 +1,9 @@ -build --repo_env=CC=clang --repo_env=CXX=clang++ --cxxopt="-std=c++17" +common --enable_platform_specific_config + +build --repo_env=CC=clang --repo_env=CXX=clang++ + +build:linux --cxxopt=-std=c++20 +build:macos --cxxopt=-std=c++20 --cpu=darwin_x86_64 +build:windows --cxxopt=/std:c++20 --cxxopt=/Zc:preprocessor try-import %workspace%/local.bazelrc diff --git a/.github/labeler.yml b/.github/labeler.yml index 503833fc4d7..5401e6afd71 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -11,7 +11,7 @@ Go: - change-notes/**/*go.* Java: - - any: [ 'java/**/*', '!java/kotlin-extractor/**/*', '!java/kotlin-explorer/**/*', '!java/ql/test/kotlin/**/*' ] + - any: [ 'java/**/*', '!java/kotlin-extractor/**/*', '!java/ql/test/kotlin/**/*' ] - change-notes/**/*java.* JS: @@ -20,7 +20,6 @@ JS: Kotlin: - java/kotlin-extractor/**/* - - java/kotlin-explorer/**/* - java/ql/test/kotlin/**/* Python: diff --git a/.github/workflows/csv-coverage-pr-artifacts.yml b/.github/workflows/csv-coverage-pr-artifacts.yml index 19ad488a3ab..b560d98a79d 100644 --- a/.github/workflows/csv-coverage-pr-artifacts.yml +++ b/.github/workflows/csv-coverage-pr-artifacts.yml @@ -10,6 +10,7 @@ on: - "*/ql/src/**/*.qll" - "*/ql/lib/**/*.ql" - "*/ql/lib/**/*.qll" + - "*/ql/lib/ext/**/*.yml" - "misc/scripts/library-coverage/*.py" # input data files - "*/documentation/library-coverage/cwe-sink.csv" diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml index 806e04e6c68..075a5505f39 100644 --- a/.github/workflows/swift.yml +++ b/.github/workflows/swift.yml @@ -16,6 +16,7 @@ on: branches: - main - rc/* + - codeql-cli-* push: paths: - "swift/**" @@ -30,6 +31,7 @@ on: branches: - main - rc/* + - codeql-cli-* jobs: # not using a matrix as you cannot depend on a specific job in a matrix, and we want to start linux checks diff --git a/CODEOWNERS b/CODEOWNERS index 6e2dd9dc66b..b2eb53f0bb0 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -8,7 +8,6 @@ /swift/ @github/codeql-swift /misc/codegen/ @github/codeql-swift /java/kotlin-extractor/ @github/codeql-kotlin -/java/kotlin-explorer/ @github/codeql-kotlin # ML-powered queries /javascript/ql/experimental/adaptivethreatmodeling/ @github/codeql-ml-powered-queries-reviewers diff --git a/config/identical-files.json b/config/identical-files.json index 29fae2d3855..ceed02ba5d6 100644 --- a/config/identical-files.json +++ b/config/identical-files.json @@ -511,7 +511,8 @@ "SensitiveDataHeuristics Python/JS": [ "javascript/ql/lib/semmle/javascript/security/internal/SensitiveDataHeuristics.qll", "python/ql/lib/semmle/python/security/internal/SensitiveDataHeuristics.qll", - "ruby/ql/lib/codeql/ruby/security/internal/SensitiveDataHeuristics.qll" + "ruby/ql/lib/codeql/ruby/security/internal/SensitiveDataHeuristics.qll", + "swift/ql/lib/codeql/swift/security/internal/SensitiveDataHeuristics.qll" ], "CFG": [ "csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImplShared.qll", @@ -522,6 +523,10 @@ "python/ql/lib/semmle/python/dataflow/new/internal/TypeTracker.qll", "ruby/ql/lib/codeql/ruby/typetracking/TypeTracker.qll" ], + "SummaryTypeTracker": [ + "python/ql/lib/semmle/python/dataflow/new/internal/SummaryTypeTracker.qll", + "ruby/ql/lib/codeql/ruby/typetracking/internal/SummaryTypeTracker.qll" + ], "AccessPathSyntax": [ "csharp/ql/lib/semmle/code/csharp/dataflow/internal/AccessPathSyntax.qll", "go/ql/lib/semmle/go/dataflow/internal/AccessPathSyntax.qll", @@ -598,4 +603,4 @@ "python/ql/lib/semmle/python/security/internal/EncryptionKeySizes.qll", "java/ql/lib/semmle/code/java/security/internal/EncryptionKeySizes.qll" ] -} \ No newline at end of file +} diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index f77a14c328f..e990e830005 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,27 @@ +## 0.7.3 + +### Minor Analysis Improvements + +* Deleted the deprecated `hasCopyConstructor` predicate from the `Class` class in `Class.qll`. +* Deleted many deprecated predicates and classes with uppercase `AST`, `SSA`, `CFG`, `API`, etc. in their names. Use the PascalCased versions instead. +* Deleted the deprecated `CodeDuplication.qll` file. + +## 0.7.2 + +### New Features + +* Added an AST-based interface (`semmle.code.cpp.rangeanalysis.new.RangeAnalysis`) for the relative range analysis library. +* A new predicate `BarrierGuard::getAnIndirectBarrierNode` has been added to the new dataflow library (`semmle.code.cpp.dataflow.new.DataFlow`) to mark indirect expressions as barrier nodes using the `BarrierGuard` API. + +### Major Analysis Improvements + +* In the intermediate representation, handling of control flow after non-returning calls has been improved. This should remove false positives in queries that use the intermedite representation or libraries based on it, including the new data flow library. + +### Minor Analysis Improvements + +* The `StdNamespace` class now also includes all inline namespaces that are children of `std` namespace. +* The new dataflow (`semmle.code.cpp.dataflow.new.DataFlow`) and taint-tracking libraries (`semmle.code.cpp.dataflow.new.TaintTracking`) now support tracking flow through static local variables. + ## 0.7.1 No user-facing changes. diff --git a/cpp/ql/lib/change-notes/2023-04-28-indirect-barrier-node.md b/cpp/ql/lib/change-notes/2023-04-28-indirect-barrier-node.md deleted file mode 100644 index 68421139e7d..00000000000 --- a/cpp/ql/lib/change-notes/2023-04-28-indirect-barrier-node.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: feature ---- -* A new predicate `BarrierGuard::getAnIndirectBarrierNode` has been added to the new dataflow library (`semmle.code.cpp.dataflow.new.DataFlow`) to mark indirect expressions as barrier nodes using the `BarrierGuard` API. diff --git a/cpp/ql/lib/change-notes/2023-04-28-static-local-dataflow.md b/cpp/ql/lib/change-notes/2023-04-28-static-local-dataflow.md deleted file mode 100644 index be4c4e73ed0..00000000000 --- a/cpp/ql/lib/change-notes/2023-04-28-static-local-dataflow.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The new dataflow (`semmle.code.cpp.dataflow.new.DataFlow`) and taint-tracking libraries (`semmle.code.cpp.dataflow.new.TaintTracking`) now support tracking flow through static local variables. diff --git a/cpp/ql/lib/change-notes/2023-05-02-ir-noreturn-calls.md b/cpp/ql/lib/change-notes/2023-05-02-ir-noreturn-calls.md deleted file mode 100644 index 5688945dc80..00000000000 --- a/cpp/ql/lib/change-notes/2023-05-02-ir-noreturn-calls.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* In the intermediate representation, handling of control flow after non-returning calls has been improved. This should remove false positives in queries that use the intermedite representation or libraries based on it, including the new data flow library. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2023-05-02-range-analysis-wrapper.md b/cpp/ql/lib/change-notes/2023-05-02-range-analysis-wrapper.md deleted file mode 100644 index b28167dc52d..00000000000 --- a/cpp/ql/lib/change-notes/2023-05-02-range-analysis-wrapper.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: feature ---- -* Added an AST-based interface (`semmle.code.cpp.rangeanalysis.new.RangeAnalysis`) for the relative range analysis library. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2023-05-22-inline-in-std-namespace.md b/cpp/ql/lib/change-notes/2023-05-22-inline-in-std-namespace.md deleted file mode 100644 index 8b562bd8357..00000000000 --- a/cpp/ql/lib/change-notes/2023-05-22-inline-in-std-namespace.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The `StdNamespace` class now also includes all inline namespaces that are children of `std` namespace. diff --git a/cpp/ql/lib/change-notes/2023-06-19-delete-container-url.md b/cpp/ql/lib/change-notes/2023-06-19-delete-container-url.md new file mode 100644 index 00000000000..9fef359a1e8 --- /dev/null +++ b/cpp/ql/lib/change-notes/2023-06-19-delete-container-url.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Deleted the deprecated `getURL` predicate from the `Container`, `Folder`, and `File` classes. Use the `getLocation` predicate instead. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/released/0.7.2.md b/cpp/ql/lib/change-notes/released/0.7.2.md new file mode 100644 index 00000000000..4decad06ae8 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/0.7.2.md @@ -0,0 +1,15 @@ +## 0.7.2 + +### New Features + +* Added an AST-based interface (`semmle.code.cpp.rangeanalysis.new.RangeAnalysis`) for the relative range analysis library. +* A new predicate `BarrierGuard::getAnIndirectBarrierNode` has been added to the new dataflow library (`semmle.code.cpp.dataflow.new.DataFlow`) to mark indirect expressions as barrier nodes using the `BarrierGuard` API. + +### Major Analysis Improvements + +* In the intermediate representation, handling of control flow after non-returning calls has been improved. This should remove false positives in queries that use the intermedite representation or libraries based on it, including the new data flow library. + +### Minor Analysis Improvements + +* The `StdNamespace` class now also includes all inline namespaces that are children of `std` namespace. +* The new dataflow (`semmle.code.cpp.dataflow.new.DataFlow`) and taint-tracking libraries (`semmle.code.cpp.dataflow.new.TaintTracking`) now support tracking flow through static local variables. diff --git a/cpp/ql/lib/change-notes/released/0.7.3.md b/cpp/ql/lib/change-notes/released/0.7.3.md new file mode 100644 index 00000000000..d6cb19b669d --- /dev/null +++ b/cpp/ql/lib/change-notes/released/0.7.3.md @@ -0,0 +1,7 @@ +## 0.7.3 + +### Minor Analysis Improvements + +* Deleted the deprecated `hasCopyConstructor` predicate from the `Class` class in `Class.qll`. +* Deleted many deprecated predicates and classes with uppercase `AST`, `SSA`, `CFG`, `API`, etc. in their names. Use the PascalCased versions instead. +* Deleted the deprecated `CodeDuplication.qll` file. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index e007a9aec3e..a4ea9c8de17 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.1 +lastReleaseVersion: 0.7.3 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 3f6482c1ebe..0065372f811 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.7.2-dev +version: 0.7.4-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/lib/semmle/code/cpp/Class.qll b/cpp/ql/lib/semmle/code/cpp/Class.qll index 2aba033329d..5f79ceefd26 100644 --- a/cpp/ql/lib/semmle/code/cpp/Class.qll +++ b/cpp/ql/lib/semmle/code/cpp/Class.qll @@ -176,20 +176,6 @@ class Class extends UserType { /** Holds if this class, struct or union has a constructor. */ predicate hasConstructor() { exists(this.getAConstructor()) } - /** - * Holds if this class has a copy constructor that is either explicitly - * declared (though possibly `= delete`) or is auto-generated, non-trivial - * and called from somewhere. - * - * DEPRECATED: There is more than one reasonable definition of what it means - * to have a copy constructor, and we do not want to promote one particular - * definition by naming it with this predicate. Having a copy constructor - * could mean that such a member is declared or defined in the source or that - * it is callable by a particular caller. For C++11, there's also a question - * of whether to include members that are defaulted or deleted. - */ - deprecated predicate hasCopyConstructor() { this.getAMemberFunction() instanceof CopyConstructor } - /** * Like accessOfBaseMember but returns multiple results if there are multiple * paths to `base` through the inheritance graph. diff --git a/cpp/ql/lib/semmle/code/cpp/File.qll b/cpp/ql/lib/semmle/code/cpp/File.qll index b2e4e0a41a5..bac9b66965e 100644 --- a/cpp/ql/lib/semmle/code/cpp/File.qll +++ b/cpp/ql/lib/semmle/code/cpp/File.qll @@ -34,14 +34,6 @@ class Container extends Locatable, @container { */ string getAbsolutePath() { none() } // overridden by subclasses - /** - * DEPRECATED: Use `getLocation` instead. - * Gets a URL representing the location of this container. - * - * For more information see [Providing URLs](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/#providing-urls). - */ - deprecated string getURL() { none() } // overridden by subclasses - /** * Gets the relative path of this file or folder from the root folder of the * analyzed source location. The relative path of the root folder itself is @@ -183,12 +175,6 @@ class Folder extends Container, @folder { } override string getAPrimaryQlClass() { result = "Folder" } - - /** - * DEPRECATED: Use `getLocation` instead. - * Gets the URL of this folder. - */ - deprecated override string getURL() { result = "file://" + this.getAbsolutePath() + ":0:0:0:0" } } /** @@ -213,12 +199,6 @@ class File extends Container, @file { result.hasLocationInfo(_, 0, 0, 0, 0) } - /** - * DEPRECATED: Use `getLocation` instead. - * Gets the URL of this file. - */ - deprecated override string getURL() { result = "file://" + this.getAbsolutePath() + ":0:0:0:0" } - /** Holds if this file was compiled as C (at any point). */ predicate compiledAsC() { fileannotations(underlyingElement(this), 1, "compiled as c", "1") } diff --git a/cpp/ql/lib/semmle/code/cpp/Macro.qll b/cpp/ql/lib/semmle/code/cpp/Macro.qll index 4378cec4857..bd916d4bc4e 100644 --- a/cpp/ql/lib/semmle/code/cpp/Macro.qll +++ b/cpp/ql/lib/semmle/code/cpp/Macro.qll @@ -34,7 +34,7 @@ class Macro extends PreprocessorDirective, @ppd_define { * Gets the name of the macro. For example, `MAX` in * `#define MAX(x,y) (((x)>(y))?(x):(y))`. */ - string getName() { result = this.getHead().splitAt("(", 0) } + string getName() { result = this.getHead().regexpCapture("([^(]*+).*", 1) } /** Holds if the macro has name `name`. */ predicate hasName(string name) { this.getName() = name } diff --git a/cpp/ql/lib/semmle/code/cpp/PrintAST.qll b/cpp/ql/lib/semmle/code/cpp/PrintAST.qll index b4d89eb8c1d..11e1791ba60 100644 --- a/cpp/ql/lib/semmle/code/cpp/PrintAST.qll +++ b/cpp/ql/lib/semmle/code/cpp/PrintAST.qll @@ -27,9 +27,6 @@ class PrintAstConfiguration extends TPrintAstConfiguration { predicate shouldPrintFunction(Function func) { any() } } -/** DEPRECATED: Alias for PrintAstConfiguration */ -deprecated class PrintASTConfiguration = PrintAstConfiguration; - private predicate shouldPrintFunction(Function func) { exists(PrintAstConfiguration config | config.shouldPrintFunction(func)) } @@ -239,9 +236,6 @@ class PrintAstNode extends TPrintAstNode { } } -/** DEPRECATED: Alias for PrintAstNode */ -deprecated class PrintASTNode = PrintAstNode; - /** * Class that restricts the elements that we compute `qlClass` for. */ @@ -286,9 +280,6 @@ abstract class BaseAstNode extends PrintAstNode { deprecated Locatable getAST() { result = this.getAst() } } -/** DEPRECATED: Alias for BaseAstNode */ -deprecated class BaseASTNode = BaseAstNode; - /** * A node representing an AST node other than a `DeclarationEntry`. */ @@ -296,9 +287,6 @@ abstract class AstNode extends BaseAstNode, TAstNode { AstNode() { this = TAstNode(ast) } } -/** DEPRECATED: Alias for AstNode */ -deprecated class ASTNode = AstNode; - /** * A node representing an `Expr`. */ diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/SSA.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/SSA.qll index 4732cd06184..f9dad008661 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/SSA.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/SSA.qll @@ -14,9 +14,6 @@ library class StandardSsa extends SsaHelper { StandardSsa() { this = 0 } } -/** DEPRECATED: Alias for StandardSsa */ -deprecated class StandardSSA = StandardSsa; - /** * A definition of one or more SSA variables, including phi node definitions. * An _SSA variable_, as defined in the literature, is effectively the pair of diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/SSAUtils.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/SSAUtils.qll index 45ef36f339d..5e9f85581b8 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/SSAUtils.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/SSAUtils.qll @@ -312,6 +312,3 @@ library class SsaHelper extends int { ssa_use(v, result, _, _) } } - -/** DEPRECATED: Alias for SsaHelper */ -deprecated class SSAHelper = SsaHelper; diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/internal/CFG.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/internal/CFG.qll index 25fdba90d52..99aed9702a9 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/internal/CFG.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/internal/CFG.qll @@ -1385,9 +1385,6 @@ private module Cached { conditionalSuccessor(n1, _, n2) } - /** DEPRECATED: Alias for qlCfgSuccessor */ - deprecated predicate qlCFGSuccessor = qlCfgSuccessor/2; - /** * Holds if `n2` is a control-flow node such that the control-flow * edge `(n1, n2)` may be taken when `n1` is an expression that is true. @@ -1398,9 +1395,6 @@ private module Cached { not conditionalSuccessor(n1, false, n2) } - /** DEPRECATED: Alias for qlCfgTrueSuccessor */ - deprecated predicate qlCFGTrueSuccessor = qlCfgTrueSuccessor/2; - /** * Holds if `n2` is a control-flow node such that the control-flow * edge `(n1, n2)` may be taken when `n1` is an expression that is false. @@ -1410,7 +1404,4 @@ private module Cached { conditionalSuccessor(n1, false, n2) and not conditionalSuccessor(n1, true, n2) } - - /** DEPRECATED: Alias for qlCfgFalseSuccessor */ - deprecated predicate qlCFGFalseSuccessor = qlCfgFalseSuccessor/2; } diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll index ddf98ac0f2f..284fff191ae 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll @@ -1135,8 +1135,8 @@ module Impl { DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow ); - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap); + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t); bindingset[typ, contentType] predicate typecheckStore(Typ typ, DataFlowType contentType); @@ -1199,17 +1199,21 @@ module Impl { NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, ApOption argAp, Typ t, Ap ap, ApApprox apa ) { - fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t, ap, apa) and - PrevStage::revFlow(node, state, apa) and - filter(node, state, t, ap) + fwdFlow1(node, state, cc, summaryCtx, argT, argAp, _, t, ap, apa) } - pragma[inline] - additional predicate fwdFlow( + private predicate fwdFlow1( NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap + ApOption argAp, Typ t0, Typ t, Ap ap, ApApprox apa ) { - fwdFlow(node, state, cc, summaryCtx, argT, argAp, t, ap, _) + fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t0, ap, apa) and + PrevStage::revFlow(node, state, apa) and + filter(node, state, t0, ap, t) + } + + pragma[nomagic] + private predicate typeStrengthen(Typ t0, Ap ap, Typ t) { + fwdFlow1(_, _, _, _, _, _, t0, t, ap, _) and t0 != t } pragma[assume_small_delta] @@ -1339,6 +1343,11 @@ module Impl { private predicate fwdFlowConsCand(Typ t2, Ap cons, Content c, Typ t1, Ap tail) { fwdFlowStore(_, t1, tail, c, t2, _, _, _, _, _, _) and cons = apCons(c, t1, tail) + or + exists(Typ t0 | + typeStrengthen(t0, cons, t2) and + fwdFlowConsCand(t0, cons, c, t1, tail) + ) } pragma[nomagic] @@ -1359,7 +1368,7 @@ module Impl { ParamNodeOption summaryCtx, TypOption argT, ApOption argAp ) { exists(ApHeadContent apc | - fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap) and + fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap, _) and apc = getHeadContent(ap) and readStepCand0(node1, apc, c, node2) ) @@ -1520,14 +1529,14 @@ module Impl { NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { revFlow0(node, state, returnCtx, returnAp, ap) and - fwdFlow(node, state, _, _, _, _, _, ap) + fwdFlow(node, state, _, _, _, _, _, ap, _) } pragma[nomagic] private predicate revFlow0( NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { - fwdFlow(node, state, _, _, _, _, _, ap) and + fwdFlow(node, state, _, _, _, _, _, ap, _) and sinkNode(node, state) and ( if hasSinkCallCtx() @@ -1780,13 +1789,13 @@ module Impl { boolean fwd, int nodes, int fields, int conscand, int states, int tuples ) { fwd = true and - nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _)) and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _, _)) and fields = count(Content f0 | fwdConsCand(f0, _, _)) and conscand = count(Content f0, Typ t, Ap ap | fwdConsCand(f0, t, ap)) and - states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _)) and + states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _, _)) and tuples = count(NodeEx n, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap)) + ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap, _)) or fwd = false and nodes = count(NodeEx node | revFlow(node, _, _, _, _)) and @@ -1963,10 +1972,10 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { PrevStage::revFlowState(state) and - exists(t) and + t0 = t and exists(ap) and not stateBarrier(node, state) and ( @@ -2012,7 +2021,8 @@ module Impl { FlowCheckNode() { castNode(this.asNode()) or clearsContentCached(this.asNode(), _) or - expectsContentCached(this.asNode(), _) + expectsContentCached(this.asNode(), _) or + neverSkipInPathGraph(this.asNode()) } } @@ -2197,8 +2207,8 @@ module Impl { import BooleanCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and exists(lcc) @@ -2218,10 +2228,16 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + // We can get away with not using type strengthening here, since we aren't + // going to use the tracked types in the construction of Stage 4 access + // paths. For Stage 4 and onwards, the tracked types must be consistent as + // the cons candidates including types are used to construct subsequent + // access path approximations. + t0 = t and + (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t0) else any()) and ( notExpectsContent(node) or @@ -2241,6 +2257,16 @@ module Impl { import MkStage::Stage } + bindingset[node, t0] + private predicate strengthenType(NodeEx node, DataFlowType t0, DataFlowType t) { + if castingNodeEx(node) + then + exists(DataFlowType nt | nt = node.getDataFlowType() | + if typeStrongerThan(nt, t0) then t = nt else (compatibleTypes(nt, t0) and t = t0) + ) + else t = t0 + } + private module Stage4Param implements MkStage::StageParam { private module PrevStage = Stage3; @@ -2274,8 +2300,8 @@ module Impl { pragma[nomagic] predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2333,11 +2359,11 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and not clear(node, ap) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + strengthenType(node, t0, t) and ( notExpectsContent(node) or @@ -2365,7 +2391,7 @@ module Impl { exists(AccessPathFront apf | Stage4::revFlow(node, state, TReturnCtxMaybeFlowThrough(_), _, apf) and Stage4::fwdFlow(node, state, any(Stage4::CcCall ccc), _, _, TAccessPathFrontSome(argApf), _, - apf) + apf, _) ) } @@ -2579,8 +2605,8 @@ module Impl { import LocalCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, lcc) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2609,9 +2635,9 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { + strengthenType(node, t0, t) and exists(state) and exists(ap) } @@ -2632,7 +2658,7 @@ module Impl { Stage5::parameterMayFlowThrough(p, _) and Stage5::revFlow(n, state, TReturnCtxMaybeFlowThrough(_), _, apa0) and Stage5::fwdFlow(n, state, any(CallContextCall ccc), TParamNodeSome(p.asNode()), _, - TAccessPathApproxSome(apa), _, apa0) + TAccessPathApproxSome(apa), _, apa0, _) ) } @@ -2649,7 +2675,7 @@ module Impl { TSummaryCtxSome(ParamNodeEx p, FlowState state, DataFlowType t, AccessPath ap) { exists(AccessPathApprox apa | ap.getApprox() = apa | Stage5::parameterMayFlowThrough(p, apa) and - Stage5::fwdFlow(p, state, _, _, _, _, t, apa) and + Stage5::fwdFlow(p, state, _, _, Option::some(t), _, _, apa, _) and Stage5::revFlow(p, state, _) ) } @@ -2820,9 +2846,7 @@ module Impl { ap = TAccessPathNil() or // ... or a step from an existing PathNode to another node. - pathStep(_, node, state, cc, sc, t, ap) and - Stage5::revFlow(node, state, ap.getApprox()) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) + pathStep(_, node, state, cc, sc, t, ap) } or TPathNodeSink(NodeEx node, FlowState state) { exists(PathNodeMid sink | @@ -3340,13 +3364,24 @@ module Impl { ap = mid.getAp() } + private predicate pathStep( + PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, + AccessPath ap + ) { + exists(DataFlowType t0 | + pathStep0(mid, node, state, cc, sc, t0, ap) and + Stage5::revFlow(node, state, ap.getApprox()) and + strengthenType(node, t0, t) + ) + } + /** * Holds if data may flow from `mid` to `node`. The last step in or out of * a callable is recorded by `cc`. */ pragma[assume_small_delta] pragma[nomagic] - private predicate pathStep( + private predicate pathStep0( PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, AccessPath ap ) { @@ -3964,7 +3999,7 @@ module Impl { ap = TPartialNil() and exists(explorationLimit()) or - partialPathNodeMk0(node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and distSrc(node.getEnclosingCallable()) <= explorationLimit() } or TPartialPathNodeRev( @@ -3990,11 +4025,20 @@ module Impl { } pragma[nomagic] - private predicate partialPathNodeMk0( - NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, - TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap + private predicate partialPathStep( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { - partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep1(mid, node, state, cc, sc1, sc2, sc3, sc4, _, t, ap) + } + + pragma[nomagic] + private predicate partialPathStep1( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t0, DataFlowType t, + PartialAccessPath ap + ) { + partialPathStep0(mid, node, state, cc, sc1, sc2, sc3, sc4, t0, ap) and not fullBarrier(node) and not stateBarrier(node, state) and not clearsContentEx(node, ap.getHead()) and @@ -4002,9 +4046,14 @@ module Impl { notExpectsContent(node) or expectsContentEx(node, ap.getHead()) ) and - if node.asNode() instanceof CastingNode - then compatibleTypes(node.getDataFlowType(), t) - else any() + strengthenType(node, t0, t) + } + + pragma[nomagic] + private predicate partialPathTypeStrengthen( + DataFlowType t0, PartialAccessPath ap, DataFlowType t + ) { + partialPathStep1(_, _, _, _, _, _, _, _, t0, t, ap) and t0 != t } /** @@ -4183,7 +4232,8 @@ module Impl { } } - private predicate partialPathStep( + pragma[nomagic] + private predicate partialPathStep0( PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { @@ -4309,6 +4359,11 @@ module Impl { DataFlowType t1, PartialAccessPath ap1, Content c, DataFlowType t2, PartialAccessPath ap2 ) { partialPathStoreStep(_, t1, ap1, c, _, t2, ap2) + or + exists(DataFlowType t0 | + partialPathTypeStrengthen(t0, ap2, t2) and + apConsFwd(t1, ap1, c, t0, ap2) + ) } pragma[nomagic] diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowPrivate.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowPrivate.qll index 9b4e0e6a4f9..b380748fb3c 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowPrivate.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowPrivate.qll @@ -205,6 +205,8 @@ predicate clearsContent(Node n, Content c) { */ predicate expectsContent(Node n, ContentSet c) { none() } +predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { none() } + /** Gets the type of `n` used for type pruning. */ Type getNodeType(Node n) { suppressUnusedNode(n) and @@ -233,6 +235,12 @@ class CastNode extends Node { CastNode() { none() } // stub implementation } +/** + * Holds if `n` should never be skipped over in the `PathGraph` and in path + * explanations. + */ +predicate neverSkipInPathGraph(Node n) { none() } + class DataFlowCallable = Function; class DataFlowExpr = Expr; diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll index ddf98ac0f2f..284fff191ae 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll @@ -1135,8 +1135,8 @@ module Impl { DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow ); - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap); + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t); bindingset[typ, contentType] predicate typecheckStore(Typ typ, DataFlowType contentType); @@ -1199,17 +1199,21 @@ module Impl { NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, ApOption argAp, Typ t, Ap ap, ApApprox apa ) { - fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t, ap, apa) and - PrevStage::revFlow(node, state, apa) and - filter(node, state, t, ap) + fwdFlow1(node, state, cc, summaryCtx, argT, argAp, _, t, ap, apa) } - pragma[inline] - additional predicate fwdFlow( + private predicate fwdFlow1( NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap + ApOption argAp, Typ t0, Typ t, Ap ap, ApApprox apa ) { - fwdFlow(node, state, cc, summaryCtx, argT, argAp, t, ap, _) + fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t0, ap, apa) and + PrevStage::revFlow(node, state, apa) and + filter(node, state, t0, ap, t) + } + + pragma[nomagic] + private predicate typeStrengthen(Typ t0, Ap ap, Typ t) { + fwdFlow1(_, _, _, _, _, _, t0, t, ap, _) and t0 != t } pragma[assume_small_delta] @@ -1339,6 +1343,11 @@ module Impl { private predicate fwdFlowConsCand(Typ t2, Ap cons, Content c, Typ t1, Ap tail) { fwdFlowStore(_, t1, tail, c, t2, _, _, _, _, _, _) and cons = apCons(c, t1, tail) + or + exists(Typ t0 | + typeStrengthen(t0, cons, t2) and + fwdFlowConsCand(t0, cons, c, t1, tail) + ) } pragma[nomagic] @@ -1359,7 +1368,7 @@ module Impl { ParamNodeOption summaryCtx, TypOption argT, ApOption argAp ) { exists(ApHeadContent apc | - fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap) and + fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap, _) and apc = getHeadContent(ap) and readStepCand0(node1, apc, c, node2) ) @@ -1520,14 +1529,14 @@ module Impl { NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { revFlow0(node, state, returnCtx, returnAp, ap) and - fwdFlow(node, state, _, _, _, _, _, ap) + fwdFlow(node, state, _, _, _, _, _, ap, _) } pragma[nomagic] private predicate revFlow0( NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { - fwdFlow(node, state, _, _, _, _, _, ap) and + fwdFlow(node, state, _, _, _, _, _, ap, _) and sinkNode(node, state) and ( if hasSinkCallCtx() @@ -1780,13 +1789,13 @@ module Impl { boolean fwd, int nodes, int fields, int conscand, int states, int tuples ) { fwd = true and - nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _)) and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _, _)) and fields = count(Content f0 | fwdConsCand(f0, _, _)) and conscand = count(Content f0, Typ t, Ap ap | fwdConsCand(f0, t, ap)) and - states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _)) and + states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _, _)) and tuples = count(NodeEx n, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap)) + ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap, _)) or fwd = false and nodes = count(NodeEx node | revFlow(node, _, _, _, _)) and @@ -1963,10 +1972,10 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { PrevStage::revFlowState(state) and - exists(t) and + t0 = t and exists(ap) and not stateBarrier(node, state) and ( @@ -2012,7 +2021,8 @@ module Impl { FlowCheckNode() { castNode(this.asNode()) or clearsContentCached(this.asNode(), _) or - expectsContentCached(this.asNode(), _) + expectsContentCached(this.asNode(), _) or + neverSkipInPathGraph(this.asNode()) } } @@ -2197,8 +2207,8 @@ module Impl { import BooleanCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and exists(lcc) @@ -2218,10 +2228,16 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + // We can get away with not using type strengthening here, since we aren't + // going to use the tracked types in the construction of Stage 4 access + // paths. For Stage 4 and onwards, the tracked types must be consistent as + // the cons candidates including types are used to construct subsequent + // access path approximations. + t0 = t and + (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t0) else any()) and ( notExpectsContent(node) or @@ -2241,6 +2257,16 @@ module Impl { import MkStage::Stage } + bindingset[node, t0] + private predicate strengthenType(NodeEx node, DataFlowType t0, DataFlowType t) { + if castingNodeEx(node) + then + exists(DataFlowType nt | nt = node.getDataFlowType() | + if typeStrongerThan(nt, t0) then t = nt else (compatibleTypes(nt, t0) and t = t0) + ) + else t = t0 + } + private module Stage4Param implements MkStage::StageParam { private module PrevStage = Stage3; @@ -2274,8 +2300,8 @@ module Impl { pragma[nomagic] predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2333,11 +2359,11 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and not clear(node, ap) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + strengthenType(node, t0, t) and ( notExpectsContent(node) or @@ -2365,7 +2391,7 @@ module Impl { exists(AccessPathFront apf | Stage4::revFlow(node, state, TReturnCtxMaybeFlowThrough(_), _, apf) and Stage4::fwdFlow(node, state, any(Stage4::CcCall ccc), _, _, TAccessPathFrontSome(argApf), _, - apf) + apf, _) ) } @@ -2579,8 +2605,8 @@ module Impl { import LocalCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, lcc) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2609,9 +2635,9 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { + strengthenType(node, t0, t) and exists(state) and exists(ap) } @@ -2632,7 +2658,7 @@ module Impl { Stage5::parameterMayFlowThrough(p, _) and Stage5::revFlow(n, state, TReturnCtxMaybeFlowThrough(_), _, apa0) and Stage5::fwdFlow(n, state, any(CallContextCall ccc), TParamNodeSome(p.asNode()), _, - TAccessPathApproxSome(apa), _, apa0) + TAccessPathApproxSome(apa), _, apa0, _) ) } @@ -2649,7 +2675,7 @@ module Impl { TSummaryCtxSome(ParamNodeEx p, FlowState state, DataFlowType t, AccessPath ap) { exists(AccessPathApprox apa | ap.getApprox() = apa | Stage5::parameterMayFlowThrough(p, apa) and - Stage5::fwdFlow(p, state, _, _, _, _, t, apa) and + Stage5::fwdFlow(p, state, _, _, Option::some(t), _, _, apa, _) and Stage5::revFlow(p, state, _) ) } @@ -2820,9 +2846,7 @@ module Impl { ap = TAccessPathNil() or // ... or a step from an existing PathNode to another node. - pathStep(_, node, state, cc, sc, t, ap) and - Stage5::revFlow(node, state, ap.getApprox()) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) + pathStep(_, node, state, cc, sc, t, ap) } or TPathNodeSink(NodeEx node, FlowState state) { exists(PathNodeMid sink | @@ -3340,13 +3364,24 @@ module Impl { ap = mid.getAp() } + private predicate pathStep( + PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, + AccessPath ap + ) { + exists(DataFlowType t0 | + pathStep0(mid, node, state, cc, sc, t0, ap) and + Stage5::revFlow(node, state, ap.getApprox()) and + strengthenType(node, t0, t) + ) + } + /** * Holds if data may flow from `mid` to `node`. The last step in or out of * a callable is recorded by `cc`. */ pragma[assume_small_delta] pragma[nomagic] - private predicate pathStep( + private predicate pathStep0( PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, AccessPath ap ) { @@ -3964,7 +3999,7 @@ module Impl { ap = TPartialNil() and exists(explorationLimit()) or - partialPathNodeMk0(node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and distSrc(node.getEnclosingCallable()) <= explorationLimit() } or TPartialPathNodeRev( @@ -3990,11 +4025,20 @@ module Impl { } pragma[nomagic] - private predicate partialPathNodeMk0( - NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, - TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap + private predicate partialPathStep( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { - partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep1(mid, node, state, cc, sc1, sc2, sc3, sc4, _, t, ap) + } + + pragma[nomagic] + private predicate partialPathStep1( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t0, DataFlowType t, + PartialAccessPath ap + ) { + partialPathStep0(mid, node, state, cc, sc1, sc2, sc3, sc4, t0, ap) and not fullBarrier(node) and not stateBarrier(node, state) and not clearsContentEx(node, ap.getHead()) and @@ -4002,9 +4046,14 @@ module Impl { notExpectsContent(node) or expectsContentEx(node, ap.getHead()) ) and - if node.asNode() instanceof CastingNode - then compatibleTypes(node.getDataFlowType(), t) - else any() + strengthenType(node, t0, t) + } + + pragma[nomagic] + private predicate partialPathTypeStrengthen( + DataFlowType t0, PartialAccessPath ap, DataFlowType t + ) { + partialPathStep1(_, _, _, _, _, _, _, _, t0, t, ap) and t0 != t } /** @@ -4183,7 +4232,8 @@ module Impl { } } - private predicate partialPathStep( + pragma[nomagic] + private predicate partialPathStep0( PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { @@ -4309,6 +4359,11 @@ module Impl { DataFlowType t1, PartialAccessPath ap1, Content c, DataFlowType t2, PartialAccessPath ap2 ) { partialPathStoreStep(_, t1, ap1, c, _, t2, ap2) + or + exists(DataFlowType t0 | + partialPathTypeStrengthen(t0, ap2, t2) and + apConsFwd(t1, ap1, c, t0, ap2) + ) } pragma[nomagic] diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll index cc8d0cdbe94..6715b67c382 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll @@ -193,86 +193,89 @@ private class SingleUseOperandNode0 extends OperandNode0, TSingleUseOperandNode0 SingleUseOperandNode0() { this = TSingleUseOperandNode0(op) } } -/** - * INTERNAL: Do not use. - * - * A node that represents the indirect value of an operand in the IR - * after `index` number of loads. - * - * Note: Unlike `RawIndirectOperand`, a value of type `IndirectOperand` may - * be an `OperandNode`. - */ -class IndirectOperand extends Node { - Operand operand; - int indirectionIndex; - - IndirectOperand() { - this.(RawIndirectOperand).getOperand() = operand and - this.(RawIndirectOperand).getIndirectionIndex() = indirectionIndex - or - nodeHasOperand(this, Ssa::getIRRepresentationOfIndirectOperand(operand, indirectionIndex), - indirectionIndex - 1) +private module IndirectOperands { + /** + * INTERNAL: Do not use. + * + * A node that represents the indirect value of an operand in the IR + * after `index` number of loads. + * + * Note: Unlike `RawIndirectOperand`, a value of type `IndirectOperand` may + * be an `OperandNode`. + */ + abstract class IndirectOperand extends Node { + /** Gets the underlying operand and the underlying indirection index. */ + abstract predicate hasOperandAndIndirectionIndex(Operand operand, int indirectionIndex); } - /** Gets the underlying operand. */ - Operand getOperand() { result = operand } + private class IndirectOperandFromRaw extends IndirectOperand instanceof RawIndirectOperand { + override predicate hasOperandAndIndirectionIndex(Operand operand, int indirectionIndex) { + operand = RawIndirectOperand.super.getOperand() and + indirectionIndex = RawIndirectOperand.super.getIndirectionIndex() + } + } - /** Gets the underlying indirection index. */ - int getIndirectionIndex() { result = indirectionIndex } + private class IndirectOperandFromIRRepr extends IndirectOperand { + Operand operand; + int indirectionIndex; - /** - * Holds if this `IndirectOperand` is represented directly in the IR instead of - * a `RawIndirectionOperand` with operand `op` and indirection index `index`. - */ - predicate isIRRepresentationOf(Operand op, int index) { - this instanceof OperandNode and - ( - op = operand and - index = indirectionIndex - ) + IndirectOperandFromIRRepr() { + exists(Operand repr | + repr = Ssa::getIRRepresentationOfIndirectOperand(operand, indirectionIndex) and + nodeHasOperand(this, repr, indirectionIndex - 1) + ) + } + + override predicate hasOperandAndIndirectionIndex(Operand op, int index) { + op = operand and index = indirectionIndex + } } } -/** - * INTERNAL: Do not use. - * - * A node that represents the indirect value of an instruction in the IR - * after `index` number of loads. - * - * Note: Unlike `RawIndirectInstruction`, a value of type `IndirectInstruction` may - * be an `InstructionNode`. - */ -class IndirectInstruction extends Node { - Instruction instr; - int indirectionIndex; +import IndirectOperands - IndirectInstruction() { - this.(RawIndirectInstruction).getInstruction() = instr and - this.(RawIndirectInstruction).getIndirectionIndex() = indirectionIndex - or - nodeHasInstruction(this, Ssa::getIRRepresentationOfIndirectInstruction(instr, indirectionIndex), - indirectionIndex - 1) +private module IndirectInstructions { + /** + * INTERNAL: Do not use. + * + * A node that represents the indirect value of an instruction in the IR + * after `index` number of loads. + * + * Note: Unlike `RawIndirectInstruction`, a value of type `IndirectInstruction` may + * be an `InstructionNode`. + */ + abstract class IndirectInstruction extends Node { + /** Gets the underlying operand and the underlying indirection index. */ + abstract predicate hasInstructionAndIndirectionIndex(Instruction instr, int index); } - /** Gets the underlying instruction. */ - Instruction getInstruction() { result = instr } + private class IndirectInstructionFromRaw extends IndirectInstruction instanceof RawIndirectInstruction + { + override predicate hasInstructionAndIndirectionIndex(Instruction instr, int index) { + instr = RawIndirectInstruction.super.getInstruction() and + index = RawIndirectInstruction.super.getIndirectionIndex() + } + } - /** Gets the underlying indirection index. */ - int getIndirectionIndex() { result = indirectionIndex } + private class IndirectInstructionFromIRRepr extends IndirectInstruction { + Instruction instr; + int indirectionIndex; - /** - * Holds if this `IndirectInstruction` is represented directly in the IR instead of - * a `RawIndirectionInstruction` with instruction `i` and indirection index `index`. - */ - predicate isIRRepresentationOf(Instruction i, int index) { - this instanceof InstructionNode and - ( - i = instr and - index = indirectionIndex - ) + IndirectInstructionFromIRRepr() { + exists(Instruction repr | + repr = Ssa::getIRRepresentationOfIndirectInstruction(instr, indirectionIndex) and + nodeHasInstruction(this, repr, indirectionIndex - 1) + ) + } + + override predicate hasInstructionAndIndirectionIndex(Instruction i, int index) { + i = instr and index = indirectionIndex + } } } +import IndirectInstructions + /** Gets the callable in which this node occurs. */ DataFlowCallable nodeGetEnclosingCallable(Node n) { result = n.getEnclosingCallable() } @@ -320,7 +323,7 @@ private class SideEffectArgumentNode extends ArgumentNode, SideEffectOperandNode override predicate argumentOf(DataFlowCall dfCall, ArgumentPosition pos) { this.getCallInstruction() = dfCall and pos.(IndirectionPosition).getArgumentIndex() = this.getArgumentIndex() and - pos.(IndirectionPosition).getIndirectionIndex() = super.getIndirectionIndex() + super.hasAddressOperandAndIndirectionIndex(_, pos.(IndirectionPosition).getIndirectionIndex()) } } @@ -753,6 +756,8 @@ predicate clearsContent(Node n, Content c) { */ predicate expectsContent(Node n, ContentSet c) { none() } +predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { none() } + /** Gets the type of `n` used for type pruning. */ DataFlowType getNodeType(Node n) { suppressUnusedNode(n) and @@ -781,6 +786,12 @@ class CastNode extends Node { CastNode() { none() } // stub implementation } +/** + * Holds if `n` should never be skipped over in the `PathGraph` and in path + * explanations. + */ +predicate neverSkipInPathGraph(Node n) { none() } + /** * A function that may contain code or a variable that may contain itself. When * flow crosses from one _enclosing callable_ to another, the interprocedural @@ -837,7 +848,7 @@ predicate additionalLambdaFlowStep(Node nodeFrom, Node nodeTo, boolean preserves * One example would be to allow flow like `p.foo = p.bar;`, which is disallowed * by default as a heuristic. */ -predicate allowParameterReturnInSelf(ParameterNode p) { none() } +predicate allowParameterReturnInSelf(ParameterNode p) { p instanceof IndirectParameterNode } private predicate fieldHasApproxName(Field f, string s) { s = f.getName().charAt(0) and diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll index 9a3fd679f23..4cf5cd65fa8 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll @@ -274,7 +274,7 @@ class Node extends TIRDataFlowNode { * represents the value of `**x` going into `f`. */ Expr asIndirectArgument(int index) { - this.(SideEffectOperandNode).getIndirectionIndex() = index and + this.(SideEffectOperandNode).hasAddressOperandAndIndirectionIndex(_, index) and result = this.(SideEffectOperandNode).getArgument() } @@ -317,7 +317,7 @@ class Node extends TIRDataFlowNode { index = 0 and result = this.(ExplicitParameterNode).getParameter() or - this.(IndirectParameterNode).getIndirectionIndex() = index and + this.(IndirectParameterNode).hasInstructionAndIndirectionIndex(_, index) and result = this.(IndirectParameterNode).getParameter() } @@ -577,15 +577,20 @@ class SsaPhiNode extends Node, TSsaPhiNode { * * A node representing a value after leaving a function. */ -class SideEffectOperandNode extends Node, IndirectOperand { +class SideEffectOperandNode extends Node instanceof IndirectOperand { CallInstruction call; int argumentIndex; - SideEffectOperandNode() { operand = call.getArgumentOperand(argumentIndex) } + SideEffectOperandNode() { + IndirectOperand.super.hasOperandAndIndirectionIndex(call.getArgumentOperand(argumentIndex), _) + } CallInstruction getCallInstruction() { result = call } - Operand getAddressOperand() { result = operand } + /** Gets the underlying operand and the underlying indirection index. */ + predicate hasAddressOperandAndIndirectionIndex(Operand operand, int indirectionIndex) { + IndirectOperand.super.hasOperandAndIndirectionIndex(operand, indirectionIndex) + } int getArgumentIndex() { result = argumentIndex } @@ -665,10 +670,10 @@ class InitialGlobalValue extends Node, TInitialGlobalValue { * * A node representing an indirection of a parameter. */ -class IndirectParameterNode extends Node, IndirectInstruction { +class IndirectParameterNode extends Node instanceof IndirectInstruction { InitializeParameterInstruction init; - IndirectParameterNode() { this.getInstruction() = init } + IndirectParameterNode() { IndirectInstruction.super.hasInstructionAndIndirectionIndex(init, _) } int getArgumentIndex() { init.hasIndex(result) } @@ -677,7 +682,12 @@ class IndirectParameterNode extends Node, IndirectInstruction { override Declaration getEnclosingCallable() { result = this.getFunction() } - override Declaration getFunction() { result = this.getInstruction().getEnclosingFunction() } + override Declaration getFunction() { result = init.getEnclosingFunction() } + + /** Gets the underlying operand and the underlying indirection index. */ + predicate hasInstructionAndIndirectionIndex(Instruction instr, int index) { + IndirectInstruction.super.hasInstructionAndIndirectionIndex(instr, index) + } override Location getLocationImpl() { result = this.getParameter().getLocation() } @@ -699,7 +709,8 @@ class IndirectReturnNode extends Node { IndirectReturnNode() { this instanceof FinalParameterNode or - this.(IndirectOperand).getOperand() = any(ReturnValueInstruction ret).getReturnAddressOperand() + this.(IndirectOperand) + .hasOperandAndIndirectionIndex(any(ReturnValueInstruction ret).getReturnAddressOperand(), _) } override Declaration getEnclosingCallable() { result = this.getFunction() } @@ -722,7 +733,7 @@ class IndirectReturnNode extends Node { int getIndirectionIndex() { result = this.(FinalParameterNode).getIndirectionIndex() or - result = this.(IndirectOperand).getIndirectionIndex() + this.(IndirectOperand).hasOperandAndIndirectionIndex(_, result) } } @@ -1106,7 +1117,8 @@ predicate exprNodeShouldBeInstruction(Node node, Expr e) { /** Holds if `node` should be an `IndirectInstruction` that maps `node.asIndirectExpr()` to `e`. */ predicate indirectExprNodeShouldBeIndirectInstruction(IndirectInstruction node, Expr e) { exists(Instruction instr | - instr = node.getInstruction() and not indirectExprNodeShouldBeIndirectOperand(_, e) + node.hasInstructionAndIndirectionIndex(instr, _) and + not indirectExprNodeShouldBeIndirectOperand(_, e) | e = instr.(VariableAddressInstruction).getAst().(Expr).getFullyConverted() or @@ -1307,8 +1319,8 @@ pragma[noinline] private predicate indirectParameterNodeHasArgumentIndexAndIndex( IndirectParameterNode node, int argumentIndex, int indirectionIndex ) { - node.getArgumentIndex() = argumentIndex and - node.getIndirectionIndex() = indirectionIndex + node.hasInstructionAndIndirectionIndex(_, indirectionIndex) and + node.getArgumentIndex() = argumentIndex } /** A synthetic parameter to model the pointed-to object of a pointer parameter. */ @@ -1479,18 +1491,14 @@ VariableNode variableNode(Variable v) { */ Node uninitializedNode(LocalVariable v) { none() } -pragma[noinline] predicate hasOperandAndIndex(IndirectOperand indirectOperand, Operand operand, int indirectionIndex) { - indirectOperand.getOperand() = operand and - indirectOperand.getIndirectionIndex() = indirectionIndex + indirectOperand.hasOperandAndIndirectionIndex(operand, indirectionIndex) } -pragma[noinline] predicate hasInstructionAndIndex( IndirectInstruction indirectInstr, Instruction instr, int indirectionIndex ) { - indirectInstr.getInstruction() = instr and - indirectInstr.getIndirectionIndex() = indirectionIndex + indirectInstr.hasInstructionAndIndirectionIndex(instr, indirectionIndex) } cached @@ -1656,8 +1664,7 @@ module ExprFlowCached { private predicate isIndirectBaseOfArrayAccess(IndirectOperand n, Expr e) { exists(LoadInstruction load, PointerArithmeticInstruction pai | pai = load.getSourceAddress() and - pai.getLeftOperand() = n.getOperand() and - n.getIndirectionIndex() = 1 and + n.hasOperandAndIndirectionIndex(pai.getLeftOperand(), 1) and e = load.getConvertedResultExpression() ) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRFieldFlowSteps.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRFieldFlowSteps.qll index f0286c00cbc..c0976f8c3e9 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRFieldFlowSteps.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRFieldFlowSteps.qll @@ -13,7 +13,7 @@ class FieldFlowPropertyProvider extends IRPropertyProvider { override string getOperandProperty(Operand operand, string key) { exists(PostFieldUpdateNode pfun, Content content | key = "store " + content.toString() and - operand = pfun.getPreUpdateNode().(IndirectOperand).getOperand() and + pfun.getPreUpdateNode().(IndirectOperand).hasOperandAndIndirectionIndex(operand, _) and result = strictconcat(string element, Node node | storeStep(node, content, pfun) and @@ -25,7 +25,7 @@ class FieldFlowPropertyProvider extends IRPropertyProvider { or exists(Node node2, Content content | key = "read " + content.toString() and - operand = node2.(IndirectOperand).getOperand() and + node2.(IndirectOperand).hasOperandAndIndirectionIndex(operand, _) and result = strictconcat(string element, Node node1 | readStep(node1, content, node2) and diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRUtilities.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRUtilities.qll index 5c6cdebf800..5cca78588f0 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRUtilities.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/PrintIRUtilities.qll @@ -18,9 +18,12 @@ private string stars(int k) { } string starsForNode(Node node) { - result = stars(node.(IndirectInstruction).getIndirectionIndex()) - or - result = stars(node.(IndirectOperand).getIndirectionIndex()) + exists(int indirectionIndex | + node.(IndirectInstruction).hasInstructionAndIndirectionIndex(_, indirectionIndex) or + node.(IndirectOperand).hasOperandAndIndirectionIndex(_, indirectionIndex) + | + result = stars(indirectionIndex) + ) or not node instanceof IndirectInstruction and not node instanceof IndirectOperand and diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll index 551653c3aca..0cd152e2473 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll @@ -364,7 +364,25 @@ abstract private class OperandBasedUse extends UseImpl { OperandBasedUse() { any() } final override predicate hasIndexInBlock(IRBlock block, int index) { - operand.getUse() = block.getInstruction(index) + // See the comment in `ssa0`'s `OperandBasedUse` for an explanation of this + // predicate's implementation. + exists(BaseSourceVariableInstruction base | base = this.getBase() | + if base.getAst() = any(Cpp::PostfixCrementOperation c).getOperand() + then + exists(Operand op, int indirectionIndex, int indirection | + indirectionIndex = this.getIndirectionIndex() and + indirection = this.getIndirection() and + op = + min(Operand cand, int i | + isUse(_, cand, base, indirection, indirectionIndex) and + block.getInstruction(i) = cand.getUse() + | + cand order by i + ) and + block.getInstruction(index) = op.getUse() + ) + else operand.getUse() = block.getInstruction(index) + ) } final Operand getOperand() { result = operand } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternalsCommon.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternalsCommon.qll index dca2b3850ba..56702bd79a9 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternalsCommon.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternalsCommon.qll @@ -117,6 +117,16 @@ private int countIndirections(Type t) { else ( result = any(Indirection ind | ind.getType() = t).getNumberOfIndirections() or + // If there is an indirection for the type, but we cannot count the number of indirections + // it means we couldn't reach a non-indirection type by stripping off indirections. This + // can occur if an iterator specifies itself as the value type. In this case we default to + // 1 indirection fore the type. + exists(Indirection ind | + ind.getType() = t and + not exists(ind.getNumberOfIndirections()) and + result = 1 + ) + or not exists(Indirection ind | ind.getType() = t) and result = 0 ) @@ -144,6 +154,20 @@ class AllocationInstruction extends CallInstruction { AllocationInstruction() { this.getStaticCallTarget() instanceof Cpp::AllocationFunction } } +private predicate isIndirectionType(Type t) { t instanceof Indirection } + +private predicate hasUnspecifiedBaseType(Indirection t, Type base) { + base = t.getBaseType().getUnspecifiedType() +} + +/** + * Holds if `t2` is the same type as `t1`, but after stripping away `result` number + * of indirections. + * Furthermore, specifies in `t2` been deeply stripped and typedefs has been resolved. + */ +private int getNumberOfIndirectionsImpl(Type t1, Type t2) = + shortestDistances(isIndirectionType/1, hasUnspecifiedBaseType/2)(t1, t2, result) + /** * An abstract class for handling indirections. * @@ -162,7 +186,10 @@ abstract class Indirection extends Type { * For example, the number of indirections of a variable `p` of type * `int**` is `3` (i.e., `p`, `*p` and `**p`). */ - abstract int getNumberOfIndirections(); + final int getNumberOfIndirections() { + result = + getNumberOfIndirectionsImpl(this.getType(), any(Type end | not end instanceof Indirection)) + } /** * Holds if `deref` is an instruction that behaves as a `LoadInstruction` @@ -200,19 +227,11 @@ private class PointerOrArrayOrReferenceTypeIndirection extends Indirection insta PointerOrArrayOrReferenceTypeIndirection() { baseType = PointerOrArrayOrReferenceType.super.getBaseType() } - - override int getNumberOfIndirections() { - result = 1 + countIndirections(this.getBaseType().getUnspecifiedType()) - } } private class PointerWrapperTypeIndirection extends Indirection instanceof PointerWrapper { PointerWrapperTypeIndirection() { baseType = PointerWrapper.super.getBaseType() } - override int getNumberOfIndirections() { - result = 1 + countIndirections(this.getBaseType().getUnspecifiedType()) - } - override predicate isAdditionalDereference(Instruction deref, Operand address) { exists(CallInstruction call | operandForFullyConvertedCall(getAUse(deref), call) and @@ -233,10 +252,6 @@ private module IteratorIndirections { baseType = super.getValueType() } - override int getNumberOfIndirections() { - result = 1 + countIndirections(this.getBaseType().getUnspecifiedType()) - } - override predicate isAdditionalDereference(Instruction deref, Operand address) { exists(CallInstruction call | operandForFullyConvertedCall(getAUse(deref), call) and @@ -258,7 +273,7 @@ private module IteratorIndirections { // Taint through `operator+=` and `operator-=` on iterators. call.getStaticCallTarget() instanceof Iterator::IteratorAssignArithmeticOperator and node2.(IndirectArgumentOutNode).getPreUpdateNode() = node1 and - node1.(IndirectOperand).getOperand() = call.getArgumentOperand(0) and + node1.(IndirectOperand).hasOperandAndIndirectionIndex(call.getArgumentOperand(0), _) and node1.getType().getUnspecifiedType() = this ) } @@ -791,7 +806,7 @@ private module Cached { address.getDef() = instr and isDereference(load, address) and isUseImpl(address, _, indirectionIndex - 1) and - result = instr + result = load ) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll index c3b8765a72a..028f5bad9da 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll @@ -160,7 +160,7 @@ predicate modeledTaintStep(DataFlow::Node nodeIn, DataFlow::Node nodeOut) { FunctionInput modelIn, FunctionOutput modelOut | indirectArgument = callInput(call, modelIn) and - indirectArgument.getAddressOperand() = nodeIn.asOperand() and + indirectArgument.hasAddressOperandAndIndirectionIndex(nodeIn.asOperand(), _) and call.getStaticCallTarget() = func and ( func.(DataFlowFunction).hasDataFlow(modelIn, modelOut) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/ssa0/SsaInternals.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/ssa0/SsaInternals.qll index aa6a43a2580..38f9bbeec8e 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/ssa0/SsaInternals.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/ssa0/SsaInternals.qll @@ -122,7 +122,46 @@ abstract private class OperandBasedUse extends UseImpl { override string toString() { result = operand.toString() } final override predicate hasIndexInBlock(IRBlock block, int index) { - operand.getUse() = block.getInstruction(index) + // Ideally, this would just be implemented as: + // ``` + // operand.getUse() = block.getInstruction(index) + // ``` + // but because the IR generated for a snippet such as + // ``` + // int x = *p++; + // ``` + // looks like + // ``` + // r1(glval) = VariableAddress[x] : + // r2(glval) = VariableAddress[p] : + // r3(int *) = Load[p] : &:r2, m1 + // r4(int) = Constant[1] : + // r5(int *) = PointerAdd[4] : r3, r4 + // m3(int *) = Store[p] : &:r2, r5 + // r6(int *) = CopyValue : r3 + // r7(int) = Load[?] : &:r6, ~m2 + // m2(int) = Store[x] : &:r1, r7 + // ``` + // we need to ensure that the `r3` operand of the `CopyValue` instruction isn't seen as a fresh use + // of `p` that happens after the increment. So if the base instruction of this use comes from a + // post-fix crement operation we set the index of the SSA use that wraps the `r3` operand at the + // `CopyValue` instruction to be the same index as the `r3` operand at the `PointerAdd` instruction. + // This ensures that the SSA library doesn't create flow from the `PointerAdd` to `r6`. + exists(BaseSourceVariableInstruction base | base = this.getBase() | + if base.getAst() = any(Cpp::PostfixCrementOperation c).getOperand() + then + exists(Operand op | + op = + min(Operand cand, int i | + isUse(_, cand, base, _, _) and + block.getInstruction(i) = cand.getUse() + | + cand order by i + ) and + block.getInstruction(index) = op.getUse() + ) + else operand.getUse() = block.getInstruction(index) + ) } final override Cpp::Location getLocation() { result = operand.getLocation() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll index 0aa7c552638..1b5ea432946 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll @@ -210,9 +210,6 @@ class Instruction extends Construction::TStageInstruction { */ final Language::AST getAst() { result = Construction::getInstructionAst(this) } - /** DEPRECATED: Alias for getAst */ - deprecated Language::AST getAST() { result = this.getAst() } - /** * Gets the location of the source code for this instruction. */ @@ -463,9 +460,6 @@ class VariableInstruction extends Instruction { * Gets the AST variable that this instruction's IR variable refers to, if one exists. */ final Language::Variable getAstVariable() { result = var.(IRUserVariable).getVariable() } - - /** DEPRECATED: Alias for getAstVariable */ - deprecated Language::Variable getASTVariable() { result = this.getAstVariable() } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll index 1dd116d6c0e..10fddf6352b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll @@ -577,9 +577,6 @@ private Overlap getVariableMemoryLocationOverlap( */ predicate canReuseSsaForOldResult(Instruction instr) { OldSsa::canReuseSsaForMemoryResult(instr) } -/** DEPRECATED: Alias for canReuseSsaForOldResult */ -deprecated predicate canReuseSSAForOldResult = canReuseSsaForOldResult/1; - bindingset[result, b] private boolean unbindBool(boolean b) { result != b.booleanNot() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll index dc785f3e0b1..63dc4142a13 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll @@ -422,12 +422,6 @@ private module Cached { ) } - /** DEPRECATED: Alias for getInstructionAst */ - cached - deprecated Language::AST getInstructionAST(Instruction instr) { - result = getInstructionAst(instr) - } - cached Language::LanguageType getInstructionResultType(Instruction instr) { result = instr.(RawIR::Instruction).getResultLanguageType() @@ -993,9 +987,6 @@ predicate canReuseSsaForMemoryResult(Instruction instruction) { // We don't support reusing SSA for any location that could create a `Chi` instruction. } -/** DEPRECATED: Alias for canReuseSsaForMemoryResult */ -deprecated predicate canReuseSSAForMemoryResult = canReuseSsaForMemoryResult/1; - /** * Expose some of the internal predicates to PrintSSA.qll. We do this by publicly importing those modules in the * `DebugSsa` module, which is then imported by PrintSSA. @@ -1005,9 +996,6 @@ module DebugSsa { import DefUse } -/** DEPRECATED: Alias for DebugSsa */ -deprecated module DebugSSA = DebugSsa; - import CachedForDebugging cached diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TInstruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TInstruction.qll index 169de03c2dc..bb3eb683653 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TInstruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TInstruction.qll @@ -73,9 +73,6 @@ module UnaliasedSsaInstructions { } } -/** DEPRECATED: Alias for UnaliasedSsaInstructions */ -deprecated module UnaliasedSSAInstructions = UnaliasedSsaInstructions; - /** * Provides wrappers for the constructors of each branch of `TInstruction` that is used by the * aliased SSA stage. @@ -107,6 +104,3 @@ module AliasedSsaInstructions { result = TAliasedSsaUnreachedInstruction(irFunc) } } - -/** DEPRECATED: Alias for AliasedSsaInstructions */ -deprecated module AliasedSSAInstructions = AliasedSsaInstructions; diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TOperand.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TOperand.qll index 607b88fa58d..8a330114fe9 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TOperand.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/internal/TOperand.qll @@ -74,20 +74,12 @@ private module Shared { class TNonSsaMemoryOperand = Internal::TNonSsaMemoryOperand; - /** DEPRECATED: Alias for TNonSsaMemoryOperand */ - deprecated class TNonSSAMemoryOperand = TNonSsaMemoryOperand; - /** * Returns the non-Phi memory operand with the specified parameters. */ TNonSsaMemoryOperand nonSsaMemoryOperand(TRawInstruction useInstr, MemoryOperandTag tag) { result = Internal::TNonSsaMemoryOperand(useInstr, tag) } - - /** DEPRECATED: Alias for nonSsaMemoryOperand */ - deprecated TNonSSAMemoryOperand nonSSAMemoryOperand(TRawInstruction useInstr, MemoryOperandTag tag) { - result = nonSsaMemoryOperand(useInstr, tag) - } } /** @@ -167,9 +159,6 @@ module UnaliasedSsaOperands { TChiOperand chiOperand(Unaliased::Instruction useInstr, ChiOperandTag tag) { none() } } -/** DEPRECATED: Alias for UnaliasedSsaOperands */ -deprecated module UnaliasedSSAOperands = UnaliasedSsaOperands; - /** * Provides wrappers for the constructors of each branch of `TOperand` that is used by the * aliased SSA stage. @@ -217,6 +206,3 @@ module AliasedSsaOperands { result = Internal::TAliasedChiOperand(useInstr, tag) } } - -/** DEPRECATED: Alias for AliasedSsaOperands */ -deprecated module AliasedSSAOperands = AliasedSsaOperands; diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/Instruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/Instruction.qll index 0aa7c552638..1b5ea432946 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/Instruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/Instruction.qll @@ -210,9 +210,6 @@ class Instruction extends Construction::TStageInstruction { */ final Language::AST getAst() { result = Construction::getInstructionAst(this) } - /** DEPRECATED: Alias for getAst */ - deprecated Language::AST getAST() { result = this.getAst() } - /** * Gets the location of the source code for this instruction. */ @@ -463,9 +460,6 @@ class VariableInstruction extends Instruction { * Gets the AST variable that this instruction's IR variable refers to, if one exists. */ final Language::Variable getAstVariable() { result = var.(IRUserVariable).getVariable() } - - /** DEPRECATED: Alias for getAstVariable */ - deprecated Language::Variable getASTVariable() { result = this.getAstVariable() } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll index 1cfd8a2041e..8c0695247f8 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll @@ -375,11 +375,6 @@ Locatable getInstructionAst(TStageInstruction instr) { ) } -/** DEPRECATED: Alias for getInstructionAst */ -deprecated Locatable getInstructionAST(TStageInstruction instr) { - result = getInstructionAst(instr) -} - CppType getInstructionResultType(TStageInstruction instr) { getInstructionTranslatedElement(instr).hasInstruction(_, getInstructionTag(instr), result) or diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll index 3080848b153..5832aa9f928 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll @@ -76,9 +76,6 @@ abstract class TranslatedExpr extends TranslatedElement { final override Locatable getAst() { result = expr } - /** DEPRECATED: Alias for getAst */ - deprecated override Locatable getAST() { result = this.getAst() } - final override Declaration getFunction() { result = getEnclosingDeclaration(expr) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll index 0aa7c552638..1b5ea432946 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll @@ -210,9 +210,6 @@ class Instruction extends Construction::TStageInstruction { */ final Language::AST getAst() { result = Construction::getInstructionAst(this) } - /** DEPRECATED: Alias for getAst */ - deprecated Language::AST getAST() { result = this.getAst() } - /** * Gets the location of the source code for this instruction. */ @@ -463,9 +460,6 @@ class VariableInstruction extends Instruction { * Gets the AST variable that this instruction's IR variable refers to, if one exists. */ final Language::Variable getAstVariable() { result = var.(IRUserVariable).getVariable() } - - /** DEPRECATED: Alias for getAstVariable */ - deprecated Language::Variable getASTVariable() { result = this.getAstVariable() } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll index dc785f3e0b1..63dc4142a13 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll @@ -422,12 +422,6 @@ private module Cached { ) } - /** DEPRECATED: Alias for getInstructionAst */ - cached - deprecated Language::AST getInstructionAST(Instruction instr) { - result = getInstructionAst(instr) - } - cached Language::LanguageType getInstructionResultType(Instruction instr) { result = instr.(RawIR::Instruction).getResultLanguageType() @@ -993,9 +987,6 @@ predicate canReuseSsaForMemoryResult(Instruction instruction) { // We don't support reusing SSA for any location that could create a `Chi` instruction. } -/** DEPRECATED: Alias for canReuseSsaForMemoryResult */ -deprecated predicate canReuseSSAForMemoryResult = canReuseSsaForMemoryResult/1; - /** * Expose some of the internal predicates to PrintSSA.qll. We do this by publicly importing those modules in the * `DebugSsa` module, which is then imported by PrintSSA. @@ -1005,9 +996,6 @@ module DebugSsa { import DefUse } -/** DEPRECATED: Alias for DebugSsa */ -deprecated module DebugSSA = DebugSsa; - import CachedForDebugging cached diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll index f5b0b3af930..5c33ecf5f99 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll @@ -46,9 +46,6 @@ predicate canReuseSsaForVariable(IRAutomaticVariable var) { not allocationEscapes(var) } -/** DEPRECATED: Alias for canReuseSsaForVariable */ -deprecated predicate canReuseSSAForVariable = canReuseSsaForVariable/1; - private newtype TMemoryLocation = MkMemoryLocation(Allocation var) { isVariableModeled(var) } private MemoryLocation getMemoryLocation(Allocation var) { result.getAllocation() = var } @@ -80,9 +77,6 @@ class MemoryLocation extends TMemoryLocation { predicate canReuseSsaForOldResult(Instruction instr) { none() } -/** DEPRECATED: Alias for canReuseSsaForOldResult */ -deprecated predicate canReuseSSAForOldResult = canReuseSsaForOldResult/1; - /** * Represents a set of `MemoryLocation`s that cannot overlap with * `MemoryLocation`s outside of the set. The `VirtualVariable` will be diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll index 10b160dee47..ea371de958a 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Strcpy.qll @@ -108,7 +108,7 @@ class StrcpyFunction extends ArrayFunction, DataFlowFunction, TaintFunction, Sid // these may do only a partial copy of the input buffer to the output // buffer exists(this.getParamSize()) and - input.isParameter(this.getParamSrc()) and + input.isParameterDeref(this.getParamSrc()) and ( output.isParameterDeref(this.getParamDest()) or output.isReturnValueDeref() diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/RangeSSA.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/RangeSSA.qll index 2503e4713d8..849dd70a9a3 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/RangeSSA.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/RangeSSA.qll @@ -40,9 +40,6 @@ library class RangeSsa extends SsaHelper { } } -/** DEPRECATED: Alias for RangeSsa */ -deprecated class RangeSSA = RangeSsa; - private predicate guard_defn(VariableAccess v, Expr guard, BasicBlock b, boolean branch) { guardCondition(guard, v, branch) and guardSuccessor(guard, branch, b) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticSSA.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticSSA.qll index 29580c2c507..1a5a30d1454 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticSSA.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/new/internal/semantic/SemanticSSA.qll @@ -70,6 +70,27 @@ predicate semBackEdge(SemSsaPhiNode phi, SemSsaVariable inp, SemSsaReadPositionP // Conservatively assume that every edge is a back edge if we don't have dominance information. ( phi.getBasicBlock().bbDominates(edge.getOrigBlock()) or + irreducibleSccEdge(phi.getBasicBlock(), edge.getOrigBlock()) or not edge.getOrigBlock().hasDominanceInformation() ) } + +/** + * Holds if the edge from b1 to b2 is part of a multiple-entry cycle in an irreducible control flow + * graph. + * + * An ireducible control flow graph is one where the usual dominance-based back edge detection does + * not work, because there is a cycle with multiple entry points, meaning there are + * mutually-reachable basic blocks where neither dominates the other. For such a graph, we first + * remove all detectable back-edges using the normal condition that the predecessor block is + * dominated by the successor block, then mark all edges in a cycle in the resulting graph as back + * edges. + */ +private predicate irreducibleSccEdge(SemBasicBlock b1, SemBasicBlock b2) { + trimmedEdge(b1, b2) and trimmedEdge+(b2, b1) +} + +private predicate trimmedEdge(SemBasicBlock pred, SemBasicBlock succ) { + pred.getASuccessor() = succ and + not succ.bbDominates(pred) +} diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 1314e6d7553..ca314dcd6d7 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.6.3 + +### New Queries + +* Added a new query, `cpp/overrun-write`, to detect buffer overflows in C-style functions that manipulate buffers. + +## 0.6.2 + +No user-facing changes. + ## 0.6.1 ### New Queries diff --git a/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIs.qll b/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIs.qll index 5135aab8d83..51dad0fc18c 100644 --- a/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIs.qll +++ b/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIs.qll @@ -16,9 +16,6 @@ class UntrustedExternalApiDataNode extends ExternalApiDataNode { DataFlow::Node getAnUntrustedSource() { UntrustedDataToExternalApiFlow::flow(result, this) } } -/** DEPRECATED: Alias for UntrustedExternalApiDataNode */ -deprecated class UntrustedExternalAPIDataNode = UntrustedExternalApiDataNode; - /** An external API which is used with untrusted data. */ private newtype TExternalApi = /** An untrusted API method `m` where untrusted data is passed at `index`. */ @@ -51,6 +48,3 @@ class ExternalApiUsedWithUntrustedData extends TExternalApi { ) } } - -/** DEPRECATED: Alias for ExternalApiUsedWithUntrustedData */ -deprecated class ExternalAPIUsedWithUntrustedData = ExternalApiUsedWithUntrustedData; diff --git a/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIsSpecific.qll b/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIsSpecific.qll index 2505f718bc6..2d9502f2f43 100644 --- a/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIsSpecific.qll +++ b/cpp/ql/src/Security/CWE/CWE-020/ExternalAPIsSpecific.qll @@ -41,9 +41,6 @@ class ExternalApiDataNode extends DataFlow::Node { string getFunctionDescription() { result = this.getExternalFunction().toString() } } -/** DEPRECATED: Alias for ExternalApiDataNode */ -deprecated class ExternalAPIDataNode = ExternalApiDataNode; - /** A configuration for tracking flow from `RemoteFlowSource`s to `ExternalApiDataNode`s. */ deprecated class UntrustedDataToExternalApiConfig extends TaintTracking::Configuration { UntrustedDataToExternalApiConfig() { this = "UntrustedDataToExternalAPIConfig" } @@ -58,9 +55,6 @@ deprecated class UntrustedDataToExternalApiConfig extends TaintTracking::Configu override predicate isSink(DataFlow::Node sink) { sink instanceof ExternalApiDataNode } } -/** DEPRECATED: Alias for UntrustedDataToExternalApiConfig */ -deprecated class UntrustedDataToExternalAPIConfig = UntrustedDataToExternalApiConfig; - /** A configuration for tracking flow from `RemoteFlowSource`s to `ExternalApiDataNode`s. */ private module UntrustedDataToExternalApiConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { diff --git a/cpp/ql/src/Security/CWE/CWE-020/SafeExternalAPIFunction.qll b/cpp/ql/src/Security/CWE/CWE-020/SafeExternalAPIFunction.qll index de59e82e552..aecbe148290 100644 --- a/cpp/ql/src/Security/CWE/CWE-020/SafeExternalAPIFunction.qll +++ b/cpp/ql/src/Security/CWE/CWE-020/SafeExternalAPIFunction.qll @@ -10,9 +10,6 @@ private import semmle.code.cpp.models.interfaces.SideEffect */ abstract class SafeExternalApiFunction extends Function { } -/** DEPRECATED: Alias for SafeExternalApiFunction */ -deprecated class SafeExternalAPIFunction = SafeExternalApiFunction; - /** The default set of "safe" external APIs. */ private class DefaultSafeExternalApiFunction extends SafeExternalApiFunction { DefaultSafeExternalApiFunction() { diff --git a/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIs.qll b/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIs.qll index 5135aab8d83..51dad0fc18c 100644 --- a/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIs.qll +++ b/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIs.qll @@ -16,9 +16,6 @@ class UntrustedExternalApiDataNode extends ExternalApiDataNode { DataFlow::Node getAnUntrustedSource() { UntrustedDataToExternalApiFlow::flow(result, this) } } -/** DEPRECATED: Alias for UntrustedExternalApiDataNode */ -deprecated class UntrustedExternalAPIDataNode = UntrustedExternalApiDataNode; - /** An external API which is used with untrusted data. */ private newtype TExternalApi = /** An untrusted API method `m` where untrusted data is passed at `index`. */ @@ -51,6 +48,3 @@ class ExternalApiUsedWithUntrustedData extends TExternalApi { ) } } - -/** DEPRECATED: Alias for ExternalApiUsedWithUntrustedData */ -deprecated class ExternalAPIUsedWithUntrustedData = ExternalApiUsedWithUntrustedData; diff --git a/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIsSpecific.qll b/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIsSpecific.qll index 93da5497a22..87e1d6bd7c5 100644 --- a/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIsSpecific.qll +++ b/cpp/ql/src/Security/CWE/CWE-020/ir/ExternalAPIsSpecific.qll @@ -41,9 +41,6 @@ class ExternalApiDataNode extends DataFlow::Node { string getFunctionDescription() { result = this.getExternalFunction().toString() } } -/** DEPRECATED: Alias for ExternalApiDataNode */ -deprecated class ExternalAPIDataNode = ExternalApiDataNode; - /** A configuration for tracking flow from `RemoteFlowSource`s to `ExternalApiDataNode`s. */ deprecated class UntrustedDataToExternalApiConfig extends TaintTracking::Configuration { UntrustedDataToExternalApiConfig() { this = "UntrustedDataToExternalAPIConfigIR" } @@ -53,9 +50,6 @@ deprecated class UntrustedDataToExternalApiConfig extends TaintTracking::Configu override predicate isSink(DataFlow::Node sink) { sink instanceof ExternalApiDataNode } } -/** DEPRECATED: Alias for UntrustedDataToExternalApiConfig */ -deprecated class UntrustedDataToExternalAPIConfig = UntrustedDataToExternalApiConfig; - /** A configuration for tracking flow from `RemoteFlowSource`s to `ExternalApiDataNode`s. */ private module UntrustedDataToExternalApiConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } diff --git a/cpp/ql/src/Security/CWE/CWE-020/ir/SafeExternalAPIFunction.qll b/cpp/ql/src/Security/CWE/CWE-020/ir/SafeExternalAPIFunction.qll index de59e82e552..aecbe148290 100644 --- a/cpp/ql/src/Security/CWE/CWE-020/ir/SafeExternalAPIFunction.qll +++ b/cpp/ql/src/Security/CWE/CWE-020/ir/SafeExternalAPIFunction.qll @@ -10,9 +10,6 @@ private import semmle.code.cpp.models.interfaces.SideEffect */ abstract class SafeExternalApiFunction extends Function { } -/** DEPRECATED: Alias for SafeExternalApiFunction */ -deprecated class SafeExternalAPIFunction = SafeExternalApiFunction; - /** The default set of "safe" external APIs. */ private class DefaultSafeExternalApiFunction extends SafeExternalApiFunction { DefaultSafeExternalApiFunction() { diff --git a/cpp/ql/src/Security/CWE/CWE-119/OverrunWriteProductFlow.ql b/cpp/ql/src/Security/CWE/CWE-119/OverrunWriteProductFlow.ql index 0d8648aac0a..a9af2d08f51 100644 --- a/cpp/ql/src/Security/CWE/CWE-119/OverrunWriteProductFlow.ql +++ b/cpp/ql/src/Security/CWE/CWE-119/OverrunWriteProductFlow.ql @@ -5,7 +5,7 @@ * @kind path-problem * @problem.severity error * @security-severity 9.3 - * @precision medium + * @precision low * @id cpp/overrun-write * @tags reliability * security diff --git a/cpp/ql/src/change-notes/released/0.6.2.md b/cpp/ql/src/change-notes/released/0.6.2.md new file mode 100644 index 00000000000..43f80640fc5 --- /dev/null +++ b/cpp/ql/src/change-notes/released/0.6.2.md @@ -0,0 +1,3 @@ +## 0.6.2 + +No user-facing changes. diff --git a/cpp/ql/src/change-notes/2023-05-24-overrun-write-query.md b/cpp/ql/src/change-notes/released/0.6.3.md similarity index 80% rename from cpp/ql/src/change-notes/2023-05-24-overrun-write-query.md rename to cpp/ql/src/change-notes/released/0.6.3.md index 32195223fcd..d9421d55250 100644 --- a/cpp/ql/src/change-notes/2023-05-24-overrun-write-query.md +++ b/cpp/ql/src/change-notes/released/0.6.3.md @@ -1,4 +1,5 @@ ---- -category: newQuery ---- +## 0.6.3 + +### New Queries + * Added a new query, `cpp/overrun-write`, to detect buffer overflows in C-style functions that manipulate buffers. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 80fb0899f64..b7dafe32c5d 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.1 +lastReleaseVersion: 0.6.3 diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-190/IfStatementAdditionOverflow.qhelp b/cpp/ql/src/experimental/Security/CWE/CWE-190/IfStatementAdditionOverflow.qhelp new file mode 100644 index 00000000000..72491838fd2 --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-190/IfStatementAdditionOverflow.qhelp @@ -0,0 +1,33 @@ + + + + +

+Detects if (a+b>c) a=c-b, which incorrectly implements +a = min(a,c-b) if a+b overflows. +

+

+Also detects variants such as if (b+a>c) a=c-b (swapped +terms in addition), if (a+b>c) { a=c-b } (assignment +inside block), c<a+b (swapped operands), and +>=, <, <= instead of +> (all operators). +

+

+This integer overflow is the root cause of the buffer overflow in +the SHA-3 reference implementation (CVE-2022-37454). +

+
+ +

+Replace by if (a>c-b) a=c-b. This avoids the overflow +and makes it easy to see that a = min(a,c-b). +

+
+ +
  • CVE-2022-37454: The Keccak XKCP SHA-3 reference implementation before fdc6fef has an integer overflow and resultant buffer overflow that allows attackers to execute arbitrary code or eliminate expected cryptographic properties. This occurs in the sponge function interface.
  • +
  • GitHub Advisory Database: CVE-2022-37454: Buffer overflow in sponge queue functions
  • +
    +
    diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-190/IfStatementAdditionOverflow.ql b/cpp/ql/src/experimental/Security/CWE/CWE-190/IfStatementAdditionOverflow.ql new file mode 100644 index 00000000000..3667f068a25 --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-190/IfStatementAdditionOverflow.ql @@ -0,0 +1,42 @@ +/** + * @name Integer addition may overflow inside if statement + * @description Writing 'if (a+b>c) a=c-b' incorrectly implements + * 'a = min(a,c-b)' if 'a+b' overflows. This integer + * overflow is the root cause of the buffer overflow + * in the SHA-3 reference implementation (CVE-2022-37454). + * @kind problem + * @problem.severity warning + * @id cpp/if-statement-addition-overflow + * @tags: experimental + * correctness + * security + * external/cwe/cwe-190 + */ + +import cpp +import semmle.code.cpp.valuenumbering.GlobalValueNumbering +import semmle.code.cpp.valuenumbering.HashCons +import semmle.code.cpp.rangeanalysis.SimpleRangeAnalysis +import semmle.code.cpp.controlflow.Guards + +from + GuardCondition guard, Expr expr, ExprStmt exprstmt, BasicBlock block, AssignExpr assignexpr, + AddExpr addexpr, SubExpr subexpr +where + (guard.ensuresLt(expr, addexpr, 0, block, _) or guard.ensuresLt(addexpr, expr, 0, block, _)) and + addexpr.getUnspecifiedType() instanceof IntegralType and + exprMightOverflowPositively(addexpr) and + block.getANode() = exprstmt and + exprstmt.getExpr() = assignexpr and + assignexpr.getRValue() = subexpr and + ( + hashCons(addexpr.getLeftOperand()) = hashCons(assignexpr.getLValue()) and + globalValueNumber(addexpr.getRightOperand()) = globalValueNumber(subexpr.getRightOperand()) + or + hashCons(addexpr.getRightOperand()) = hashCons(assignexpr.getLValue()) and + globalValueNumber(addexpr.getLeftOperand()) = globalValueNumber(subexpr.getRightOperand()) + ) and + globalValueNumber(expr) = globalValueNumber(subexpr.getLeftOperand()) +select guard, + "\"if (a+b>c) a=c-b\" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as \"if (a>c-b) a=c-b\" which avoids the overflow.", + addexpr, "addition" diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-193/ConstantSizeArrayOffByOne.ql b/cpp/ql/src/experimental/Security/CWE/CWE-193/ConstantSizeArrayOffByOne.ql index d6bac268b5d..42623d37328 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-193/ConstantSizeArrayOffByOne.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-193/ConstantSizeArrayOffByOne.ql @@ -78,21 +78,45 @@ predicate isInvalidPointerDerefSink2(DataFlow::Node sink, Instruction i, string ) } -predicate pointerArithOverflow0( - PointerArithmeticInstruction pai, Variable v, int size, int bound, int delta -) { - v.getUnspecifiedType().(ArrayType).getByteSize() / pai.getElementSize() = size and - semBounded(getSemanticExpr(pai.getRight()), any(SemZeroBound b), bound, true, _) and - delta = bound - size and - delta >= 0 and - size != 0 and - size != 1 +predicate arrayTypeCand(ArrayType arrayType) { + any(Variable v).getUnspecifiedType() = arrayType and + exists(arrayType.getByteSize()) +} + +bindingset[baseTypeSize] +pragma[inline_late] +predicate arrayTypeHasSizes(ArrayType arr, int baseTypeSize, int size) { + arrayTypeCand(arr) and + arr.getByteSize() / baseTypeSize = size +} + +bindingset[pai] +pragma[inline_late] +predicate constantUpperBounded(PointerArithmeticInstruction pai, int delta) { + semBounded(getSemanticExpr(pai.getRight()), any(SemZeroBound b), delta, true, _) +} + +bindingset[pai, size] +predicate pointerArithOverflow0Impl(PointerArithmeticInstruction pai, int size, int delta) { + exists(int bound | + constantUpperBounded(pai, bound) and + delta = bound - size and + delta >= 0 and + size != 0 and + size != 1 + ) +} + +pragma[nomagic] +predicate pointerArithOverflow0(PointerArithmeticInstruction pai, int delta) { + exists(int size | + arrayTypeHasSizes(_, pai.getElementSize(), size) and + pointerArithOverflow0Impl(pai, size, delta) + ) } module PointerArithmeticToDerefConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - pointerArithOverflow0(source.asInstruction(), _, _, _, _) - } + predicate isSource(DataFlow::Node source) { pointerArithOverflow0(source.asInstruction(), _) } predicate isBarrierIn(DataFlow::Node node) { isSource(node) } @@ -103,30 +127,38 @@ module PointerArithmeticToDerefConfig implements DataFlow::ConfigSig { module PointerArithmeticToDerefFlow = DataFlow::Global; -predicate pointerArithOverflow( - PointerArithmeticInstruction pai, Variable v, int size, int bound, int delta -) { - pointerArithOverflow0(pai, v, size, bound, delta) and +predicate pointerArithOverflow(PointerArithmeticInstruction pai, int delta) { + pointerArithOverflow0(pai, delta) and PointerArithmeticToDerefFlow::flow(DataFlow::instructionNode(pai), _) } +bindingset[v] +predicate finalPointerArithOverflow(Variable v, PointerArithmeticInstruction pai, int delta) { + exists(int size | + arrayTypeHasSizes(pragma[only_bind_out](v.getUnspecifiedType()), pai.getElementSize(), size) and + pointerArithOverflow0Impl(pai, size, delta) + ) +} + +predicate isSourceImpl(DataFlow::Node source, Variable v) { + ( + source.asInstruction().(FieldAddressInstruction).getField() = v + or + source.asInstruction().(VariableAddressInstruction).getAstVariable() = v + ) and + arrayTypeCand(v.getUnspecifiedType()) +} + module ArrayAddressToDerefConfig implements DataFlow::StateConfigSig { newtype FlowState = - additional TArray(Variable v) { pointerArithOverflow(_, v, _, _, _) } or + additional TArray() or additional TOverflowArithmetic(PointerArithmeticInstruction pai) { - pointerArithOverflow(pai, _, _, _, _) + pointerArithOverflow(pai, _) } predicate isSource(DataFlow::Node source, FlowState state) { - exists(Variable v | - ( - source.asInstruction().(FieldAddressInstruction).getField() = v - or - source.asInstruction().(VariableAddressInstruction).getAstVariable() = v - ) and - exists(v.getUnspecifiedType().(ArrayType).getArraySize()) and - state = TArray(v) - ) + isSourceImpl(source, _) and + state = TArray() } predicate isSink(DataFlow::Node sink, FlowState state) { @@ -145,12 +177,12 @@ module ArrayAddressToDerefConfig implements DataFlow::StateConfigSig { predicate isAdditionalFlowStep( DataFlow::Node node1, FlowState state1, DataFlow::Node node2, FlowState state2 ) { - exists(PointerArithmeticInstruction pai, Variable v, int size, int delta | - state1 = TArray(v) and + exists(PointerArithmeticInstruction pai | + state1 = TArray() and state2 = TOverflowArithmetic(pai) and pai.getLeft() = node1.asInstruction() and node2.asInstruction() = pai and - pointerArithOverflow(pai, v, size, _, delta) + pointerArithOverflow(pai, _) ) } } @@ -161,11 +193,11 @@ from Variable v, ArrayAddressToDerefFlow::PathNode source, PointerArithmeticInstruction pai, ArrayAddressToDerefFlow::PathNode sink, Instruction deref, string operation, int delta where - ArrayAddressToDerefFlow::flowPath(source, sink) and + ArrayAddressToDerefFlow::flowPath(pragma[only_bind_into](source), pragma[only_bind_into](sink)) and isInvalidPointerDerefSink2(sink.getNode(), deref, operation) and - source.getState() = ArrayAddressToDerefConfig::TArray(v) and - sink.getState() = ArrayAddressToDerefConfig::TOverflowArithmetic(pai) and - pointerArithOverflow(pai, v, _, _, delta) + pragma[only_bind_out](sink.getState()) = ArrayAddressToDerefConfig::TOverflowArithmetic(pai) and + isSourceImpl(source.getNode(), v) and + finalPointerArithOverflow(v, pai, delta) select pai, source, sink, "This pointer arithmetic may have an off-by-" + (delta + 1) + " error allowing it to overrun $@ at this $@.", v, v.getName(), deref, operation diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-193/InvalidPointerDeref.ql b/cpp/ql/src/experimental/Security/CWE/CWE-193/InvalidPointerDeref.ql index 07189cea9d9..478ab2cc92a 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-193/InvalidPointerDeref.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-193/InvalidPointerDeref.ql @@ -81,8 +81,8 @@ predicate hasSize(HeuristicAllocationExpr alloc, DataFlow::Node n, int state) { * ``` * * We do this by splitting the task up into two configurations: - * 1. `AllocToInvalidPointerConf` find flow from `malloc(size)` to `begin + size`, and - * 2. `InvalidPointerToDerefConf` finds flow from `begin + size` to an `end` (on line 3). + * 1. `AllocToInvalidPointerConfig` find flow from `malloc(size)` to `begin + size`, and + * 2. `InvalidPointerToDerefConfig` finds flow from `begin + size` to an `end` (on line 3). * * Finally, the range-analysis library will find a load from (or store to) an address that * is non-strictly upper-bounded by `end` (which in this case is `*p`). @@ -180,14 +180,33 @@ predicate isSinkImpl( } /** - * Holds if `sink` is a sink for `InvalidPointerToDerefConf` and `i` is a `StoreInstruction` that + * Yields any instruction that is control-flow reachable from `instr`. + */ +bindingset[instr, result] +pragma[inline_late] +Instruction getASuccessor(Instruction instr) { + exists(IRBlock b, int instrIndex, int resultIndex | + result.getBlock() = b and + instr.getBlock() = b and + b.getInstruction(instrIndex) = instr and + b.getInstruction(resultIndex) = result + | + resultIndex >= instrIndex + ) + or + instr.getBlock().getASuccessor+() = result.getBlock() +} + +/** + * Holds if `sink` is a sink for `InvalidPointerToDerefConfig` and `i` is a `StoreInstruction` that * writes to an address that non-strictly upper-bounds `sink`, or `i` is a `LoadInstruction` that * reads from an address that non-strictly upper-bounds `sink`. */ pragma[inline] -predicate isInvalidPointerDerefSink(DataFlow::Node sink, Instruction i, string operation) { - exists(AddressOperand addr, int delta | - bounded1(addr.getDef(), sink.asInstruction(), delta) and +predicate isInvalidPointerDerefSink(DataFlow::Node sink, Instruction i, string operation, int delta) { + exists(AddressOperand addr, Instruction s | + s = sink.asInstruction() and + bounded1(addr.getDef(), s, delta) and delta >= 0 and i.getAnOperand() = addr | @@ -201,13 +220,13 @@ predicate isInvalidPointerDerefSink(DataFlow::Node sink, Instruction i, string o /** * A configuration to track flow from a pointer-arithmetic operation found - * by `AllocToInvalidPointerConf` to a dereference of the pointer. + * by `AllocToInvalidPointerConfig` to a dereference of the pointer. */ module InvalidPointerToDerefConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { invalidPointerToDerefSource(_, source, _) } pragma[inline] - predicate isSink(DataFlow::Node sink) { isInvalidPointerDerefSink(sink, _, _) } + predicate isSink(DataFlow::Node sink) { isInvalidPointerDerefSink(sink, _, _, _) } predicate isBarrier(DataFlow::Node node) { node = any(DataFlow::SsaPhiNode phi | not phi.isPhiRead()).getAnInput(true) @@ -237,17 +256,18 @@ predicate invalidPointerToDerefSource( } newtype TMergedPathNode = - // The path nodes computed by the first projection of `AllocToInvalidPointerConf` + // The path nodes computed by the first projection of `AllocToInvalidPointerConfig` TPathNode1(AllocToInvalidPointerFlow::PathNode1 p) or - // The path nodes computed by `InvalidPointerToDerefConf` + // The path nodes computed by `InvalidPointerToDerefConfig` TPathNode3(InvalidPointerToDerefFlow::PathNode p) or - // The read/write that uses the invalid pointer identified by `InvalidPointerToDerefConf`. - // This one is needed because the sink identified by `InvalidPointerToDerefConf` is the + // The read/write that uses the invalid pointer identified by `InvalidPointerToDerefConfig`. + // This one is needed because the sink identified by `InvalidPointerToDerefConfig` is the // pointer, but we want to raise an alert at the dereference. TPathNodeSink(Instruction i) { exists(DataFlow::Node n | InvalidPointerToDerefFlow::flowTo(n) and - isInvalidPointerDerefSink(n, i, _) + isInvalidPointerDerefSink(n, i, _, _) and + i = getASuccessor(n.asInstruction()) ) } @@ -321,7 +341,15 @@ query predicate edges(MergedPathNode node1, MergedPathNode node2) { or node1.asPathNode3().getASuccessor() = node2.asPathNode3() or - joinOn2(node1.asPathNode3(), node2.asSinkNode(), _) + joinOn2(node1.asPathNode3(), node2.asSinkNode(), _, _) +} + +query predicate nodes(MergedPathNode n, string key, string val) { + AllocToInvalidPointerFlow::PathGraph1::nodes(n.asPathNode1(), key, val) + or + InvalidPointerToDerefFlow::PathGraph::nodes(n.asPathNode3(), key, val) + or + key = "semmle.label" and val = n.asSinkNode().toString() } query predicate subpaths( @@ -335,8 +363,8 @@ query predicate subpaths( } /** - * Holds if `p1` is a sink of `AllocToInvalidPointerConf` and `p2` is a source - * of `InvalidPointerToDerefConf`, and they are connected through `pai`. + * Holds if `p1` is a sink of `AllocToInvalidPointerConfig` and `p2` is a source + * of `InvalidPointerToDerefConfig`, and they are connected through `pai`. */ predicate joinOn1( PointerArithmeticInstruction pai, AllocToInvalidPointerFlow::PathNode1 p1, @@ -347,34 +375,38 @@ predicate joinOn1( } /** - * Holds if `p1` is a sink of `InvalidPointerToDerefConf` and `i` is the instruction + * Holds if `p1` is a sink of `InvalidPointerToDerefConfig` and `i` is the instruction * that dereferences `p1`. The string `operation` describes whether the `i` is * a `StoreInstruction` or `LoadInstruction`. */ pragma[inline] -predicate joinOn2(InvalidPointerToDerefFlow::PathNode p1, Instruction i, string operation) { - isInvalidPointerDerefSink(p1.getNode(), i, operation) +predicate joinOn2(InvalidPointerToDerefFlow::PathNode p1, Instruction i, string operation, int delta) { + isInvalidPointerDerefSink(p1.getNode(), i, operation, delta) } predicate hasFlowPath( MergedPathNode source1, MergedPathNode sink, InvalidPointerToDerefFlow::PathNode source3, - PointerArithmeticInstruction pai, string operation + PointerArithmeticInstruction pai, string operation, int delta ) { exists(InvalidPointerToDerefFlow::PathNode sink3, AllocToInvalidPointerFlow::PathNode1 sink1 | AllocToInvalidPointerFlow::flowPath(source1.asPathNode1(), _, sink1, _) and joinOn1(pai, sink1, source3) and InvalidPointerToDerefFlow::flowPath(source3, sink3) and - joinOn2(sink3, sink.asSinkNode(), operation) + joinOn2(sink3, sink.asSinkNode(), operation, delta) ) } from - MergedPathNode source, MergedPathNode sink, int k, string kstr, - InvalidPointerToDerefFlow::PathNode source3, PointerArithmeticInstruction pai, string operation, - Expr offset, DataFlow::Node n + MergedPathNode source, MergedPathNode sink, int k, string kstr, PointerArithmeticInstruction pai, + string operation, Expr offset, DataFlow::Node n where - hasFlowPath(source, sink, source3, pai, operation) and - invalidPointerToDerefSource(pai, source3.getNode(), k) and + k = + min(int k2, int k3, InvalidPointerToDerefFlow::PathNode source3 | + hasFlowPath(source, sink, source3, pai, operation, k3) and + invalidPointerToDerefSource(pai, source3.getNode(), k2) + | + k2 + k3 + ) and offset = pai.getRight().getUnconvertedResultExpression() and n = source.asPathNode1().getNode() and if k = 0 then kstr = "" else kstr = " + " + k diff --git a/cpp/ql/src/external/CodeDuplication.qll b/cpp/ql/src/external/CodeDuplication.qll deleted file mode 100644 index be2dc162e74..00000000000 --- a/cpp/ql/src/external/CodeDuplication.qll +++ /dev/null @@ -1,373 +0,0 @@ -/** Provides classes for detecting duplicate or similar code. */ - -import cpp - -deprecated private newtype TDuplicationOrSimilarity = MKDuplicationOrSimilarity() - -/** - * DEPRECATED: This class is no longer used. - * - * A token block used for detection of duplicate and similar code. - */ -deprecated class Copy extends TDuplicationOrSimilarity { - /** Gets the index of the token in this block starting at the location `loc`, if any. */ - int tokenStartingAt(Location loc) { none() } - - /** Gets the index of the token in this block ending at the location `loc`, if any. */ - int tokenEndingAt(Location loc) { none() } - - /** Gets the line on which the first token in this block starts. */ - int sourceStartLine() { none() } - - /** Gets the column on which the first token in this block starts. */ - int sourceStartColumn() { none() } - - /** Gets the line on which the last token in this block ends. */ - int sourceEndLine() { none() } - - /** Gets the column on which the last token in this block ends. */ - int sourceEndColumn() { none() } - - /** Gets the number of lines containing at least (part of) one token in this block. */ - int sourceLines() { result = this.sourceEndLine() + 1 - this.sourceStartLine() } - - /** Gets an opaque identifier for the equivalence class of this block. */ - int getEquivalenceClass() { none() } - - /** Gets the source file in which this block appears. */ - File sourceFile() { none() } - - /** - * Holds if this element is at the specified location. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `filepath`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - this.sourceFile().getAbsolutePath() = filepath and - startline = this.sourceStartLine() and - startcolumn = this.sourceStartColumn() and - endline = this.sourceEndLine() and - endcolumn = this.sourceEndColumn() - } - - /** Gets a textual representation of this element. */ - string toString() { none() } -} - -/** - * DEPRECATED: This class is no longer used. - * - * A block of duplicated code. - */ -deprecated class DuplicateBlock extends Copy { - override string toString() { - result = "Duplicate code: " + this.sourceLines() + " duplicated lines." - } -} - -/** - * DEPRECATED: This class is no longer used. - * - * A block of similar code. - */ -deprecated class SimilarBlock extends Copy { - override string toString() { - result = "Similar code: " + this.sourceLines() + " almost duplicated lines." - } -} - -/** - * DEPRECATED: The `CodeDuplication` library will be removed in a future release. - * - * Gets a function with a body and a location. - */ -deprecated FunctionDeclarationEntry sourceMethod() { - result.isDefinition() and - exists(result.getLocation()) and - numlines(unresolveElement(result.getFunction()), _, _, _) -} - -/** - * DEPRECATED: The `CodeDuplication` library will be removed in a future release. - * - * Gets the number of member functions in `c` with a body and a location. - */ -deprecated int numberOfSourceMethods(Class c) { - result = - count(FunctionDeclarationEntry m | - m = sourceMethod() and - m.getFunction().getDeclaringType() = c - ) -} - -deprecated private predicate blockCoversStatement(int equivClass, int first, int last, Stmt stmt) { - exists(DuplicateBlock b, Location loc | - stmt.getLocation() = loc and - first = b.tokenStartingAt(loc) and - last = b.tokenEndingAt(loc) and - b.getEquivalenceClass() = equivClass - ) -} - -deprecated private Stmt statementInMethod(FunctionDeclarationEntry m) { - result.getParent+() = m.getBlock() and - not result.getLocation() instanceof UnknownStmtLocation and - not result instanceof BlockStmt -} - -deprecated private predicate duplicateStatement( - FunctionDeclarationEntry m1, FunctionDeclarationEntry m2, Stmt s1, Stmt s2 -) { - exists(int equivClass, int first, int last | - s1 = statementInMethod(m1) and - s2 = statementInMethod(m2) and - blockCoversStatement(equivClass, first, last, s1) and - blockCoversStatement(equivClass, first, last, s2) and - s1 != s2 and - m1 != m2 - ) -} - -/** - * DEPRECATED: Information on duplicated statements is no longer available. - * - * Holds if `m1` is a function with `total` lines, and `m2` is a function - * that has `duplicate` lines in common with `m1`. - */ -deprecated predicate duplicateStatements( - FunctionDeclarationEntry m1, FunctionDeclarationEntry m2, int duplicate, int total -) { - duplicate = strictcount(Stmt s | duplicateStatement(m1, m2, s, _)) and - total = strictcount(statementInMethod(m1)) -} - -/** - * DEPRECATED: Information on duplicated methods is no longer available. - * - * Holds if `m` and other are identical functions. - */ -deprecated predicate duplicateMethod(FunctionDeclarationEntry m, FunctionDeclarationEntry other) { - exists(int total | duplicateStatements(m, other, total, total)) -} - -/** - * DEPRECATED: Information on similar lines is no longer available. - * - * INTERNAL: do not use. - * - * Holds if `line` in `f` is similar to a line somewhere else. - */ -deprecated predicate similarLines(File f, int line) { - exists(SimilarBlock b | b.sourceFile() = f and line in [b.sourceStartLine() .. b.sourceEndLine()]) -} - -deprecated private predicate similarLinesPerEquivalenceClass(int equivClass, int lines, File f) { - lines = - strictsum(SimilarBlock b, int toSum | - (b.sourceFile() = f and b.getEquivalenceClass() = equivClass) and - toSum = b.sourceLines() - | - toSum - ) -} - -deprecated private predicate similarLinesCoveredFiles(File f, File otherFile) { - exists(int numLines | numLines = f.getMetrics().getNumberOfLines() | - exists(int coveredApprox | - coveredApprox = - strictsum(int num | - exists(int equivClass | - similarLinesPerEquivalenceClass(equivClass, num, f) and - similarLinesPerEquivalenceClass(equivClass, num, otherFile) and - f != otherFile - ) - ) and - (coveredApprox * 100) / numLines > 75 - ) - ) -} - -/** - * DEPRECATED: Information on similar lines is no longer available. - * - * Holds if `coveredLines` lines of `f` are similar to lines in `otherFile`. - */ -deprecated predicate similarLinesCovered(File f, int coveredLines, File otherFile) { - exists(int numLines | numLines = f.getMetrics().getNumberOfLines() | - similarLinesCoveredFiles(f, otherFile) and - exists(int notCovered | - notCovered = - count(int j | - j in [1 .. numLines] and - not similarLines(f, j) - ) and - coveredLines = numLines - notCovered - ) - ) -} - -/** - * DEPRECATED: Information on duplicate lines is no longer available. - * - * INTERNAL: do not use. - * - * Holds if `line` in `f` is duplicated by a line somewhere else. - */ -deprecated predicate duplicateLines(File f, int line) { - exists(DuplicateBlock b | - b.sourceFile() = f and line in [b.sourceStartLine() .. b.sourceEndLine()] - ) -} - -deprecated private predicate duplicateLinesPerEquivalenceClass(int equivClass, int lines, File f) { - lines = - strictsum(DuplicateBlock b, int toSum | - (b.sourceFile() = f and b.getEquivalenceClass() = equivClass) and - toSum = b.sourceLines() - | - toSum - ) -} - -/** - * DEPRECATED: Information on duplicate lines is no longer available. - * - * Holds if `coveredLines` lines of `f` are duplicates of lines in `otherFile`. - */ -deprecated predicate duplicateLinesCovered(File f, int coveredLines, File otherFile) { - exists(int numLines | numLines = f.getMetrics().getNumberOfLines() | - exists(int coveredApprox | - coveredApprox = - strictsum(int num | - exists(int equivClass | - duplicateLinesPerEquivalenceClass(equivClass, num, f) and - duplicateLinesPerEquivalenceClass(equivClass, num, otherFile) and - f != otherFile - ) - ) and - (coveredApprox * 100) / numLines > 75 - ) and - exists(int notCovered | - notCovered = - count(int j | - j in [1 .. numLines] and - not duplicateLines(f, j) - ) and - coveredLines = numLines - notCovered - ) - ) -} - -/** - * DEPRECATED: Information on similar files is no longer available. - * - * Holds if most of `f` (`percent`%) is similar to `other`. - */ -deprecated predicate similarFiles(File f, File other, int percent) { - exists(int covered, int total | - similarLinesCovered(f, covered, other) and - total = f.getMetrics().getNumberOfLines() and - covered * 100 / total = percent and - percent > 80 - ) and - not duplicateFiles(f, other, _) -} - -/** - * DEPRECATED: Information on duplicate files is no longer available. - * - * Holds if most of `f` (`percent`%) is duplicated by `other`. - */ -deprecated predicate duplicateFiles(File f, File other, int percent) { - exists(int covered, int total | - duplicateLinesCovered(f, covered, other) and - total = f.getMetrics().getNumberOfLines() and - covered * 100 / total = percent and - percent > 70 - ) -} - -/** - * DEPRECATED: Information on duplicate classes is no longer available. - * - * Holds if most member functions of `c` (`numDup` out of `total`) are - * duplicates of member functions in `other`. - */ -deprecated predicate mostlyDuplicateClassBase(Class c, Class other, int numDup, int total) { - numDup = - strictcount(FunctionDeclarationEntry m1 | - exists(FunctionDeclarationEntry m2 | - duplicateMethod(m1, m2) and - m1 = sourceMethod() and - exists(Function f | f = m1.getFunction() and f.getDeclaringType() = c) and - exists(Function f | f = m2.getFunction() and f.getDeclaringType() = other) and - c != other - ) - ) and - total = numberOfSourceMethods(c) and - (numDup * 100) / total > 80 -} - -/** - * DEPRECATED: Information on duplicate classes is no longer available. - * - * Holds if most member functions of `c` are duplicates of member functions in - * `other`. Provides the human-readable `message` to describe the amount of - * duplication. - */ -deprecated predicate mostlyDuplicateClass(Class c, Class other, string message) { - exists(int numDup, int total | - mostlyDuplicateClassBase(c, other, numDup, total) and - ( - total != numDup and - exists(string s1, string s2, string s3, string name | - s1 = " out of " and - s2 = " methods in " and - s3 = " are duplicated in $@." and - name = c.getName() - | - message = numDup + s1 + total + s2 + name + s3 - ) - or - total = numDup and - exists(string s1, string s2, string name | - s1 = "All methods in " and s2 = " are identical in $@." and name = c.getName() - | - message = s1 + name + s2 - ) - ) - ) -} - -/** - * DEPRECATED: Information on file duplication is no longer available. - * - * Holds if `f` and `other` are similar or duplicates. - */ -deprecated predicate fileLevelDuplication(File f, File other) { - similarFiles(f, other, _) or duplicateFiles(f, other, _) -} - -/** - * DEPRECATED: Information on class duplication is no longer available. - * - * Holds if most member functions of `c` are duplicates of member functions in - * `other`. - */ -deprecated predicate classLevelDuplication(Class c, Class other) { - mostlyDuplicateClass(c, other, _) -} - -/** - * DEPRECATED: The CodeDuplication library will be removed in a future release. - * - * Holds if `line` in `f` should be allowed to be duplicated. This is the case - * for `#include` directives. - */ -deprecated predicate whitelistedLineForDuplication(File f, int line) { - exists(Include i | i.getFile() = f and i.getLocation().getStartLine() = line) -} diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 4df58a2da69..077b34194fb 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.6.2-dev +version: 0.6.4-dev groups: - cpp - queries diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-190/IfStatementAdditionOverflow/IfStatementAdditionOverflow.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-190/IfStatementAdditionOverflow/IfStatementAdditionOverflow.expected new file mode 100644 index 00000000000..2e31f173faa --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-190/IfStatementAdditionOverflow/IfStatementAdditionOverflow.expected @@ -0,0 +1,35 @@ +| test.cpp:18:6:18:10 | ... > ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:18:6:18:8 | ... + ... | addition | +| test.cpp:19:6:19:10 | ... > ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:19:6:19:8 | ... + ... | addition | +| test.cpp:20:6:20:10 | ... > ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:20:6:20:8 | ... + ... | addition | +| test.cpp:21:6:21:10 | ... > ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:21:6:21:8 | ... + ... | addition | +| test.cpp:22:6:22:10 | ... > ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:22:8:22:10 | ... + ... | addition | +| test.cpp:23:6:23:10 | ... > ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:23:8:23:10 | ... + ... | addition | +| test.cpp:24:6:24:10 | ... > ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:24:8:24:10 | ... + ... | addition | +| test.cpp:25:6:25:10 | ... > ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:25:8:25:10 | ... + ... | addition | +| test.cpp:27:6:27:11 | ... >= ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:27:6:27:8 | ... + ... | addition | +| test.cpp:28:6:28:11 | ... >= ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:28:6:28:8 | ... + ... | addition | +| test.cpp:29:6:29:11 | ... >= ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:29:6:29:8 | ... + ... | addition | +| test.cpp:30:6:30:11 | ... >= ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:30:6:30:8 | ... + ... | addition | +| test.cpp:31:6:31:11 | ... >= ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:31:9:31:11 | ... + ... | addition | +| test.cpp:32:6:32:11 | ... >= ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:32:9:32:11 | ... + ... | addition | +| test.cpp:33:6:33:11 | ... >= ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:33:9:33:11 | ... + ... | addition | +| test.cpp:34:6:34:11 | ... >= ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:34:9:34:11 | ... + ... | addition | +| test.cpp:36:6:36:10 | ... < ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:36:6:36:8 | ... + ... | addition | +| test.cpp:37:6:37:10 | ... < ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:37:6:37:8 | ... + ... | addition | +| test.cpp:38:6:38:10 | ... < ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:38:6:38:8 | ... + ... | addition | +| test.cpp:39:6:39:10 | ... < ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:39:6:39:8 | ... + ... | addition | +| test.cpp:40:6:40:10 | ... < ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:40:8:40:10 | ... + ... | addition | +| test.cpp:41:6:41:10 | ... < ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:41:8:41:10 | ... + ... | addition | +| test.cpp:42:6:42:10 | ... < ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:42:8:42:10 | ... + ... | addition | +| test.cpp:43:6:43:10 | ... < ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:43:8:43:10 | ... + ... | addition | +| test.cpp:45:6:45:11 | ... <= ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:45:6:45:8 | ... + ... | addition | +| test.cpp:46:6:46:11 | ... <= ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:46:6:46:8 | ... + ... | addition | +| test.cpp:47:6:47:11 | ... <= ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:47:6:47:8 | ... + ... | addition | +| test.cpp:48:6:48:11 | ... <= ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:48:6:48:8 | ... + ... | addition | +| test.cpp:49:6:49:11 | ... <= ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:49:9:49:11 | ... + ... | addition | +| test.cpp:50:6:50:11 | ... <= ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:50:9:50:11 | ... + ... | addition | +| test.cpp:51:6:51:11 | ... <= ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:51:9:51:11 | ... + ... | addition | +| test.cpp:52:6:52:11 | ... <= ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:52:9:52:11 | ... + ... | addition | +| test.cpp:54:6:54:10 | ... > ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:54:6:54:8 | ... + ... | addition | +| test.cpp:61:6:61:11 | ... <= ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:61:6:61:8 | ... + ... | addition | +| test.cpp:62:6:62:11 | ... <= ... | "if (a+b>c) a=c-b" was detected where the $@ may potentially overflow/wraparound. The code can be rewritten as "if (a>c-b) a=c-b" which avoids the overflow. | test.cpp:62:6:62:8 | ... + ... | addition | diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-190/IfStatementAdditionOverflow/IfStatementAdditionOverflow.qlref b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-190/IfStatementAdditionOverflow/IfStatementAdditionOverflow.qlref new file mode 100644 index 00000000000..0873051581d --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-190/IfStatementAdditionOverflow/IfStatementAdditionOverflow.qlref @@ -0,0 +1 @@ +experimental/Security/CWE/CWE-190/IfStatementAdditionOverflow.ql diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-190/IfStatementAdditionOverflow/test.cpp b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-190/IfStatementAdditionOverflow/test.cpp new file mode 100644 index 00000000000..7c5ab91832e --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-190/IfStatementAdditionOverflow/test.cpp @@ -0,0 +1,63 @@ + +int getAnInt(); +double getADouble(); +unsigned short getAnUnsignedShort(); + +void test() +{ + int a = getAnInt(); + int b = getAnInt(); + int c = getAnInt(); + int x = getAnInt(); + int y = getAnInt(); + double d = getADouble(); + unsigned short a1 = getAnUnsignedShort(); + unsigned short b1 = getAnUnsignedShort(); + unsigned short c1 = getAnUnsignedShort(); + + if (a+b>c) a = c-b; // BAD + if (a+b>c) { a = c-b; } // BAD + if (b+a>c) a = c-b; // BAD + if (b+a>c) { a = c-b; } // BAD + if (c>a+b) a = c-b; // BAD + if (c>a+b) { a = c-b; } // BAD + if (c>b+a) a = c-b; // BAD + if (c>b+a) { a = c-b; } // BAD + + if (a+b>=c) a = c-b; // BAD + if (a+b>=c) { a = c-b; } // BAD + if (b+a>=c) a = c-b; // BAD + if (b+a>=c) { a = c-b; } // BAD + if (c>=a+b) a = c-b; // BAD + if (c>=a+b) { a = c-b; } // BAD + if (c>=b+a) a = c-b; // BAD + if (c>=b+a) { a = c-b; } // BAD + + if (a+bd) a = d-b; // BAD + if (a+(double)b>c) a = c-b; // GOOD + if (a+(-x)>c) a = c-(-y); // GOOD + if (a+b>c) { b++; a = c-b; } // GOOD + if (a+d>c) a = c-d; // GOOD + if (a1+b1>c1) a1 = c1-b1; // GOOD + + if (a+b<=c) { /* ... */ } else { a = c-b; } // BAD + if (a+b<=c) { return; } a = c-b; // BAD +} diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/ConstantSizeArrayOffByOne.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/ConstantSizeArrayOffByOne.expected index 1555cd3f243..4f5031a0a6e 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/ConstantSizeArrayOffByOne.expected +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/ConstantSizeArrayOffByOne.expected @@ -11,8 +11,13 @@ edges | test.cpp:77:32:77:34 | buf | test.cpp:77:26:77:44 | & ... | | test.cpp:79:27:79:34 | buf | test.cpp:70:33:70:33 | p | | test.cpp:79:32:79:34 | buf | test.cpp:79:27:79:34 | buf | +| test.cpp:85:34:85:36 | buf | test.cpp:87:5:87:31 | access to array | | test.cpp:85:34:85:36 | buf | test.cpp:88:5:88:27 | access to array | | test.cpp:128:9:128:11 | arr | test.cpp:128:9:128:14 | access to array | +| test.cpp:134:25:134:27 | arr | test.cpp:136:9:136:16 | ... += ... | +| test.cpp:136:9:136:16 | ... += ... | test.cpp:138:13:138:15 | arr | +| test.cpp:143:18:143:21 | asdf | test.cpp:134:25:134:27 | arr | +| test.cpp:143:18:143:21 | asdf | test.cpp:143:18:143:21 | asdf | nodes | test.cpp:35:5:35:22 | access to array | semmle.label | access to array | | test.cpp:35:10:35:12 | buf | semmle.label | buf | @@ -36,9 +41,15 @@ nodes | test.cpp:79:27:79:34 | buf | semmle.label | buf | | test.cpp:79:32:79:34 | buf | semmle.label | buf | | test.cpp:85:34:85:36 | buf | semmle.label | buf | +| test.cpp:87:5:87:31 | access to array | semmle.label | access to array | | test.cpp:88:5:88:27 | access to array | semmle.label | access to array | | test.cpp:128:9:128:11 | arr | semmle.label | arr | | test.cpp:128:9:128:14 | access to array | semmle.label | access to array | +| test.cpp:134:25:134:27 | arr | semmle.label | arr | +| test.cpp:136:9:136:16 | ... += ... | semmle.label | ... += ... | +| test.cpp:138:13:138:15 | arr | semmle.label | arr | +| test.cpp:143:18:143:21 | asdf | semmle.label | asdf | +| test.cpp:143:18:143:21 | asdf | semmle.label | asdf | subpaths #select | test.cpp:35:5:35:22 | PointerAdd: access to array | test.cpp:35:10:35:12 | buf | test.cpp:35:5:35:22 | access to array | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:15:9:15:11 | buf | buf | test.cpp:35:5:35:26 | Store: ... = ... | write | @@ -52,3 +63,4 @@ subpaths | test.cpp:77:27:77:44 | PointerAdd: access to array | test.cpp:77:32:77:34 | buf | test.cpp:66:32:66:32 | p | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:15:9:15:11 | buf | buf | test.cpp:67:5:67:10 | Store: ... = ... | write | | test.cpp:88:5:88:27 | PointerAdd: access to array | test.cpp:85:34:85:36 | buf | test.cpp:88:5:88:27 | access to array | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:15:9:15:11 | buf | buf | test.cpp:88:5:88:31 | Store: ... = ... | write | | test.cpp:128:9:128:14 | PointerAdd: access to array | test.cpp:128:9:128:11 | arr | test.cpp:128:9:128:14 | access to array | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:125:11:125:13 | arr | arr | test.cpp:128:9:128:18 | Store: ... = ... | write | +| test.cpp:136:9:136:16 | PointerAdd: ... += ... | test.cpp:143:18:143:21 | asdf | test.cpp:138:13:138:15 | arr | This pointer arithmetic may have an off-by-2 error allowing it to overrun $@ at this $@. | test.cpp:142:10:142:13 | asdf | asdf | test.cpp:138:12:138:15 | Load: * ... | read | diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/test.cpp b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/test.cpp index 952b44209d4..f799518f6ec 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/test.cpp +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/test.cpp @@ -128,3 +128,17 @@ void testStackAllocated() { arr[i] = 0; // BAD } } + +int strncmp(const char*, const char*, int); + +char testStrncmp2(char *arr) { + if(strncmp(arr, "", 6) == 0) { + arr += 6; + } + return *arr; // GOOD [FALSE POSITIVE] +} + +void testStrncmp1() { + char asdf[5]; + testStrncmp2(asdf); +} diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/InvalidPointerDeref.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/InvalidPointerDeref.expected index 1487088ca9f..7c27659de1f 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/InvalidPointerDeref.expected +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/InvalidPointerDeref.expected @@ -663,26 +663,509 @@ edges | test.cpp:326:15:326:23 | ... + ... | test.cpp:342:8:342:17 | * ... | | test.cpp:338:8:338:15 | * ... | test.cpp:342:8:342:17 | * ... | | test.cpp:341:8:341:17 | * ... | test.cpp:342:8:342:17 | * ... | -| test.cpp:342:8:342:17 | * ... | test.cpp:333:5:333:21 | Store: ... = ... | -| test.cpp:342:8:342:17 | * ... | test.cpp:341:5:341:21 | Store: ... = ... | | test.cpp:347:14:347:27 | new[] | test.cpp:348:15:348:16 | xs | -| test.cpp:348:15:348:16 | xs | test.cpp:350:16:350:19 | ... ++ | -| test.cpp:348:15:348:16 | xs | test.cpp:350:16:350:19 | ... ++ | -| test.cpp:350:16:350:19 | ... ++ | test.cpp:350:15:350:19 | Load: * ... | -| test.cpp:350:16:350:19 | ... ++ | test.cpp:350:16:350:19 | ... ++ | -| test.cpp:350:16:350:19 | ... ++ | test.cpp:350:16:350:19 | ... ++ | +| test.cpp:355:14:355:27 | new[] | test.cpp:356:15:356:16 | xs | +| test.cpp:356:15:356:16 | xs | test.cpp:356:15:356:23 | ... + ... | +| test.cpp:356:15:356:16 | xs | test.cpp:356:15:356:23 | ... + ... | +| test.cpp:356:15:356:16 | xs | test.cpp:356:15:356:23 | ... + ... | +| test.cpp:356:15:356:16 | xs | test.cpp:356:15:356:23 | ... + ... | +| test.cpp:356:15:356:16 | xs | test.cpp:357:24:357:26 | end | +| test.cpp:356:15:356:16 | xs | test.cpp:357:24:357:30 | ... + ... | +| test.cpp:356:15:356:16 | xs | test.cpp:357:24:357:30 | ... + ... | +| test.cpp:356:15:356:16 | xs | test.cpp:357:24:357:30 | ... + ... | +| test.cpp:356:15:356:16 | xs | test.cpp:357:24:357:30 | ... + ... | +| test.cpp:356:15:356:16 | xs | test.cpp:358:15:358:26 | end_plus_one | +| test.cpp:356:15:356:16 | xs | test.cpp:358:15:358:26 | end_plus_one | +| test.cpp:356:15:356:16 | xs | test.cpp:359:16:359:27 | end_plus_one | +| test.cpp:356:15:356:16 | xs | test.cpp:359:16:359:31 | ... + ... | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:356:15:356:23 | ... + ... | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:356:15:356:23 | ... + ... | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:357:24:357:26 | end | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:357:24:357:26 | end | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:358:14:358:26 | Load: * ... | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:358:14:358:26 | Load: * ... | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:358:14:358:26 | Load: * ... | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:358:14:358:26 | Load: * ... | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:359:14:359:32 | Load: * ... | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:359:14:359:32 | Load: * ... | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:359:14:359:32 | Load: * ... | +| test.cpp:356:15:356:23 | ... + ... | test.cpp:359:14:359:32 | Load: * ... | +| test.cpp:357:24:357:26 | end | test.cpp:358:14:358:26 | Load: * ... | +| test.cpp:357:24:357:26 | end | test.cpp:359:14:359:32 | Load: * ... | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:357:24:357:30 | ... + ... | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:357:24:357:30 | ... + ... | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:358:14:358:26 | Load: * ... | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:358:14:358:26 | Load: * ... | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:358:14:358:26 | Load: * ... | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:358:14:358:26 | Load: * ... | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:358:15:358:26 | end_plus_one | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:358:15:358:26 | end_plus_one | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:358:15:358:26 | end_plus_one | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:358:15:358:26 | end_plus_one | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:359:14:359:32 | Load: * ... | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:359:14:359:32 | Load: * ... | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:359:14:359:32 | Load: * ... | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:359:14:359:32 | Load: * ... | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:359:16:359:27 | end_plus_one | +| test.cpp:357:24:357:30 | ... + ... | test.cpp:359:16:359:27 | end_plus_one | +| test.cpp:358:15:358:26 | end_plus_one | test.cpp:358:14:358:26 | Load: * ... | +| test.cpp:358:15:358:26 | end_plus_one | test.cpp:358:14:358:26 | Load: * ... | +| test.cpp:358:15:358:26 | end_plus_one | test.cpp:359:14:359:32 | Load: * ... | +| test.cpp:358:15:358:26 | end_plus_one | test.cpp:359:14:359:32 | Load: * ... | +| test.cpp:358:15:358:26 | end_plus_one | test.cpp:359:16:359:27 | end_plus_one | +| test.cpp:359:16:359:27 | end_plus_one | test.cpp:358:14:358:26 | Load: * ... | +| test.cpp:359:16:359:27 | end_plus_one | test.cpp:359:14:359:32 | Load: * ... | +| test.cpp:359:16:359:31 | ... + ... | test.cpp:359:14:359:32 | Load: * ... | +| test.cpp:363:14:363:27 | new[] | test.cpp:365:15:365:15 | p | +| test.cpp:365:15:365:15 | p | test.cpp:368:5:368:10 | ... += ... | +| test.cpp:365:15:365:15 | p | test.cpp:368:5:368:10 | ... += ... | +| test.cpp:368:5:368:10 | ... += ... | test.cpp:371:7:371:7 | p | +| test.cpp:368:5:368:10 | ... += ... | test.cpp:371:7:371:7 | p | +| test.cpp:368:5:368:10 | ... += ... | test.cpp:372:16:372:16 | p | +| test.cpp:368:5:368:10 | ... += ... | test.cpp:372:16:372:16 | p | +| test.cpp:371:7:371:7 | p | test.cpp:372:15:372:16 | Load: * ... | +| test.cpp:372:16:372:16 | p | test.cpp:372:15:372:16 | Load: * ... | +| test.cpp:377:14:377:27 | new[] | test.cpp:378:15:378:16 | xs | +| test.cpp:378:15:378:16 | xs | test.cpp:378:15:378:23 | ... + ... | +| test.cpp:378:15:378:16 | xs | test.cpp:378:15:378:23 | ... + ... | +| test.cpp:378:15:378:16 | xs | test.cpp:378:15:378:23 | ... + ... | +| test.cpp:378:15:378:16 | xs | test.cpp:378:15:378:23 | ... + ... | +| test.cpp:378:15:378:16 | xs | test.cpp:381:5:381:7 | end | +| test.cpp:378:15:378:16 | xs | test.cpp:381:5:381:9 | ... ++ | +| test.cpp:378:15:378:16 | xs | test.cpp:381:5:381:9 | ... ++ | +| test.cpp:378:15:378:16 | xs | test.cpp:384:14:384:16 | end | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:378:15:378:23 | ... + ... | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:378:15:378:23 | ... + ... | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:381:5:381:7 | end | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:381:5:381:7 | end | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:13:384:16 | Load: * ... | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:13:384:16 | Load: * ... | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:13:384:16 | Load: * ... | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:13:384:16 | Load: * ... | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:14:384:16 | end | +| test.cpp:378:15:378:23 | ... + ... | test.cpp:384:14:384:16 | end | +| test.cpp:381:5:381:7 | end | test.cpp:384:13:384:16 | Load: * ... | +| test.cpp:381:5:381:9 | ... ++ | test.cpp:384:14:384:16 | end | +| test.cpp:381:5:381:9 | ... ++ | test.cpp:384:14:384:16 | end | +| test.cpp:384:14:384:16 | end | test.cpp:384:13:384:16 | Load: * ... | +| test.cpp:388:14:388:27 | new[] | test.cpp:389:16:389:17 | xs | +| test.cpp:388:14:388:27 | new[] | test.cpp:392:5:392:6 | xs | +| test.cpp:389:16:389:17 | xs | test.cpp:392:5:392:8 | ... ++ | +| test.cpp:389:16:389:17 | xs | test.cpp:392:5:392:8 | ... ++ | +| test.cpp:389:16:389:17 | xs | test.cpp:392:5:392:8 | ... ++ | +| test.cpp:389:16:389:17 | xs | test.cpp:392:5:392:8 | ... ++ | +| test.cpp:389:16:389:17 | xs | test.cpp:393:9:393:10 | xs | +| test.cpp:389:16:389:17 | xs | test.cpp:393:9:393:10 | xs | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:392:5:392:8 | ... ++ | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:392:5:392:8 | ... ++ | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:393:9:393:10 | xs | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:393:9:393:10 | xs | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:393:9:393:10 | xs | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:393:9:393:10 | xs | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:395:5:395:6 | xs | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:395:5:395:6 | xs | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:395:5:395:13 | Store: ... = ... | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:395:5:395:13 | Store: ... = ... | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:395:5:395:13 | Store: ... = ... | +| test.cpp:392:5:392:8 | ... ++ | test.cpp:395:5:395:13 | Store: ... = ... | +| test.cpp:393:9:393:10 | xs | test.cpp:395:5:395:6 | xs | +| test.cpp:393:9:393:10 | xs | test.cpp:395:5:395:13 | Store: ... = ... | +| test.cpp:393:9:393:10 | xs | test.cpp:395:5:395:13 | Store: ... = ... | +| test.cpp:395:5:395:6 | xs | test.cpp:395:5:395:13 | Store: ... = ... | +| test.cpp:404:3:404:25 | ... = ... | test.cpp:404:7:404:8 | val indirection [post update] [xs] | +| test.cpp:404:7:404:8 | val indirection [post update] [xs] | test.cpp:407:3:407:5 | val indirection [xs] | +| test.cpp:404:12:404:25 | new[] | test.cpp:404:3:404:25 | ... = ... | +| test.cpp:406:3:406:25 | ... = ... | test.cpp:406:7:406:8 | val indirection [post update] [xs] | +| test.cpp:406:7:406:8 | val indirection [post update] [xs] | test.cpp:407:3:407:5 | val indirection [xs] | +| test.cpp:406:12:406:25 | new[] | test.cpp:406:3:406:25 | ... = ... | +| test.cpp:407:3:407:5 | val indirection [xs] | test.cpp:407:7:407:8 | xs indirection | +| test.cpp:407:3:407:18 | access to array | test.cpp:407:3:407:22 | Store: ... = ... | +| test.cpp:407:7:407:8 | xs | test.cpp:407:3:407:18 | access to array | +| test.cpp:407:7:407:8 | xs indirection | test.cpp:407:7:407:8 | xs | +| test.cpp:417:16:417:33 | new[] | test.cpp:419:7:419:8 | xs | +| test.cpp:419:7:419:8 | xs | test.cpp:419:7:419:11 | access to array | +| test.cpp:419:7:419:11 | access to array | test.cpp:419:7:419:15 | Store: ... = ... | +| test.cpp:427:14:427:27 | new[] | test.cpp:433:5:433:6 | xs | +| test.cpp:433:5:433:6 | xs | test.cpp:433:5:433:17 | access to array | +| test.cpp:433:5:433:17 | access to array | test.cpp:433:5:433:21 | Store: ... = ... | +nodes +| test.cpp:4:15:4:20 | call to malloc | semmle.label | call to malloc | +| test.cpp:5:15:5:15 | p | semmle.label | p | +| test.cpp:5:15:5:22 | ... + ... | semmle.label | ... + ... | +| test.cpp:5:15:5:22 | ... + ... | semmle.label | ... + ... | +| test.cpp:5:15:5:22 | ... + ... | semmle.label | ... + ... | +| test.cpp:5:15:5:22 | ... + ... | semmle.label | ... + ... | +| test.cpp:6:14:6:15 | Load: * ... | semmle.label | Load: * ... | +| test.cpp:6:15:6:15 | q | semmle.label | q | +| test.cpp:6:15:6:15 | q | semmle.label | q | +| test.cpp:7:16:7:16 | q | semmle.label | q | +| test.cpp:7:16:7:16 | q | semmle.label | q | +| test.cpp:8:14:8:21 | Load: * ... | semmle.label | Load: * ... | +| test.cpp:8:16:8:16 | q | semmle.label | q | +| test.cpp:8:16:8:16 | q | semmle.label | q | +| test.cpp:8:16:8:20 | ... + ... | semmle.label | ... + ... | +| test.cpp:9:16:9:16 | q | semmle.label | q | +| test.cpp:9:16:9:16 | q | semmle.label | q | +| test.cpp:10:16:10:16 | q | semmle.label | q | +| test.cpp:10:16:10:16 | q | semmle.label | q | +| test.cpp:11:16:11:16 | q | semmle.label | q | +| test.cpp:11:16:11:16 | q | semmle.label | q | +| test.cpp:12:16:12:16 | q | semmle.label | q | +| test.cpp:16:15:16:20 | call to malloc | semmle.label | call to malloc | +| test.cpp:17:15:17:15 | p | semmle.label | p | +| test.cpp:17:15:17:22 | ... + ... | semmle.label | ... + ... | +| test.cpp:20:14:20:21 | Load: * ... | semmle.label | Load: * ... | +| test.cpp:20:16:20:20 | ... + ... | semmle.label | ... + ... | +| test.cpp:28:15:28:20 | call to malloc | semmle.label | call to malloc | +| test.cpp:29:15:29:15 | p | semmle.label | p | +| test.cpp:29:15:29:28 | ... + ... | semmle.label | ... + ... | +| test.cpp:29:15:29:28 | ... + ... | semmle.label | ... + ... | +| test.cpp:29:15:29:28 | ... + ... | semmle.label | ... + ... | +| test.cpp:29:15:29:28 | ... + ... | semmle.label | ... + ... | +| test.cpp:30:14:30:15 | Load: * ... | semmle.label | Load: * ... | +| test.cpp:30:15:30:15 | q | semmle.label | q | +| test.cpp:30:15:30:15 | q | semmle.label | q | +| test.cpp:31:16:31:16 | q | semmle.label | q | +| test.cpp:31:16:31:16 | q | semmle.label | q | +| test.cpp:32:14:32:21 | Load: * ... | semmle.label | Load: * ... | +| test.cpp:32:16:32:16 | q | semmle.label | q | +| test.cpp:32:16:32:16 | q | semmle.label | q | +| test.cpp:32:16:32:20 | ... + ... | semmle.label | ... + ... | +| test.cpp:33:16:33:16 | q | semmle.label | q | +| test.cpp:33:16:33:16 | q | semmle.label | q | +| test.cpp:34:16:34:16 | q | semmle.label | q | +| test.cpp:34:16:34:16 | q | semmle.label | q | +| test.cpp:35:16:35:16 | q | semmle.label | q | +| test.cpp:35:16:35:16 | q | semmle.label | q | +| test.cpp:36:16:36:16 | q | semmle.label | q | +| test.cpp:40:15:40:20 | call to malloc | semmle.label | call to malloc | +| test.cpp:41:15:41:15 | p | semmle.label | p | +| test.cpp:41:15:41:28 | ... + ... | semmle.label | ... + ... | +| test.cpp:41:15:41:28 | ... + ... | semmle.label | ... + ... | +| test.cpp:41:15:41:28 | ... + ... | semmle.label | ... + ... | +| test.cpp:41:15:41:28 | ... + ... | semmle.label | ... + ... | +| test.cpp:42:14:42:15 | Load: * ... | semmle.label | Load: * ... | +| test.cpp:42:15:42:15 | q | semmle.label | q | +| test.cpp:42:15:42:15 | q | semmle.label | q | +| test.cpp:43:16:43:16 | q | semmle.label | q | +| test.cpp:43:16:43:16 | q | semmle.label | q | +| test.cpp:44:14:44:21 | Load: * ... | semmle.label | Load: * ... | +| test.cpp:44:16:44:16 | q | semmle.label | q | +| test.cpp:44:16:44:16 | q | semmle.label | q | +| test.cpp:44:16:44:20 | ... + ... | semmle.label | ... + ... | +| test.cpp:45:16:45:16 | q | semmle.label | q | +| test.cpp:45:16:45:16 | q | semmle.label | q | +| test.cpp:46:16:46:16 | q | semmle.label | q | +| test.cpp:46:16:46:16 | q | semmle.label | q | +| test.cpp:47:16:47:16 | q | semmle.label | q | +| test.cpp:47:16:47:16 | q | semmle.label | q | +| test.cpp:48:16:48:16 | q | semmle.label | q | +| test.cpp:51:7:51:14 | mk_array indirection | semmle.label | mk_array indirection | +| test.cpp:51:33:51:35 | end | semmle.label | end | +| test.cpp:52:19:52:24 | call to malloc | semmle.label | call to malloc | +| test.cpp:53:5:53:23 | ... = ... | semmle.label | ... = ... | +| test.cpp:53:12:53:16 | begin | semmle.label | begin | +| test.cpp:53:12:53:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:60:19:60:26 | call to mk_array | semmle.label | call to mk_array | +| test.cpp:60:34:60:37 | mk_array output argument | semmle.label | mk_array output argument | +| test.cpp:62:32:62:34 | end | semmle.label | end | +| test.cpp:62:39:62:39 | p | semmle.label | p | +| test.cpp:66:32:66:34 | end | semmle.label | end | +| test.cpp:66:39:66:39 | p | semmle.label | p | +| test.cpp:67:9:67:14 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:70:31:70:33 | end | semmle.label | end | +| test.cpp:70:38:70:38 | p | semmle.label | p | +| test.cpp:80:9:80:16 | mk_array indirection [begin] | semmle.label | mk_array indirection [begin] | +| test.cpp:80:9:80:16 | mk_array indirection [end] | semmle.label | mk_array indirection [end] | +| test.cpp:82:5:82:28 | ... = ... | semmle.label | ... = ... | +| test.cpp:82:9:82:13 | arr indirection [post update] [begin] | semmle.label | arr indirection [post update] [begin] | +| test.cpp:82:17:82:22 | call to malloc | semmle.label | call to malloc | +| test.cpp:83:5:83:30 | ... = ... | semmle.label | ... = ... | +| test.cpp:83:9:83:11 | arr indirection [post update] [end] | semmle.label | arr indirection [post update] [end] | +| test.cpp:83:15:83:17 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:83:15:83:30 | ... + ... | semmle.label | ... + ... | +| test.cpp:83:19:83:23 | begin | semmle.label | begin | +| test.cpp:83:19:83:23 | begin indirection | semmle.label | begin indirection | +| test.cpp:89:19:89:26 | call to mk_array [begin] | semmle.label | call to mk_array [begin] | +| test.cpp:89:19:89:26 | call to mk_array [end] | semmle.label | call to mk_array [end] | +| test.cpp:91:20:91:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:91:24:91:28 | begin | semmle.label | begin | +| test.cpp:91:24:91:28 | begin indirection | semmle.label | begin indirection | +| test.cpp:91:36:91:38 | arr indirection [end] | semmle.label | arr indirection [end] | +| test.cpp:91:40:91:42 | end | semmle.label | end | +| test.cpp:91:40:91:42 | end indirection | semmle.label | end indirection | +| test.cpp:91:47:91:47 | p | semmle.label | p | +| test.cpp:95:20:95:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:95:24:95:28 | begin | semmle.label | begin | +| test.cpp:95:24:95:28 | begin indirection | semmle.label | begin indirection | +| test.cpp:95:36:95:38 | arr indirection [end] | semmle.label | arr indirection [end] | +| test.cpp:95:40:95:42 | end | semmle.label | end | +| test.cpp:95:40:95:42 | end indirection | semmle.label | end indirection | +| test.cpp:95:47:95:47 | p | semmle.label | p | +| test.cpp:96:9:96:14 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:99:20:99:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:99:24:99:28 | begin | semmle.label | begin | +| test.cpp:99:24:99:28 | begin indirection | semmle.label | begin indirection | +| test.cpp:99:35:99:37 | arr indirection [end] | semmle.label | arr indirection [end] | +| test.cpp:99:39:99:41 | end | semmle.label | end | +| test.cpp:99:39:99:41 | end indirection | semmle.label | end indirection | +| test.cpp:99:46:99:46 | p | semmle.label | p | +| test.cpp:104:27:104:29 | arr [begin] | semmle.label | arr [begin] | +| test.cpp:104:27:104:29 | arr [end] | semmle.label | arr [end] | +| test.cpp:105:20:105:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:105:24:105:28 | begin | semmle.label | begin | +| test.cpp:105:24:105:28 | begin indirection | semmle.label | begin indirection | +| test.cpp:105:36:105:38 | arr indirection [end] | semmle.label | arr indirection [end] | +| test.cpp:105:40:105:42 | end | semmle.label | end | +| test.cpp:105:40:105:42 | end indirection | semmle.label | end indirection | +| test.cpp:105:47:105:47 | p | semmle.label | p | +| test.cpp:109:20:109:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:109:24:109:28 | begin | semmle.label | begin | +| test.cpp:109:24:109:28 | begin indirection | semmle.label | begin indirection | +| test.cpp:109:36:109:38 | arr indirection [end] | semmle.label | arr indirection [end] | +| test.cpp:109:40:109:42 | end | semmle.label | end | +| test.cpp:109:40:109:42 | end indirection | semmle.label | end indirection | +| test.cpp:109:47:109:47 | p | semmle.label | p | +| test.cpp:110:9:110:14 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:113:20:113:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:113:24:113:28 | begin | semmle.label | begin | +| test.cpp:113:24:113:28 | begin indirection | semmle.label | begin indirection | +| test.cpp:113:35:113:37 | arr indirection [end] | semmle.label | arr indirection [end] | +| test.cpp:113:39:113:41 | end | semmle.label | end | +| test.cpp:113:39:113:41 | end indirection | semmle.label | end indirection | +| test.cpp:113:46:113:46 | p | semmle.label | p | +| test.cpp:119:18:119:25 | call to mk_array [begin] | semmle.label | call to mk_array [begin] | +| test.cpp:119:18:119:25 | call to mk_array [end] | semmle.label | call to mk_array [end] | +| test.cpp:124:15:124:20 | call to malloc | semmle.label | call to malloc | +| test.cpp:125:5:125:17 | ... = ... | semmle.label | ... = ... | +| test.cpp:125:9:125:13 | arr indirection [post update] [begin] | semmle.label | arr indirection [post update] [begin] | +| test.cpp:126:15:126:15 | p | semmle.label | p | +| test.cpp:129:11:129:13 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:129:15:129:19 | begin | semmle.label | begin | +| test.cpp:129:15:129:19 | begin indirection | semmle.label | begin indirection | +| test.cpp:133:11:133:13 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:133:15:133:19 | begin | semmle.label | begin | +| test.cpp:133:15:133:19 | begin indirection | semmle.label | begin indirection | +| test.cpp:137:11:137:13 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:137:15:137:19 | begin | semmle.label | begin | +| test.cpp:137:15:137:19 | begin indirection | semmle.label | begin indirection | +| test.cpp:141:10:141:19 | mk_array_p indirection [begin] | semmle.label | mk_array_p indirection [begin] | +| test.cpp:141:10:141:19 | mk_array_p indirection [end] | semmle.label | mk_array_p indirection [end] | +| test.cpp:143:5:143:29 | ... = ... | semmle.label | ... = ... | +| test.cpp:143:10:143:14 | arr indirection [post update] [begin] | semmle.label | arr indirection [post update] [begin] | +| test.cpp:143:18:143:23 | call to malloc | semmle.label | call to malloc | +| test.cpp:144:5:144:32 | ... = ... | semmle.label | ... = ... | +| test.cpp:144:10:144:12 | arr indirection [post update] [end] | semmle.label | arr indirection [post update] [end] | +| test.cpp:144:16:144:18 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:144:16:144:32 | ... + ... | semmle.label | ... + ... | +| test.cpp:144:21:144:25 | begin | semmle.label | begin | +| test.cpp:144:21:144:25 | begin indirection | semmle.label | begin indirection | +| test.cpp:150:20:150:29 | call to mk_array_p indirection [begin] | semmle.label | call to mk_array_p indirection [begin] | +| test.cpp:150:20:150:29 | call to mk_array_p indirection [end] | semmle.label | call to mk_array_p indirection [end] | +| test.cpp:152:20:152:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:152:25:152:29 | begin | semmle.label | begin | +| test.cpp:152:25:152:29 | begin indirection | semmle.label | begin indirection | +| test.cpp:152:49:152:49 | p | semmle.label | p | +| test.cpp:156:20:156:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:156:25:156:29 | begin | semmle.label | begin | +| test.cpp:156:25:156:29 | begin indirection | semmle.label | begin indirection | +| test.cpp:156:37:156:39 | arr indirection [end] | semmle.label | arr indirection [end] | +| test.cpp:156:42:156:44 | end | semmle.label | end | +| test.cpp:156:42:156:44 | end indirection | semmle.label | end indirection | +| test.cpp:156:49:156:49 | p | semmle.label | p | +| test.cpp:157:9:157:14 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:160:20:160:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:160:25:160:29 | begin | semmle.label | begin | +| test.cpp:160:25:160:29 | begin indirection | semmle.label | begin indirection | +| test.cpp:160:48:160:48 | p | semmle.label | p | +| test.cpp:165:29:165:31 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:165:29:165:31 | arr indirection [end] | semmle.label | arr indirection [end] | +| test.cpp:166:20:166:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:166:25:166:29 | begin | semmle.label | begin | +| test.cpp:166:25:166:29 | begin indirection | semmle.label | begin indirection | +| test.cpp:166:37:166:39 | arr indirection [end] | semmle.label | arr indirection [end] | +| test.cpp:166:42:166:44 | end | semmle.label | end | +| test.cpp:166:42:166:44 | end indirection | semmle.label | end indirection | +| test.cpp:166:49:166:49 | p | semmle.label | p | +| test.cpp:170:20:170:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:170:25:170:29 | begin | semmle.label | begin | +| test.cpp:170:25:170:29 | begin indirection | semmle.label | begin indirection | +| test.cpp:170:37:170:39 | arr indirection [end] | semmle.label | arr indirection [end] | +| test.cpp:170:42:170:44 | end | semmle.label | end | +| test.cpp:170:42:170:44 | end indirection | semmle.label | end indirection | +| test.cpp:170:49:170:49 | p | semmle.label | p | +| test.cpp:171:9:171:14 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:174:20:174:22 | arr indirection [begin] | semmle.label | arr indirection [begin] | +| test.cpp:174:25:174:29 | begin | semmle.label | begin | +| test.cpp:174:25:174:29 | begin indirection | semmle.label | begin indirection | +| test.cpp:174:36:174:38 | arr indirection [end] | semmle.label | arr indirection [end] | +| test.cpp:174:41:174:43 | end | semmle.label | end | +| test.cpp:174:41:174:43 | end indirection | semmle.label | end indirection | +| test.cpp:174:48:174:48 | p | semmle.label | p | +| test.cpp:180:19:180:28 | call to mk_array_p indirection [begin] | semmle.label | call to mk_array_p indirection [begin] | +| test.cpp:180:19:180:28 | call to mk_array_p indirection [end] | semmle.label | call to mk_array_p indirection [end] | +| test.cpp:188:15:188:20 | call to malloc | semmle.label | call to malloc | +| test.cpp:189:15:189:15 | p | semmle.label | p | +| test.cpp:194:23:194:28 | call to malloc | semmle.label | call to malloc | +| test.cpp:195:17:195:17 | p | semmle.label | p | +| test.cpp:195:17:195:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:195:17:195:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:195:17:195:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:195:17:195:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:197:8:197:8 | p | semmle.label | p | +| test.cpp:197:20:197:22 | end | semmle.label | end | +| test.cpp:201:5:201:5 | p | semmle.label | p | +| test.cpp:201:5:201:12 | access to array | semmle.label | access to array | +| test.cpp:201:5:201:19 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:205:23:205:28 | call to malloc | semmle.label | call to malloc | +| test.cpp:206:17:206:17 | p | semmle.label | p | +| test.cpp:206:17:206:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:206:17:206:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:206:17:206:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:206:17:206:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:208:15:208:15 | p | semmle.label | p | +| test.cpp:209:12:209:14 | end | semmle.label | end | +| test.cpp:213:5:213:6 | * ... | semmle.label | * ... | +| test.cpp:213:5:213:13 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:213:6:213:6 | q | semmle.label | q | +| test.cpp:213:6:213:6 | q | semmle.label | q | +| test.cpp:221:17:221:22 | call to malloc | semmle.label | call to malloc | +| test.cpp:222:5:222:5 | p | semmle.label | p | +| test.cpp:231:18:231:30 | new[] | semmle.label | new[] | +| test.cpp:232:3:232:9 | newname | semmle.label | newname | +| test.cpp:232:3:232:16 | access to array | semmle.label | access to array | +| test.cpp:232:3:232:20 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:238:20:238:32 | new[] | semmle.label | new[] | +| test.cpp:239:5:239:11 | newname | semmle.label | newname | +| test.cpp:239:5:239:18 | access to array | semmle.label | access to array | +| test.cpp:239:5:239:22 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:248:24:248:30 | call to realloc | semmle.label | call to realloc | +| test.cpp:249:9:249:9 | p | semmle.label | p | +| test.cpp:250:22:250:22 | p | semmle.label | p | +| test.cpp:254:9:254:9 | p | semmle.label | p | +| test.cpp:254:9:254:12 | access to array | semmle.label | access to array | +| test.cpp:254:9:254:16 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:260:13:260:24 | new[] | semmle.label | new[] | +| test.cpp:261:14:261:15 | xs | semmle.label | xs | +| test.cpp:261:14:261:21 | ... + ... | semmle.label | ... + ... | +| test.cpp:261:14:261:21 | ... + ... | semmle.label | ... + ... | +| test.cpp:261:14:261:21 | ... + ... | semmle.label | ... + ... | +| test.cpp:261:14:261:21 | ... + ... | semmle.label | ... + ... | +| test.cpp:262:26:262:28 | end | semmle.label | end | +| test.cpp:262:26:262:28 | end | semmle.label | end | +| test.cpp:262:31:262:31 | x | semmle.label | x | +| test.cpp:264:13:264:14 | Load: * ... | semmle.label | Load: * ... | +| test.cpp:264:14:264:14 | x | semmle.label | x | +| test.cpp:264:14:264:14 | x | semmle.label | x | +| test.cpp:270:13:270:24 | new[] | semmle.label | new[] | +| test.cpp:271:14:271:15 | xs | semmle.label | xs | +| test.cpp:271:14:271:21 | ... + ... | semmle.label | ... + ... | +| test.cpp:271:14:271:21 | ... + ... | semmle.label | ... + ... | +| test.cpp:271:14:271:21 | ... + ... | semmle.label | ... + ... | +| test.cpp:271:14:271:21 | ... + ... | semmle.label | ... + ... | +| test.cpp:272:26:272:28 | end | semmle.label | end | +| test.cpp:272:26:272:28 | end | semmle.label | end | +| test.cpp:272:31:272:31 | x | semmle.label | x | +| test.cpp:272:31:272:31 | x | semmle.label | x | +| test.cpp:274:5:274:6 | * ... | semmle.label | * ... | +| test.cpp:274:5:274:10 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:274:6:274:6 | x | semmle.label | x | +| test.cpp:274:6:274:6 | x | semmle.label | x | +| test.cpp:280:13:280:24 | new[] | semmle.label | new[] | +| test.cpp:281:14:281:15 | xs | semmle.label | xs | +| test.cpp:290:13:290:24 | new[] | semmle.label | new[] | +| test.cpp:291:14:291:15 | xs | semmle.label | xs | +| test.cpp:292:30:292:30 | x | semmle.label | x | +| test.cpp:304:15:304:26 | new[] | semmle.label | new[] | +| test.cpp:307:5:307:6 | xs | semmle.label | xs | +| test.cpp:308:5:308:6 | xs | semmle.label | xs | +| test.cpp:308:5:308:11 | access to array | semmle.label | access to array | +| test.cpp:308:5:308:29 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:313:14:313:27 | new[] | semmle.label | new[] | +| test.cpp:314:15:314:16 | xs | semmle.label | xs | +| test.cpp:325:14:325:27 | new[] | semmle.label | new[] | +| test.cpp:326:15:326:16 | xs | semmle.label | xs | +| test.cpp:326:15:326:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:326:15:326:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:338:8:338:15 | * ... | semmle.label | * ... | +| test.cpp:341:8:341:17 | * ... | semmle.label | * ... | +| test.cpp:342:8:342:17 | * ... | semmle.label | * ... | +| test.cpp:347:14:347:27 | new[] | semmle.label | new[] | +| test.cpp:348:15:348:16 | xs | semmle.label | xs | +| test.cpp:355:14:355:27 | new[] | semmle.label | new[] | +| test.cpp:356:15:356:16 | xs | semmle.label | xs | +| test.cpp:356:15:356:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:356:15:356:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:356:15:356:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:356:15:356:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:357:24:357:26 | end | semmle.label | end | +| test.cpp:357:24:357:30 | ... + ... | semmle.label | ... + ... | +| test.cpp:357:24:357:30 | ... + ... | semmle.label | ... + ... | +| test.cpp:357:24:357:30 | ... + ... | semmle.label | ... + ... | +| test.cpp:357:24:357:30 | ... + ... | semmle.label | ... + ... | +| test.cpp:358:14:358:26 | Load: * ... | semmle.label | Load: * ... | +| test.cpp:358:15:358:26 | end_plus_one | semmle.label | end_plus_one | +| test.cpp:358:15:358:26 | end_plus_one | semmle.label | end_plus_one | +| test.cpp:359:14:359:32 | Load: * ... | semmle.label | Load: * ... | +| test.cpp:359:16:359:27 | end_plus_one | semmle.label | end_plus_one | +| test.cpp:359:16:359:31 | ... + ... | semmle.label | ... + ... | +| test.cpp:363:14:363:27 | new[] | semmle.label | new[] | +| test.cpp:365:15:365:15 | p | semmle.label | p | +| test.cpp:368:5:368:10 | ... += ... | semmle.label | ... += ... | +| test.cpp:368:5:368:10 | ... += ... | semmle.label | ... += ... | +| test.cpp:371:7:371:7 | p | semmle.label | p | +| test.cpp:372:15:372:16 | Load: * ... | semmle.label | Load: * ... | +| test.cpp:372:16:372:16 | p | semmle.label | p | +| test.cpp:377:14:377:27 | new[] | semmle.label | new[] | +| test.cpp:378:15:378:16 | xs | semmle.label | xs | +| test.cpp:378:15:378:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:378:15:378:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:378:15:378:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:378:15:378:23 | ... + ... | semmle.label | ... + ... | +| test.cpp:381:5:381:7 | end | semmle.label | end | +| test.cpp:381:5:381:9 | ... ++ | semmle.label | ... ++ | +| test.cpp:381:5:381:9 | ... ++ | semmle.label | ... ++ | +| test.cpp:384:13:384:16 | Load: * ... | semmle.label | Load: * ... | +| test.cpp:384:14:384:16 | end | semmle.label | end | +| test.cpp:388:14:388:27 | new[] | semmle.label | new[] | +| test.cpp:389:16:389:17 | xs | semmle.label | xs | +| test.cpp:392:5:392:6 | xs | semmle.label | xs | +| test.cpp:392:5:392:8 | ... ++ | semmle.label | ... ++ | +| test.cpp:392:5:392:8 | ... ++ | semmle.label | ... ++ | +| test.cpp:392:5:392:8 | ... ++ | semmle.label | ... ++ | +| test.cpp:392:5:392:8 | ... ++ | semmle.label | ... ++ | +| test.cpp:393:9:393:10 | xs | semmle.label | xs | +| test.cpp:393:9:393:10 | xs | semmle.label | xs | +| test.cpp:395:5:395:6 | xs | semmle.label | xs | +| test.cpp:395:5:395:13 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:404:3:404:25 | ... = ... | semmle.label | ... = ... | +| test.cpp:404:7:404:8 | val indirection [post update] [xs] | semmle.label | val indirection [post update] [xs] | +| test.cpp:404:12:404:25 | new[] | semmle.label | new[] | +| test.cpp:406:3:406:25 | ... = ... | semmle.label | ... = ... | +| test.cpp:406:7:406:8 | val indirection [post update] [xs] | semmle.label | val indirection [post update] [xs] | +| test.cpp:406:12:406:25 | new[] | semmle.label | new[] | +| test.cpp:407:3:407:5 | val indirection [xs] | semmle.label | val indirection [xs] | +| test.cpp:407:3:407:18 | access to array | semmle.label | access to array | +| test.cpp:407:3:407:22 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:407:7:407:8 | xs | semmle.label | xs | +| test.cpp:407:7:407:8 | xs indirection | semmle.label | xs indirection | +| test.cpp:417:16:417:33 | new[] | semmle.label | new[] | +| test.cpp:419:7:419:8 | xs | semmle.label | xs | +| test.cpp:419:7:419:11 | access to array | semmle.label | access to array | +| test.cpp:419:7:419:15 | Store: ... = ... | semmle.label | Store: ... = ... | +| test.cpp:427:14:427:27 | new[] | semmle.label | new[] | +| test.cpp:433:5:433:6 | xs | semmle.label | xs | +| test.cpp:433:5:433:17 | access to array | semmle.label | access to array | +| test.cpp:433:5:433:21 | Store: ... = ... | semmle.label | Store: ... = ... | subpaths #select | test.cpp:6:14:6:15 | Load: * ... | test.cpp:4:15:4:20 | call to malloc | test.cpp:6:14:6:15 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:4:15:4:20 | call to malloc | call to malloc | test.cpp:5:19:5:22 | size | size | | test.cpp:8:14:8:21 | Load: * ... | test.cpp:4:15:4:20 | call to malloc | test.cpp:8:14:8:21 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 1. | test.cpp:4:15:4:20 | call to malloc | call to malloc | test.cpp:5:19:5:22 | size | size | -| test.cpp:8:14:8:21 | Load: * ... | test.cpp:4:15:4:20 | call to malloc | test.cpp:8:14:8:21 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:4:15:4:20 | call to malloc | call to malloc | test.cpp:5:19:5:22 | size | size | | test.cpp:20:14:20:21 | Load: * ... | test.cpp:16:15:16:20 | call to malloc | test.cpp:20:14:20:21 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:16:15:16:20 | call to malloc | call to malloc | test.cpp:17:19:17:22 | size | size | | test.cpp:30:14:30:15 | Load: * ... | test.cpp:28:15:28:20 | call to malloc | test.cpp:30:14:30:15 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:28:15:28:20 | call to malloc | call to malloc | test.cpp:29:20:29:27 | ... + ... | ... + ... | | test.cpp:32:14:32:21 | Load: * ... | test.cpp:28:15:28:20 | call to malloc | test.cpp:32:14:32:21 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 1. | test.cpp:28:15:28:20 | call to malloc | call to malloc | test.cpp:29:20:29:27 | ... + ... | ... + ... | -| test.cpp:32:14:32:21 | Load: * ... | test.cpp:28:15:28:20 | call to malloc | test.cpp:32:14:32:21 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:28:15:28:20 | call to malloc | call to malloc | test.cpp:29:20:29:27 | ... + ... | ... + ... | | test.cpp:42:14:42:15 | Load: * ... | test.cpp:40:15:40:20 | call to malloc | test.cpp:42:14:42:15 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:40:15:40:20 | call to malloc | call to malloc | test.cpp:41:20:41:27 | ... - ... | ... - ... | | test.cpp:44:14:44:21 | Load: * ... | test.cpp:40:15:40:20 | call to malloc | test.cpp:44:14:44:21 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 1. | test.cpp:40:15:40:20 | call to malloc | call to malloc | test.cpp:41:20:41:27 | ... - ... | ... - ... | -| test.cpp:44:14:44:21 | Load: * ... | test.cpp:40:15:40:20 | call to malloc | test.cpp:44:14:44:21 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:40:15:40:20 | call to malloc | call to malloc | test.cpp:41:20:41:27 | ... - ... | ... - ... | | test.cpp:67:9:67:14 | Store: ... = ... | test.cpp:52:19:52:24 | call to malloc | test.cpp:67:9:67:14 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:52:19:52:24 | call to malloc | call to malloc | test.cpp:53:20:53:23 | size | size | | test.cpp:96:9:96:14 | Store: ... = ... | test.cpp:82:17:82:22 | call to malloc | test.cpp:96:9:96:14 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:82:17:82:22 | call to malloc | call to malloc | test.cpp:83:27:83:30 | size | size | | test.cpp:110:9:110:14 | Store: ... = ... | test.cpp:82:17:82:22 | call to malloc | test.cpp:110:9:110:14 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:82:17:82:22 | call to malloc | call to malloc | test.cpp:83:27:83:30 | size | size | @@ -696,6 +1179,11 @@ subpaths | test.cpp:264:13:264:14 | Load: * ... | test.cpp:260:13:260:24 | new[] | test.cpp:264:13:264:14 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:260:13:260:24 | new[] | new[] | test.cpp:261:19:261:21 | len | len | | test.cpp:274:5:274:10 | Store: ... = ... | test.cpp:270:13:270:24 | new[] | test.cpp:274:5:274:10 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:270:13:270:24 | new[] | new[] | test.cpp:271:19:271:21 | len | len | | test.cpp:308:5:308:29 | Store: ... = ... | test.cpp:304:15:304:26 | new[] | test.cpp:308:5:308:29 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:304:15:304:26 | new[] | new[] | test.cpp:308:8:308:10 | ... + ... | ... + ... | -| test.cpp:333:5:333:21 | Store: ... = ... | test.cpp:325:14:325:27 | new[] | test.cpp:333:5:333:21 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:325:14:325:27 | new[] | new[] | test.cpp:326:20:326:23 | size | size | -| test.cpp:341:5:341:21 | Store: ... = ... | test.cpp:325:14:325:27 | new[] | test.cpp:341:5:341:21 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:325:14:325:27 | new[] | new[] | test.cpp:326:20:326:23 | size | size | -| test.cpp:350:15:350:19 | Load: * ... | test.cpp:347:14:347:27 | new[] | test.cpp:350:15:350:19 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:347:14:347:27 | new[] | new[] | test.cpp:348:20:348:23 | size | size | +| test.cpp:358:14:358:26 | Load: * ... | test.cpp:355:14:355:27 | new[] | test.cpp:358:14:358:26 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 1. | test.cpp:355:14:355:27 | new[] | new[] | test.cpp:356:20:356:23 | size | size | +| test.cpp:359:14:359:32 | Load: * ... | test.cpp:355:14:355:27 | new[] | test.cpp:359:14:359:32 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@ + 2. | test.cpp:355:14:355:27 | new[] | new[] | test.cpp:356:20:356:23 | size | size | +| test.cpp:372:15:372:16 | Load: * ... | test.cpp:363:14:363:27 | new[] | test.cpp:372:15:372:16 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:363:14:363:27 | new[] | new[] | test.cpp:365:19:365:22 | size | size | +| test.cpp:384:13:384:16 | Load: * ... | test.cpp:377:14:377:27 | new[] | test.cpp:384:13:384:16 | Load: * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:377:14:377:27 | new[] | new[] | test.cpp:378:20:378:23 | size | size | +| test.cpp:395:5:395:13 | Store: ... = ... | test.cpp:388:14:388:27 | new[] | test.cpp:395:5:395:13 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:388:14:388:27 | new[] | new[] | test.cpp:389:19:389:22 | size | size | +| test.cpp:407:3:407:22 | Store: ... = ... | test.cpp:404:12:404:25 | new[] | test.cpp:407:3:407:22 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:404:12:404:25 | new[] | new[] | test.cpp:407:10:407:17 | ... - ... | ... - ... | +| test.cpp:419:7:419:15 | Store: ... = ... | test.cpp:417:16:417:33 | new[] | test.cpp:419:7:419:15 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:417:16:417:33 | new[] | new[] | test.cpp:419:10:419:10 | i | i | +| test.cpp:433:5:433:21 | Store: ... = ... | test.cpp:427:14:427:27 | new[] | test.cpp:433:5:433:21 | Store: ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:427:14:427:27 | new[] | new[] | test.cpp:433:8:433:16 | ... ++ | ... ++ | diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/test.cpp b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/test.cpp index b6741535e42..4048c15be8b 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/test.cpp +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/pointer-deref/test.cpp @@ -330,7 +330,7 @@ void test23(unsigned size, int val) { if(*current - xs < 1) return; - *--(*current) = 0; // GOOD [FALSE POSITIVE] + *--(*current) = 0; // GOOD return; } @@ -338,7 +338,7 @@ void test23(unsigned size, int val) { if(*current - xs < 2) return; - *--(*current) = 0; // GOOD [FALSE POSITIVE] + *--(*current) = 0; // GOOD *--(*current) = 0; // GOOD } } @@ -347,6 +347,89 @@ void test24(unsigned size) { char *xs = new char[size]; char *end = xs + size; if (xs < end) { - int val = *xs++; // GOOD [FALSE POSITIVE] + int val = *xs++; // GOOD + } +} + +void test25(unsigned size) { + char *xs = new char[size]; + char *end = xs + size; + char *end_plus_one = end + 1; + int val1 = *end_plus_one; // BAD + int val2 = *(end_plus_one + 1); // BAD +} + +void test26(unsigned size) { + char *xs = new char[size]; + char *p = xs; + char *end = p + size; + + if (p + 4 <= end) { + p += 4; + } + + if (p < end) { + int val = *p; // GOOD [FALSE POSITIVE] + } +} + +void test27(unsigned size, bool b) { + char *xs = new char[size]; + char *end = xs + size; + + if (b) { + end++; + } + + int val = *end; // BAD +} + +void test28(unsigned size) { + char *xs = new char[size]; + char *end = &xs[size]; + if (xs >= end) + return; + xs++; + if (xs >= end) + return; + xs[0] = 0; // GOOD [FALSE POSITIVE] +} + +struct test29_struct { + char* xs; +}; + +void test29(unsigned size) { + test29_struct val; + val.xs = new char[size]; + size++; + val.xs = new char[size]; + val.xs[size - 1] = 0; // GOOD [FALSE POSITIVE] +} + +void test30(int *size) +{ + int new_size = 0, tmp_size = 0; + + test30(&tmp_size); + if (tmp_size + 1 > new_size) { + new_size = tmp_size + 1; + char *xs = new char[new_size]; + for (int i = 0; i < new_size; i++) { + xs[i] = 0; // GOOD [FALSE POSITIVE] + } + } + *size = new_size; +} + +void test31(unsigned size, unsigned src_pos) +{ + char *xs = new char[size]; + if (src_pos > size) { + src_pos = size; + } + unsigned dst_pos = src_pos; + if(dst_pos < size - 3) { + xs[dst_pos++] = 0; // GOOD [FALSE POSITIVE] } } diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected index acf233ed2ee..eb9e8efb1d2 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected @@ -67,6 +67,8 @@ postWithInFlow | ref.cpp:109:9:109:11 | val [post update] | PostUpdateNode should not be the target of local flow. | | ref.cpp:113:11:113:13 | val [post update] | PostUpdateNode should not be the target of local flow. | | ref.cpp:115:11:115:13 | val [post update] | PostUpdateNode should not be the target of local flow. | +| self_parameter_flow.cpp:3:4:3:5 | ps [inner post update] | PostUpdateNode should not be the target of local flow. | +| self_parameter_flow.cpp:8:9:8:9 | s [inner post update] | PostUpdateNode should not be the target of local flow. | | test.cpp:91:3:91:9 | source1 [post update] | PostUpdateNode should not be the target of local flow. | | test.cpp:115:3:115:6 | * ... [post update] | PostUpdateNode should not be the target of local flow. | | test.cpp:115:4:115:6 | out [inner post update] | PostUpdateNode should not be the target of local flow. | @@ -128,6 +130,10 @@ postWithInFlow | test.cpp:690:3:690:3 | s [post update] | PostUpdateNode should not be the target of local flow. | | test.cpp:694:4:694:6 | buf [inner post update] | PostUpdateNode should not be the target of local flow. | | test.cpp:704:23:704:25 | buf [inner post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:715:25:715:25 | c [inner post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:728:3:728:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:728:4:728:4 | p [inner post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:734:41:734:41 | x [inner post update] | PostUpdateNode should not be the target of local flow. | viableImplInCallContextTooLarge uniqueParameterNodeAtPosition uniqueParameterNodePosition diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/self-Iterator.cpp b/cpp/ql/test/library-tests/dataflow/dataflow-tests/self-Iterator.cpp new file mode 100644 index 00000000000..cac7f222c30 --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/self-Iterator.cpp @@ -0,0 +1,21 @@ +#include "../../../include/iterator.h" +int source(); + +template +void sink(T); + +template<> struct std::iterator_traits +{ // get traits from integer type + typedef std::input_iterator_tag iterator_category; + typedef unsigned long value_type; + typedef unsigned long difference_type; + typedef unsigned long distance_type; + typedef unsigned long * pointer; + typedef unsigned long& reference; +}; + + +int test() { + unsigned long x = source(); + sink(x); // $ ast ir +} \ No newline at end of file diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/self_parameter_flow.cpp b/cpp/ql/test/library-tests/dataflow/dataflow-tests/self_parameter_flow.cpp new file mode 100644 index 00000000000..2298e644b05 --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/self_parameter_flow.cpp @@ -0,0 +1,14 @@ +void incr(unsigned char **ps) // $ ast-def=ps ir-def=*ps ir-def=**ps +{ + *ps += 1; +} + +void callincr(unsigned char *s) // $ ast-def=s +{ + incr(&s); +} + +void test(unsigned char *s) // $ ast-def=s +{ + callincr(s); // $ flow +} \ No newline at end of file diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp index 915a8421475..7b6ea0fa718 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp @@ -702,4 +702,35 @@ void call_increment_buf(int** buf) { // $ ast-def=buf void test_conflation_regression(int* source) { // $ ast-def=source int* buf = source; call_increment_buf(&buf); -} \ No newline at end of file +} + +void write_to_star_star_p(unsigned char **p) // $ ast-def=p ir-def=**p ir-def=*p +{ + **p = 0; +} + +void write_to_star_buf(unsigned char *buf) // $ ast-def=buf +{ + unsigned char *c = buf; + write_to_star_star_p(&c); +} + +void test_write_to_star_buf(unsigned char *source) // $ ast-def=source +{ + write_to_star_buf(source); + sink(*source); // clean +} + +void does_not_write_source_to_dereference(int *p) // $ ast-def=p ir-def=*p +{ + int x = source(); + p = &x; + *p = 42; +} + +void test_does_not_write_source_to_dereference() +{ + int x; + does_not_write_source_to_dereference(&x); + sink(x); // $ ast,ir=733:7 SPURIOUS: ast,ir=726:11 +} diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test_self_parameter_flow.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test_self_parameter_flow.expected new file mode 100644 index 00000000000..48de9172b36 --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test_self_parameter_flow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test_self_parameter_flow.ql b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test_self_parameter_flow.ql new file mode 100644 index 00000000000..c6ea9c5c96f --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test_self_parameter_flow.ql @@ -0,0 +1,34 @@ +import cpp +import semmle.code.cpp.dataflow.new.DataFlow +import TestUtilities.InlineExpectationsTest + +module TestConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source.getLocation().getFile().getBaseName() = "self_parameter_flow.cpp" and + source.asIndirectArgument() = + any(Call call | call.getTarget().hasName("callincr")).getAnArgument() + } + + predicate isSink(DataFlow::Node sink) { + sink.asDefiningArgument() = + any(Call call | call.getTarget().hasName("callincr")).getAnArgument() + } +} + +import DataFlow::Global + +module TestSelfParameterFlow implements TestSig { + string getARelevantTag() { result = "flow" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + exists(DataFlow::Node sink | + flowTo(sink) and + location = sink.getLocation() and + element = sink.toString() and + tag = "flow" and + value = "" + ) + } +} + +import MakeTest diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/uninitialized.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/uninitialized.expected index 0a52d928028..b40148f4950 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/uninitialized.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/uninitialized.expected @@ -42,3 +42,5 @@ | test.cpp:551:9:551:9 | y | test.cpp:552:28:552:28 | y | | test.cpp:595:8:595:9 | xs | test.cpp:596:3:596:4 | xs | | test.cpp:595:8:595:9 | xs | test.cpp:597:9:597:10 | xs | +| test.cpp:733:7:733:7 | x | test.cpp:734:41:734:41 | x | +| test.cpp:733:7:733:7 | x | test.cpp:735:8:735:8 | x | diff --git a/cpp/ql/test/library-tests/dataflow/fields/Nodes.qll b/cpp/ql/test/library-tests/dataflow/fields/Nodes.qll index 7313518af91..8c4c547f4c8 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/Nodes.qll +++ b/cpp/ql/test/library-tests/dataflow/fields/Nodes.qll @@ -34,9 +34,6 @@ class AstNode extends Node, TAstNode { override Location getLocation() { result = n.getLocation() } } -/** DEPRECATED: Alias for AstNode */ -deprecated class ASTNode = AstNode; - class IRNode extends Node, TIRNode { IR::DataFlow::Node n; diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected index 907cccd197b..44965a9f2d9 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected @@ -6584,6 +6584,27 @@ | taint.cpp:691:18:691:18 | s [post update] | taint.cpp:695:7:695:7 | s | | | taint.cpp:691:20:691:20 | ref arg x | taint.cpp:694:9:694:9 | x | | | taint.cpp:694:7:694:7 | s [post update] | taint.cpp:695:7:695:7 | s | | +| taint.cpp:700:13:700:18 | call to source | taint.cpp:702:11:702:11 | s | | +| taint.cpp:701:9:701:9 | p | taint.cpp:702:4:702:4 | p | | +| taint.cpp:702:4:702:4 | p | taint.cpp:702:4:702:6 | ... ++ | | +| taint.cpp:702:4:702:6 | ... ++ | taint.cpp:702:3:702:6 | * ... | TAINT | +| taint.cpp:702:4:702:6 | ... ++ | taint.cpp:703:8:703:8 | p | TAINT | +| taint.cpp:702:10:702:11 | * ... | taint.cpp:702:3:702:11 | ... = ... | | +| taint.cpp:702:11:702:11 | s | taint.cpp:702:10:702:11 | * ... | TAINT | +| taint.cpp:709:25:709:25 | d | taint.cpp:709:25:709:25 | d | | +| taint.cpp:709:25:709:25 | d | taint.cpp:711:10:711:10 | d | | +| taint.cpp:709:25:709:25 | d | taint.cpp:712:7:712:7 | d | | +| taint.cpp:709:34:709:34 | s | taint.cpp:709:34:709:34 | s | | +| taint.cpp:709:34:709:34 | s | taint.cpp:710:18:710:18 | s | | +| taint.cpp:709:34:709:34 | s | taint.cpp:711:13:711:13 | s | | +| taint.cpp:710:18:710:18 | ref arg s | taint.cpp:709:34:709:34 | s | | +| taint.cpp:710:18:710:18 | ref arg s | taint.cpp:711:13:711:13 | s | | +| taint.cpp:711:10:711:10 | d | taint.cpp:711:2:711:8 | call to strncpy | | +| taint.cpp:711:10:711:10 | ref arg d | taint.cpp:709:25:709:25 | d | | +| taint.cpp:711:10:711:10 | ref arg d | taint.cpp:712:7:712:7 | d | | +| taint.cpp:711:13:711:13 | s | taint.cpp:711:2:711:8 | call to strncpy | TAINT | +| taint.cpp:711:13:711:13 | s | taint.cpp:711:10:711:10 | ref arg d | TAINT | +| taint.cpp:712:7:712:7 | ref arg d | taint.cpp:709:25:709:25 | d | | | vector.cpp:16:43:16:49 | source1 | vector.cpp:17:26:17:32 | source1 | | | vector.cpp:16:43:16:49 | source1 | vector.cpp:31:38:31:44 | source1 | | | vector.cpp:17:21:17:33 | call to vector | vector.cpp:19:14:19:14 | v | | diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp index 9806ddb395e..9810418a95e 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp @@ -693,4 +693,21 @@ void test_argument_source_field_to_obj() { sink(s); // $ SPURIOUS: ast,ir sink(s.x); // $ ast,ir sink(s.y); // clean +} + +namespace strings { + void test_write_to_read_then_incr_then_deref() { + char* s = source(); + char* p; + *p++ = *s; + sink(p); // $ ast ir + } +} + +char * strncpy (char *, const char *, unsigned long); + +void test_strncpy(char* d, char* s) { + argument_source(s); + strncpy(d, s, 16); + sink(d); // $ ast ir } \ No newline at end of file diff --git a/cpp/ql/test/library-tests/ir/range-analysis/RangeAnalysis.ql b/cpp/ql/test/library-tests/ir/range-analysis/RangeAnalysis.ql index 84437827d0d..b5a86c23d97 100644 --- a/cpp/ql/test/library-tests/ir/range-analysis/RangeAnalysis.ql +++ b/cpp/ql/test/library-tests/ir/range-analysis/RangeAnalysis.ql @@ -40,14 +40,7 @@ bindingset[delta] private string getBoundString(SemBound b, float delta) { b instanceof SemZeroBound and result = delta.toString() or - result = - strictconcat(b.(SemSsaBound) - .getAVariable() - .(SemanticExprConfig::SsaVariable) - .asInstruction() - .getAst() - .toString(), ":" - ) + getOffsetString(delta) + result = strictconcat(b.(SemSsaBound).getAVariable().toString(), " | ") + getOffsetString(delta) } private string getARangeString(SemExpr e) { diff --git a/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp b/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp index eed0a7d7e47..df29578409b 100644 --- a/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp +++ b/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp @@ -8,7 +8,7 @@ int test1(struct List* p) { int count = 0; for (; p; p = p->next) { count = count+1; - range(count); // $ range===count:p+1 + range(count); // $ range="==Phi: p | Store: count+1" } range(count); return count; @@ -18,7 +18,7 @@ int test2(struct List* p) { int count = 0; for (; p; p = p->next) { count = (count+1) % 10; - range(count); // $ range=<=9 range=>=-9 range=<=count:p+1 + range(count); // $ range=<=9 range=>=-9 range="<=Phi: p | Store: count+1" } range(count); // $ range=>=-9 range=<=9 return count; @@ -29,7 +29,7 @@ int test3(struct List* p) { for (; p; p = p->next) { range(count++); // $ range=>=-9 range=<=9 count = count % 10; - range(count); // $ range=<=9 range=>=-9 range="<=... +++0" range=<=count:p+1 + range(count); // $ range=<=9 range=>=-9 range="<=Store: ... +++0" range="<=Phi: p | Store: count+1" } range(count); // $ range=>=-9 range=<=9 return count; @@ -42,11 +42,11 @@ int test4() { range(i); // $ range=<=1 range=>=0 range(total); total += i; - range(total); // $ range=<=i+1 range=<=i+1 MISSING: range=>=0 range=>=i+0 + range(total); // $ range="<=Phi: i+1" MISSING: range=>=0 range=>=i+0 } range(total); // $ MISSING: range=>=0 range(i); // $ range===2 - range(total + i); // $ range=<=i+2 MISSING: range===i+2 range=>=2 range=>=i+0 + range(total + i); // $ range="<=Phi: i+2" MISSING: range===i+2 range=>=2 range=>=i+0 return total + i; } @@ -57,11 +57,11 @@ int test5() { range(i); // $ range=<=1 range=>=0 range(total); // $ MISSING: range=>=0 total += i; - range(total); // $ range=<=i+1 MISSING: range=>=0 range=>=i+0 + range(total); // $ range="<=Phi: i+1" MISSING: range=>=0 range=>=i+0 } range(total); // $ MISSING: range=>=0 range(i); // $ range===2 - range(total + i); // $ range=<=i+2 MISSING: range===i+2 range=>=2 range=>=i+0 + range(total + i); // $ range="<=Phi: i+2" MISSING: range===i+2 range=>=2 range=>=i+0 return total + i; } @@ -72,7 +72,7 @@ int test6() { range(i); // $ range=<=1 range=>=0 range(total); // $ MISSING: range=>=0 total += i; - range(total); // $ range=<=i+1 MISSING: range=>=0 range=>=i+0 + range(total); // $ range="<=Phi: i+1" MISSING: range=>=0 range=>=i+0 } return total + i; } @@ -93,12 +93,12 @@ int test8(int x, int y) { if (-1000 < y && y < 10) { range(y); // $ range=<=9 range=>=-999 if (x < y-2) { - range(x); // $ range=<=6 range=<=y-3 - range(y); // $ range=<=9 range=>=-999 range=>=x+3 + range(x); // $ range=<=6 range="<=InitializeParameter: y | Store: y-3" + range(y); // $ range=<=9 range=>=-999 range=">=InitializeParameter: x | Store: x+3" return x; } - range(x); // $ range=>=-1001 range=>=y-2 - range(y); // $ range=<=9 range=<=x+2 range=>=-999 + range(x); // $ range=>=-1001 range=">=InitializeParameter: y | Store: y-2" + range(y); // $ range=<=9 range="<=InitializeParameter: x | Store: x+2" range=>=-999 } range(x); range(y); @@ -127,12 +127,12 @@ int test10(int x, int y) { if (y > 7) { range(y); // $ range=>=8 if (x < y) { - range(x); // $ range=<=y-1 - range(y); // $ range=>=8 range=>=x+1 + range(x); // $ range="<=InitializeParameter: y-1" + range(y); // $ range=>=8 range=">=InitializeParameter: x | Store: x+1" return 0; } - range(x); // $ range=>=8 range=>=y+0 - range(y); // $ range=<=x+0 range=>=8 + range(x); // $ range=>=8 range=">=InitializeParameter: y+0" + range(y); // $ range="<=InitializeParameter: x | Store: x+0" range=>=8 return x; } range(y); // $ range=<=7 @@ -145,7 +145,7 @@ int test11(char *p) { range(*p); if (c != '\0') { *p++ = '\0'; - range(p); // $ range===p+1 + range(p); // $ range="==InitializeParameter: p+1" range(*p); } if (c == ':') { @@ -155,7 +155,7 @@ int test11(char *p) { if (c != '\0') { range(c); *p++ = '\0'; - range(p); // $ range=<=p+2 range===c+1 range=>=p+1 + range(p); // $ range="<=InitializeParameter: p+2" range="==Phi: c+1" range=">=InitializeParameter: p+1" } if (c != ',') { return 1; @@ -193,7 +193,7 @@ int test13(char c, int i) { unsigned int y = x-1; // $ overflow=- range(y); // $ range===-1 overflow=- int z = i+1; // $ overflow=+ - range(z); // $ range===i+1 + range(z); // $ range="==InitializeParameter: i+1" range(c + i + uc + x + y + z); // $ overflow=+- overflow=+ overflow=- MISSING: range=>=1 range((double)(c + i + uc + x + y + z)); // $ overflow=+ overflow=+- overflow=- MISSING: range=>=1 return (double)(c + i + uc + x + y + z); // $ overflow=+- overflow=+ overflow=- @@ -245,7 +245,7 @@ int test_unary(int a) { range(c); // $ range=<=0 range=>=-11 range(b+c); // $ range=<=11 range=>=-11 MISSING:range=">=- ...+0" total += b+c; - range(total); // $ range=<=0+11 range=<=19 range=>=0-11 range=>=-19 + range(total); // $ range="<=Phi: 0+11" range=<=19 range=">=Phi: 0-11" range=>=-19 } if (-7 <= a && a <= 11) { range(a); // $ range=<=11 range=>=-7 @@ -255,7 +255,7 @@ int test_unary(int a) { range(c); // $ range=<=7 range=>=-11 range(b+c); // $ range=<=18 range=>=-18 total += b+c; - range(total); // $ range="<=- ...+18" range=">=- ...-18" range=<=0+29 range=<=37 range=>=0-29 range=>=-37 + range(total); // $ range="<=Phi: - ...+18" range=">=Phi: - ...-18" range="<=Phi: 0+29" range=<=37 range=">=Phi: 0-29" range=>=-37 } if (-7 <= a && a <= 1) { range(a); // $ range=<=1 range=>=-7 @@ -265,7 +265,7 @@ int test_unary(int a) { range(c); // $ range=<=7 range=>=-1 range(b+c); // $ range=<=8 range=>=-8 total += b+c; - range(total); // $ range="<=- ...+8" range="<=- ...+26" range=">=- ...-8" range=">=- ...-26" range=<=0+37 range=<=45 range=>=0-37 range=>=-45 + range(total); // $ range="<=Phi: - ...+8" range="<=Phi: - ...+26" range=">=Phi: - ...-8" range=">=Phi: - ...-26" range="<=Phi: 0+37" range=<=45 range=">=Phi: 0-37" range=>=-45 } if (-7 <= a && a <= 0) { range(a); // $ range=<=0 range=>=-7 @@ -275,7 +275,7 @@ int test_unary(int a) { range(c); // $ range=<=7 range=>=0 range(b+c); // $ range=>=-7 range=<=7 MISSING:range="<=- ...+0" total += b+c; - range(total); // $ range="<=- ...+7" range="<=- ...+15" range="<=- ...+33" range=">=- ...-7" range=">=- ...-15" range=">=- ...-33" range=<=0+44 range=<=52 range=>=0-44 range=>=-52 + range(total); // $ range="<=Phi: - ...+7" range="<=Phi: - ...+15" range="<=Phi: - ...+33" range=">=Phi: - ...-7" range=">=Phi: - ...-15" range=">=Phi: - ...-33" range="<=Phi: 0+44" range=<=52 Unexpected result: range=">=Phi: 0-44" range=>=-52 } if (-7 <= a && a <= -2) { range(a); // $ range=<=-2 range=>=-7 @@ -285,9 +285,9 @@ int test_unary(int a) { range(c); // $ range=<=7 range=>=2 range(b+c); // $ range=<=5 range=>=-5 total += b+c; - range(total); // $ range="<=- ...+5" range="<=- ...+12" range="<=- ...+20" range="<=- ...+38" range=">=- ...-5" range=">=- ...-12" range=">=- ...-20" range=">=- ...-38" range=<=0+49 range=<=57 range=>=0-49 range=>=-57 + range(total); // $ range="<=Phi: - ...+5" range="<=Phi: - ...+12" range="<=Phi: - ...+20" range="<=Phi: - ...+38" range=">=Phi: - ...-5" range=">=Phi: - ...-12" range=">=Phi: - ...-20" range=">=Phi: - ...-38" range="<=Phi: 0+49" range=<=57 range=">=Phi: 0-49" range=>=-57 } - range(total); // $ range="<=- ...+5" range="<=- ...+12" range="<=- ...+20" range="<=- ...+38" range=">=- ...-5" range=">=- ...-12" range=">=- ...-20" range=">=- ...-38" range=<=0+49 range=<=57 range=>=0-49 range=>=-57 + range(total); // $ range="<=Phi: - ...+5" range="<=Phi: - ...+12" range="<=Phi: - ...+20" range="<=Phi: - ...+38" range=">=Phi: - ...-5" range=">=Phi: - ...-12" range=">=Phi: - ...-20" range=">=Phi: - ...-38" range="<=Phi: 0+49" range=<=57 range=">=Phi: 0-49" range=>=-57 return total; } @@ -310,7 +310,7 @@ int test_mult01(int a, int b) { int r = a*b; // 0 .. 253 range(r); // $ range=<=253 range=>=0 total += r; - range(total); // $ range=<=3+253 range=<=506 range=>=0 range=>=3+0 + range(total); // $ range="<=Phi: 3+253" range=<=506 range=>=0 range=">=Phi: 3+0" } if (3 <= a && a <= 11 && -13 <= b && b <= 23) { range(a); // $ range=<=11 range=>=3 @@ -326,7 +326,7 @@ int test_mult01(int a, int b) { int r = a*b; // -143 .. 0 range(r); // $ range=<=0 range=>=-143 total += r; - range(total); // $ range=>=3-143 + range(total); // $ range=">=Phi: 3-143" } if (3 <= a && a <= 11 && -13 <= b && b <= -7) { range(a); // $ range=<=11 range=>=3 @@ -334,9 +334,9 @@ int test_mult01(int a, int b) { int r = a*b; // -143 .. -21 range(r); // $ range=<=-21 range=>=-143 total += r; - range(total); // $ range=>=3-143 range=>=3-286 + range(total); // $ range=">=Phi: 3-143" range=">=Phi: 3-286" } - range(total); // $ range=>=3-143 range=>=3-286 + range(total); // $ range=">=Phi: 3-143" range=">=Phi: 3-286" return total; } @@ -358,7 +358,7 @@ int test_mult02(int a, int b) { int r = a*b; // 0 .. 253 range(r); // $ range=<=253 range=>=0 total += r; - range(total); // $ range=>=0 range=>=0+0 range=<=0+253 range=<=506 + range(total); // $ range=>=0 range=">=Phi: 0+0" range="<=Phi: 0+253" range=<=506 } if (0 <= a && a <= 11 && -13 <= b && b <= 23) { range(a); // $ range=<=11 range=>=0 @@ -374,7 +374,7 @@ int test_mult02(int a, int b) { int r = a*b; // -143 .. 0 range(r); // $ range=<=0 range=>=-143 total += r; - range(total); // $ range=>=0-143 + range(total); // $ range=">=Phi: 0-143" } if (0 <= a && a <= 11 && -13 <= b && b <= -7) { range(a); // $ range=<=11 range=>=0 @@ -382,9 +382,9 @@ int test_mult02(int a, int b) { int r = a*b; // -143 .. 0 range(r); // $ range=<=0 range=>=-143 total += r; - range(total); // $ range=>=0-143 range=>=0-286 + range(total); // $ range=">=Phi: 0-143" range=">=Phi: 0-286" } - range(total); // $range=>=0-143 range=>=0-286 + range(total); // $range=">=Phi: 0-143" range=">=Phi: 0-286" return total; } @@ -453,7 +453,7 @@ int test_mult04(int a, int b) { int r = a*b; // -391 .. 0 range(r); // $ range=<=0 range=>=-391 total += r; - range(total); // $ range="<=- ...+0" range=<=0 range=">=- ...-391" range=>=-782 + range(total); // $ range="<=Phi: - ...+0" range=<=0 range=">=Phi: - ...-391" range=>=-782 } if (-17 <= a && a <= 0 && -13 <= b && b <= 23) { range(a); // $ range=<=0 range=>=-17 @@ -469,7 +469,7 @@ int test_mult04(int a, int b) { int r = a*b; // 0 .. 221 range(r); // $ range=<=221 range=>=0 total += r; - range(total); // $ range="<=- ...+221" + range(total); // $ range="<=Phi: - ...+221" } if (-17 <= a && a <= 0 && -13 <= b && b <= -7) { range(a); // $ range=<=0 range=>=-17 @@ -477,9 +477,9 @@ int test_mult04(int a, int b) { int r = a*b; // 0 .. 221 range(r); // $ range=<=221 range=>=0 total += r; - range(total); // $ range="<=- ...+221" range="<=- ...+442" + range(total); // $ range="<=Phi: - ...+221" range="<=Phi: - ...+442" } - range(total); // $ range="<=- ...+221" range="<=- ...+442" + range(total); // $ range="<=Phi: - ...+221" range="<=Phi: - ...+442" return total; } @@ -501,7 +501,7 @@ int test_mult05(int a, int b) { int r = a*b; // -391 .. 0 range(r); // $ range=<=0 range=>=-391 total += r; - range(total); // $ range="<=- ...+0" range=<=0 range=">=- ...-391" range=>=-782 + range(total); // $ range="<=Phi: - ...+0" range=<=0 range=">=Phi: - ...-391" range=>=-782 } if (-17 <= a && a <= -2 && -13 <= b && b <= 23) { range(a); // $ range=<=-2 range=>=-17 @@ -517,7 +517,7 @@ int test_mult05(int a, int b) { int r = a*b; // 0 .. 221 range(r); // $ range=<=221 range=>=0 total += r; - range(total); // $ range="<=- ...+221" + range(total); // $ range="<=Phi: - ...+221" } if (-17 <= a && a <= -2 && -13 <= b && b <= -7) { range(a); // $ range=<=-2 range=>=-17 @@ -525,9 +525,9 @@ int test_mult05(int a, int b) { int r = a*b; // 14 .. 221 range(r); // $ range=<=221 range=>=14 total += r; - range(total); // $ range="<=- ...+221" range="<=- ...+442" + range(total); // $ range="<=Phi: - ...+221" range="<=Phi: - ...+442" } - range(total); // $ range="<=- ...+221" range="<=- ...+442" + range(total); // $ range="<=Phi: - ...+221" range="<=Phi: - ...+442" return total; } @@ -541,7 +541,7 @@ int test16(int x) { while (i < 3) { range(i); // $ range=<=2 range=>=0 i++; - range(i); // $ range=<=3 range=>=1 range="==... = ...:i+1" SPURIOUS:range="==... = ...:i+1" + range(i); // $ range=<=3 range=>=1 range="==Phi: i | Store: ... = ...+1" } range(d); d = i; @@ -640,14 +640,14 @@ unsigned int test_comma01(unsigned int x) { unsigned int y1; unsigned int y2; y1 = (++y, y); - range(y1); // $ range=<=101 range="==... ? ... : ...+1" + range(y1); // $ range=<=101 range="==Phi: ... ? ... : ... | Store: ... ? ... : ...+1" y2 = (y++, - range(y), // $ range=<=102 range="==++ ...:... = ...+1" range="==... ? ... : ...+2" + range(y), // $ range=<=102 range="==Store: ++ ... | Store: ... = ...+1" range="==Phi: ... ? ... : ... | Store: ... ? ... : ...+2" y += 3, - range(y), // $ range=<=105 range="==++ ...:... = ...+4" range="==... +++3" range="==... ? ... : ...+5" + range(y), // $ range=<=105 range="==Store: ++ ... | Store: ... = ...+4" range="==Store: ... +++3" range="==Phi: ... ? ... : ... | Store: ... ? ... : ...+5" y); - range(y2); // $ range=<=105 range="==++ ...:... = ...+4" range="==... +++3" range="==... ? ... : ...+5" - range(y1 + y2); // $ range=<=206 range="<=... ? ... : ...+106" MISSING: range=">=++ ...:... = ...+5" range=">=... +++4" range=">=... += ...:... = ...+1" range=">=... ? ... : ...+6" + range(y2); // $ range=<=105 range="==Store: ++ ... | Store: ... = ...+4" range="==Store: ... +++3" Unexpected result: range="==Phi: ... ? ... : ... | Store: ... ? ... : ...+5" + range(y1 + y2); // $ range=<=206 range="<=Phi: ... ? ... : ... | Store: ... ? ... : ...+106" MISSING: range=">=++ ...:... = ...+5" range=">=... +++4" range=">=... += ...:... = ...+1" range=">=... ? ... : ...+6" return y1 + y2; } @@ -672,7 +672,7 @@ void test17() { range(i); // $ range===50 i = 20 + (j -= 10); - range(i); // $ range="==... += ...:... = ...+10" range===60 + range(i); // $ range="==Store: ... += ... | Store: ... = ...+10" range===60 } // Tests for unsigned multiplication. @@ -693,7 +693,7 @@ int test_unsigned_mult01(unsigned int a, unsigned b) { int r = a*b; // 0 .. 253 range(r);// $ range=>=0 range=<=253 total += r; - range(total); // $ range=">=(unsigned int)...+0" range=>=0 range=<=506 range="<=(unsigned int)...+253" + range(total); // $ range=">=Phi: (unsigned int)...+0" range=>=0 range=<=506 range="<=Phi: (unsigned int)...+253" } if (3 <= a && a <= 11 && 13 <= b && b <= 23) { range(a); // $ range=<=11 range=>=3 @@ -701,9 +701,9 @@ int test_unsigned_mult01(unsigned int a, unsigned b) { int r = a*b; // 39 .. 253 range(r); // $ range=>=39 range=<=253 total += r; - range(total); // $ range=>=39 range=<=759 range="<=(unsigned int)...+253" range="<=(unsigned int)...+506" range=">=(unsigned int)...+39" + range(total); // $ range=>=39 range=<=759 range="<=Phi: (unsigned int)...+253" range="<=Phi: (unsigned int)...+506" range=">=Phi: (unsigned int)...+39" } - range(total); // $ range=>=0 range=<=759 range=">=(unsigned int)...+0" range="<=(unsigned int)...+506" range="<=(unsigned int)...+253" + range(total); // $ range=>=0 range=<=759 range=">=Phi: (unsigned int)...+0" range="<=Phi: (unsigned int)...+506" range="<=Phi: (unsigned int)...+253" return total; } @@ -722,16 +722,16 @@ int test_unsigned_mult02(unsigned b) { int r = 11*b; // 0 .. 253 range(r); // $ range=>=0 range=<=253 total += r; - range(total); // $ range=">=(unsigned int)...+0" range=>=0 range="<=(unsigned int)...+253" range=<=506 + range(total); // $ range=">=Phi: (unsigned int)...+0" range=>=0 range="<=Phi: (unsigned int)...+253" range=<=506 } if (13 <= b && b <= 23) { range(b); // $ range=<=23 range=>=13 int r = 11*b; // 143 .. 253 range(r); // $ range=>=143 range=<=253 total += r; - range(total); // $ range="<=(unsigned int)...+253" range="<=(unsigned int)...+506" range=">=(unsigned int)...+143" range=>=143 range=<=759 + range(total); // $ range="<=Phi: (unsigned int)...+253" range="<=Phi: (unsigned int)...+506" range=">=Phi: (unsigned int)...+143" range=>=143 range=<=759 } - range(total); // $ range=>=0 range=<=759 range=">=(unsigned int)...+0" range="<=(unsigned int)...+506" range="<=(unsigned int)...+253" + range(total); // $ range=>=0 range=<=759 range=">=Phi: (unsigned int)...+0" range="<=Phi: (unsigned int)...+506" range="<=Phi: (unsigned int)...+253" return total; } @@ -851,7 +851,7 @@ int notequal_type_endpoint(unsigned n) { n--; // 1 .. } - range(n); // $ range=<=n+0 // 0 .. 0 + range(n); // $ range="<=InitializeParameter: n+0" // 0 .. 0 } void notequal_refinement(short n) { @@ -946,7 +946,7 @@ void widen_recursive_expr() { for (s = 0; s < 10; s++) { range(s); // $ range=<=9 range=>=0 int result = s + s; - range(result); // $ range=<=18 range=<=s+9 range=>=0 range=>=s+0 + range(result); // $ range=<=18 Unexpected result: range="<=Phi: s+9" range=>=0 Unexpected result: range=">=Phi: s+0" } } @@ -974,7 +974,7 @@ void test_mod_neg(int s) { void test_mod_ternary(int s, bool b) { int s2 = s % (b ? 5 : 500); - range(s2); // $ range=>=-499 range=<=499 range="<=... ? ... : ...-1" + range(s2); // $ range=>=-499 range=<=499 range="<=Phi: ... ? ... : ...-1" } void test_mod_ternary2(int s, bool b1, bool b2) { diff --git a/cpp/ql/test/library-tests/ir/range-analysis/test.cpp b/cpp/ql/test/library-tests/ir/range-analysis/test.cpp index 10b4c1a9a22..1e28d858b78 100644 --- a/cpp/ql/test/library-tests/ir/range-analysis/test.cpp +++ b/cpp/ql/test/library-tests/ir/range-analysis/test.cpp @@ -16,8 +16,8 @@ int sum = x + y; // $ overflow=+- } else { if (y > 300) { - range(x); // $ range=>=302 range=<=400 range=<=y+1 MISSING: range===y+1 - range(y); // $ range=>=301 range=<=399 range===x-1 + range(x); // $ range=>=302 range=<=400 range="<=InitializeParameter: y+1" MISSING: range===y+1 + range(y); // $ range=>=301 range=<=399 range="==InitializeParameter: x | Store: x-1" int sum = x + y; } } @@ -39,9 +39,9 @@ } if (y == x - 1 && y > 300 && y + 2 == z && z == 350) { // $ overflow=+ overflow=- - range(x); // $ range===349 range===y+1 range===z-1 - range(y); // $ range===348 range=>=x-1 range===z-2 MISSING: range===x-1 - range(z); // $ range===350 range=<=y+2 MISSING: range===x+1 range===y+2 + range(x); // $ range===349 range="==InitializeParameter: y+1" range="==InitializeParameter: z-1" + range(y); // $ range===348 range=">=InitializeParameter: x | Store: x-1" range="==InitializeParameter: z-2" MISSING: range===x-1 + range(z); // $ range===350 range="<=InitializeParameter: y+2" MISSING: range===x+1 range===y+2 return x + y + z; } } @@ -56,7 +56,7 @@ while (f3_get(n)) n+=2; for (int i = 0; i < n; i += 2) { - range(i); // $ range=>=0 SPURIOUS: range="<=call to f3_get-1" range="<=call to f3_get-2" + range(i); // $ range=>=0 SPURIOUS: range="<=Phi: call to f3_get-1" range="<=Phi: call to f3_get-2" } } @@ -70,3 +70,27 @@ int f4(int x) { } } } + +// No interesting ranges to check here - this irreducible CFG caused an infinite loop due to back edge detection +void gotoLoop(bool b1, bool b2) +{ + int j; + + if (b1) + return; + + if (!b2) + { + for (j = 0; j < 10; ++j) + { + goto main_decode_loop; + } + } + else + { + for (j = 0; j < 10; ++j) + { + main_decode_loop: + } + } +} \ No newline at end of file diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/OverflowDestination.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/OverflowDestination.expected index 19de8c61578..8d46c8fe99b 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/OverflowDestination.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-119/semmle/tests/OverflowDestination.expected @@ -8,13 +8,19 @@ edges | overflowdestination.cpp:23:45:23:48 | argv indirection | overflowdestination.cpp:30:17:30:20 | arg1 indirection | | overflowdestination.cpp:23:45:23:48 | argv indirection | overflowdestination.cpp:30:17:30:20 | arg1 indirection | | overflowdestination.cpp:43:8:43:10 | fgets output argument | overflowdestination.cpp:46:15:46:17 | src indirection | +| overflowdestination.cpp:50:52:50:54 | src indirection | overflowdestination.cpp:53:9:53:12 | memcpy output argument | | overflowdestination.cpp:50:52:50:54 | src indirection | overflowdestination.cpp:53:15:53:17 | src indirection | | overflowdestination.cpp:50:52:50:54 | src indirection | overflowdestination.cpp:53:15:53:17 | src indirection | +| overflowdestination.cpp:50:52:50:54 | src indirection | overflowdestination.cpp:54:9:54:12 | memcpy output argument | +| overflowdestination.cpp:53:9:53:12 | memcpy output argument | overflowdestination.cpp:54:9:54:12 | memcpy output argument | +| overflowdestination.cpp:54:9:54:12 | memcpy output argument | overflowdestination.cpp:54:9:54:12 | memcpy output argument | | overflowdestination.cpp:57:52:57:54 | src indirection | overflowdestination.cpp:64:16:64:19 | src2 indirection | | overflowdestination.cpp:57:52:57:54 | src indirection | overflowdestination.cpp:64:16:64:19 | src2 indirection | | overflowdestination.cpp:73:8:73:10 | fgets output argument | overflowdestination.cpp:75:30:75:32 | src indirection | | overflowdestination.cpp:73:8:73:10 | fgets output argument | overflowdestination.cpp:76:30:76:32 | src indirection | +| overflowdestination.cpp:75:30:75:32 | overflowdest_test2 output argument | overflowdestination.cpp:76:30:76:32 | src indirection | | overflowdestination.cpp:75:30:75:32 | src indirection | overflowdestination.cpp:50:52:50:54 | src indirection | +| overflowdestination.cpp:75:30:75:32 | src indirection | overflowdestination.cpp:75:30:75:32 | overflowdest_test2 output argument | | overflowdestination.cpp:76:30:76:32 | src indirection | overflowdestination.cpp:57:52:57:54 | src indirection | nodes | main.cpp:6:27:6:30 | argv indirection | semmle.label | argv indirection | @@ -28,15 +34,20 @@ nodes | overflowdestination.cpp:43:8:43:10 | fgets output argument | semmle.label | fgets output argument | | overflowdestination.cpp:46:15:46:17 | src indirection | semmle.label | src indirection | | overflowdestination.cpp:50:52:50:54 | src indirection | semmle.label | src indirection | +| overflowdestination.cpp:53:9:53:12 | memcpy output argument | semmle.label | memcpy output argument | | overflowdestination.cpp:53:15:53:17 | src indirection | semmle.label | src indirection | | overflowdestination.cpp:53:15:53:17 | src indirection | semmle.label | src indirection | +| overflowdestination.cpp:54:9:54:12 | memcpy output argument | semmle.label | memcpy output argument | | overflowdestination.cpp:57:52:57:54 | src indirection | semmle.label | src indirection | | overflowdestination.cpp:64:16:64:19 | src2 indirection | semmle.label | src2 indirection | | overflowdestination.cpp:64:16:64:19 | src2 indirection | semmle.label | src2 indirection | | overflowdestination.cpp:73:8:73:10 | fgets output argument | semmle.label | fgets output argument | +| overflowdestination.cpp:75:30:75:32 | overflowdest_test2 output argument | semmle.label | overflowdest_test2 output argument | | overflowdestination.cpp:75:30:75:32 | src indirection | semmle.label | src indirection | | overflowdestination.cpp:76:30:76:32 | src indirection | semmle.label | src indirection | subpaths +| overflowdestination.cpp:75:30:75:32 | src indirection | overflowdestination.cpp:50:52:50:54 | src indirection | overflowdestination.cpp:53:9:53:12 | memcpy output argument | overflowdestination.cpp:75:30:75:32 | overflowdest_test2 output argument | +| overflowdestination.cpp:75:30:75:32 | src indirection | overflowdestination.cpp:50:52:50:54 | src indirection | overflowdestination.cpp:54:9:54:12 | memcpy output argument | overflowdestination.cpp:75:30:75:32 | overflowdest_test2 output argument | #select | overflowdestination.cpp:30:2:30:8 | call to strncpy | main.cpp:6:27:6:30 | argv indirection | overflowdestination.cpp:30:17:30:20 | arg1 indirection | To avoid overflow, this operation should be bounded by destination-buffer size, not source-buffer size. | | overflowdestination.cpp:30:2:30:8 | call to strncpy | main.cpp:6:27:6:30 | argv indirection | overflowdestination.cpp:30:17:30:20 | arg1 indirection | To avoid overflow, this operation should be bounded by destination-buffer size, not source-buffer size. | diff --git a/csharp/documentation/library-coverage/coverage.csv b/csharp/documentation/library-coverage/coverage.csv index 9c900cf79cd..be4c929650c 100644 --- a/csharp/documentation/library-coverage/coverage.csv +++ b/csharp/documentation/library-coverage/coverage.csv @@ -1,9 +1,9 @@ -package,sink,source,summary,sink:code,sink:encryption-decryptor,sink:encryption-encryptor,sink:encryption-keyprop,sink:encryption-symmetrickey,sink:html,sink:remote,sink:sql,sink:xss,source:file,source:file-write,source:local,source:remote,summary:taint,summary:value -Dapper,55,,,,,,,,,,55,,,,,,, +package,sink,source,summary,sink:code-injection,sink:encryption-decryptor,sink:encryption-encryptor,sink:encryption-keyprop,sink:encryption-symmetrickey,sink:file-content-store,sink:html-injection,sink:js-injection,sink:sql-injection,source:file,source:file-write,source:local,source:remote,summary:taint,summary:value +Dapper,55,,,,,,,,,,,55,,,,,, JsonToItemsTaskFactory,,,7,,,,,,,,,,,,,,7, -Microsoft.ApplicationBlocks.Data,28,,,,,,,,,,28,,,,,,, +Microsoft.ApplicationBlocks.Data,28,,,,,,,,,,,28,,,,,, Microsoft.CSharp,,,24,,,,,,,,,,,,,,24, -Microsoft.EntityFrameworkCore,6,,12,,,,,,,,6,,,,,,,12 +Microsoft.EntityFrameworkCore,6,,12,,,,,,,,,6,,,,,,12 Microsoft.Extensions.Caching.Distributed,,,15,,,,,,,,,,,,,,15, Microsoft.Extensions.Caching.Memory,,,46,,,,,,,,,,,,,,45,1 Microsoft.Extensions.Configuration,,,83,,,,,,,,,,,,,,80,3 @@ -21,8 +21,8 @@ Microsoft.NET.Build.Tasks,,,1,,,,,,,,,,,,,,1, Microsoft.NETCore.Platforms.BuildTasks,,,4,,,,,,,,,,,,,,4, Microsoft.VisualBasic,,,10,,,,,,,,,,,,,,5,5 Microsoft.Win32,,,8,,,,,,,,,,,,,,8, -MySql.Data.MySqlClient,48,,,,,,,,,,48,,,,,,, +MySql.Data.MySqlClient,48,,,,,,,,,,,48,,,,,, Newtonsoft.Json,,,91,,,,,,,,,,,,,,73,18 -ServiceStack,194,,7,27,,,,,,75,92,,,,,,7, -System,65,25,12157,,8,8,9,,4,,33,3,1,17,3,4,10163,1994 +ServiceStack,194,,7,27,,,,,75,,,92,,,,,7, +System,65,25,12148,,8,8,9,,,4,3,33,1,17,3,4,10163,1985 Windows.Security.Cryptography.Core,1,,,,,,,1,,,,,,,,,, diff --git a/csharp/documentation/library-coverage/coverage.rst b/csharp/documentation/library-coverage/coverage.rst index 163638d895f..8f5b7ee0a8c 100644 --- a/csharp/documentation/library-coverage/coverage.rst +++ b/csharp/documentation/library-coverage/coverage.rst @@ -8,7 +8,7 @@ C# framework & library support Framework / library,Package,Flow sources,Taint & value steps,Sinks (total),`CWE-079` :sub:`Cross-site scripting` `ServiceStack `_,"``ServiceStack.*``, ``ServiceStack``",,7,194, - System,"``System.*``, ``System``",25,12157,65,7 + System,"``System.*``, ``System``",25,12148,65,7 Others,"``Dapper``, ``JsonToItemsTaskFactory``, ``Microsoft.ApplicationBlocks.Data``, ``Microsoft.CSharp``, ``Microsoft.EntityFrameworkCore``, ``Microsoft.Extensions.Caching.Distributed``, ``Microsoft.Extensions.Caching.Memory``, ``Microsoft.Extensions.Configuration``, ``Microsoft.Extensions.DependencyInjection``, ``Microsoft.Extensions.DependencyModel``, ``Microsoft.Extensions.FileProviders``, ``Microsoft.Extensions.FileSystemGlobbing``, ``Microsoft.Extensions.Hosting``, ``Microsoft.Extensions.Http``, ``Microsoft.Extensions.Logging``, ``Microsoft.Extensions.Options``, ``Microsoft.Extensions.Primitives``, ``Microsoft.Interop``, ``Microsoft.NET.Build.Tasks``, ``Microsoft.NETCore.Platforms.BuildTasks``, ``Microsoft.VisualBasic``, ``Microsoft.Win32``, ``MySql.Data.MySqlClient``, ``Newtonsoft.Json``, ``Windows.Security.Cryptography.Core``",,568,138, - Totals,,25,12732,397,7 + Totals,,25,12723,397,7 diff --git a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/BuildAnalysis.cs b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/BuildAnalysis.cs index 47bdd3ae568..f4f1cba4d89 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/BuildAnalysis.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/BuildAnalysis.cs @@ -120,13 +120,13 @@ namespace Semmle.BuildAnalyser UseReference(filename); } - ResolveConflicts(); - if (options.UseMscorlib) { UseReference(typeof(object).Assembly.Location); } + ResolveConflicts(); + // Output the findings foreach (var r in usedReferences.Keys) { diff --git a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs index 97a25d200f7..a9f43af2bea 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs @@ -33,7 +33,9 @@ namespace Semmle.Extraction.CSharp.Standalone CSharp.Extractor.Analyse(stopwatch, analyser, options, references => GetResolvedReferencesStandalone(referencePaths, references), (analyser, syntaxTrees) => CSharp.Extractor.ReadSyntaxTrees(sources, analyser, null, null, syntaxTrees), - (syntaxTrees, references) => CSharpCompilation.Create("csharp.dll", syntaxTrees, references), + (syntaxTrees, references) => CSharpCompilation.Create( + "csharp.dll", syntaxTrees, references, new CSharpCompilationOptions(OutputKind.ConsoleApplication, allowUnsafe: true) + ), (compilation, options) => analyser.Initialize(compilation, options), () => { }, _ => { }, diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs index 698be2e2c35..a77c0b30095 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs @@ -211,6 +211,11 @@ namespace Semmle.Extraction.CSharp.Entities return Default.CreateGenerated(cx, parent, childIndex, location, ValueAsString(null)); } + if (type.SpecialType is SpecialType.None) + { + return ImplicitCast.CreateGenerated(cx, parent, childIndex, type, defaultValue, location); + } + if (type.SpecialType is SpecialType.System_DateTime) { return DateTimeObjectCreation.CreateGenerated(cx, parent, childIndex, type, defaultValue, location); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ImplicitCast.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ImplicitCast.cs index 2d617cdb1b9..ebd7379ee67 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ImplicitCast.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ImplicitCast.cs @@ -1,3 +1,4 @@ +using System.Linq; using Microsoft.CodeAnalysis; using Semmle.Extraction.Kinds; @@ -11,33 +12,73 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions private set; } - public ImplicitCast(ExpressionNodeInfo info) + private ImplicitCast(ExpressionNodeInfo info) : base(new ExpressionInfo(info.Context, info.ConvertedType, info.Location, ExprKind.CAST, info.Parent, info.Child, true, info.ExprValue)) { Expr = Factory.Create(new ExpressionNodeInfo(Context, info.Node, this, 0)); } - public ImplicitCast(ExpressionNodeInfo info, IMethodSymbol method) + private ImplicitCast(ExpressionNodeInfo info, IMethodSymbol method) : base(new ExpressionInfo(info.Context, info.ConvertedType, info.Location, ExprKind.OPERATOR_INVOCATION, info.Parent, info.Child, true, info.ExprValue)) { Expr = Factory.Create(info.SetParent(this, 0)); - var target = Method.Create(Context, method); - if (target is not null) - Context.TrapWriter.Writer.expr_call(this, target); - else - Context.ModelError(info.Node, "Failed to resolve target for operator invocation"); + AddOperatorCall(method); } - /// - /// Creates a new expression, adding casts as required. - /// - /// The extraction context. - /// The expression node. - /// The parent of the expression. - /// The child number. - /// A type hint. - /// A new expression. + private ImplicitCast(ExpressionInfo info, IMethodSymbol method, object value) : base(info) + { + Expr = Literal.CreateGenerated(Context, this, 0, method.Parameters[0].Type, value, info.Location); + + AddOperatorCall(method); + } + + private void AddOperatorCall(IMethodSymbol method) + { + var target = Method.Create(Context, method); + Context.TrapWriter.Writer.expr_call(this, target); + } + + private static IMethodSymbol? GetImplicitConversionMethod(ITypeSymbol type, object value) => + type + .GetMembers() + .OfType() + .Where(method => + method.GetName() == "op_Implicit" && + method.Parameters.Length == 1 && + method.Parameters[0].Type.Name == value.GetType().Name + ) + .FirstOrDefault(); + + // Creates a new generated expression with an implicit cast added, if needed. + public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int childIndex, ITypeSymbol type, object value, + Extraction.Entities.Location location) + { + ExpressionInfo create(ExprKind kind, string? v) => + new ExpressionInfo( + cx, + AnnotatedTypeSymbol.CreateNotAnnotated(type), + location, + kind, + parent, + childIndex, + true, + v); + + var method = GetImplicitConversionMethod(type, value); + if (method is not null) + { + var info = create(ExprKind.OPERATOR_INVOCATION, null); + return new ImplicitCast(info, method, value); + } + else + { + cx.ModelError(location, "Failed to resolve target for implicit operator invocation for a parameter default."); + return new Expression(create(ExprKind.UNKNOWN, ValueAsString(value))); + } + } + + // Creates a new expression, adding casts as required. public static Expression Create(ExpressionNodeInfo info) { var resolvedType = info.ResolvedType; diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs index 22bf9f69670..3729a5d2528 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Method.cs @@ -243,7 +243,12 @@ namespace Semmle.Extraction.CSharp.Entities if (methodKind == MethodKind.ExplicitInterfaceImplementation) { // Retrieve the original method kind - methodKind = methodDecl.ExplicitInterfaceImplementations.Select(m => m.MethodKind).FirstOrDefault(); + if (methodDecl.ExplicitInterfaceImplementations.IsEmpty) + { + throw new InternalError(methodDecl, "Couldn't get the original method kind for an explicit interface implementation"); + } + + methodKind = methodDecl.ExplicitInterfaceImplementations.Select(m => m.MethodKind).First(); } switch (methodKind) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs index ec4f44c21c7..79855875d02 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs @@ -381,8 +381,17 @@ namespace Semmle.Extraction.CSharp references => ResolveReferences(compilerArguments, analyser, canonicalPathCache, references), (analyser, syntaxTrees) => { + var paths = compilerArguments.SourceFiles + .Select(src => src.Path) + .ToList(); + + if (compilerArguments.GeneratedFilesOutputDirectory is not null) + { + paths.AddRange(Directory.GetFiles(compilerArguments.GeneratedFilesOutputDirectory, "*.cs", SearchOption.AllDirectories)); + } + return ReadSyntaxTrees( - compilerArguments.SourceFiles.Select(src => canonicalPathCache.GetCanonicalPath(src.Path)), + paths.Select(canonicalPathCache.GetCanonicalPath), analyser, compilerArguments.ParseOptions, compilerArguments.Encoding, diff --git a/csharp/extractor/Semmle.Extraction.CSharp/SymbolExtensions.cs b/csharp/extractor/Semmle.Extraction.CSharp/SymbolExtensions.cs index cd182fe4640..aaef1702532 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/SymbolExtensions.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/SymbolExtensions.cs @@ -25,7 +25,7 @@ namespace Semmle.Extraction.CSharp Nullability = nullability; } - public static AnnotatedTypeSymbol? CreateNotAnnotated(ITypeSymbol symbol) => + public static AnnotatedTypeSymbol? CreateNotAnnotated(ITypeSymbol? symbol) => symbol is null ? (AnnotatedTypeSymbol?)null : new AnnotatedTypeSymbol(symbol, NullableAnnotation.None); } diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 56de88b8aa5..b466881d9d7 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.5.3 + +No user-facing changes. + +## 1.5.2 + +No user-facing changes. + ## 1.5.1 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.5.2.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.5.2.md new file mode 100644 index 00000000000..384c27833f1 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.5.2.md @@ -0,0 +1,3 @@ +## 1.5.2 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.5.3.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.5.3.md new file mode 100644 index 00000000000..2e9bcb5e663 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.5.3.md @@ -0,0 +1,3 @@ +## 1.5.3 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index c5775c46013..232224b0e26 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.1 +lastReleaseVersion: 1.5.3 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index fb0859160cc..5f8c63b8ea3 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.5.2-dev +version: 1.5.4-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 56de88b8aa5..b466881d9d7 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.5.3 + +No user-facing changes. + +## 1.5.2 + +No user-facing changes. + ## 1.5.1 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.5.2.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.5.2.md new file mode 100644 index 00000000000..384c27833f1 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.5.2.md @@ -0,0 +1,3 @@ +## 1.5.2 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.5.3.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.5.3.md new file mode 100644 index 00000000000..2e9bcb5e663 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.5.3.md @@ -0,0 +1,3 @@ +## 1.5.3 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index c5775c46013..232224b0e26 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.5.1 +lastReleaseVersion: 1.5.3 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 4c9eeb60c87..65153d150f7 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.5.2-dev +version: 1.5.4-dev groups: - csharp - solorigate diff --git a/csharp/ql/consistency-queries/AstConsistency.qll b/csharp/ql/consistency-queries/AstConsistency.qll index 5373b638db7..3871cdf99f2 100644 --- a/csharp/ql/consistency-queries/AstConsistency.qll +++ b/csharp/ql/consistency-queries/AstConsistency.qll @@ -17,3 +17,8 @@ query predicate missingLocation(Element e) { not exists(TupleType t | e = t or e = t.getAField()) and not exists(e.getLocation()) } + +query predicate multipleToString(Element e, string s) { + s = strictconcat(e.toString(), ",") and + strictcount(e.toString()) > 1 +} diff --git a/csharp/ql/consistency-queries/CfgConsistency.ql b/csharp/ql/consistency-queries/CfgConsistency.ql index fe45e5a96d8..c50d7aaa101 100644 --- a/csharp/ql/consistency-queries/CfgConsistency.ql +++ b/csharp/ql/consistency-queries/CfgConsistency.ql @@ -62,3 +62,8 @@ query predicate preBasicBlockConsistency(ControlFlowElement cfe1, ControlFlowEle bbIntraSuccInconsistency(cfe1, cfe2) and s = "intra succ inconsistency" } + +query predicate multipleToString(Node n, string s) { + s = strictconcat(n.toString(), ",") and + strictcount(n.toString()) > 1 +} diff --git a/csharp/ql/consistency-queries/DataFlowConsistency.ql b/csharp/ql/consistency-queries/DataFlowConsistency.ql index d2c83cd82cc..8f099fe6daf 100644 --- a/csharp/ql/consistency-queries/DataFlowConsistency.ql +++ b/csharp/ql/consistency-queries/DataFlowConsistency.ql @@ -37,13 +37,13 @@ private class MyConsistencyConfiguration extends ConsistencyConfiguration { } override predicate postWithInFlowExclude(Node n) { - n instanceof SummaryNode + n instanceof FlowSummaryNode or n.asExpr().(ObjectCreation).hasInitializer() } override predicate argHasPostUpdateExclude(ArgumentNode n) { - n instanceof SummaryNode + n instanceof FlowSummaryNode or not exists(LocalFlow::getAPostUpdateNodeForArg(n.getControlFlowNode())) or @@ -74,3 +74,8 @@ private class MyConsistencyConfiguration extends ConsistencyConfiguration { override predicate identityLocalStepExclude(Node n) { none() } } + +query predicate multipleToString(Node n, string s) { + s = strictconcat(n.toString(), ",") and + strictcount(n.toString()) > 1 +} diff --git a/csharp/ql/integration-tests/all-platforms/cshtml/Files.expected b/csharp/ql/integration-tests/all-platforms/cshtml/Files.expected new file mode 100644 index 00000000000..86a8cd34b88 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/cshtml/Files.expected @@ -0,0 +1,6 @@ +| Program.cs:0:0:0:0 | Program.cs | +| obj/Debug/net7.0/.NETCoreApp,Version=v7.0.AssemblyAttributes.cs:0:0:0:0 | obj/Debug/net7.0/.NETCoreApp,Version=v7.0.AssemblyAttributes.cs | +| obj/Debug/net7.0/cshtml.AssemblyInfo.cs:0:0:0:0 | obj/Debug/net7.0/cshtml.AssemblyInfo.cs | +| obj/Debug/net7.0/cshtml.GlobalUsings.g.cs:0:0:0:0 | obj/Debug/net7.0/cshtml.GlobalUsings.g.cs | +| obj/Debug/net7.0/cshtml.RazorAssemblyInfo.cs:0:0:0:0 | obj/Debug/net7.0/cshtml.RazorAssemblyInfo.cs | +| obj/Debug/net7.0/generated/Microsoft.NET.Sdk.Razor.SourceGenerators/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Views_Home_Index_cshtml.g.cs:0:0:0:0 | obj/Debug/net7.0/generated/Microsoft.NET.Sdk.Razor.SourceGenerators/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/Views_Home_Index_cshtml.g.cs | diff --git a/csharp/ql/integration-tests/all-platforms/cshtml/Files.ql b/csharp/ql/integration-tests/all-platforms/cshtml/Files.ql new file mode 100644 index 00000000000..bea5557a25f --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/cshtml/Files.ql @@ -0,0 +1,5 @@ +import csharp + +from File f +where f.fromSource() +select f diff --git a/csharp/ql/integration-tests/all-platforms/cshtml/Program.cs b/csharp/ql/integration-tests/all-platforms/cshtml/Program.cs new file mode 100644 index 00000000000..47eee48cc79 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/cshtml/Program.cs @@ -0,0 +1 @@ +var dummy = "dummy"; \ No newline at end of file diff --git a/csharp/ql/integration-tests/all-platforms/cshtml/Views/Home/Index.cshtml b/csharp/ql/integration-tests/all-platforms/cshtml/Views/Home/Index.cshtml new file mode 100644 index 00000000000..52ffe012e42 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/cshtml/Views/Home/Index.cshtml @@ -0,0 +1,8 @@ +@{ + ViewData["Title"] = "Home Page"; +} + +
    +

    Welcome

    +

    Learn about building Web apps with ASP.NET Core.

    +
    diff --git a/csharp/ql/integration-tests/all-platforms/cshtml/cshtml.csproj b/csharp/ql/integration-tests/all-platforms/cshtml/cshtml.csproj new file mode 100644 index 00000000000..01d15e87dc4 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/cshtml/cshtml.csproj @@ -0,0 +1,14 @@ + + + + Exe + net7.0 + enable + enable + + + + + + + diff --git a/csharp/ql/integration-tests/all-platforms/cshtml/test.py b/csharp/ql/integration-tests/all-platforms/cshtml/test.py new file mode 100644 index 00000000000..24cc83b4f2d --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/cshtml/test.py @@ -0,0 +1,3 @@ +from create_database_utils import * + +run_codeql_database_create(['dotnet build'], lang="csharp", extra_args=["--extractor-option=cil=false"]) diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test/test.py b/csharp/ql/integration-tests/posix-only/dotnet_test/test.py index 7bc159e6720..f69d01b2188 100644 --- a/csharp/ql/integration-tests/posix-only/dotnet_test/test.py +++ b/csharp/ql/integration-tests/posix-only/dotnet_test/test.py @@ -1,5 +1,10 @@ from create_database_utils import * from diagnostics_test_utils import * -run_codeql_database_create(['dotnet test'], db=None, lang="csharp") +# Implicitly build and then run tests. +run_codeql_database_create(['dotnet test'], test_db="test-db", lang="csharp") check_diagnostics() + +# Explicitly build and then run tests. +run_codeql_database_create(['dotnet clean', 'rm -rf test-db', 'dotnet build -o myout', 'dotnet test myout/dotnet_test.dll'], test_db="test2-db", lang="csharp") +check_diagnostics(test_db="test2-db") diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/UnitTest1.cs b/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/UnitTest1.cs new file mode 100644 index 00000000000..7e3b2ce1d1c --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/UnitTest1.cs @@ -0,0 +1,10 @@ +namespace dotnet_test_mstest; + +[TestClass] +public class UnitTest1 +{ + [TestMethod] + public void TestMethod1() + { + } +} diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/Usings.cs b/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/Usings.cs new file mode 100644 index 00000000000..540383dcf43 --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/Usings.cs @@ -0,0 +1 @@ +global using Microsoft.VisualStudio.TestTools.UnitTesting; diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/dotnet_test_mstest.csproj b/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/dotnet_test_mstest.csproj new file mode 100644 index 00000000000..95c7586e04e --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/dotnet_test_mstest.csproj @@ -0,0 +1,19 @@ + + + + net7.0 + enable + enable + + false + Exe + + + + + + + + + + diff --git a/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/test.py b/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/test.py new file mode 100644 index 00000000000..ff14366807d --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/dotnet_test_mstest/test.py @@ -0,0 +1,14 @@ +import platform +from create_database_utils import * +from diagnostics_test_utils import * + +# Implicitly build and then run tests. +run_codeql_database_create(['dotnet test'], test_db="test-db", lang="csharp") +check_diagnostics() + +# Fix `dotnet test` picking `x64` on arm-based macOS +architecture = '-a arm64' if platform.machine() == 'arm64' else '' + +# Explicitly build and then run tests. +run_codeql_database_create(['dotnet clean', 'rm -rf test-db', 'dotnet build -o myout --os win', 'dotnet test myout/dotnet_test_mstest.exe ' + architecture], test_db="test2-db", lang="csharp") +check_diagnostics(test_db="test2-db") diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 4ebff5c86a7..8fc9f20a131 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,31 @@ +## 0.6.3 + +### Major Analysis Improvements + +* The extractor has been changed to run after the traced compiler call. This allows inspecting compiler generated files, such as the output of source generators. With this change, `.cshtml` files and their generated `.cshtml.g.cs` counterparts are extracted on dotnet 6 and above. + +### Minor Analysis Improvements + +* C#: Analysis of the `dotnet test` command supplied with a `dll` or `exe` file as argument no longer fails due to the addition of an erroneous `-p:SharedCompilation=false` argument. +* Deleted the deprecated `WebConfigXML`, `ConfigurationXMLElement`, `LocationXMLElement`, `SystemWebXMLElement`, `SystemWebServerXMLElement`, `CustomErrorsXMLElement`, and `HttpRuntimeXMLElement` classes from `WebConfig.qll`. The non-deprecated names with PascalCased Xml suffixes should be used instead. +* Deleted the deprecated `Record` class from both `Types.qll` and `Type.qll`. +* Deleted the deprecated `StructuralComparisonConfiguration` class from `StructuralComparison.qll`, use `sameGvn` instead. +* Deleted the deprecated `isParameterOf` predicate from the `ParameterNode` class. +* Deleted the deprecated `SafeExternalAPICallable`, `ExternalAPIDataNode`, `UntrustedDataToExternalAPIConfig`, `UntrustedExternalAPIDataNode`, and `ExternalAPIUsedWithUntrustedData` classes from `ExternalAPIsQuery.qll`. The non-deprecated names with PascalCased Api suffixes should be used instead. +* Updated the following C# sink kind names. Any custom data extensions that use these sink kinds will need to be updated accordingly in order to continue working. + * `code` to `code-injection` + * `sql` to `sql-injection` + * `html` to `html-injection` + * `xss` to `js-injection` + * `remote` to `file-content-store` + +## 0.6.2 + +### Minor Analysis Improvements + +* The `cs/log-forging`, `cs/cleartext-storage`, and `cs/exposure-of-sensitive-information` queries now correctly handle unsanitized arguments to `ILogger` extension methods. +* Updated the `neutralModel` extensible predicate to include a `kind` column. + ## 0.6.1 No user-facing changes. diff --git a/csharp/ql/lib/change-notes/2023-04-26-neutral-model-kinds.md b/csharp/ql/lib/change-notes/2023-04-26-neutral-model-kinds.md deleted file mode 100644 index ab19597224b..00000000000 --- a/csharp/ql/lib/change-notes/2023-04-26-neutral-model-kinds.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Updated the `neutralModel` extensible predicate to include a `kind` column. \ No newline at end of file diff --git a/csharp/ql/lib/change-notes/2023-05-09-models-as-data.md b/csharp/ql/lib/change-notes/2023-05-09-models-as-data.md new file mode 100644 index 00000000000..c0abd8f06c0 --- /dev/null +++ b/csharp/ql/lib/change-notes/2023-05-09-models-as-data.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Additional support for `command-injection`, `ldap-injection`, `log-injection`, and `url-redirection` sink kinds for Models as Data. \ No newline at end of file diff --git a/csharp/ql/lib/change-notes/2023-05-17-update-csharp-sink-kinds.md b/csharp/ql/lib/change-notes/2023-05-17-update-csharp-sink-kinds.md deleted file mode 100644 index ce6d618af5e..00000000000 --- a/csharp/ql/lib/change-notes/2023-05-17-update-csharp-sink-kinds.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -category: minorAnalysis ---- -* Updated the following C# sink kind names. Any custom data extensions that use these sink kinds will need to be updated accordingly in order to continue working. - * `code` to `code-injection` - * `sql` to `sql-injection` - * `html` to `html-injection` - * `xss` to `js-injection` - * `remote` to `file-content-store` diff --git a/csharp/ql/lib/change-notes/2023-06-08-type-strengthening.md b/csharp/ql/lib/change-notes/2023-06-08-type-strengthening.md new file mode 100644 index 00000000000..60daaa53058 --- /dev/null +++ b/csharp/ql/lib/change-notes/2023-06-08-type-strengthening.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* The data flow library now performs type strengthening. This increases precision for all data flow queries by excluding paths that can be inferred to be impossible due to incompatible types. diff --git a/csharp/ql/lib/change-notes/2023-05-16-ilogger-extension-methods.md b/csharp/ql/lib/change-notes/released/0.6.2.md similarity index 58% rename from csharp/ql/lib/change-notes/2023-05-16-ilogger-extension-methods.md rename to csharp/ql/lib/change-notes/released/0.6.2.md index 4d4f0767238..c3829f2df86 100644 --- a/csharp/ql/lib/change-notes/2023-05-16-ilogger-extension-methods.md +++ b/csharp/ql/lib/change-notes/released/0.6.2.md @@ -1,4 +1,6 @@ ---- -category: minorAnalysis ---- +## 0.6.2 + +### Minor Analysis Improvements + * The `cs/log-forging`, `cs/cleartext-storage`, and `cs/exposure-of-sensitive-information` queries now correctly handle unsanitized arguments to `ILogger` extension methods. +* Updated the `neutralModel` extensible predicate to include a `kind` column. diff --git a/csharp/ql/lib/change-notes/released/0.6.3.md b/csharp/ql/lib/change-notes/released/0.6.3.md new file mode 100644 index 00000000000..51f62426686 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/0.6.3.md @@ -0,0 +1,20 @@ +## 0.6.3 + +### Major Analysis Improvements + +* The extractor has been changed to run after the traced compiler call. This allows inspecting compiler generated files, such as the output of source generators. With this change, `.cshtml` files and their generated `.cshtml.g.cs` counterparts are extracted on dotnet 6 and above. + +### Minor Analysis Improvements + +* C#: Analysis of the `dotnet test` command supplied with a `dll` or `exe` file as argument no longer fails due to the addition of an erroneous `-p:SharedCompilation=false` argument. +* Deleted the deprecated `WebConfigXML`, `ConfigurationXMLElement`, `LocationXMLElement`, `SystemWebXMLElement`, `SystemWebServerXMLElement`, `CustomErrorsXMLElement`, and `HttpRuntimeXMLElement` classes from `WebConfig.qll`. The non-deprecated names with PascalCased Xml suffixes should be used instead. +* Deleted the deprecated `Record` class from both `Types.qll` and `Type.qll`. +* Deleted the deprecated `StructuralComparisonConfiguration` class from `StructuralComparison.qll`, use `sameGvn` instead. +* Deleted the deprecated `isParameterOf` predicate from the `ParameterNode` class. +* Deleted the deprecated `SafeExternalAPICallable`, `ExternalAPIDataNode`, `UntrustedDataToExternalAPIConfig`, `UntrustedExternalAPIDataNode`, and `ExternalAPIUsedWithUntrustedData` classes from `ExternalAPIsQuery.qll`. The non-deprecated names with PascalCased Api suffixes should be used instead. +* Updated the following C# sink kind names. Any custom data extensions that use these sink kinds will need to be updated accordingly in order to continue working. + * `code` to `code-injection` + * `sql` to `sql-injection` + * `html` to `html-injection` + * `xss` to `js-injection` + * `remote` to `file-content-store` diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 80fb0899f64..b7dafe32c5d 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.1 +lastReleaseVersion: 0.6.3 diff --git a/csharp/ql/lib/ext/System.Collections.Generic.model.yml b/csharp/ql/lib/ext/System.Collections.Generic.model.yml index 3029690b03f..26ef7027b5e 100644 --- a/csharp/ql/lib/ext/System.Collections.Generic.model.yml +++ b/csharp/ql/lib/ext/System.Collections.Generic.model.yml @@ -40,7 +40,7 @@ extensions: - ["System.Collections.Generic", "LinkedList<>", False, "FindLast", "(T)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Collections.Generic", "LinkedList<>", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Generic.LinkedList<>+Enumerator.Current]", "value", "manual"] - ["System.Collections.Generic", "List<>", False, "AddRange", "(System.Collections.Generic.IEnumerable)", "", "Argument[0].Element", "Argument[this].Element", "value", "manual"] - - ["System.Collections.Generic", "List<>", False, "AsReadOnly", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Generic", "List<>", False, "AsReadOnly", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Generic", "List<>", False, "Find", "(System.Predicate)", "", "Argument[this].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["System.Collections.Generic", "List<>", False, "Find", "(System.Predicate)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Collections.Generic", "List<>", False, "FindAll", "(System.Predicate)", "", "Argument[this].Element", "Argument[0].Parameter[0]", "value", "manual"] @@ -48,10 +48,8 @@ extensions: - ["System.Collections.Generic", "List<>", False, "FindLast", "(System.Predicate)", "", "Argument[this].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["System.Collections.Generic", "List<>", False, "FindLast", "(System.Predicate)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Collections.Generic", "List<>", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Generic.List<>+Enumerator.Current]", "value", "manual"] - - ["System.Collections.Generic", "List<>", False, "GetRange", "(System.Int32,System.Int32)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Generic", "List<>", False, "GetRange", "(System.Int32,System.Int32)", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Generic", "List<>", False, "InsertRange", "(System.Int32,System.Collections.Generic.IEnumerable)", "", "Argument[1].Element", "Argument[this].Element", "value", "manual"] - - ["System.Collections.Generic", "List<>", False, "Reverse", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - - ["System.Collections.Generic", "List<>", False, "Reverse", "(System.Int32,System.Int32)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Generic", "Queue<>", False, "Clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"] - ["System.Collections.Generic", "Queue<>", False, "CopyTo", "(T[],System.Int32)", "", "Argument[this].Element", "Argument[0].Element", "value", "manual"] - ["System.Collections.Generic", "Queue<>", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Generic.Queue<>+Enumerator.Current]", "value", "manual"] @@ -79,7 +77,7 @@ extensions: - ["System.Collections.Generic", "SortedList<,>+KeyList", False, "Clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"] - ["System.Collections.Generic", "SortedList<,>+ValueList", False, "Clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"] - ["System.Collections.Generic", "SortedSet<>", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Generic.SortedSet<>+Enumerator.Current]", "value", "manual"] - - ["System.Collections.Generic", "SortedSet<>", False, "Reverse", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Generic", "SortedSet<>", False, "Reverse", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Generic", "Stack<>", False, "Clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"] - ["System.Collections.Generic", "Stack<>", False, "CopyTo", "(T[],System.Int32)", "", "Argument[this].Element", "Argument[0].Element", "value", "manual"] - ["System.Collections.Generic", "Stack<>", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Generic.Stack<>+Enumerator.Current]", "value", "manual"] diff --git a/csharp/ql/lib/ext/System.Collections.Immutable.model.yml b/csharp/ql/lib/ext/System.Collections.Immutable.model.yml index b2bd1b6a774..1a71a78100e 100644 --- a/csharp/ql/lib/ext/System.Collections.Immutable.model.yml +++ b/csharp/ql/lib/ext/System.Collections.Immutable.model.yml @@ -20,7 +20,6 @@ extensions: - ["System.Collections.Immutable", "ImmutableArray<>+Builder", False, "AddRange<>", "(System.Collections.Immutable.ImmutableArray+Builder)", "", "Argument[0].Element", "Argument[this].Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableArray<>+Builder", False, "AddRange<>", "(TDerived[])", "", "Argument[0].Element", "Argument[this].Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableArray<>+Builder", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current]", "value", "manual"] - - ["System.Collections.Immutable", "ImmutableArray<>+Builder", False, "Reverse", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableDictionary<,>", False, "Add", "(System.Collections.Generic.KeyValuePair)", "", "Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "value", "manual"] - ["System.Collections.Immutable", "ImmutableDictionary<,>", False, "Add", "(System.Collections.Generic.KeyValuePair)", "", "Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value]", "value", "manual"] - ["System.Collections.Immutable", "ImmutableDictionary<,>", False, "Add", "(TKey,TValue)", "", "Argument[0]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "value", "manual"] @@ -49,11 +48,11 @@ extensions: - ["System.Collections.Immutable", "ImmutableList<>", False, "FindLast", "(System.Predicate)", "", "Argument[this].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>", False, "FindLast", "(System.Predicate)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current]", "value", "manual"] - - ["System.Collections.Immutable", "ImmutableList<>", False, "GetRange", "(System.Int32,System.Int32)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Immutable", "ImmutableList<>", False, "GetRange", "(System.Int32,System.Int32)", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>", False, "Insert", "(System.Int32,T)", "", "Argument[1]", "Argument[this].Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>", False, "InsertRange", "(System.Int32,System.Collections.Generic.IEnumerable)", "", "Argument[1].Element", "Argument[this].Element", "value", "manual"] - - ["System.Collections.Immutable", "ImmutableList<>", False, "Reverse", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - - ["System.Collections.Immutable", "ImmutableList<>", False, "Reverse", "(System.Int32,System.Int32)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Immutable", "ImmutableList<>", False, "Reverse", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Immutable", "ImmutableList<>", False, "Reverse", "(System.Int32,System.Int32)", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>", False, "get_Item", "(System.Int32)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "AddRange", "(System.Collections.Generic.IEnumerable)", "", "Argument[0].Element", "Argument[this].Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "Find", "(System.Predicate)", "", "Argument[this].Element", "Argument[0].Parameter[0]", "value", "manual"] @@ -63,10 +62,8 @@ extensions: - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "FindLast", "(System.Predicate)", "", "Argument[this].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "FindLast", "(System.Predicate)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current]", "value", "manual"] - - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "GetRange", "(System.Int32,System.Int32)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "GetRange", "(System.Int32,System.Int32)", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "InsertRange", "(System.Int32,System.Collections.Generic.IEnumerable)", "", "Argument[1].Element", "Argument[this].Element", "value", "manual"] - - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "Reverse", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - - ["System.Collections.Immutable", "ImmutableList<>+Builder", False, "Reverse", "(System.Int32,System.Int32)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableQueue<>", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Immutable.ImmutableQueue<>+Enumerator.Current]", "value", "manual"] - ["System.Collections.Immutable", "ImmutableSortedDictionary<,>", False, "Add", "(System.Collections.Generic.KeyValuePair)", "", "Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Key]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "value", "manual"] - ["System.Collections.Immutable", "ImmutableSortedDictionary<,>", False, "Add", "(System.Collections.Generic.KeyValuePair)", "", "Argument[0].Property[System.Collections.Generic.KeyValuePair<,>.Value]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value]", "value", "manual"] @@ -85,8 +82,8 @@ extensions: - ["System.Collections.Immutable", "ImmutableSortedDictionary<,>+Builder", False, "get_Values", "()", "", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value]", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableSortedSet<>", False, "Add", "(T)", "", "Argument[0]", "Argument[this].Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableSortedSet<>", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current]", "value", "manual"] - - ["System.Collections.Immutable", "ImmutableSortedSet<>", False, "Reverse", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Immutable", "ImmutableSortedSet<>", False, "Reverse", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableSortedSet<>", False, "get_Item", "(System.Int32)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Collections.Immutable", "ImmutableSortedSet<>+Builder", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current]", "value", "manual"] - - ["System.Collections.Immutable", "ImmutableSortedSet<>+Builder", False, "Reverse", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Immutable", "ImmutableSortedSet<>+Builder", False, "Reverse", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Immutable", "ImmutableStack<>", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.Immutable.ImmutableStack<>+Enumerator.Current]", "value", "manual"] diff --git a/csharp/ql/lib/ext/System.Collections.Specialized.model.yml b/csharp/ql/lib/ext/System.Collections.Specialized.model.yml index 8456af24f14..96b947f2423 100644 --- a/csharp/ql/lib/ext/System.Collections.Specialized.model.yml +++ b/csharp/ql/lib/ext/System.Collections.Specialized.model.yml @@ -9,7 +9,7 @@ extensions: - ["System.Collections.Specialized", "NameValueCollection", False, "Add", "(System.Collections.Specialized.NameValueCollection)", "", "Argument[0]", "Argument[this].Element", "value", "manual"] - ["System.Collections.Specialized", "NameValueCollection", True, "Clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"] - ["System.Collections.Specialized", "NameValueCollection", False, "CopyTo", "(System.Array,System.Int32)", "", "Argument[this].Element", "Argument[0].Element", "value", "manual"] - - ["System.Collections.Specialized", "OrderedDictionary", False, "AsReadOnly", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections.Specialized", "OrderedDictionary", False, "AsReadOnly", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections.Specialized", "StringCollection", False, "Add", "(System.String)", "", "Argument[0]", "Argument[this].Element", "value", "manual"] - ["System.Collections.Specialized", "StringCollection", False, "AddRange", "(System.String[])", "", "Argument[0].Element", "Argument[this].Element", "value", "manual"] - ["System.Collections.Specialized", "StringCollection", False, "CopyTo", "(System.String[],System.Int32)", "", "Argument[this].Element", "Argument[0].Element", "value", "manual"] diff --git a/csharp/ql/lib/ext/System.Collections.model.yml b/csharp/ql/lib/ext/System.Collections.model.yml index 9aa2c2489c9..ef098a6bfe5 100644 --- a/csharp/ql/lib/ext/System.Collections.model.yml +++ b/csharp/ql/lib/ext/System.Collections.model.yml @@ -4,17 +4,15 @@ extensions: extensible: summaryModel data: - ["System.Collections", "ArrayList", False, "AddRange", "(System.Collections.ICollection)", "", "Argument[0].Element", "Argument[this].Element", "value", "manual"] - - ["System.Collections", "ArrayList", False, "Clone", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections", "ArrayList", False, "Clone", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections", "ArrayList", False, "FixedSize", "(System.Collections.ArrayList)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections", "ArrayList", False, "FixedSize", "(System.Collections.IList)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections", "ArrayList", False, "GetEnumerator", "(System.Int32,System.Int32)", "", "Argument[this].Element", "ReturnValue.Property[System.Collections.IEnumerator.Current]", "value", "manual"] - - ["System.Collections", "ArrayList", False, "GetRange", "(System.Int32,System.Int32)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections", "ArrayList", False, "GetRange", "(System.Int32,System.Int32)", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections", "ArrayList", False, "InsertRange", "(System.Int32,System.Collections.ICollection)", "", "Argument[1].Element", "Argument[this].Element", "value", "manual"] - ["System.Collections", "ArrayList", False, "Repeat", "(System.Object,System.Int32)", "", "Argument[0]", "ReturnValue.Element", "value", "manual"] - - ["System.Collections", "ArrayList", False, "Reverse", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - - ["System.Collections", "ArrayList", False, "Reverse", "(System.Int32,System.Int32)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - - ["System.Collections", "BitArray", False, "Clone", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - - ["System.Collections", "Hashtable", False, "Clone", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections", "BitArray", False, "Clone", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections", "Hashtable", False, "Clone", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections", "Hashtable", False, "Hashtable", "(System.Collections.IDictionary)", "", "Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "value", "manual"] - ["System.Collections", "Hashtable", False, "Hashtable", "(System.Collections.IDictionary)", "", "Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value]", "value", "manual"] - ["System.Collections", "Hashtable", False, "Hashtable", "(System.Collections.IDictionary,System.Collections.IEqualityComparer)", "", "Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "value", "manual"] @@ -43,9 +41,9 @@ extensions: - ["System.Collections", "IList", True, "get_Item", "(System.Int32)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Collections", "IList", True, "set_Item", "(System.Int32,System.Object)", "", "Argument[1]", "Argument[this].Element", "value", "manual"] - ["System.Collections", "Queue", True, "Clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"] - - ["System.Collections", "Queue", False, "Clone", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections", "Queue", False, "Clone", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections", "Queue", False, "Peek", "()", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - - ["System.Collections", "SortedList", False, "Clone", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections", "SortedList", False, "Clone", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections", "SortedList", False, "GetByIndex", "(System.Int32)", "", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value]", "ReturnValue", "value", "manual"] - ["System.Collections", "SortedList", False, "GetValueList", "()", "", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value]", "ReturnValue.Element", "value", "manual"] - ["System.Collections", "SortedList", False, "SortedList", "(System.Collections.IDictionary)", "", "Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "value", "manual"] @@ -53,6 +51,6 @@ extensions: - ["System.Collections", "SortedList", False, "SortedList", "(System.Collections.IDictionary,System.Collections.IComparer)", "", "Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key]", "value", "manual"] - ["System.Collections", "SortedList", False, "SortedList", "(System.Collections.IDictionary,System.Collections.IComparer)", "", "Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value]", "value", "manual"] - ["System.Collections", "Stack", False, "Clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"] - - ["System.Collections", "Stack", False, "Clone", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Collections", "Stack", False, "Clone", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Collections", "Stack", False, "Peek", "()", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Collections", "Stack", False, "Pop", "()", "", "Argument[this].Element", "ReturnValue", "value", "manual"] diff --git a/csharp/ql/lib/ext/System.Data.model.yml b/csharp/ql/lib/ext/System.Data.model.yml index 26f650c96a5..6331e67c067 100644 --- a/csharp/ql/lib/ext/System.Data.model.yml +++ b/csharp/ql/lib/ext/System.Data.model.yml @@ -58,7 +58,7 @@ extensions: - ["System.Data", "IDataParameterCollection", True, "set_Item", "(System.String,System.Object)", "", "Argument[1]", "Argument[this].Element", "value", "manual"] - ["System.Data", "ITableMappingCollection", True, "get_Item", "(System.String)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Data", "ITableMappingCollection", True, "set_Item", "(System.String,System.Object)", "", "Argument[1]", "Argument[this].Element", "value", "manual"] - - ["System.Data", "PropertyCollection", False, "Clone", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System.Data", "PropertyCollection", False, "Clone", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System.Data", "TypedTableBaseExtensions", False, "AsEnumerable<>", "(System.Data.TypedTableBase)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["System.Data", "TypedTableBaseExtensions", False, "ElementAtOrDefault<>", "(System.Data.TypedTableBase,System.Int32)", "", "Argument[0].Element", "ReturnValue", "value", "manual"] - ["System.Data", "TypedTableBaseExtensions", False, "OrderBy<,>", "(System.Data.TypedTableBase,System.Func)", "", "Argument[0].Element", "Argument[1].Parameter[0]", "value", "manual"] diff --git a/csharp/ql/lib/ext/System.Runtime.CompilerServices.model.yml b/csharp/ql/lib/ext/System.Runtime.CompilerServices.model.yml index bd28d9168fd..1e664b73e4a 100644 --- a/csharp/ql/lib/ext/System.Runtime.CompilerServices.model.yml +++ b/csharp/ql/lib/ext/System.Runtime.CompilerServices.model.yml @@ -6,6 +6,4 @@ extensions: - ["System.Runtime.CompilerServices", "ConditionalWeakTable<,>", False, "Clear", "()", "", "Argument[this].WithoutElement", "Argument[this]", "value", "manual"] - ["System.Runtime.CompilerServices", "ConfiguredTaskAwaitable<>", False, "GetAwaiter", "()", "", "Argument[this].SyntheticField[m_configuredTaskAwaiter]", "ReturnValue", "value", "manual"] - ["System.Runtime.CompilerServices", "ConfiguredTaskAwaitable<>+ConfiguredTaskAwaiter", False, "GetResult", "()", "", "Argument[this].SyntheticField[m_task_configured_task_awaitable].Property[System.Threading.Tasks.Task<>.Result]", "ReturnValue", "value", "manual"] - - ["System.Runtime.CompilerServices", "ReadOnlyCollectionBuilder<>", False, "Reverse", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - - ["System.Runtime.CompilerServices", "ReadOnlyCollectionBuilder<>", False, "Reverse", "(System.Int32,System.Int32)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["System.Runtime.CompilerServices", "TaskAwaiter<>", False, "GetResult", "()", "", "Argument[this].SyntheticField[m_task_task_awaiter].Property[System.Threading.Tasks.Task<>.Result]", "ReturnValue", "value", "manual"] diff --git a/csharp/ql/lib/ext/System.model.yml b/csharp/ql/lib/ext/System.model.yml index b0f74507b87..9b4fc9615ab 100644 --- a/csharp/ql/lib/ext/System.model.yml +++ b/csharp/ql/lib/ext/System.model.yml @@ -13,7 +13,7 @@ extensions: - ["System", "Array", False, "AsReadOnly<>", "(T[])", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["System", "Array", False, "Clear", "(System.Array)", "", "Argument[0].WithoutElement", "Argument[0]", "value", "manual"] - ["System", "Array", False, "Clear", "(System.Array,System.Int32,System.Int32)", "", "Argument[0].WithoutElement", "Argument[0]", "value", "manual"] - - ["System", "Array", False, "Clone", "()", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["System", "Array", False, "Clone", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] - ["System", "Array", False, "CopyTo", "(System.Array,System.Int64)", "", "Argument[this].Element", "Argument[0].Element", "value", "manual"] - ["System", "Array", False, "Find<>", "(T[],System.Predicate)", "", "Argument[0].Element", "Argument[1].Parameter[0]", "value", "manual"] - ["System", "Array", False, "Find<>", "(T[],System.Predicate)", "", "Argument[0].Element", "ReturnValue", "value", "manual"] diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index fdb710e9371..43f20151fdc 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,11 +1,12 @@ name: codeql/csharp-all -version: 0.6.2-dev +version: 0.6.4-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp library: true upgrades: upgrades dependencies: + codeql/mad: ${workspace} codeql/ssa: ${workspace} codeql/tutorial: ${workspace} codeql/util: ${workspace} diff --git a/csharp/ql/lib/semmle/code/asp/WebConfig.qll b/csharp/ql/lib/semmle/code/asp/WebConfig.qll index 49e42fce5c1..fdc251b4242 100644 --- a/csharp/ql/lib/semmle/code/asp/WebConfig.qll +++ b/csharp/ql/lib/semmle/code/asp/WebConfig.qll @@ -18,9 +18,6 @@ class WebConfigReleaseTransformXml extends XmlFile { WebConfigReleaseTransformXml() { this.getName().matches("%Web.Release.config") } } -/** DEPRECATED: Alias for WebConfigXml */ -deprecated class WebConfigXML = WebConfigXml; - /** A `` tag in an ASP.NET configuration file. */ class ConfigurationXmlElement extends XmlElement { ConfigurationXmlElement() { this.getName().toLowerCase() = "configuration" } @@ -31,9 +28,6 @@ class CompilationXmlElement extends XmlElement { CompilationXmlElement() { this.getName().toLowerCase() = "compilation" } } -/** DEPRECATED: Alias for ConfigurationXmlElement */ -deprecated class ConfigurationXMLElement = ConfigurationXmlElement; - /** A `` tag in an ASP.NET configuration file. */ class LocationXmlElement extends XmlElement { LocationXmlElement() { @@ -42,9 +36,6 @@ class LocationXmlElement extends XmlElement { } } -/** DEPRECATED: Alias for LocationXmlElement */ -deprecated class LocationXMLElement = LocationXmlElement; - /** A `` tag in an ASP.NET configuration file. */ class SystemWebXmlElement extends XmlElement { SystemWebXmlElement() { @@ -57,9 +48,6 @@ class SystemWebXmlElement extends XmlElement { } } -/** DEPRECATED: Alias for SystemWebXmlElement */ -deprecated class SystemWebXMLElement = SystemWebXmlElement; - /** A `` tag in an ASP.NET configuration file. */ class SystemWebServerXmlElement extends XmlElement { SystemWebServerXmlElement() { @@ -72,9 +60,6 @@ class SystemWebServerXmlElement extends XmlElement { } } -/** DEPRECATED: Alias for SystemWebServerXmlElement */ -deprecated class SystemWebServerXMLElement = SystemWebServerXmlElement; - /** A `` tag in an ASP.NET configuration file. */ class CustomErrorsXmlElement extends XmlElement { CustomErrorsXmlElement() { @@ -83,9 +68,6 @@ class CustomErrorsXmlElement extends XmlElement { } } -/** DEPRECATED: Alias for CustomErrorsXmlElement */ -deprecated class CustomErrorsXMLElement = CustomErrorsXmlElement; - /** A `` tag in an ASP.NET configuration file. */ class HttpRuntimeXmlElement extends XmlElement { HttpRuntimeXmlElement() { @@ -94,9 +76,6 @@ class HttpRuntimeXmlElement extends XmlElement { } } -/** DEPRECATED: Alias for HttpRuntimeXmlElement */ -deprecated class HttpRuntimeXMLElement = HttpRuntimeXmlElement; - /** A `` tag under `` in an ASP.NET configuration file. */ class FormsElement extends XmlElement { FormsElement() { diff --git a/csharp/ql/lib/semmle/code/cil/Types.qll b/csharp/ql/lib/semmle/code/cil/Types.qll index 0e41fe748f4..2cfc09daf99 100644 --- a/csharp/ql/lib/semmle/code/cil/Types.qll +++ b/csharp/ql/lib/semmle/code/cil/Types.qll @@ -60,11 +60,6 @@ class Class extends ValueOrRefType { Class() { this.isClass() } } -/** A `record`. */ -deprecated class Record extends Class { - Record() { this.isRecord() } -} - /** An `interface`. */ class Interface extends ValueOrRefType { Interface() { this.isInterface() } diff --git a/csharp/ql/lib/semmle/code/csharp/Type.qll b/csharp/ql/lib/semmle/code/csharp/Type.qll index 8bb92c8c86a..85fde20e07d 100644 --- a/csharp/ql/lib/semmle/code/csharp/Type.qll +++ b/csharp/ql/lib/semmle/code/csharp/Type.qll @@ -780,16 +780,6 @@ class Class extends RefType, @class_type { override string getAPrimaryQlClass() { result = "Class" } } -/** - * DEPRECATED: Use `RecordClass` instead. - */ -deprecated class Record extends Class { - Record() { this.isRecord() } - - /** Gets the clone method of this record. */ - RecordCloneMethod getCloneMethod() { result = this.getAMember() } -} - /** * A `record`, for example * diff --git a/csharp/ql/lib/semmle/code/csharp/commons/StructuralComparison.qll b/csharp/ql/lib/semmle/code/csharp/commons/StructuralComparison.qll index 21102edb755..ca009448c10 100644 --- a/csharp/ql/lib/semmle/code/csharp/commons/StructuralComparison.qll +++ b/csharp/ql/lib/semmle/code/csharp/commons/StructuralComparison.qll @@ -200,45 +200,3 @@ predicate sameGvn(ControlFlowElement x, ControlFlowElement y) { pragma[only_bind_into](toGvn(pragma[only_bind_out](x))) = pragma[only_bind_into](toGvn(pragma[only_bind_out](y))) } - -/** - * DEPRECATED: Use `sameGvn` instead. - * - * A configuration for performing structural comparisons of program elements - * (expressions and statements). - * - * The predicate `candidate()` must be overridden, in order to identify the - * elements for which to perform structural comparison. - * - * Each use of the library is identified by a unique string value. - */ -abstract deprecated class StructuralComparisonConfiguration extends string { - bindingset[this] - StructuralComparisonConfiguration() { any() } - - /** - * Holds if elements `x` and `y` are candidates for testing structural - * equality. - * - * Subclasses are expected to override this predicate to identify the - * top-level elements which they want to compare. Care should be - * taken to avoid identifying too many pairs of elements, as in general - * there are very many structurally equal subtrees in a program, and - * in order to keep the computation feasible we must focus attention. - * - * Note that this relation is not expected to be symmetric -- it's - * fine to include a pair `(x, y)` but not `(y, x)`. - * In fact, not including the symmetrically implied fact will save - * half the computation time on the structural comparison. - */ - abstract predicate candidate(ControlFlowElement x, ControlFlowElement y); - - /** - * Holds if elements `x` and `y` structurally equal. `x` and `y` must be - * flagged as candidates for structural equality, that is, - * `candidate(x, y)` must hold. - */ - predicate same(ControlFlowElement x, ControlFlowElement y) { - this.candidate(x, y) and sameGvn(x, y) - } -} diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlow.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlow.qll index 46a19828a81..755b8023040 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlow.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlow.qll @@ -62,8 +62,8 @@ * in the given range. The range is inclusive at both ends. * - "ReturnValue": Selects the return value of a call to the selected element. * - * For summaries, `input` and `output` may be prefixed by one of the following, - * separated by the "of" keyword: + * For summaries, `input` and `output` may be suffixed by any number of the + * following, separated by ".": * - "Element": Selects an element in a collection. * - "Field[f]": Selects the contents of field `f`. * - "Property[p]": Selects the contents of property `p`. @@ -95,6 +95,7 @@ private import internal.DataFlowPublic private import internal.FlowSummaryImpl::Public private import internal.FlowSummaryImpl::Private::External private import internal.FlowSummaryImplSpecific +private import codeql.mad.ModelValidation as SharedModelVal /** Holds if a source model exists for the given parameters. */ predicate sourceModel = Extensions::sourceModel/9; @@ -204,30 +205,18 @@ module ModelValidation { ) } - private string getInvalidModelKind() { - exists(string kind | summaryModel(_, _, _, _, _, _, _, _, kind, _) | - not kind = ["taint", "value"] and - result = "Invalid kind \"" + kind + "\" in summary model." - ) - or - exists(string kind | sinkModel(_, _, _, _, _, _, _, kind, _) | - not kind = - ["code-injection", "sql-injection", "js-injection", "html-injection", "file-content-store"] and - not kind.matches("encryption-%") and - result = "Invalid kind \"" + kind + "\" in sink model." - ) - or - exists(string kind | sourceModel(_, _, _, _, _, _, _, kind, _) | - not kind = ["local", "remote", "file", "file-write"] and - result = "Invalid kind \"" + kind + "\" in source model." - ) - or - exists(string kind | neutralModel(_, _, _, _, kind, _) | - not kind = ["summary", "source", "sink"] and - result = "Invalid kind \"" + kind + "\" in neutral model." - ) + private module KindValConfig implements SharedModelVal::KindValidationConfigSig { + predicate summaryKind(string kind) { summaryModel(_, _, _, _, _, _, _, _, kind, _) } + + predicate sinkKind(string kind) { sinkModel(_, _, _, _, _, _, _, kind, _) } + + predicate sourceKind(string kind) { sourceModel(_, _, _, _, _, _, _, kind, _) } + + predicate neutralKind(string kind) { neutralModel(_, _, _, _, kind, _) } } + private module KindVal = SharedModelVal::KindValidation; + private string getInvalidModelSignature() { exists( string pred, string namespace, string type, string name, string signature, string ext, @@ -269,7 +258,7 @@ module ModelValidation { msg = [ getInvalidModelSignature(), getInvalidModelInput(), getInvalidModelOutput(), - getInvalidModelKind() + KindVal::getInvalidModelKind() ] } } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/FlowSummary.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/FlowSummary.qll index 5d90a990979..fef05b35f0b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/FlowSummary.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/FlowSummary.qll @@ -64,14 +64,9 @@ module SummaryComponent { /** Gets a summary component that represents the return value of a call. */ SummaryComponent return() { result = return(any(DataFlowDispatch::NormalReturnKind rk)) } - /** Gets a summary component that represents a jump to `c`. */ - SummaryComponent jump(Callable c) { - result = - return(any(DataFlowDispatch::JumpReturnKind jrk | - jrk.getTarget() = c.getUnboundDeclaration() and - jrk.getTargetReturnKind() instanceof DataFlowDispatch::NormalReturnKind - )) - } + predicate syntheticGlobal = SummaryComponentInternal::syntheticGlobal/1; + + class SyntheticGlobal = SummaryComponentInternal::SyntheticGlobal; } class SummaryComponentStack = Impl::Public::SummaryComponentStack; @@ -110,8 +105,13 @@ module SummaryComponentStack { /** Gets a singleton stack representing the return value of a call. */ SummaryComponentStack return() { result = singleton(SummaryComponent::return()) } - /** Gets a singleton stack representing a jump to `c`. */ - SummaryComponentStack jump(Callable c) { result = singleton(SummaryComponent::jump(c)) } + /** Gets a singleton stack representing a synthetic global with name `name`. */ + SummaryComponentStack syntheticGlobal(string synthetic) { + result = singleton(SummaryComponent::syntheticGlobal(synthetic)) + } + + /** Gets a textual representation of this stack used for flow summaries. */ + string getComponentStack(SummaryComponentStack s) { result = Impl::Public::getComponentStack(s) } } class SummarizedCallable = Impl::Public::SummarizedCallable; diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll index c3a54ba8ff3..cb26a1c2075 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll @@ -74,18 +74,6 @@ newtype TReturnKind = exists(Ssa::ExplicitDefinition def | def.isCapturedVariableDefinitionFlowOut(_, _) | v = def.getSourceVariable().getAssignable() ) - } or - TJumpReturnKind(Callable target, ReturnKind rk) { - target.isUnboundDeclaration() and - ( - rk instanceof NormalReturnKind and - ( - target instanceof Constructor or - not target.getReturnType() instanceof VoidType - ) - or - exists(target.getParameter(rk.(OutRefReturnKind).getPosition())) - ) } /** @@ -128,7 +116,9 @@ private module Cached { // No need to include calls that are compiled from source not call.getImplementation().getMethod().compiledFromSource() } or - TSummaryCall(FlowSummaryImpl::Public::SummarizedCallable c, Node receiver) { + TSummaryCall( + FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver + ) { FlowSummaryImpl::Private::summaryCallbackRange(c, receiver) } @@ -255,27 +245,6 @@ class ImplicitCapturedReturnKind extends ReturnKind, TImplicitCapturedReturnKind override string toString() { result = "captured " + v } } -/** - * A value returned through the output of another callable. - * - * This is currently only used to model flow summaries where data may flow into - * one API entry point and out of another. - */ -class JumpReturnKind extends ReturnKind, TJumpReturnKind { - private Callable target; - private ReturnKind rk; - - JumpReturnKind() { this = TJumpReturnKind(target, rk) } - - /** Gets the target of the jump. */ - Callable getTarget() { result = target } - - /** Gets the return kind of the target. */ - ReturnKind getTargetReturnKind() { result = rk } - - override string toString() { result = "jump to " + target } -} - /** A callable used for data flow. */ class DataFlowCallable extends TDataFlowCallable { /** Get the underlying source code callable, if any. */ @@ -472,12 +441,12 @@ class CilDataFlowCall extends DataFlowCall, TCilCall { */ class SummaryCall extends DelegateDataFlowCall, TSummaryCall { private FlowSummaryImpl::Public::SummarizedCallable c; - private Node receiver; + private FlowSummaryImpl::Private::SummaryNode receiver; SummaryCall() { this = TSummaryCall(c, receiver) } /** Gets the data flow node that this call targets. */ - Node getReceiver() { result = receiver } + FlowSummaryImpl::Private::SummaryNode getReceiver() { result = receiver } override DataFlowCallable getARuntimeTarget() { none() // handled by the shared library diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll index ddf98ac0f2f..284fff191ae 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll @@ -1135,8 +1135,8 @@ module Impl { DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow ); - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap); + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t); bindingset[typ, contentType] predicate typecheckStore(Typ typ, DataFlowType contentType); @@ -1199,17 +1199,21 @@ module Impl { NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, ApOption argAp, Typ t, Ap ap, ApApprox apa ) { - fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t, ap, apa) and - PrevStage::revFlow(node, state, apa) and - filter(node, state, t, ap) + fwdFlow1(node, state, cc, summaryCtx, argT, argAp, _, t, ap, apa) } - pragma[inline] - additional predicate fwdFlow( + private predicate fwdFlow1( NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap + ApOption argAp, Typ t0, Typ t, Ap ap, ApApprox apa ) { - fwdFlow(node, state, cc, summaryCtx, argT, argAp, t, ap, _) + fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t0, ap, apa) and + PrevStage::revFlow(node, state, apa) and + filter(node, state, t0, ap, t) + } + + pragma[nomagic] + private predicate typeStrengthen(Typ t0, Ap ap, Typ t) { + fwdFlow1(_, _, _, _, _, _, t0, t, ap, _) and t0 != t } pragma[assume_small_delta] @@ -1339,6 +1343,11 @@ module Impl { private predicate fwdFlowConsCand(Typ t2, Ap cons, Content c, Typ t1, Ap tail) { fwdFlowStore(_, t1, tail, c, t2, _, _, _, _, _, _) and cons = apCons(c, t1, tail) + or + exists(Typ t0 | + typeStrengthen(t0, cons, t2) and + fwdFlowConsCand(t0, cons, c, t1, tail) + ) } pragma[nomagic] @@ -1359,7 +1368,7 @@ module Impl { ParamNodeOption summaryCtx, TypOption argT, ApOption argAp ) { exists(ApHeadContent apc | - fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap) and + fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap, _) and apc = getHeadContent(ap) and readStepCand0(node1, apc, c, node2) ) @@ -1520,14 +1529,14 @@ module Impl { NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { revFlow0(node, state, returnCtx, returnAp, ap) and - fwdFlow(node, state, _, _, _, _, _, ap) + fwdFlow(node, state, _, _, _, _, _, ap, _) } pragma[nomagic] private predicate revFlow0( NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { - fwdFlow(node, state, _, _, _, _, _, ap) and + fwdFlow(node, state, _, _, _, _, _, ap, _) and sinkNode(node, state) and ( if hasSinkCallCtx() @@ -1780,13 +1789,13 @@ module Impl { boolean fwd, int nodes, int fields, int conscand, int states, int tuples ) { fwd = true and - nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _)) and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _, _)) and fields = count(Content f0 | fwdConsCand(f0, _, _)) and conscand = count(Content f0, Typ t, Ap ap | fwdConsCand(f0, t, ap)) and - states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _)) and + states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _, _)) and tuples = count(NodeEx n, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap)) + ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap, _)) or fwd = false and nodes = count(NodeEx node | revFlow(node, _, _, _, _)) and @@ -1963,10 +1972,10 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { PrevStage::revFlowState(state) and - exists(t) and + t0 = t and exists(ap) and not stateBarrier(node, state) and ( @@ -2012,7 +2021,8 @@ module Impl { FlowCheckNode() { castNode(this.asNode()) or clearsContentCached(this.asNode(), _) or - expectsContentCached(this.asNode(), _) + expectsContentCached(this.asNode(), _) or + neverSkipInPathGraph(this.asNode()) } } @@ -2197,8 +2207,8 @@ module Impl { import BooleanCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and exists(lcc) @@ -2218,10 +2228,16 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + // We can get away with not using type strengthening here, since we aren't + // going to use the tracked types in the construction of Stage 4 access + // paths. For Stage 4 and onwards, the tracked types must be consistent as + // the cons candidates including types are used to construct subsequent + // access path approximations. + t0 = t and + (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t0) else any()) and ( notExpectsContent(node) or @@ -2241,6 +2257,16 @@ module Impl { import MkStage::Stage } + bindingset[node, t0] + private predicate strengthenType(NodeEx node, DataFlowType t0, DataFlowType t) { + if castingNodeEx(node) + then + exists(DataFlowType nt | nt = node.getDataFlowType() | + if typeStrongerThan(nt, t0) then t = nt else (compatibleTypes(nt, t0) and t = t0) + ) + else t = t0 + } + private module Stage4Param implements MkStage::StageParam { private module PrevStage = Stage3; @@ -2274,8 +2300,8 @@ module Impl { pragma[nomagic] predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2333,11 +2359,11 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and not clear(node, ap) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + strengthenType(node, t0, t) and ( notExpectsContent(node) or @@ -2365,7 +2391,7 @@ module Impl { exists(AccessPathFront apf | Stage4::revFlow(node, state, TReturnCtxMaybeFlowThrough(_), _, apf) and Stage4::fwdFlow(node, state, any(Stage4::CcCall ccc), _, _, TAccessPathFrontSome(argApf), _, - apf) + apf, _) ) } @@ -2579,8 +2605,8 @@ module Impl { import LocalCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, lcc) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2609,9 +2635,9 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { + strengthenType(node, t0, t) and exists(state) and exists(ap) } @@ -2632,7 +2658,7 @@ module Impl { Stage5::parameterMayFlowThrough(p, _) and Stage5::revFlow(n, state, TReturnCtxMaybeFlowThrough(_), _, apa0) and Stage5::fwdFlow(n, state, any(CallContextCall ccc), TParamNodeSome(p.asNode()), _, - TAccessPathApproxSome(apa), _, apa0) + TAccessPathApproxSome(apa), _, apa0, _) ) } @@ -2649,7 +2675,7 @@ module Impl { TSummaryCtxSome(ParamNodeEx p, FlowState state, DataFlowType t, AccessPath ap) { exists(AccessPathApprox apa | ap.getApprox() = apa | Stage5::parameterMayFlowThrough(p, apa) and - Stage5::fwdFlow(p, state, _, _, _, _, t, apa) and + Stage5::fwdFlow(p, state, _, _, Option::some(t), _, _, apa, _) and Stage5::revFlow(p, state, _) ) } @@ -2820,9 +2846,7 @@ module Impl { ap = TAccessPathNil() or // ... or a step from an existing PathNode to another node. - pathStep(_, node, state, cc, sc, t, ap) and - Stage5::revFlow(node, state, ap.getApprox()) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) + pathStep(_, node, state, cc, sc, t, ap) } or TPathNodeSink(NodeEx node, FlowState state) { exists(PathNodeMid sink | @@ -3340,13 +3364,24 @@ module Impl { ap = mid.getAp() } + private predicate pathStep( + PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, + AccessPath ap + ) { + exists(DataFlowType t0 | + pathStep0(mid, node, state, cc, sc, t0, ap) and + Stage5::revFlow(node, state, ap.getApprox()) and + strengthenType(node, t0, t) + ) + } + /** * Holds if data may flow from `mid` to `node`. The last step in or out of * a callable is recorded by `cc`. */ pragma[assume_small_delta] pragma[nomagic] - private predicate pathStep( + private predicate pathStep0( PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, AccessPath ap ) { @@ -3964,7 +3999,7 @@ module Impl { ap = TPartialNil() and exists(explorationLimit()) or - partialPathNodeMk0(node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and distSrc(node.getEnclosingCallable()) <= explorationLimit() } or TPartialPathNodeRev( @@ -3990,11 +4025,20 @@ module Impl { } pragma[nomagic] - private predicate partialPathNodeMk0( - NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, - TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap + private predicate partialPathStep( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { - partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep1(mid, node, state, cc, sc1, sc2, sc3, sc4, _, t, ap) + } + + pragma[nomagic] + private predicate partialPathStep1( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t0, DataFlowType t, + PartialAccessPath ap + ) { + partialPathStep0(mid, node, state, cc, sc1, sc2, sc3, sc4, t0, ap) and not fullBarrier(node) and not stateBarrier(node, state) and not clearsContentEx(node, ap.getHead()) and @@ -4002,9 +4046,14 @@ module Impl { notExpectsContent(node) or expectsContentEx(node, ap.getHead()) ) and - if node.asNode() instanceof CastingNode - then compatibleTypes(node.getDataFlowType(), t) - else any() + strengthenType(node, t0, t) + } + + pragma[nomagic] + private predicate partialPathTypeStrengthen( + DataFlowType t0, PartialAccessPath ap, DataFlowType t + ) { + partialPathStep1(_, _, _, _, _, _, _, _, t0, t, ap) and t0 != t } /** @@ -4183,7 +4232,8 @@ module Impl { } } - private predicate partialPathStep( + pragma[nomagic] + private predicate partialPathStep0( PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { @@ -4309,6 +4359,11 @@ module Impl { DataFlowType t1, PartialAccessPath ap1, Content c, DataFlowType t2, PartialAccessPath ap2 ) { partialPathStoreStep(_, t1, ap1, c, _, t2, ap2) + or + exists(DataFlowType t0 | + partialPathTypeStrengthen(t0, ap2, t2) and + apConsFwd(t1, ap1, c, t0, ap2) + ) } pragma[nomagic] diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll index d683e03dc2d..872718d93d5 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -500,7 +500,7 @@ module LocalFlow { * inter-procedurality or field-sensitivity. */ predicate excludeFromExposedRelations(Node n) { - n instanceof SummaryNode or + n instanceof FlowSummaryNode or n instanceof ImplicitCapturedArgumentNode } @@ -559,7 +559,8 @@ predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo) { or LocalFlow::localFlowCapturedVarStep(nodeFrom, nodeTo) or - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, true) + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(), + nodeTo.(FlowSummaryNode).getSummaryNode(), true) or nodeTo.(ObjectCreationNode).getPreUpdateNode() = nodeFrom.(ObjectInitializerNode) } @@ -805,7 +806,8 @@ private module Cached { // Add artificial dependencies to enforce all cached predicates are evaluated // in the "DataFlowImplCommon stage" - private predicate forceCaching() { + cached + predicate forceCaching() { TaintTrackingPrivate::forceCachingInSameStage() or exists(any(NodeImpl n).getTypeImpl()) or exists(any(NodeImpl n).getControlFlowNodeImpl()) or @@ -815,10 +817,7 @@ private module Cached { cached newtype TNode = - TExprNode(ControlFlow::Nodes::ElementNode cfn) { - forceCaching() and - cfn.getElement() instanceof Expr - } or + TExprNode(ControlFlow::Nodes::ElementNode cfn) { cfn.getElement() instanceof Expr } or TCilExprNode(CIL::Expr e) { e.getImplementation() instanceof CIL::BestImplementation } or TCilSsaDefinitionExtNode(CilSsaImpl::DefinitionExt def) or TSsaDefinitionExtNode(SsaImpl::DefinitionExt def) { @@ -867,12 +866,7 @@ private module Cached { ) ) } or - TSummaryNode(DataFlowSummarizedCallable c, FlowSummaryImpl::Private::SummaryNodeState state) { - FlowSummaryImpl::Private::summaryNodeRange(c, state) - } or - TSummaryParameterNode(DataFlowSummarizedCallable c, ParameterPosition pos) { - FlowSummaryImpl::Private::summaryParameterNodeRange(c, pos) - } or + TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) or TParamsArgumentNode(ControlFlow::Node callCfn) { callCfn = any(Call c | isParamsArg(c, _, _)).getAControlFlowNode() } @@ -977,9 +971,7 @@ predicate nodeIsHidden(Node n) { or n instanceof MallocNode or - n instanceof SummaryNode - or - n instanceof SummaryParameterNode + n instanceof FlowSummaryNode or n instanceof ParamsArgumentNode or @@ -1132,29 +1124,16 @@ private module ParameterNodes { } /** A parameter for a library callable with a flow summary. */ - class SummaryParameterNode extends ParameterNodeImpl, TSummaryParameterNode { - private FlowSummaryImpl::Public::SummarizedCallable sc; + class SummaryParameterNode extends ParameterNodeImpl, FlowSummaryNode { private ParameterPosition pos_; - SummaryParameterNode() { this = TSummaryParameterNode(sc, pos_) } + SummaryParameterNode() { + FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), pos_) + } override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) { - sc = c.asSummarizedCallable() and pos = pos_ + this.getSummarizedCallable() = c.asSummarizedCallable() and pos = pos_ } - - override DataFlowCallable getEnclosingCallableImpl() { result.asSummarizedCallable() = sc } - - override Type getTypeImpl() { - exists(int i | pos_.getPosition() = i and result = sc.getParameter(i).getType()) - or - pos_.isThisParameter() and result = sc.getDeclaringType() - } - - override ControlFlow::Node getControlFlowNodeImpl() { none() } - - override EmptyLocation getLocationImpl() { any() } - - override string toStringImpl() { result = "parameter " + pos_ + " of " + sc } } } @@ -1323,11 +1302,16 @@ private module ArgumentNodes { override string toStringImpl() { result = "[implicit array creation] " + callCfn } } - private class SummaryArgumentNode extends SummaryNode, ArgumentNodeImpl { - SummaryArgumentNode() { FlowSummaryImpl::Private::summaryArgumentNode(_, this, _) } + private class SummaryArgumentNode extends FlowSummaryNode, ArgumentNodeImpl { + private DataFlowCall call_; + private ArgumentPosition pos_; + + SummaryArgumentNode() { + FlowSummaryImpl::Private::summaryArgumentNode(call_, this.getSummaryNode(), pos_) + } override predicate argumentOf(DataFlowCall call, ArgumentPosition pos) { - FlowSummaryImpl::Private::summaryArgumentNode(call, this, pos) + call = call_ and pos = pos_ } } } @@ -1469,12 +1453,11 @@ private module ReturnNodes { } } - private class SummaryReturnNode extends SummaryNode, ReturnNode { + private class SummaryReturnNode extends FlowSummaryNode, ReturnNode { private ReturnKind rk; SummaryReturnNode() { - FlowSummaryImpl::Private::summaryReturnNode(this, rk) and - not rk instanceof JumpReturnKind + FlowSummaryImpl::Private::summaryReturnNode(this.getSummaryNode(), rk) or exists(Parameter p, int pos | summaryPostUpdateNodeIsOutOrRef(this, p) and @@ -1494,9 +1477,9 @@ private module ReturnNodes { * Holds if summary node `n` is a post-update node for `out`/`ref` parameter `p`. * In this case we adjust it to instead be a return node. */ -private predicate summaryPostUpdateNodeIsOutOrRef(SummaryNode n, Parameter p) { - exists(ParameterNodeImpl pn, DataFlowCallable c, ParameterPosition pos | - FlowSummaryImpl::Private::summaryPostUpdateNode(n, pn) and +private predicate summaryPostUpdateNodeIsOutOrRef(FlowSummaryNode n, Parameter p) { + exists(SummaryParameterNode pn, DataFlowCallable c, ParameterPosition pos | + FlowSummaryImpl::Private::summaryPostUpdateNode(n.getSummaryNode(), pn.getSummaryNode()) and pn.isParameterOf(c, pos) and p = c.asSummarizedCallable().getParameter(pos.getPosition()) and p.isOutOrRef() @@ -1609,37 +1592,43 @@ private module OutNodes { } } - private class SummaryOutNode extends SummaryNode, OutNode { - SummaryOutNode() { FlowSummaryImpl::Private::summaryOutNode(_, this, _) } + private class SummaryOutNode extends FlowSummaryNode, OutNode { + private DataFlowCall call; + private ReturnKind kind_; - override DataFlowCall getCall(ReturnKind kind) { - FlowSummaryImpl::Private::summaryOutNode(result, this, kind) + SummaryOutNode() { + FlowSummaryImpl::Private::summaryOutNode(call, this.getSummaryNode(), kind_) } + + override DataFlowCall getCall(ReturnKind kind) { result = call and kind = kind_ } } } import OutNodes /** A data-flow node used to model flow summaries. */ -class SummaryNode extends NodeImpl, TSummaryNode { - private FlowSummaryImpl::Public::SummarizedCallable c; - private FlowSummaryImpl::Private::SummaryNodeState state; +class FlowSummaryNode extends NodeImpl, TFlowSummaryNode { + FlowSummaryImpl::Private::SummaryNode getSummaryNode() { this = TFlowSummaryNode(result) } - SummaryNode() { this = TSummaryNode(c, state) } + FlowSummaryImpl::Public::SummarizedCallable getSummarizedCallable() { + result = this.getSummaryNode().getSummarizedCallable() + } - override DataFlowCallable getEnclosingCallableImpl() { result.asSummarizedCallable() = c } + override DataFlowCallable getEnclosingCallableImpl() { + result.asSummarizedCallable() = this.getSummarizedCallable() + } override DataFlowType getDataFlowType() { - result = FlowSummaryImpl::Private::summaryNodeType(this) + result = FlowSummaryImpl::Private::summaryNodeType(this.getSummaryNode()) } override DotNet::Type getTypeImpl() { none() } override ControlFlow::Node getControlFlowNodeImpl() { none() } - override Location getLocationImpl() { result = c.getLocation() } + override Location getLocationImpl() { result = this.getSummarizedCallable().getLocation() } - override string toStringImpl() { result = "[summary] " + state + " in " + c } + override string toStringImpl() { result = this.getSummaryNode().toString() } } /** A field or a property. */ @@ -1718,13 +1707,8 @@ predicate jumpStep(Node pred, Node succ) { flr.hasNonlocalValue() ) or - exists(JumpReturnKind jrk, NonDelegateDataFlowCall call | - FlowSummaryImpl::Private::summaryReturnNode(pred, jrk) and - jrk.getTarget() = call.getATarget(_) and - succ = getAnOutNode(call, jrk.getTargetReturnKind()) - ) - or - FlowSummaryImpl::Private::Steps::summaryJumpStep(pred, succ) + FlowSummaryImpl::Private::Steps::summaryJumpStep(pred.(FlowSummaryNode).getSummaryNode(), + succ.(FlowSummaryNode).getSummaryNode()) } private class StoreStepConfiguration extends ControlFlowReachabilityConfiguration { @@ -1784,7 +1768,8 @@ predicate storeStep(Node node1, Content c, Node node2) { c = getResultContent() ) or - FlowSummaryImpl::Private::Steps::summaryStoreStep(node1, c, node2) + FlowSummaryImpl::Private::Steps::summaryStoreStep(node1.(FlowSummaryNode).getSummaryNode(), c, + node2.(FlowSummaryNode).getSummaryNode()) } private class ReadStepConfiguration extends ControlFlowReachabilityConfiguration { @@ -1907,7 +1892,8 @@ predicate readStep(Node node1, Content c, Node node2) { ) ) or - FlowSummaryImpl::Private::Steps::summaryReadStep(node1, c, node2) + FlowSummaryImpl::Private::Steps::summaryReadStep(node1.(FlowSummaryNode).getSummaryNode(), c, + node2.(FlowSummaryNode).getSummaryNode()) } /** @@ -1920,7 +1906,7 @@ predicate clearsContent(Node n, Content c) { or fieldOrPropertyStore(_, c, _, n.(ObjectInitializerNode).getInitializer(), false) or - FlowSummaryImpl::Private::Steps::summaryClearsContent(n, c) + FlowSummaryImpl::Private::Steps::summaryClearsContent(n.(FlowSummaryNode).getSummaryNode(), c) or exists(WithExpr we, ObjectInitializer oi, FieldOrProperty f | oi = we.getInitializer() and @@ -1935,7 +1921,7 @@ predicate clearsContent(Node n, Content c) { * at node `n`. */ predicate expectsContent(Node n, ContentSet c) { - FlowSummaryImpl::Private::Steps::summaryExpectsContent(n, c) + FlowSummaryImpl::Private::Steps::summaryExpectsContent(n.(FlowSummaryNode).getSummaryNode(), c) } /** @@ -1984,6 +1970,21 @@ private class DataFlowUnknownType extends DataFlowType { DataFlowUnknownType() { this = Gvn::getGlobalValueNumber(any(UnknownType ut)) } } +private predicate uselessTypebound(DataFlowType t) { + t instanceof DataFlowUnknownType or + t instanceof Gvn::TypeParameterGvnType +} + +pragma[nomagic] +predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { + t1 != t2 and + t1 = getANonTypeParameterSubTypeRestricted(t2) + or + t1 instanceof RelevantDataFlowType and + not uselessTypebound(t1) and + uselessTypebound(t2) +} + /** * Holds if `t1` and `t2` are compatible, that is, whether data can flow from * a node of type `t1` to a node of type `t2`. @@ -2115,15 +2116,15 @@ private module PostUpdateNodes { override string toStringImpl() { result = "[post] " + cfn.toString() } } - private class SummaryPostUpdateNode extends SummaryNode, PostUpdateNode { + private class SummaryPostUpdateNode extends FlowSummaryNode, PostUpdateNode { + private FlowSummaryImpl::Private::SummaryNode preUpdateNode; + SummaryPostUpdateNode() { - FlowSummaryImpl::Private::summaryPostUpdateNode(this, _) and + FlowSummaryImpl::Private::summaryPostUpdateNode(this.getSummaryNode(), preUpdateNode) and not summaryPostUpdateNodeIsOutOrRef(this, _) } - override Node getPreUpdateNode() { - FlowSummaryImpl::Private::summaryPostUpdateNode(this, result) - } + override Node getPreUpdateNode() { result.(FlowSummaryNode).getSummaryNode() = preUpdateNode } } } @@ -2139,6 +2140,12 @@ class CastNode extends Node { } } +/** + * Holds if `n` should never be skipped over in the `PathGraph` and in path + * explanations. + */ +predicate neverSkipInPathGraph(Node n) { none() } + class DataFlowExpr = DotNet::Expr; /** Holds if `e` is an expression that always has the same Boolean value `val`. */ @@ -2218,7 +2225,7 @@ predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { call.getControlFlowNode()) ) or - receiver = call.(SummaryCall).getReceiver() + receiver.(FlowSummaryNode).getSummaryNode() = call.(SummaryCall).getReceiver() ) and exists(kind) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll index b22712087f2..b3599e3404e 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll @@ -106,16 +106,6 @@ class ParameterNode extends Node instanceof ParameterNodeImpl { result = c.asCallable().getParameter(ppos.getPosition()) ) } - - /** - * DEPRECATED - * - * Holds if this node is the parameter of callable `c` at the specified - * (zero-based) position. - */ - deprecated predicate isParameterOf(DataFlowCallable c, int i) { - super.isParameterOf(c, any(ParameterPosition pos | i = pos.getPosition())) - } } /** A definition, viewed as a node in a data flow graph. */ diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll index 034c6101de3..9ea7c44c50c 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll @@ -166,28 +166,26 @@ module Public { SummaryComponentStack return(ReturnKind rk) { result = singleton(SummaryComponent::return(rk)) } } - private predicate noComponentSpecific(SummaryComponent sc) { - not exists(getComponentSpecific(sc)) - } - /** Gets a textual representation of this component used for flow summaries. */ private string getComponent(SummaryComponent sc) { result = getComponentSpecific(sc) or - noComponentSpecific(sc) and - ( - exists(ArgumentPosition pos | - sc = TParameterSummaryComponent(pos) and - result = "Parameter[" + getArgumentPosition(pos) + "]" - ) - or - exists(ParameterPosition pos | - sc = TArgumentSummaryComponent(pos) and - result = "Argument[" + getParameterPosition(pos) + "]" - ) - or - sc = TReturnSummaryComponent(getReturnValueKind()) and result = "ReturnValue" + exists(ArgumentPosition pos | + sc = TParameterSummaryComponent(pos) and + result = "Parameter[" + getArgumentPosition(pos) + "]" ) + or + exists(ParameterPosition pos | + sc = TArgumentSummaryComponent(pos) and + result = "Argument[" + getParameterPosition(pos) + "]" + ) + or + exists(string synthetic | + sc = TSyntheticGlobalSummaryComponent(synthetic) and + result = "SyntheticGlobal[" + synthetic + "]" + ) + or + sc = TReturnSummaryComponent(getReturnValueKind()) and result = "ReturnValue" } /** Gets a textual representation of this stack used for flow summaries. */ @@ -512,6 +510,9 @@ module Private { or // Add the post-update node corresponding to the requested argument node outputState(c, s) and isCallbackParameter(s) + or + // Add the parameter node for parameter side-effects + outputState(c, s) and s = SummaryComponentStack::argument(_) } private newtype TSummaryNodeState = @@ -537,7 +538,7 @@ module Private { * this state represents that the components in `s` _remain to be written_ to * the output. */ - class SummaryNodeState extends TSummaryNodeState { + private class SummaryNodeState extends TSummaryNodeState { /** Holds if this state is a valid input state for `c`. */ pragma[nomagic] predicate isInputState(SummarizedCallable c, SummaryComponentStack s) { @@ -566,6 +567,42 @@ module Private { } } + private newtype TSummaryNode = + TSummaryInternalNode(SummarizedCallable c, SummaryNodeState state) { + summaryNodeRange(c, state) + } or + TSummaryParameterNode(SummarizedCallable c, ParameterPosition pos) { + summaryParameterNodeRange(c, pos) + } + + abstract class SummaryNode extends TSummaryNode { + abstract string toString(); + + abstract SummarizedCallable getSummarizedCallable(); + } + + private class SummaryInternalNode extends SummaryNode, TSummaryInternalNode { + private SummarizedCallable c; + private SummaryNodeState state; + + SummaryInternalNode() { this = TSummaryInternalNode(c, state) } + + override string toString() { result = "[summary] " + state + " in " + c } + + override SummarizedCallable getSummarizedCallable() { result = c } + } + + private class SummaryParamNode extends SummaryNode, TSummaryParameterNode { + private SummarizedCallable c; + private ParameterPosition pos; + + SummaryParamNode() { this = TSummaryParameterNode(c, pos) } + + override string toString() { result = "[summary param] " + pos + " in " + c } + + override SummarizedCallable getSummarizedCallable() { result = c } + } + /** * Holds if `state` represents having read from a parameter at position * `pos` in `c`. In this case we are not synthesizing a data-flow node, @@ -581,7 +618,7 @@ module Private { * Holds if a synthesized summary node is needed for the state `state` in summarized * callable `c`. */ - predicate summaryNodeRange(SummarizedCallable c, SummaryNodeState state) { + private predicate summaryNodeRange(SummarizedCallable c, SummaryNodeState state) { state.isInputState(c, _) and not parameterReadState(c, state, _) or @@ -589,22 +626,22 @@ module Private { } pragma[noinline] - private Node summaryNodeInputState(SummarizedCallable c, SummaryComponentStack s) { + private SummaryNode summaryNodeInputState(SummarizedCallable c, SummaryComponentStack s) { exists(SummaryNodeState state | state.isInputState(c, s) | - result = summaryNode(c, state) + result = TSummaryInternalNode(c, state) or exists(ParameterPosition pos | parameterReadState(c, state, pos) and - result.(ParamNode).isParameterOf(inject(c), pos) + result = TSummaryParameterNode(c, pos) ) ) } pragma[noinline] - private Node summaryNodeOutputState(SummarizedCallable c, SummaryComponentStack s) { + private SummaryNode summaryNodeOutputState(SummarizedCallable c, SummaryComponentStack s) { exists(SummaryNodeState state | state.isOutputState(c, s) and - result = summaryNode(c, state) + result = TSummaryInternalNode(c, state) ) } @@ -612,12 +649,14 @@ module Private { * Holds if a write targets `post`, which is a post-update node for a * parameter at position `pos` in `c`. */ - private predicate isParameterPostUpdate(Node post, SummarizedCallable c, ParameterPosition pos) { + private predicate isParameterPostUpdate( + SummaryNode post, SummarizedCallable c, ParameterPosition pos + ) { post = summaryNodeOutputState(c, SummaryComponentStack::argument(pos)) } /** Holds if a parameter node at position `pos` is required for `c`. */ - predicate summaryParameterNodeRange(SummarizedCallable c, ParameterPosition pos) { + private predicate summaryParameterNodeRange(SummarizedCallable c, ParameterPosition pos) { parameterReadState(c, _, pos) or // Same as `isParameterPostUpdate(_, c, pos)`, but can be used in a negative context @@ -625,7 +664,7 @@ module Private { } private predicate callbackOutput( - SummarizedCallable c, SummaryComponentStack s, Node receiver, ReturnKind rk + SummarizedCallable c, SummaryComponentStack s, SummaryNode receiver, ReturnKind rk ) { any(SummaryNodeState state).isInputState(c, s) and s.head() = TReturnSummaryComponent(rk) and @@ -633,7 +672,7 @@ module Private { } private predicate callbackInput( - SummarizedCallable c, SummaryComponentStack s, Node receiver, ArgumentPosition pos + SummarizedCallable c, SummaryComponentStack s, SummaryNode receiver, ArgumentPosition pos ) { any(SummaryNodeState state).isOutputState(c, s) and s.head() = TParameterSummaryComponent(pos) and @@ -641,7 +680,7 @@ module Private { } /** Holds if a call targeting `receiver` should be synthesized inside `c`. */ - predicate summaryCallbackRange(SummarizedCallable c, Node receiver) { + predicate summaryCallbackRange(SummarizedCallable c, SummaryNode receiver) { callbackOutput(c, _, receiver, _) or callbackInput(c, _, receiver, _) @@ -654,10 +693,10 @@ module Private { * `getContentType()`, `getReturnType()`, `getCallbackParameterType()`, and * `getCallbackReturnType()`. */ - DataFlowType summaryNodeType(Node n) { - exists(Node pre | + DataFlowType summaryNodeType(SummaryNode n) { + exists(SummaryNode pre | summaryPostUpdateNode(n, pre) and - result = getNodeType(pre) + result = summaryNodeType(pre) ) or exists(SummarizedCallable c, SummaryComponentStack s, SummaryComponent head | head = s.head() | @@ -669,12 +708,12 @@ module Private { ) or head = TWithoutContentSummaryComponent(_) and - result = getNodeType(summaryNodeInputState(c, s.tail())) + result = summaryNodeType(summaryNodeInputState(c, s.tail())) or exists(ReturnKind rk | head = TReturnSummaryComponent(rk) and result = - getCallbackReturnType(getNodeType(summaryNodeInputState(pragma[only_bind_out](c), + getCallbackReturnType(summaryNodeType(summaryNodeInputState(pragma[only_bind_out](c), s.tail())), rk) ) or @@ -682,6 +721,11 @@ module Private { head = TSyntheticGlobalSummaryComponent(sg) and result = getSyntheticGlobalType(sg) ) + or + exists(ParameterPosition pos | + head = TArgumentSummaryComponent(pos) and + result = getParameterType(c, pos) + ) ) or n = summaryNodeOutputState(c, s) and @@ -698,7 +742,7 @@ module Private { or exists(ArgumentPosition pos | head = TParameterSummaryComponent(pos) | result = - getCallbackParameterType(getNodeType(summaryNodeInputState(pragma[only_bind_out](c), + getCallbackParameterType(summaryNodeType(summaryNodeInputState(pragma[only_bind_out](c), s.tail())), pos) ) or @@ -710,9 +754,14 @@ module Private { ) } + /** Holds if summary node `p` is a parameter with position `pos`. */ + predicate summaryParameterNode(SummaryNode p, ParameterPosition pos) { + p = TSummaryParameterNode(_, pos) + } + /** Holds if summary node `out` contains output of kind `rk` from call `c`. */ - predicate summaryOutNode(DataFlowCall c, Node out, ReturnKind rk) { - exists(SummarizedCallable callable, SummaryComponentStack s, Node receiver | + predicate summaryOutNode(DataFlowCall c, SummaryNode out, ReturnKind rk) { + exists(SummarizedCallable callable, SummaryComponentStack s, SummaryNode receiver | callbackOutput(callable, s, receiver, rk) and out = summaryNodeInputState(callable, s) and c = summaryDataFlowCall(receiver) @@ -720,8 +769,8 @@ module Private { } /** Holds if summary node `arg` is at position `pos` in the call `c`. */ - predicate summaryArgumentNode(DataFlowCall c, Node arg, ArgumentPosition pos) { - exists(SummarizedCallable callable, SummaryComponentStack s, Node receiver | + predicate summaryArgumentNode(DataFlowCall c, SummaryNode arg, ArgumentPosition pos) { + exists(SummarizedCallable callable, SummaryComponentStack s, SummaryNode receiver | callbackInput(callable, s, receiver, pos) and arg = summaryNodeOutputState(callable, s) and c = summaryDataFlowCall(receiver) @@ -729,10 +778,10 @@ module Private { } /** Holds if summary node `post` is a post-update node with pre-update node `pre`. */ - predicate summaryPostUpdateNode(Node post, Node pre) { + predicate summaryPostUpdateNode(SummaryNode post, SummaryNode pre) { exists(SummarizedCallable c, ParameterPosition pos | isParameterPostUpdate(post, c, pos) and - pre.(ParamNode).isParameterOf(inject(c), pos) + pre = TSummaryParameterNode(c, pos) ) or exists(SummarizedCallable callable, SummaryComponentStack s | @@ -743,7 +792,7 @@ module Private { } /** Holds if summary node `ret` is a return node of kind `rk`. */ - predicate summaryReturnNode(Node ret, ReturnKind rk) { + predicate summaryReturnNode(SummaryNode ret, ReturnKind rk) { exists(SummaryComponentStack s | ret = summaryNodeOutputState(_, s) and s = TSingletonSummaryComponentStack(TReturnSummaryComponent(rk)) @@ -755,7 +804,9 @@ module Private { * node, and back out to `p`. */ predicate summaryAllowParameterReturnInSelf(ParamNode p) { - exists(SummarizedCallable c, ParameterPosition ppos | p.isParameterOf(inject(c), ppos) | + exists(SummarizedCallable c, ParameterPosition ppos | + p.isParameterOf(inject(c), pragma[only_bind_into](ppos)) + | exists(SummaryComponentStack inputContents, SummaryComponentStack outputContents | summary(c, inputContents, outputContents, _) and inputContents.bottom() = pragma[only_bind_into](TArgumentSummaryComponent(ppos)) and @@ -770,7 +821,7 @@ module Private { * Holds if there is a local step from `pred` to `succ`, which is synthesized * from a flow summary. */ - predicate summaryLocalStep(Node pred, Node succ, boolean preservesValue) { + predicate summaryLocalStep(SummaryNode pred, SummaryNode succ, boolean preservesValue) { exists( SummarizedCallable c, SummaryComponentStack inputContents, SummaryComponentStack outputContents @@ -796,7 +847,7 @@ module Private { * Holds if there is a read step of content `c` from `pred` to `succ`, which * is synthesized from a flow summary. */ - predicate summaryReadStep(Node pred, ContentSet c, Node succ) { + predicate summaryReadStep(SummaryNode pred, ContentSet c, SummaryNode succ) { exists(SummarizedCallable sc, SummaryComponentStack s | pred = summaryNodeInputState(sc, s.tail()) and succ = summaryNodeInputState(sc, s) and @@ -808,7 +859,7 @@ module Private { * Holds if there is a store step of content `c` from `pred` to `succ`, which * is synthesized from a flow summary. */ - predicate summaryStoreStep(Node pred, ContentSet c, Node succ) { + predicate summaryStoreStep(SummaryNode pred, ContentSet c, SummaryNode succ) { exists(SummarizedCallable sc, SummaryComponentStack s | pred = summaryNodeOutputState(sc, s) and succ = summaryNodeOutputState(sc, s.tail()) and @@ -820,7 +871,7 @@ module Private { * Holds if there is a jump step from `pred` to `succ`, which is synthesized * from a flow summary. */ - predicate summaryJumpStep(Node pred, Node succ) { + predicate summaryJumpStep(SummaryNode pred, SummaryNode succ) { exists(SummaryComponentStack s | s = SummaryComponentStack::singleton(SummaryComponent::syntheticGlobal(_)) and pred = summaryNodeOutputState(_, s) and @@ -847,9 +898,9 @@ module Private { * `a` on line 2 to the post-update node for `a` on that line (via an intermediate * node where field `b` is cleared). */ - predicate summaryClearsContent(Node n, ContentSet c) { + predicate summaryClearsContent(SummaryNode n, ContentSet c) { exists(SummarizedCallable sc, SummaryNodeState state, SummaryComponentStack stack | - n = summaryNode(sc, state) and + n = TSummaryInternalNode(sc, state) and state.isInputState(sc, stack) and stack.head() = SummaryComponent::withoutContent(c) ) @@ -859,9 +910,9 @@ module Private { * Holds if the value that is being tracked is expected to be stored inside * content `c` at `n`. */ - predicate summaryExpectsContent(Node n, ContentSet c) { + predicate summaryExpectsContent(SummaryNode n, ContentSet c) { exists(SummarizedCallable sc, SummaryNodeState state, SummaryComponentStack stack | - n = summaryNode(sc, state) and + n = TSummaryInternalNode(sc, state) and state.isInputState(sc, stack) and stack.head() = SummaryComponent::withContent(c) ) @@ -869,17 +920,17 @@ module Private { pragma[noinline] private predicate viableParam( - DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos, ParamNode p + DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos, SummaryParamNode p ) { exists(DataFlowCallable c | c = inject(sc) and - p.isParameterOf(c, ppos) and + p = TSummaryParameterNode(sc, ppos) and c = viableCallable(call) ) } pragma[nomagic] - private ParamNode summaryArgParam0(DataFlowCall call, ArgNode arg, SummarizedCallable sc) { + private SummaryParamNode summaryArgParam(DataFlowCall call, ArgNode arg, SummarizedCallable sc) { exists(ParameterPosition ppos | argumentPositionMatch(call, arg, ppos) and viableParam(call, sc, ppos, result) @@ -891,12 +942,12 @@ module Private { * local steps. `clearsOrExpects` records whether any node on the path from `p` to * `n` either clears or expects contents. */ - private predicate paramReachesLocal(ParamNode p, Node n, boolean clearsOrExpects) { + private predicate paramReachesLocal(SummaryParamNode p, SummaryNode n, boolean clearsOrExpects) { viableParam(_, _, _, p) and n = p and clearsOrExpects = false or - exists(Node mid, boolean clearsOrExpectsMid | + exists(SummaryNode mid, boolean clearsOrExpectsMid | paramReachesLocal(p, mid, clearsOrExpectsMid) and summaryLocalStep(mid, n, true) and if @@ -916,21 +967,33 @@ module Private { */ pragma[nomagic] predicate prohibitsUseUseFlow(ArgNode arg, SummarizedCallable sc) { - exists(ParamNode p, ParameterPosition ppos, Node ret | + exists(SummaryParamNode p, ParameterPosition ppos, SummaryNode ret | paramReachesLocal(p, ret, true) and - p = summaryArgParam0(_, arg, sc) and - p.isParameterOf(_, pragma[only_bind_into](ppos)) and + p = summaryArgParam(_, arg, sc) and + p = TSummaryParameterNode(_, pragma[only_bind_into](ppos)) and isParameterPostUpdate(ret, _, pragma[only_bind_into](ppos)) ) } + pragma[nomagic] + private predicate summaryReturnNodeExt(SummaryNode ret, ReturnKindExt rk) { + summaryReturnNode(ret, rk.(ValueReturnKind).getKind()) + or + exists(SummaryParamNode p, SummaryNode pre, ParameterPosition pos | + paramReachesLocal(p, pre, _) and + summaryPostUpdateNode(ret, pre) and + p = TSummaryParameterNode(_, pos) and + rk.(ParamUpdateReturnKind).getPosition() = pos + ) + } + bindingset[ret] - private ParamNode summaryArgParam( - ArgNode arg, ReturnNodeExt ret, OutNodeExt out, SummarizedCallable sc + private SummaryParamNode summaryArgParamRetOut( + ArgNode arg, SummaryNode ret, OutNodeExt out, SummarizedCallable sc ) { exists(DataFlowCall call, ReturnKindExt rk | - result = summaryArgParam0(call, arg, sc) and - ret.getKind() = pragma[only_bind_into](rk) and + result = summaryArgParam(call, arg, sc) and + summaryReturnNodeExt(ret, pragma[only_bind_into](rk)) and out = pragma[only_bind_into](rk).getAnOutNode(call) ) } @@ -943,9 +1006,9 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summaryThroughStepValue(ArgNode arg, Node out, SummarizedCallable sc) { - exists(ReturnKind rk, ReturnNode ret, DataFlowCall call | - summaryLocalStep(summaryArgParam0(call, arg, sc), ret, true) and - ret.getKind() = pragma[only_bind_into](rk) and + exists(ReturnKind rk, SummaryNode ret, DataFlowCall call | + summaryLocalStep(summaryArgParam(call, arg, sc), ret, true) and + summaryReturnNode(ret, pragma[only_bind_into](rk)) and out = getAnOutNode(call, pragma[only_bind_into](rk)) ) } @@ -958,7 +1021,9 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summaryThroughStepTaint(ArgNode arg, Node out, SummarizedCallable sc) { - exists(ReturnNodeExt ret | summaryLocalStep(summaryArgParam(arg, ret, out, sc), ret, false)) + exists(SummaryNode ret | + summaryLocalStep(summaryArgParamRetOut(arg, ret, out, sc), ret, false) + ) } /** @@ -969,8 +1034,8 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summaryGetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { - exists(Node mid, ReturnNodeExt ret | - summaryReadStep(summaryArgParam(arg, ret, out, sc), c, mid) and + exists(SummaryNode mid, SummaryNode ret | + summaryReadStep(summaryArgParamRetOut(arg, ret, out, sc), c, mid) and summaryLocalStep(mid, ret, _) ) } @@ -983,8 +1048,8 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summarySetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { - exists(Node mid, ReturnNodeExt ret | - summaryLocalStep(summaryArgParam(arg, ret, out, sc), mid, _) and + exists(SummaryNode mid, SummaryNode ret | + summaryLocalStep(summaryArgParamRetOut(arg, ret, out, sc), mid, _) and summaryStoreStep(mid, c, ret) ) } @@ -1351,11 +1416,11 @@ module Private { } private newtype TNodeOrCall = - MkNode(Node n) { + MkNode(SummaryNode n) { exists(RelevantSummarizedCallable c | - n = summaryNode(c, _) + n = TSummaryInternalNode(c, _) or - n.(ParamNode).isParameterOf(inject(c), _) + n = TSummaryParameterNode(c, _) ) } or MkCall(DataFlowCall call) { @@ -1364,7 +1429,7 @@ module Private { } private class NodeOrCall extends TNodeOrCall { - Node asNode() { this = MkNode(result) } + SummaryNode asNode() { this = MkNode(result) } DataFlowCall asCall() { this = MkCall(result) } @@ -1384,9 +1449,11 @@ module Private { predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { - this.asNode().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - or - this.asCall().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + filepath = "" and + startline = 0 and + startcolumn = 0 and + endline = 0 and + endcolumn = 0 } } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImplSpecific.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImplSpecific.qll index b86601e6b54..096f3b765f4 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImplSpecific.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImplSpecific.qll @@ -19,16 +19,20 @@ class SummarizedCallableBase extends Callable { SummarizedCallableBase() { this.isUnboundDeclaration() } } +/** + * A module for importing frameworks that define synthetic globals. + */ +private module SyntheticGlobals { + private import semmle.code.csharp.frameworks.EntityFramework +} + DataFlowCallable inject(SummarizedCallable c) { result.asSummarizedCallable() = c } /** Gets the parameter position of the instance parameter. */ ArgumentPosition callbackSelfParameterPosition() { none() } // disables implicit summary flow to `this` for callbacks -/** Gets the synthesized summary data-flow node for the given values. */ -Node summaryNode(SummarizedCallable c, SummaryNodeState state) { result = TSummaryNode(c, state) } - /** Gets the synthesized data-flow call for `receiver`. */ -SummaryCall summaryDataFlowCall(Node receiver) { receiver = result.getReceiver() } +SummaryCall summaryDataFlowCall(SummaryNode receiver) { receiver = result.getReceiver() } /** Gets the type of content `c`. */ DataFlowType getContentType(Content c) { @@ -44,7 +48,21 @@ DataFlowType getContentType(Content c) { ) } -private DataFlowType getReturnTypeBase(DotNet::Callable c, ReturnKind rk) { +/** Gets the type of the parameter at the given position. */ +DataFlowType getParameterType(SummarizedCallable c, ParameterPosition pos) { + exists(Type t | result = Gvn::getGlobalValueNumber(t) | + exists(int i | + pos.getPosition() = i and + t = c.getParameter(i).getType() + ) + or + pos.isThisParameter() and + t = c.getDeclaringType() + ) +} + +/** Gets the return type of kind `rk` for callable `c`. */ +DataFlowType getReturnType(DotNet::Callable c, ReturnKind rk) { exists(Type t | result = Gvn::getGlobalValueNumber(t) | rk instanceof NormalReturnKind and ( @@ -58,15 +76,6 @@ private DataFlowType getReturnTypeBase(DotNet::Callable c, ReturnKind rk) { ) } -/** Gets the return type of kind `rk` for callable `c`. */ -bindingset[c] -DataFlowType getReturnType(SummarizedCallable c, ReturnKind rk) { - result = getReturnTypeBase(c, rk) - or - rk = - any(JumpReturnKind jrk | result = getReturnTypeBase(jrk.getTarget(), jrk.getTargetReturnKind())) -} - /** * Gets the type of the parameter matching arguments at position `pos` in a * synthesized call that targets a callback of type `t`. @@ -198,8 +207,8 @@ string getComponentSpecific(SummaryComponent sc) { or exists(ReturnKind rk | sc = TReturnSummaryComponent(rk) and - result = "ReturnValue[" + rk + "]" and - not rk instanceof NormalReturnKind + not rk = getReturnValueKind() and + result = "ReturnValue[" + rk + "]" ) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll index 7a6ca4891a7..53b61ed5974 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll @@ -156,7 +156,8 @@ private module Cached { // tracking configurations where the source is a collection readStep(nodeFrom, TElementContent(), nodeTo) or - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, false) + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(), + nodeTo.(FlowSummaryNode).getSummaryNode(), false) or nodeTo = nodeFrom.(DataFlow::NonLocalJumpNode).getAJumpSuccessor(false) } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/EntityFramework.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/EntityFramework.qll index e0dfc0d542d..14590895b14 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/EntityFramework.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/EntityFramework.qll @@ -4,6 +4,7 @@ import csharp private import DataFlow +private import semmle.code.csharp.commons.QualifiedName private import semmle.code.csharp.frameworks.System private import semmle.code.csharp.frameworks.system.data.Entity private import semmle.code.csharp.frameworks.system.collections.Generic @@ -236,7 +237,7 @@ module EntityFramework { * } * ``` */ - private Property getADbSetProperty(Class elementType) { + Property getADbSetProperty(Class elementType) { exists(ConstructedClass c | result.getType() = c and c.getUnboundDeclaration() instanceof DbSet and @@ -351,22 +352,104 @@ module EntityFramework { /** Holds if component stack `head :: tail` is required for the output specification. */ predicate requiresComponentStackOut( - Content head, Type headType, SummaryComponentStack tail, int dist + Content head, Type headType, SummaryComponentStack tail, int dist, + DbContextClassSetProperty dbSetProp ) { - exists(Property dbSetProp, PropertyContent c1 | + exists(PropertyContent c1 | dbSetProp = this.getADbSetProperty(headType) and this.stepRev(c1, _, head, headType, 0) and c1.getProperty() = dbSetProp and - tail = SummaryComponentStack::jump(dbSetProp.getGetter()) and + tail = SummaryComponentStack::return() and dist = 0 ) or exists(Content tailHead, SummaryComponentStack tailTail, Type tailType | - this.requiresComponentStackOut(tailHead, tailType, tailTail, dist - 1) and + this.requiresComponentStackOut(tailHead, tailType, tailTail, dist - 1, dbSetProp) and tail = SummaryComponentStack::push(SummaryComponent::content(tailHead), tailTail) and this.stepRev(tailHead, tailType, head, headType, dist) ) } + + /** + * Holds if `input` is a valid summary component stack for property `mapped` for this. + */ + pragma[noinline] + predicate input(SummaryComponentStack input, Property mapped) { + exists(PropertyContent head, SummaryComponentStack tail | + this.requiresComponentStackIn(head, _, tail, _) and + head.getProperty() = mapped and + mapped = this.getAColumnProperty(_) and + input = SummaryComponentStack::push(SummaryComponent::content(head), tail) + ) + } + + /** + * Holds if `output` is a valid summary component stack for the getter of `dbSet` + * for property `mapped` for this. + */ + pragma[noinline] + private predicate output( + SummaryComponentStack output, Property mapped, DbContextClassSetProperty dbSet + ) { + exists(PropertyContent head, SummaryComponentStack tail | + this.requiresComponentStackOut(head, _, tail, _, dbSet) and + head.getProperty() = mapped and + mapped = this.getAColumnProperty(_) and + output = SummaryComponentStack::push(SummaryComponent::content(head), tail) + ) + } + + /** + * Gets the synthetic name for the getter of `dbSet` for property `mapped` for this, + * where `output` is a valid summary component stack for the getter of `dbSet` + * for the property `mapped`. + */ + pragma[nomagic] + string getSyntheticName( + SummaryComponentStack output, Property mapped, DbContextClassSetProperty dbSet + ) { + this = dbSet.getDbContextClass() and + this.output(output, mapped, dbSet) and + result = dbSet.getFullName() + "#" + SummaryComponentStack::getComponentStack(output) + } + } + + private class DbContextClassSetProperty extends Property { + private DbContextClass c; + + DbContextClassSetProperty() { this = c.getADbSetProperty(_) } + + /** + * Gets the fully qualified name for this. + */ + string getFullName() { + exists(string qualifier, string type, string name | + this.hasQualifiedName(qualifier, type, name) + | + result = getQualifiedName(qualifier, type, name) + ) + } + + /** + * Gets the context class where this is a DbSet property. + */ + DbContextClass getDbContextClass() { result = c } + } + + private class DbContextClassSetPropertySynthetic extends EFSummarizedCallable { + private DbContextClassSetProperty p; + + DbContextClassSetPropertySynthetic() { this = p.getGetter() } + + override predicate propagatesFlow( + SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue + ) { + exists(string name, DbContextClass c | + preservesValue = true and + name = c.getSyntheticName(output, _, p) and + input = SummaryComponentStack::syntheticGlobal(name) + ) + } } private class DbContextSaveChanges extends EFSummarizedCallable { @@ -374,44 +457,32 @@ module EntityFramework { DbContextSaveChanges() { this = c.getASaveChanges() } - pragma[noinline] - private predicate input(SummaryComponentStack input, Property mapped) { - exists(PropertyContent head, SummaryComponentStack tail | - c.requiresComponentStackIn(head, _, tail, _) and - head.getProperty() = mapped and - mapped = c.getAColumnProperty(_) and - input = SummaryComponentStack::push(SummaryComponent::content(head), tail) - ) - } - - pragma[noinline] - private predicate output(SummaryComponentStack output, Property mapped) { - exists(PropertyContent head, SummaryComponentStack tail | - c.requiresComponentStackOut(head, _, tail, _) and - head.getProperty() = mapped and - mapped = c.getAColumnProperty(_) and - output = SummaryComponentStack::push(SummaryComponent::content(head), tail) - ) - } - override predicate propagatesFlow( SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue ) { - exists(Property mapped | + exists(string name, Property mapped | preservesValue = true and - this.input(input, mapped) and - this.output(output, mapped) + c.input(input, mapped) and + name = c.getSyntheticName(_, mapped, _) and + output = SummaryComponentStack::syntheticGlobal(name) ) } } + /** + * Add all possible synthetic global names. + */ + private class EFSummarizedCallableSyntheticGlobal extends SummaryComponent::SyntheticGlobal { + EFSummarizedCallableSyntheticGlobal() { this = any(DbContextClass c).getSyntheticName(_, _, _) } + } + private class DbContextSaveChangesRequiredSummaryComponentStack extends RequiredSummaryComponentStack { override predicate required(SummaryComponent head, SummaryComponentStack tail) { exists(Content c | head = SummaryComponent::content(c) | any(DbContextClass cls).requiresComponentStackIn(c, _, tail, _) or - any(DbContextClass cls).requiresComponentStackOut(c, _, tail, _) + any(DbContextClass cls).requiresComponentStackOut(c, _, tail, _, _) ) } } diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll index 265cae5f08a..90615faac9f 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll @@ -6,6 +6,7 @@ import csharp private import semmle.code.csharp.security.dataflow.flowsources.Remote private import semmle.code.csharp.frameworks.system.Diagnostics private import semmle.code.csharp.security.Sanitizers +private import semmle.code.csharp.dataflow.ExternalFlow /** * A source specific to command injection vulnerabilities. @@ -66,6 +67,11 @@ module CommandInjection = TaintTracking::Global; /** A source of remote user input. */ class RemoteSource extends Source instanceof RemoteFlowSource { } +/** Command Injection sinks defined through Models as Data. */ +private class ExternalCommandInjectionExprSink extends Sink { + ExternalCommandInjectionExprSink() { sinkNode(this, "command-injection") } +} + /** * A sink in `System.Diagnostic.Process` or its related classes. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExternalAPIsQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExternalAPIsQuery.qll index 235897f0742..975dae84fcb 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExternalAPIsQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExternalAPIsQuery.qll @@ -14,9 +14,6 @@ private import semmle.code.csharp.dataflow.FlowSummary */ abstract class SafeExternalApiCallable extends Callable { } -/** DEPRECATED: Alias for SafeExternalApiCallable */ -deprecated class SafeExternalAPICallable = SafeExternalApiCallable; - private class SummarizedCallableSafe extends SafeExternalApiCallable instanceof SummarizedCallable { } @@ -87,9 +84,6 @@ class ExternalApiDataNode extends DataFlow::Node { } } -/** DEPRECATED: Alias for ExternalApiDataNode */ -deprecated class ExternalAPIDataNode = ExternalApiDataNode; - /** * DEPRECATED: Use `RemoteSourceToExternalApi` instead. * @@ -113,9 +107,6 @@ private module RemoteSourceToExternalApiConfig implements DataFlow::ConfigSig { /** A module for tracking flow from `RemoteFlowSource`s to `ExternalApiDataNode`s. */ module RemoteSourceToExternalApi = TaintTracking::Global; -/** DEPRECATED: Alias for UntrustedDataToExternalApiConfig */ -deprecated class UntrustedDataToExternalAPIConfig = UntrustedDataToExternalApiConfig; - /** A node representing untrusted data being passed to an external API. */ class UntrustedExternalApiDataNode extends ExternalApiDataNode { UntrustedExternalApiDataNode() { RemoteSourceToExternalApi::flow(_, this) } @@ -124,9 +115,6 @@ class UntrustedExternalApiDataNode extends ExternalApiDataNode { DataFlow::Node getAnUntrustedSource() { RemoteSourceToExternalApi::flow(result, this) } } -/** DEPRECATED: Alias for UntrustedExternalApiDataNode */ -deprecated class UntrustedExternalAPIDataNode = UntrustedExternalApiDataNode; - /** An external API which is used with untrusted data. */ private newtype TExternalApi = /** An untrusted API method `m` where untrusted data is passed at `index`. */ @@ -161,6 +149,3 @@ class ExternalApiUsedWithUntrustedData extends TExternalApi { ) } } - -/** DEPRECATED: Alias for ExternalApiUsedWithUntrustedData */ -deprecated class ExternalAPIUsedWithUntrustedData = ExternalApiUsedWithUntrustedData; diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll index 9171bae41b4..c059cb7523c 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll @@ -8,6 +8,7 @@ private import semmle.code.csharp.security.dataflow.flowsources.Remote private import semmle.code.csharp.frameworks.system.DirectoryServices private import semmle.code.csharp.frameworks.system.directoryservices.Protocols private import semmle.code.csharp.security.Sanitizers +private import semmle.code.csharp.dataflow.ExternalFlow /** * A data flow source for unvalidated user input that is used to construct LDAP queries. @@ -68,6 +69,11 @@ module LdapInjection = TaintTracking::Global; /** A source of remote user input. */ class RemoteSource extends Source instanceof RemoteFlowSource { } +/** LDAP sinks defined through Models as Data. */ +private class ExternalLdapExprSink extends Sink { + ExternalLdapExprSink() { sinkNode(this, "ldap-injection") } +} + /** * An argument that sets the `Path` property of a `DirectoryEntry` object that is a sink for LDAP * injection. @@ -149,9 +155,6 @@ class LdapEncodeSanitizer extends Sanitizer { } } -/** DEPRECATED: Alias for LdapEncodeSanitizer */ -deprecated class LDAPEncodeSanitizer = LdapEncodeSanitizer; - private class SimpleTypeSanitizer extends Sanitizer, SimpleTypeSanitizedExpr { } private class GuidSanitizer extends Sanitizer, GuidSanitizedExpr { } diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll index f145b18dfeb..e219b5db589 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll @@ -8,6 +8,7 @@ private import semmle.code.csharp.frameworks.System private import semmle.code.csharp.frameworks.system.text.RegularExpressions private import semmle.code.csharp.security.Sanitizers private import semmle.code.csharp.security.dataflow.flowsinks.ExternalLocationSink +private import semmle.code.csharp.dataflow.ExternalFlow /** * A data flow source for untrusted user input used in log entries. @@ -72,6 +73,11 @@ private class LogForgingLogMessageSink extends Sink, LogMessageSink { } */ private class LogForgingTraceMessageSink extends Sink, TraceMessageSink { } +/** Log Forging sinks defined through Models as Data. */ +private class ExternalLoggingExprSink extends Sink { + ExternalLoggingExprSink() { sinkNode(this, "log-injection") } +} + /** * A call to String replace or remove that is considered to sanitize replaced string. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll index 44b90cf3096..56c409b38b5 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll @@ -9,6 +9,7 @@ private import semmle.code.csharp.frameworks.system.Web private import semmle.code.csharp.frameworks.system.web.Mvc private import semmle.code.csharp.security.Sanitizers private import semmle.code.csharp.frameworks.microsoft.AspNetCore +private import semmle.code.csharp.dataflow.ExternalFlow /** * A data flow source for unvalidated URL redirect vulnerabilities. @@ -70,6 +71,11 @@ module UrlRedirect = TaintTracking::Global; /** A source of remote user input. */ class RemoteSource extends Source instanceof RemoteFlowSource { } +/** URL Redirection sinks defined through Models as Data. */ +private class ExternalUrlRedirectExprSink extends Sink { + ExternalUrlRedirectExprSink() { sinkNode(this, "url-redirection") } +} + /** * A URL argument to a call to `HttpResponse.Redirect()` or `Controller.Redirect()`, that is a * sink for URL redirects. diff --git a/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql b/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql index e9f9b6cb8c6..3aec796daf7 100644 --- a/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql +++ b/csharp/ql/src/Bad Practices/Implementation Hiding/ExposeRepresentation.ql @@ -78,4 +78,4 @@ where exposesByStore(c, f, why, whyText) select c, "'" + c.getName() + "' exposes the internal representation stored in field '" + f.getName() + - "'. The value may be modified $@.", why.getLocation(), whyText + "'. The value may be modified $@.", why, whyText diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index fb6006fc6f9..8e82ab07313 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,11 @@ +## 0.6.3 + +No user-facing changes. + +## 0.6.2 + +No user-facing changes. + ## 0.6.1 ### Minor Analysis Improvements diff --git a/csharp/ql/src/Complexity/ComplexCondition.ql b/csharp/ql/src/Complexity/ComplexCondition.ql index 2ebbaa8a362..2813db1cda5 100644 --- a/csharp/ql/src/Complexity/ComplexCondition.ql +++ b/csharp/ql/src/Complexity/ComplexCondition.ql @@ -26,4 +26,4 @@ where operators = count(BinaryLogicalOperation op | logicalParent*(op, e) and nontrivialLogicalOperator(op)) and operators > 3 -select e.getLocation(), "Complex condition: too many logical operations in this expression." +select e, "Complex condition: too many logical operations in this expression." diff --git a/csharp/ql/src/Security Features/CWE-022/ZipSlip.qhelp b/csharp/ql/src/Security Features/CWE-022/ZipSlip.qhelp index bee5d819836..a1f39d27b8c 100644 --- a/csharp/ql/src/Security Features/CWE-022/ZipSlip.qhelp +++ b/csharp/ql/src/Security Features/CWE-022/ZipSlip.qhelp @@ -3,16 +3,15 @@ "qhelp.dtd"> -

    Extracting files from a malicious zip archive without validating that the destination file path -is within the destination directory can cause files outside the destination directory to be -overwritten, due to the possible presence of directory traversal elements (..) in -archive paths.

    +

    Extracting files from a malicious zip file, or similar type of archive, +is at risk of directory traversal attacks if filenames from the archive are +not properly validated.

    Zip archives contain archive entries representing each file in the archive. These entries include a file path for the entry, but these file paths are not restricted and may contain unexpected special elements such as the directory traversal element (..). If these -file paths are used to determine an output file to write the contents of the archive item to, then -the file may be written to an unexpected location. This can result in sensitive information being +file paths are used to create a filesystem path, then a file operation may happen in an +unexpected location. This can result in sensitive information being revealed or deleted, or an attacker being able to influence behavior by modifying unexpected files.

    diff --git a/csharp/ql/src/Security Features/CWE-022/ZipSlip.ql b/csharp/ql/src/Security Features/CWE-022/ZipSlip.ql index 87850cde7d6..2e4d59aaf7e 100644 --- a/csharp/ql/src/Security Features/CWE-022/ZipSlip.ql +++ b/csharp/ql/src/Security Features/CWE-022/ZipSlip.ql @@ -1,8 +1,8 @@ /** - * @name Arbitrary file write during zip extraction ("Zip Slip") - * @description Extracting files from a malicious zip archive without validating that the - * destination file path is within the destination directory can cause files outside - * the destination directory to be overwritten. + * @name Arbitrary file access during archive extraction ("Zip Slip") + * @description Extracting files from a malicious ZIP file, or similar type of archive, without + * validating that the destination file path is within the destination directory + * can allow an attacker to unexpectedly gain access to resources. * @kind path-problem * @id cs/zipslip * @problem.severity error diff --git a/csharp/ql/src/change-notes/2023-06-16-zipslip-rename.md b/csharp/ql/src/change-notes/2023-06-16-zipslip-rename.md new file mode 100644 index 00000000000..3c13e6da67a --- /dev/null +++ b/csharp/ql/src/change-notes/2023-06-16-zipslip-rename.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* The query "Arbitrary file write during zip extraction ("Zip Slip")" (`cs/zipslip`) has been renamed to "Arbitrary file access during archive extraction ("Zip Slip")." diff --git a/csharp/ql/src/change-notes/released/0.6.2.md b/csharp/ql/src/change-notes/released/0.6.2.md new file mode 100644 index 00000000000..43f80640fc5 --- /dev/null +++ b/csharp/ql/src/change-notes/released/0.6.2.md @@ -0,0 +1,3 @@ +## 0.6.2 + +No user-facing changes. diff --git a/csharp/ql/src/change-notes/released/0.6.3.md b/csharp/ql/src/change-notes/released/0.6.3.md new file mode 100644 index 00000000000..83374bcef56 --- /dev/null +++ b/csharp/ql/src/change-notes/released/0.6.3.md @@ -0,0 +1,3 @@ +## 0.6.3 + +No user-facing changes. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 80fb0899f64..b7dafe32c5d 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.1 +lastReleaseVersion: 0.6.3 diff --git a/csharp/ql/src/experimental/ir/implementation/internal/TInstruction.qll b/csharp/ql/src/experimental/ir/implementation/internal/TInstruction.qll index 169de03c2dc..bb3eb683653 100644 --- a/csharp/ql/src/experimental/ir/implementation/internal/TInstruction.qll +++ b/csharp/ql/src/experimental/ir/implementation/internal/TInstruction.qll @@ -73,9 +73,6 @@ module UnaliasedSsaInstructions { } } -/** DEPRECATED: Alias for UnaliasedSsaInstructions */ -deprecated module UnaliasedSSAInstructions = UnaliasedSsaInstructions; - /** * Provides wrappers for the constructors of each branch of `TInstruction` that is used by the * aliased SSA stage. @@ -107,6 +104,3 @@ module AliasedSsaInstructions { result = TAliasedSsaUnreachedInstruction(irFunc) } } - -/** DEPRECATED: Alias for AliasedSsaInstructions */ -deprecated module AliasedSSAInstructions = AliasedSsaInstructions; diff --git a/csharp/ql/src/experimental/ir/implementation/internal/TOperand.qll b/csharp/ql/src/experimental/ir/implementation/internal/TOperand.qll index 6327c603901..cf8a6a9b7b1 100644 --- a/csharp/ql/src/experimental/ir/implementation/internal/TOperand.qll +++ b/csharp/ql/src/experimental/ir/implementation/internal/TOperand.qll @@ -59,20 +59,12 @@ private module Shared { class TNonSsaMemoryOperand = Internal::TNonSsaMemoryOperand; - /** DEPRECATED: Alias for TNonSsaMemoryOperand */ - deprecated class TNonSSAMemoryOperand = TNonSsaMemoryOperand; - /** * Returns the non-Phi memory operand with the specified parameters. */ TNonSsaMemoryOperand nonSsaMemoryOperand(TRawInstruction useInstr, MemoryOperandTag tag) { result = Internal::TNonSsaMemoryOperand(useInstr, tag) } - - /** DEPRECATED: Alias for nonSsaMemoryOperand */ - deprecated TNonSSAMemoryOperand nonSSAMemoryOperand(TRawInstruction useInstr, MemoryOperandTag tag) { - result = nonSsaMemoryOperand(useInstr, tag) - } } /** @@ -156,6 +148,3 @@ module UnaliasedSsaOperands { */ TChiOperand chiOperand(Unaliased::Instruction useInstr, ChiOperandTag tag) { none() } } - -/** DEPRECATED: Alias for UnaliasedSsaOperands */ -deprecated module UnaliasedSSAOperands = UnaliasedSsaOperands; diff --git a/csharp/ql/src/experimental/ir/implementation/raw/Instruction.qll b/csharp/ql/src/experimental/ir/implementation/raw/Instruction.qll index 0aa7c552638..1b5ea432946 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/Instruction.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/Instruction.qll @@ -210,9 +210,6 @@ class Instruction extends Construction::TStageInstruction { */ final Language::AST getAst() { result = Construction::getInstructionAst(this) } - /** DEPRECATED: Alias for getAst */ - deprecated Language::AST getAST() { result = this.getAst() } - /** * Gets the location of the source code for this instruction. */ @@ -463,9 +460,6 @@ class VariableInstruction extends Instruction { * Gets the AST variable that this instruction's IR variable refers to, if one exists. */ final Language::Variable getAstVariable() { result = var.(IRUserVariable).getVariable() } - - /** DEPRECATED: Alias for getAstVariable */ - deprecated Language::Variable getASTVariable() { result = this.getAstVariable() } } /** diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/IRConstruction.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/IRConstruction.qll index c75c279226d..8297fedb28e 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/IRConstruction.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/IRConstruction.qll @@ -378,12 +378,6 @@ private module Cached { result = getInstructionTranslatedElement(instruction).getAst() } - /** DEPRECATED: Alias for getInstructionAst */ - cached - deprecated Language::AST getInstructionAST(Instruction instruction) { - result = getInstructionAst(instruction) - } - cached CSharpType getInstructionResultType(Instruction instruction) { getInstructionTranslatedElement(instruction) diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedCondition.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedCondition.qll index 43db3c90065..afe98fdb410 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedCondition.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedCondition.qll @@ -17,9 +17,6 @@ abstract class TranslatedCondition extends ConditionBase { final override Language::AST getAst() { result = expr } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - final Expr getExpr() { result = expr } final override Callable getFunction() { result = expr.getEnclosingCallable() } diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedDeclaration.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedDeclaration.qll index 20d2b1e3459..23242c75c74 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedDeclaration.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedDeclaration.qll @@ -30,9 +30,6 @@ abstract class TranslatedLocalDeclaration extends TranslatedElement, TTranslated final override string toString() { result = expr.toString() } final override Language::AST getAst() { result = expr } - - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } } /** diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedElement.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedElement.qll index 4c5ab431dd5..c314d79e3ea 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedElement.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedElement.qll @@ -366,9 +366,6 @@ abstract class TranslatedElement extends TTranslatedElement { */ abstract Language::AST getAst(); - /** DEPRECATED: Alias for getAst */ - deprecated Language::AST getAST() { result = this.getAst() } - /** * Get the first instruction to be executed in the evaluation of this element. */ diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedExpr.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedExpr.qll index 67ebf19b766..68070261227 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedExpr.qll @@ -63,9 +63,6 @@ abstract class TranslatedExpr extends TranslatedExprBase { final override Language::AST getAst() { result = expr } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - final override Callable getFunction() { result = expr.getEnclosingCallable() } /** diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedFunction.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedFunction.qll index 24f340a8718..f0970984d46 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedFunction.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedFunction.qll @@ -30,9 +30,6 @@ class TranslatedFunction extends TranslatedElement, TTranslatedFunction { final override Language::AST getAst() { result = callable } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - /** * Gets the function being translated. */ @@ -287,9 +284,6 @@ class TranslatedParameter extends TranslatedElement, TTranslatedParameter { final override Language::AST getAst() { result = param } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - final override Callable getFunction() { result = param.getCallable() } final override Instruction getFirstInstruction() { diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedInitialization.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedInitialization.qll index bc127680ca4..c7cb9232d55 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedInitialization.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedInitialization.qll @@ -52,9 +52,6 @@ abstract class TranslatedInitialization extends TranslatedElement, TTranslatedIn final override Language::AST getAst() { result = expr } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - /** * Gets the expression that is doing the initialization. */ @@ -210,9 +207,6 @@ abstract class TranslatedElementInitialization extends TranslatedElement { final override Language::AST getAst() { result = initList } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - final override Callable getFunction() { result = initList.getEnclosingCallable() } final override Instruction getFirstInstruction() { @@ -319,9 +313,6 @@ abstract class TranslatedConstructorCallFromConstructor extends TranslatedElemen final override Language::AST getAst() { result = call } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - final override TranslatedElement getChild(int id) { id = 0 and result = this.getConstructorCall() } diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedStmt.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedStmt.qll index 1afc48d0409..71d8c42e170 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedStmt.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/TranslatedStmt.qll @@ -26,9 +26,6 @@ abstract class TranslatedStmt extends TranslatedElement, TTranslatedStmt { final override Language::AST getAst() { result = stmt } - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } - final override Callable getFunction() { result = stmt.getEnclosingCallable() } } diff --git a/csharp/ql/src/experimental/ir/implementation/raw/internal/desugar/internal/TranslatedCompilerGeneratedElement.qll b/csharp/ql/src/experimental/ir/implementation/raw/internal/desugar/internal/TranslatedCompilerGeneratedElement.qll index 30440235443..2e5908b8194 100644 --- a/csharp/ql/src/experimental/ir/implementation/raw/internal/desugar/internal/TranslatedCompilerGeneratedElement.qll +++ b/csharp/ql/src/experimental/ir/implementation/raw/internal/desugar/internal/TranslatedCompilerGeneratedElement.qll @@ -20,7 +20,4 @@ abstract class TranslatedCompilerGeneratedElement extends TranslatedElement, final override Callable getFunction() { result = generatedBy.getEnclosingCallable() } final override Language::AST getAst() { result = generatedBy } - - /** DEPRECATED: Alias for getAst */ - deprecated override Language::AST getAST() { result = this.getAst() } } diff --git a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/Instruction.qll b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/Instruction.qll index 0aa7c552638..1b5ea432946 100644 --- a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/Instruction.qll +++ b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/Instruction.qll @@ -210,9 +210,6 @@ class Instruction extends Construction::TStageInstruction { */ final Language::AST getAst() { result = Construction::getInstructionAst(this) } - /** DEPRECATED: Alias for getAst */ - deprecated Language::AST getAST() { result = this.getAst() } - /** * Gets the location of the source code for this instruction. */ @@ -463,9 +460,6 @@ class VariableInstruction extends Instruction { * Gets the AST variable that this instruction's IR variable refers to, if one exists. */ final Language::Variable getAstVariable() { result = var.(IRUserVariable).getVariable() } - - /** DEPRECATED: Alias for getAstVariable */ - deprecated Language::Variable getASTVariable() { result = this.getAstVariable() } } /** diff --git a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll index dc785f3e0b1..63dc4142a13 100644 --- a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll +++ b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll @@ -422,12 +422,6 @@ private module Cached { ) } - /** DEPRECATED: Alias for getInstructionAst */ - cached - deprecated Language::AST getInstructionAST(Instruction instr) { - result = getInstructionAst(instr) - } - cached Language::LanguageType getInstructionResultType(Instruction instr) { result = instr.(RawIR::Instruction).getResultLanguageType() @@ -993,9 +987,6 @@ predicate canReuseSsaForMemoryResult(Instruction instruction) { // We don't support reusing SSA for any location that could create a `Chi` instruction. } -/** DEPRECATED: Alias for canReuseSsaForMemoryResult */ -deprecated predicate canReuseSSAForMemoryResult = canReuseSsaForMemoryResult/1; - /** * Expose some of the internal predicates to PrintSSA.qll. We do this by publicly importing those modules in the * `DebugSsa` module, which is then imported by PrintSSA. @@ -1005,9 +996,6 @@ module DebugSsa { import DefUse } -/** DEPRECATED: Alias for DebugSsa */ -deprecated module DebugSSA = DebugSsa; - import CachedForDebugging cached diff --git a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll index f5b0b3af930..5c33ecf5f99 100644 --- a/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll +++ b/csharp/ql/src/experimental/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll @@ -46,9 +46,6 @@ predicate canReuseSsaForVariable(IRAutomaticVariable var) { not allocationEscapes(var) } -/** DEPRECATED: Alias for canReuseSsaForVariable */ -deprecated predicate canReuseSSAForVariable = canReuseSsaForVariable/1; - private newtype TMemoryLocation = MkMemoryLocation(Allocation var) { isVariableModeled(var) } private MemoryLocation getMemoryLocation(Allocation var) { result.getAllocation() = var } @@ -80,9 +77,6 @@ class MemoryLocation extends TMemoryLocation { predicate canReuseSsaForOldResult(Instruction instr) { none() } -/** DEPRECATED: Alias for canReuseSsaForOldResult */ -deprecated predicate canReuseSSAForOldResult = canReuseSsaForOldResult/1; - /** * Represents a set of `MemoryLocation`s that cannot overlap with * `MemoryLocation`s outside of the set. The `VirtualVariable` will be diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index d68e0a497c1..91cba09b8ac 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.6.2-dev +version: 0.6.4-dev groups: - csharp - queries diff --git a/csharp/ql/test/TestUtilities/InlineFlowTest.qll b/csharp/ql/test/TestUtilities/InlineFlowTest.qll index f69b81caf64..718752a978a 100644 --- a/csharp/ql/test/TestUtilities/InlineFlowTest.qll +++ b/csharp/ql/test/TestUtilities/InlineFlowTest.qll @@ -4,16 +4,17 @@ * Example for a test.ql: * ```ql * import csharp - * import DefaultValueFlow::PathGraph * import TestUtilities.InlineFlowTest + * import DefaultFlowTest + * import PathGraph * - * from DefaultValueFlow::PathNode source, DefaultValueFlow::PathNode sink - * where DefaultValueFlow::flowPath(source, sink) + * from PathNode source, PathNode sink + * where flowPath(source, sink) * select sink, source, sink, "$@", source, source.toString() * * ``` * - * To declare expecations, you can use the $hasTaintFlow or $hasValueFlow comments within the test source files. + * To declare expectations, you can use the $hasTaintFlow or $hasValueFlow comments within the test source files. * Example of the corresponding test file, e.g. Test.cs * ```csharp * public class Test @@ -32,14 +33,10 @@ * } * ``` * - * If you're not interested in a specific flow type, you can disable either value or taint flow expectations as follows: - * ```ql - * class HasFlowTest extends InlineFlowTest { - * override DataFlow::Configuration getTaintFlowConfig() { none() } - * - * override DataFlow::Configuration getValueFlowConfig() { none() } - * } - * ``` + * If you are only interested in value flow, then instead of importing `DefaultFlowTest`, you can import + * `ValueFlowTest`. Similarly, if you are only interested in taint flow, then instead of + * importing `DefaultFlowTest`, you can import `TaintFlowTest`. In both cases + * `DefaultFlowConfig` can be replaced by another implementation of `DataFlow::ConfigSig`. * * If you need more fine-grained tuning, consider implementing a test using `InlineExpectationsTest`. */ @@ -47,8 +44,8 @@ import csharp import TestUtilities.InlineExpectationsTest -private predicate defaultSource(DataFlow::Node src) { - src.asExpr().(MethodCall).getTarget().getUndecoratedName() = ["Source", "Taint"] +private predicate defaultSource(DataFlow::Node source) { + source.asExpr().(MethodCall).getTarget().getUndecoratedName() = ["Source", "Taint"] } private predicate defaultSink(DataFlow::Node sink) { @@ -58,42 +55,66 @@ private predicate defaultSink(DataFlow::Node sink) { } module DefaultFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node n) { defaultSource(n) } + predicate isSource(DataFlow::Node source) { defaultSource(source) } - predicate isSink(DataFlow::Node n) { defaultSink(n) } + predicate isSink(DataFlow::Node sink) { defaultSink(sink) } int fieldFlowBranchLimit() { result = 1000 } } -module DefaultValueFlow = DataFlow::Global; +private module NoFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { none() } -module DefaultTaintFlow = TaintTracking::Global; + predicate isSink(DataFlow::Node sink) { none() } +} private string getSourceArgString(DataFlow::Node src) { defaultSource(src) and src.asExpr().(MethodCall).getAnArgument().getValue() = result } -class InlineFlowTest extends InlineExpectationsTest { - InlineFlowTest() { this = "HasFlowTest" } +module FlowTest { + module ValueFlow = DataFlow::Global; - override string getARelevantTag() { result = ["hasValueFlow", "hasTaintFlow"] } + module TaintFlow = TaintTracking::Global; - override predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasValueFlow" and - exists(DataFlow::Node src, DataFlow::Node sink | DefaultValueFlow::flow(src, sink) | - sink.getLocation() = location and - element = sink.toString() and - if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = "" - ) - or - tag = "hasTaintFlow" and - exists(DataFlow::Node src, DataFlow::Node sink | - DefaultTaintFlow::flow(src, sink) and not DefaultValueFlow::flow(src, sink) - | - sink.getLocation() = location and - element = sink.toString() and - if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = "" - ) + private module InlineTest implements TestSig { + string getARelevantTag() { result = ["hasValueFlow", "hasTaintFlow"] } + + predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "hasValueFlow" and + exists(DataFlow::Node src, DataFlow::Node sink | ValueFlow::flow(src, sink) | + sink.getLocation() = location and + element = sink.toString() and + if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = "" + ) + or + tag = "hasTaintFlow" and + exists(DataFlow::Node src, DataFlow::Node sink | + TaintFlow::flow(src, sink) and not ValueFlow::flow(src, sink) + | + sink.getLocation() = location and + element = sink.toString() and + if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = "" + ) + } + } + + import MakeTest + import DataFlow::MergePathGraph + + predicate flowPath(PathNode source, PathNode sink) { + ValueFlow::flowPath(source.asPathNode1(), sink.asPathNode1()) or + TaintFlow::flowPath(source.asPathNode2(), sink.asPathNode2()) } } + +module DefaultFlowTest = FlowTest; + +module ValueFlowTest { + import FlowTest +} + +module TaintFlowTest { + import FlowTest +} diff --git a/csharp/ql/test/experimental/CWE-918/RequestForgery.cs b/csharp/ql/test/experimental/CWE-918/RequestForgery.cs index 32347505b35..02e851d8df1 100644 --- a/csharp/ql/test/experimental/CWE-918/RequestForgery.cs +++ b/csharp/ql/test/experimental/CWE-918/RequestForgery.cs @@ -1,5 +1,3 @@ -// semmle-extractor-options: ${testdir}/../../resources/stubs/System.Web.cs /r:System.Threading.Tasks.dll /r:System.Collections.Specialized.dll /r:System.Runtime.dll /r:System.Private.Uri.dll - using System; using System.Threading.Tasks; using System.Web.Mvc; @@ -38,21 +36,3 @@ namespace RequestForgery.Controllers } } } -// Missing stubs: -namespace System.Net.Http -{ - public class HttpClient - { - public async Task SendAsync(HttpRequestMessage request) => throw null; - } - - public class HttpRequestMessage - { - public HttpRequestMessage(HttpMethod method, string requestUri) => throw null; - } - - public class HttpMethod - { - public static readonly HttpMethod Get; - } -} diff --git a/csharp/ql/test/experimental/CWE-918/RequestForgery.expected b/csharp/ql/test/experimental/CWE-918/RequestForgery.expected index fb85f080a4c..4c499ad4be6 100644 --- a/csharp/ql/test/experimental/CWE-918/RequestForgery.expected +++ b/csharp/ql/test/experimental/CWE-918/RequestForgery.expected @@ -1,8 +1,8 @@ edges -| RequestForgery.cs:14:52:14:54 | url : String | RequestForgery.cs:16:66:16:68 | access to parameter url | +| RequestForgery.cs:12:52:12:54 | url : String | RequestForgery.cs:14:66:14:68 | access to parameter url | nodes -| RequestForgery.cs:14:52:14:54 | url : String | semmle.label | url : String | -| RequestForgery.cs:16:66:16:68 | access to parameter url | semmle.label | access to parameter url | +| RequestForgery.cs:12:52:12:54 | url : String | semmle.label | url : String | +| RequestForgery.cs:14:66:14:68 | access to parameter url | semmle.label | access to parameter url | subpaths #select -| RequestForgery.cs:16:66:16:68 | access to parameter url | RequestForgery.cs:14:52:14:54 | url : String | RequestForgery.cs:16:66:16:68 | access to parameter url | The URL of this request depends on a $@. | RequestForgery.cs:14:52:14:54 | url | user-provided value | +| RequestForgery.cs:14:66:14:68 | access to parameter url | RequestForgery.cs:12:52:12:54 | url : String | RequestForgery.cs:14:66:14:68 | access to parameter url | The URL of this request depends on a $@. | RequestForgery.cs:12:52:12:54 | url | user-provided value | diff --git a/csharp/ql/test/experimental/CWE-918/options b/csharp/ql/test/experimental/CWE-918/options new file mode 100644 index 00000000000..09b08bf4d27 --- /dev/null +++ b/csharp/ql/test/experimental/CWE-918/options @@ -0,0 +1,3 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../resources/stubs/System.Web.cs \ No newline at end of file diff --git a/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected b/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected index d5bbeef765a..1aabed1e806 100644 --- a/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected @@ -214,8 +214,8 @@ edges | CollectionFlow.cs:385:58:385:61 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:385:67:385:70 | access to parameter dict : Dictionary [element, property Value] : A | | CollectionFlow.cs:385:67:385:70 | access to parameter dict : Dictionary [element, property Value] : A | CollectionFlow.cs:385:67:385:73 | access to indexer : A | | CollectionFlow.cs:387:59:387:62 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:387:68:387:71 | access to parameter dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:387:68:387:71 | access to parameter dict : Dictionary [element, property Value] : A | CollectionFlow.cs:387:68:387:79 | call to method First> : Object [property Value] : A | -| CollectionFlow.cs:387:68:387:79 | call to method First> : Object [property Value] : A | CollectionFlow.cs:387:68:387:85 | access to property Value : A | +| CollectionFlow.cs:387:68:387:71 | access to parameter dict : Dictionary [element, property Value] : A | CollectionFlow.cs:387:68:387:79 | call to method First> : KeyValuePair [property Value] : A | +| CollectionFlow.cs:387:68:387:79 | call to method First> : KeyValuePair [property Value] : A | CollectionFlow.cs:387:68:387:85 | access to property Value : A | | CollectionFlow.cs:389:60:389:63 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:389:69:389:72 | access to parameter dict : Dictionary [element, property Value] : A | | CollectionFlow.cs:389:69:389:72 | access to parameter dict : Dictionary [element, property Value] : A | CollectionFlow.cs:389:69:389:79 | access to property Values : ICollection [element] : A | | CollectionFlow.cs:389:69:389:79 | access to property Values : ICollection [element] : A | CollectionFlow.cs:389:69:389:87 | call to method First : A | @@ -223,8 +223,8 @@ edges | CollectionFlow.cs:391:67:391:70 | access to parameter dict : Dictionary [element, property Key] : A | CollectionFlow.cs:391:67:391:75 | access to property Keys : ICollection [element] : A | | CollectionFlow.cs:391:67:391:75 | access to property Keys : ICollection [element] : A | CollectionFlow.cs:391:67:391:83 | call to method First : A | | CollectionFlow.cs:393:57:393:60 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:393:66:393:69 | access to parameter dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:393:66:393:69 | access to parameter dict : Dictionary [element, property Key] : A | CollectionFlow.cs:393:66:393:77 | call to method First> : Object [property Key] : A | -| CollectionFlow.cs:393:66:393:77 | call to method First> : Object [property Key] : A | CollectionFlow.cs:393:66:393:81 | access to property Key : A | +| CollectionFlow.cs:393:66:393:69 | access to parameter dict : Dictionary [element, property Key] : A | CollectionFlow.cs:393:66:393:77 | call to method First> : KeyValuePair [property Key] : A | +| CollectionFlow.cs:393:66:393:77 | call to method First> : KeyValuePair [property Key] : A | CollectionFlow.cs:393:66:393:81 | access to property Key : A | | CollectionFlow.cs:395:49:395:52 | args : A[] [element] : A | CollectionFlow.cs:395:63:395:66 | access to parameter args : A[] [element] : A | | CollectionFlow.cs:395:49:395:52 | args : null [element] : A | CollectionFlow.cs:395:63:395:66 | access to parameter args : null [element] : A | | CollectionFlow.cs:395:63:395:66 | access to parameter args : A[] [element] : A | CollectionFlow.cs:395:63:395:69 | access to array element | @@ -440,7 +440,7 @@ nodes | CollectionFlow.cs:385:67:385:73 | access to indexer : A | semmle.label | access to indexer : A | | CollectionFlow.cs:387:59:387:62 | dict : Dictionary [element, property Value] : A | semmle.label | dict : Dictionary [element, property Value] : A | | CollectionFlow.cs:387:68:387:71 | access to parameter dict : Dictionary [element, property Value] : A | semmle.label | access to parameter dict : Dictionary [element, property Value] : A | -| CollectionFlow.cs:387:68:387:79 | call to method First> : Object [property Value] : A | semmle.label | call to method First> : Object [property Value] : A | +| CollectionFlow.cs:387:68:387:79 | call to method First> : KeyValuePair [property Value] : A | semmle.label | call to method First> : KeyValuePair [property Value] : A | | CollectionFlow.cs:387:68:387:85 | access to property Value : A | semmle.label | access to property Value : A | | CollectionFlow.cs:389:60:389:63 | dict : Dictionary [element, property Value] : A | semmle.label | dict : Dictionary [element, property Value] : A | | CollectionFlow.cs:389:69:389:72 | access to parameter dict : Dictionary [element, property Value] : A | semmle.label | access to parameter dict : Dictionary [element, property Value] : A | @@ -452,7 +452,7 @@ nodes | CollectionFlow.cs:391:67:391:83 | call to method First : A | semmle.label | call to method First : A | | CollectionFlow.cs:393:57:393:60 | dict : Dictionary [element, property Key] : A | semmle.label | dict : Dictionary [element, property Key] : A | | CollectionFlow.cs:393:66:393:69 | access to parameter dict : Dictionary [element, property Key] : A | semmle.label | access to parameter dict : Dictionary [element, property Key] : A | -| CollectionFlow.cs:393:66:393:77 | call to method First> : Object [property Key] : A | semmle.label | call to method First> : Object [property Key] : A | +| CollectionFlow.cs:393:66:393:77 | call to method First> : KeyValuePair [property Key] : A | semmle.label | call to method First> : KeyValuePair [property Key] : A | | CollectionFlow.cs:393:66:393:81 | access to property Key : A | semmle.label | access to property Key : A | | CollectionFlow.cs:395:49:395:52 | args : A[] [element] : A | semmle.label | args : A[] [element] : A | | CollectionFlow.cs:395:49:395:52 | args : null [element] : A | semmle.label | args : null [element] : A | diff --git a/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected b/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected index 723086b649f..610ff1f06d9 100644 --- a/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/delegates/DelegateFlow.expected @@ -51,5 +51,5 @@ viableLambda | DelegateFlow.cs:125:9:125:25 | function pointer call | file://:0:0:0:0 | (none) | DelegateFlow.cs:7:17:7:18 | M2 | | DelegateFlow.cs:132:9:132:11 | delegate call | DelegateFlow.cs:135:25:135:40 | call to method M19 | DelegateFlow.cs:135:29:135:36 | (...) => ... | | DelegateFlow.cs:132:9:132:11 | delegate call | file://:0:0:0:0 | (none) | DelegateFlow.cs:131:17:131:24 | (...) => ... | -| file://:0:0:0:0 | [summary] call to parameter position 0 of Lazy in Lazy | DelegateFlow.cs:105:9:105:24 | object creation of type Lazy | DelegateFlow.cs:104:23:104:30 | (...) => ... | -| file://:0:0:0:0 | [summary] call to parameter position 0 of Lazy in Lazy | DelegateFlow.cs:107:9:107:24 | object creation of type Lazy | DelegateFlow.cs:106:13:106:20 | (...) => ... | +| file://:0:0:0:0 | [summary] call to [summary param] position 0 in Lazy in Lazy | DelegateFlow.cs:105:9:105:24 | object creation of type Lazy | DelegateFlow.cs:104:23:104:30 | (...) => ... | +| file://:0:0:0:0 | [summary] call to [summary param] position 0 in Lazy in Lazy | DelegateFlow.cs:107:9:107:24 | object creation of type Lazy | DelegateFlow.cs:106:13:106:20 | (...) => ... | diff --git a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.cs b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.cs index 05772dfb29a..7a0e896e54d 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.cs +++ b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.cs @@ -149,9 +149,9 @@ namespace My.Qltest static T Apply(Func f, S s) => throw null; - static S[] Map(S[] elements, Func f) => throw null; + static T[] Map(S[] elements, Func f) => throw null; - static void Apply2(Action f, S s1, S s2) => throw null; + static void Apply2(Action f, D d1, D d2) => throw null; static void Parse(string s, out int i) => throw null; @@ -235,4 +235,4 @@ namespace My.Qltest static void Sink(object o) { } } -} \ No newline at end of file +} diff --git a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected index 09ce9945cdf..c69a86a5cb3 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected @@ -12,10 +12,10 @@ edges | ExternalFlow.cs:30:13:30:16 | [post] this access : D [field Field] : Object | ExternalFlow.cs:31:18:31:21 | this access : D [field Field] : Object | | ExternalFlow.cs:30:26:30:37 | object creation of type Object : Object | ExternalFlow.cs:30:13:30:16 | [post] this access : D [field Field] : Object | | ExternalFlow.cs:31:18:31:21 | this access : D [field Field] : Object | ExternalFlow.cs:31:18:31:39 | call to method StepFieldGetter | -| ExternalFlow.cs:36:19:36:62 | (...) ... : Object [field Field] : Object | ExternalFlow.cs:36:18:36:69 | access to field Field | +| ExternalFlow.cs:36:19:36:62 | (...) ... : D [field Field] : Object | ExternalFlow.cs:36:18:36:69 | access to field Field | | ExternalFlow.cs:36:22:36:25 | [post] this access : D [field Field] : Object | ExternalFlow.cs:37:18:37:21 | this access : D [field Field] : Object | | ExternalFlow.cs:36:22:36:55 | call to method StepFieldSetter : D [field Field2, field Field] : Object | ExternalFlow.cs:36:22:36:62 | access to field Field2 : Object [field Field] : Object | -| ExternalFlow.cs:36:22:36:62 | access to field Field2 : Object [field Field] : Object | ExternalFlow.cs:36:19:36:62 | (...) ... : Object [field Field] : Object | +| ExternalFlow.cs:36:22:36:62 | access to field Field2 : Object [field Field] : Object | ExternalFlow.cs:36:19:36:62 | (...) ... : D [field Field] : Object | | ExternalFlow.cs:36:43:36:54 | object creation of type Object : Object | ExternalFlow.cs:36:22:36:25 | [post] this access : D [field Field] : Object | | ExternalFlow.cs:36:43:36:54 | object creation of type Object : Object | ExternalFlow.cs:36:22:36:55 | call to method StepFieldSetter : D [field Field2, field Field] : Object | | ExternalFlow.cs:37:18:37:21 | this access : D [field Field] : Object | ExternalFlow.cs:37:18:37:27 | access to field Field | @@ -38,8 +38,7 @@ edges | ExternalFlow.cs:72:23:72:23 | o : Object | ExternalFlow.cs:72:35:72:35 | access to parameter o | | ExternalFlow.cs:77:24:77:58 | call to method Map : T[] [element] : Object | ExternalFlow.cs:78:18:78:21 | access to local variable objs : T[] [element] : Object | | ExternalFlow.cs:77:46:77:57 | object creation of type Object : Object | ExternalFlow.cs:77:24:77:58 | call to method Map : T[] [element] : Object | -| ExternalFlow.cs:78:18:78:21 | access to local variable objs : T[] [element] : Object | ExternalFlow.cs:78:18:78:24 | access to array element : Object | -| ExternalFlow.cs:78:18:78:24 | access to array element : Object | ExternalFlow.cs:78:18:78:24 | (...) ... | +| ExternalFlow.cs:78:18:78:21 | access to local variable objs : T[] [element] : Object | ExternalFlow.cs:78:18:78:24 | access to array element | | ExternalFlow.cs:83:30:83:45 | { ..., ... } : null [element] : Object | ExternalFlow.cs:84:29:84:32 | access to local variable objs : null [element] : Object | | ExternalFlow.cs:83:32:83:43 | object creation of type Object : Object | ExternalFlow.cs:83:30:83:45 | { ..., ... } : null [element] : Object | | ExternalFlow.cs:84:25:84:41 | call to method Map : T[] [element] : Object | ExternalFlow.cs:85:18:85:22 | access to local variable objs2 : T[] [element] : Object | @@ -91,7 +90,7 @@ nodes | ExternalFlow.cs:31:18:31:21 | this access : D [field Field] : Object | semmle.label | this access : D [field Field] : Object | | ExternalFlow.cs:31:18:31:39 | call to method StepFieldGetter | semmle.label | call to method StepFieldGetter | | ExternalFlow.cs:36:18:36:69 | access to field Field | semmle.label | access to field Field | -| ExternalFlow.cs:36:19:36:62 | (...) ... : Object [field Field] : Object | semmle.label | (...) ... : Object [field Field] : Object | +| ExternalFlow.cs:36:19:36:62 | (...) ... : D [field Field] : Object | semmle.label | (...) ... : D [field Field] : Object | | ExternalFlow.cs:36:22:36:25 | [post] this access : D [field Field] : Object | semmle.label | [post] this access : D [field Field] : Object | | ExternalFlow.cs:36:22:36:55 | call to method StepFieldSetter : D [field Field2, field Field] : Object | semmle.label | call to method StepFieldSetter : D [field Field2, field Field] : Object | | ExternalFlow.cs:36:22:36:62 | access to field Field2 : Object [field Field] : Object | semmle.label | access to field Field2 : Object [field Field] : Object | @@ -124,8 +123,7 @@ nodes | ExternalFlow.cs:77:24:77:58 | call to method Map : T[] [element] : Object | semmle.label | call to method Map : T[] [element] : Object | | ExternalFlow.cs:77:46:77:57 | object creation of type Object : Object | semmle.label | object creation of type Object : Object | | ExternalFlow.cs:78:18:78:21 | access to local variable objs : T[] [element] : Object | semmle.label | access to local variable objs : T[] [element] : Object | -| ExternalFlow.cs:78:18:78:24 | (...) ... | semmle.label | (...) ... | -| ExternalFlow.cs:78:18:78:24 | access to array element : Object | semmle.label | access to array element : Object | +| ExternalFlow.cs:78:18:78:24 | access to array element | semmle.label | access to array element | | ExternalFlow.cs:83:30:83:45 | { ..., ... } : null [element] : Object | semmle.label | { ..., ... } : null [element] : Object | | ExternalFlow.cs:83:32:83:43 | object creation of type Object : Object | semmle.label | object creation of type Object : Object | | ExternalFlow.cs:84:25:84:41 | call to method Map : T[] [element] : Object | semmle.label | call to method Map : T[] [element] : Object | @@ -184,7 +182,7 @@ subpaths | ExternalFlow.cs:60:47:60:47 | access to parameter o | ExternalFlow.cs:60:64:60:75 | object creation of type Object : Object | ExternalFlow.cs:60:47:60:47 | access to parameter o | $@ | ExternalFlow.cs:60:64:60:75 | object creation of type Object : Object | object creation of type Object : Object | | ExternalFlow.cs:66:18:66:18 | access to local variable o | ExternalFlow.cs:65:45:65:56 | object creation of type Object : Object | ExternalFlow.cs:66:18:66:18 | access to local variable o | $@ | ExternalFlow.cs:65:45:65:56 | object creation of type Object : Object | object creation of type Object : Object | | ExternalFlow.cs:72:35:72:35 | access to parameter o | ExternalFlow.cs:71:32:71:43 | object creation of type Object : Object | ExternalFlow.cs:72:35:72:35 | access to parameter o | $@ | ExternalFlow.cs:71:32:71:43 | object creation of type Object : Object | object creation of type Object : Object | -| ExternalFlow.cs:78:18:78:24 | (...) ... | ExternalFlow.cs:77:46:77:57 | object creation of type Object : Object | ExternalFlow.cs:78:18:78:24 | (...) ... | $@ | ExternalFlow.cs:77:46:77:57 | object creation of type Object : Object | object creation of type Object : Object | +| ExternalFlow.cs:78:18:78:24 | access to array element | ExternalFlow.cs:77:46:77:57 | object creation of type Object : Object | ExternalFlow.cs:78:18:78:24 | access to array element | $@ | ExternalFlow.cs:77:46:77:57 | object creation of type Object : Object | object creation of type Object : Object | | ExternalFlow.cs:85:18:85:25 | access to array element | ExternalFlow.cs:83:32:83:43 | object creation of type Object : Object | ExternalFlow.cs:85:18:85:25 | access to array element | $@ | ExternalFlow.cs:83:32:83:43 | object creation of type Object : Object | object creation of type Object : Object | | ExternalFlow.cs:92:18:92:18 | (...) ... | ExternalFlow.cs:90:21:90:34 | object creation of type String : String | ExternalFlow.cs:92:18:92:18 | (...) ... | $@ | ExternalFlow.cs:90:21:90:34 | object creation of type String : String | object creation of type String : String | | ExternalFlow.cs:102:22:102:22 | access to parameter d | ExternalFlow.cs:98:24:98:35 | object creation of type Object : Object | ExternalFlow.cs:102:22:102:22 | access to parameter d | $@ | ExternalFlow.cs:98:24:98:35 | object creation of type Object : Object | object creation of type Object : Object | diff --git a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ext.yml b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ext.yml index f626949e6f4..a2bf0d8b525 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ext.yml +++ b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ext.yml @@ -16,8 +16,8 @@ extensions: - ["My.Qltest", "D", false, "StepElementSetter", "(System.Object)", "", "Argument[0]", "Argument[this].Element", "value", "manual"] - ["My.Qltest", "D", false, "Apply<,>", "(System.Func,S)", "", "Argument[1]", "Argument[0].Parameter[0]", "value", "manual"] - ["My.Qltest", "D", false, "Apply<,>", "(System.Func,S)", "", "Argument[0].ReturnValue", "ReturnValue", "value", "manual"] - - ["My.Qltest", "D", false, "Apply2<>", "(System.Action,S,S)", "", "Argument[1].Field[My.Qltest.D.Field]", "Argument[0].Parameter[0]", "value", "manual"] - - ["My.Qltest", "D", false, "Apply2<>", "(System.Action,S,S)", "", "Argument[2].Field[My.Qltest.D.Field2]", "Argument[0].Parameter[0]", "value", "manual"] + - ["My.Qltest", "D", false, "Apply2", "(System.Action,My.Qltest.D,My.Qltest.D)", "", "Argument[1].Field[My.Qltest.D.Field]", "Argument[0].Parameter[0]", "value", "manual"] + - ["My.Qltest", "D", false, "Apply2", "(System.Action,My.Qltest.D,My.Qltest.D)", "", "Argument[2].Field[My.Qltest.D.Field2]", "Argument[0].Parameter[0]", "value", "manual"] - ["My.Qltest", "D", false, "Map<,>", "(S[],System.Func)", "", "Argument[0].Element", "Argument[1].Parameter[0]", "value", "manual"] - ["My.Qltest", "D", false, "Map<,>", "(S[],System.Func)", "", "Argument[1].ReturnValue", "ReturnValue.Element", "value", "manual"] - ["My.Qltest", "D", false, "Parse", "(System.String,System.Int32)", "", "Argument[0]", "Argument[1]", "taint", "manual"] diff --git a/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected b/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected index aa9ac0493aa..7466125341d 100644 --- a/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.expected @@ -1,1100 +1,2196 @@ failures +testFailures edges | A.cs:5:17:5:28 | call to method Source : C | A.cs:6:24:6:24 | access to local variable c : C | +| A.cs:5:17:5:28 | call to method Source : C | A.cs:6:24:6:24 | access to local variable c : C | +| A.cs:6:17:6:25 | call to method Make : B [field c] : C | A.cs:7:14:7:14 | access to local variable b : B [field c] : C | | A.cs:6:17:6:25 | call to method Make : B [field c] : C | A.cs:7:14:7:14 | access to local variable b : B [field c] : C | | A.cs:6:24:6:24 | access to local variable c : C | A.cs:6:17:6:25 | call to method Make : B [field c] : C | +| A.cs:6:24:6:24 | access to local variable c : C | A.cs:6:17:6:25 | call to method Make : B [field c] : C | +| A.cs:6:24:6:24 | access to local variable c : C | A.cs:147:32:147:32 | c : C | | A.cs:6:24:6:24 | access to local variable c : C | A.cs:147:32:147:32 | c : C | | A.cs:7:14:7:14 | access to local variable b : B [field c] : C | A.cs:7:14:7:16 | access to field c | +| A.cs:7:14:7:14 | access to local variable b : B [field c] : C | A.cs:7:14:7:16 | access to field c | +| A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | | A.cs:13:15:13:29 | call to method Source : C1 | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | +| A.cs:13:15:13:29 | call to method Source : C1 | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | +| A.cs:13:15:13:29 | call to method Source : C1 | A.cs:145:27:145:27 | c : C1 | | A.cs:13:15:13:29 | call to method Source : C1 | A.cs:145:27:145:27 | c : C1 | | A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:14:14:14:20 | call to method Get | +| A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:14:14:14:20 | call to method Get | +| A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:146:18:146:20 | this : B [field c] : C1 | | A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:146:18:146:20 | this : B [field c] : C1 | | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:15:14:15:42 | call to method Get | +| A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:15:14:15:42 | call to method Get | +| A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:146:18:146:20 | this : B [field c] : C | | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:146:18:146:20 | this : B [field c] : C | | A.cs:15:21:15:34 | call to method Source : C | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | +| A.cs:15:21:15:34 | call to method Source : C | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | +| A.cs:15:21:15:34 | call to method Source : C | A.cs:141:20:141:20 | c : C | | A.cs:15:21:15:34 | call to method Source : C | A.cs:141:20:141:20 | c : C | | A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | +| A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | +| A.cs:22:25:22:37 | call to method Source : C2 | A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | | A.cs:22:25:22:37 | call to method Source : C2 | A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | | A.cs:22:25:22:37 | call to method Source : C2 | A.cs:42:29:42:29 | c : C2 | +| A.cs:22:25:22:37 | call to method Source : C2 | A.cs:42:29:42:29 | c : C2 | +| A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | A.cs:24:14:24:17 | access to field c | | A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | A.cs:24:14:24:17 | access to field c | | A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | +| A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | +| A.cs:31:29:31:41 | call to method Source : C2 | A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | | A.cs:31:29:31:41 | call to method Source : C2 | A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | | A.cs:31:29:31:41 | call to method Source : C2 | A.cs:36:33:36:33 | c : C2 | +| A.cs:31:29:31:41 | call to method Source : C2 | A.cs:36:33:36:33 | c : C2 | +| A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | A.cs:33:14:33:17 | access to field c | | A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | A.cs:33:14:33:17 | access to field c | | A.cs:36:33:36:33 | c : C2 | A.cs:38:29:38:29 | access to parameter c : C2 | +| A.cs:36:33:36:33 | c : C2 | A.cs:38:29:38:29 | access to parameter c : C2 | +| A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | A.cs:39:16:39:28 | ... ? ... : ... : B [field c] : C2 | | A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | A.cs:39:16:39:28 | ... ? ... : ... : B [field c] : C2 | | A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | +| A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | +| A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:42:29:42:29 | c : C2 | | A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:42:29:42:29 | c : C2 | | A.cs:42:29:42:29 | c : C2 | A.cs:47:20:47:20 | access to parameter c : C2 | +| A.cs:42:29:42:29 | c : C2 | A.cs:47:20:47:20 | access to parameter c : C2 | +| A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | | A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | +| A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | +| A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:145:27:145:27 | c : C2 | | A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:145:27:145:27 | c : C2 | | A.cs:55:17:55:28 | call to method Source : A | A.cs:57:16:57:16 | access to local variable a : A | +| A.cs:55:17:55:28 | call to method Source : A | A.cs:57:16:57:16 | access to local variable a : A | +| A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | | A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | | A.cs:57:16:57:16 | access to local variable a : A | A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | +| A.cs:57:16:57:16 | access to local variable a : A | A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | +| A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | A.cs:60:22:60:22 | c : C1 [field a] : A | | A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | A.cs:60:22:60:22 | c : C1 [field a] : A | | A.cs:60:22:60:22 | c : C1 [field a] : A | A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | +| A.cs:60:22:60:22 | c : C1 [field a] : A | A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | +| A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | A.cs:64:18:64:26 | access to field a | | A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | A.cs:64:18:64:26 | access to field a | | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | +| A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | +| A.cs:83:15:83:26 | call to method Source : C | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | | A.cs:83:15:83:26 | call to method Source : C | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | | A.cs:83:15:83:26 | call to method Source : C | A.cs:145:27:145:27 | c : C | +| A.cs:83:15:83:26 | call to method Source : C | A.cs:145:27:145:27 | c : C | +| A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | A.cs:89:14:89:14 | access to local variable b : B [field c] : C | | A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | A.cs:89:14:89:14 | access to local variable b : B [field c] : C | | A.cs:89:14:89:14 | access to local variable b : B [field c] : C | A.cs:89:14:89:16 | access to field c | +| A.cs:89:14:89:14 | access to local variable b : B [field c] : C | A.cs:89:14:89:16 | access to field c | +| A.cs:95:20:95:20 | b : B | A.cs:97:13:97:13 | access to parameter b : B | | A.cs:95:20:95:20 | b : B | A.cs:97:13:97:13 | access to parameter b : B | | A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | +| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | +| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | | A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | | A.cs:97:13:97:13 | access to parameter b : B | A.cs:98:22:98:43 | ... ? ... : ... : B | +| A.cs:97:13:97:13 | access to parameter b : B | A.cs:98:22:98:43 | ... ? ... : ... : B | +| A.cs:97:19:97:32 | call to method Source : C | A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | | A.cs:97:19:97:32 | call to method Source : C | A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | | A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | +| A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | +| A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | | A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | | A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | | A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | +| A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | +| A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | +| A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | | A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | | A.cs:98:30:98:43 | call to method Source : B | A.cs:98:22:98:43 | ... ? ... : ... : B | +| A.cs:98:30:98:43 | call to method Source : B | A.cs:98:22:98:43 | ... ? ... : ... : B | +| A.cs:104:17:104:30 | call to method Source : B | A.cs:105:23:105:23 | access to local variable b : B | | A.cs:104:17:104:30 | call to method Source : B | A.cs:105:23:105:23 | access to local variable b : B | | A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | +| A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | +| A.cs:105:17:105:29 | object creation of type D : D [field b] : B | A.cs:106:14:106:14 | access to local variable d : D [field b] : B | | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | A.cs:106:14:106:14 | access to local variable d : D [field b] : B | | A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | A.cs:108:14:108:14 | access to local variable b : B [field c] : C | +| A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | A.cs:108:14:108:14 | access to local variable b : B [field c] : C | +| A.cs:105:23:105:23 | access to local variable b : B | A.cs:95:20:95:20 | b : B | | A.cs:105:23:105:23 | access to local variable b : B | A.cs:95:20:95:20 | b : B | | A.cs:105:23:105:23 | access to local variable b : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | +| A.cs:105:23:105:23 | access to local variable b : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | +| A.cs:106:14:106:14 | access to local variable d : D [field b] : B | A.cs:106:14:106:16 | access to field b | | A.cs:106:14:106:14 | access to local variable d : D [field b] : B | A.cs:106:14:106:16 | access to field b | | A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | A.cs:107:14:107:16 | access to field b : B [field c] : C | +| A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | A.cs:107:14:107:16 | access to field b : B [field c] : C | +| A.cs:107:14:107:16 | access to field b : B [field c] : C | A.cs:107:14:107:18 | access to field c | | A.cs:107:14:107:16 | access to field b : B [field c] : C | A.cs:107:14:107:18 | access to field c | | A.cs:108:14:108:14 | access to local variable b : B [field c] : C | A.cs:108:14:108:16 | access to field c | +| A.cs:108:14:108:14 | access to local variable b : B [field c] : C | A.cs:108:14:108:16 | access to field c | +| A.cs:113:17:113:29 | call to method Source : B | A.cs:114:29:114:29 | access to local variable b : B | | A.cs:113:17:113:29 | call to method Source : B | A.cs:114:29:114:29 | access to local variable b : B | | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | +| A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | +| A.cs:114:29:114:29 | access to local variable b : B | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | | A.cs:114:29:114:29 | access to local variable b : B | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | | A.cs:114:29:114:29 | access to local variable b : B | A.cs:157:25:157:28 | head : B | +| A.cs:114:29:114:29 | access to local variable b : B | A.cs:157:25:157:28 | head : B | +| A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | | A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | +| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | +| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:157:38:157:41 | next : MyList [field head] : B | | A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:157:38:157:41 | next : MyList [field head] : B | | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | +| A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | +| A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | | A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | +| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | +| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | | A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | | A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | +| A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | +| A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | A.cs:119:14:119:25 | access to field next : MyList [field head] : B | | A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | A.cs:119:14:119:25 | access to field next : MyList [field head] : B | | A.cs:119:14:119:25 | access to field next : MyList [field head] : B | A.cs:119:14:119:30 | access to field head | +| A.cs:119:14:119:25 | access to field next : MyList [field head] : B | A.cs:119:14:119:30 | access to field head | +| A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | A.cs:121:41:121:46 | access to field next : MyList [field head] : B | | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | A.cs:121:41:121:46 | access to field next : MyList [field head] : B | | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | +| A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | +| A.cs:121:41:121:46 | access to field next : MyList [field head] : B | A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | | A.cs:121:41:121:46 | access to field next : MyList [field head] : B | A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | | A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | +| A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | +| A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | A.cs:123:18:123:23 | access to field head | | A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | A.cs:123:18:123:23 | access to field head | | A.cs:141:20:141:20 | c : C | A.cs:143:22:143:22 | access to parameter c : C | +| A.cs:141:20:141:20 | c : C | A.cs:143:22:143:22 | access to parameter c : C | +| A.cs:143:22:143:22 | access to parameter c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | | A.cs:143:22:143:22 | access to parameter c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | | A.cs:145:27:145:27 | c : C | A.cs:145:41:145:41 | access to parameter c : C | +| A.cs:145:27:145:27 | c : C | A.cs:145:41:145:41 | access to parameter c : C | +| A.cs:145:27:145:27 | c : C1 | A.cs:145:41:145:41 | access to parameter c : C1 | | A.cs:145:27:145:27 | c : C1 | A.cs:145:41:145:41 | access to parameter c : C1 | | A.cs:145:27:145:27 | c : C2 | A.cs:145:41:145:41 | access to parameter c : C2 | +| A.cs:145:27:145:27 | c : C2 | A.cs:145:41:145:41 | access to parameter c : C2 | +| A.cs:145:41:145:41 | access to parameter c : C | A.cs:145:32:145:35 | [post] this access : B [field c] : C | | A.cs:145:41:145:41 | access to parameter c : C | A.cs:145:32:145:35 | [post] this access : B [field c] : C | | A.cs:145:41:145:41 | access to parameter c : C1 | A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | +| A.cs:145:41:145:41 | access to parameter c : C1 | A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | +| A.cs:145:41:145:41 | access to parameter c : C2 | A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | | A.cs:145:41:145:41 | access to parameter c : C2 | A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | | A.cs:146:18:146:20 | this : B [field c] : C | A.cs:146:33:146:36 | this access : B [field c] : C | +| A.cs:146:18:146:20 | this : B [field c] : C | A.cs:146:33:146:36 | this access : B [field c] : C | +| A.cs:146:18:146:20 | this : B [field c] : C1 | A.cs:146:33:146:36 | this access : B [field c] : C1 | | A.cs:146:18:146:20 | this : B [field c] : C1 | A.cs:146:33:146:36 | this access : B [field c] : C1 | | A.cs:146:33:146:36 | this access : B [field c] : C | A.cs:146:33:146:38 | access to field c : C | +| A.cs:146:33:146:36 | this access : B [field c] : C | A.cs:146:33:146:38 | access to field c : C | +| A.cs:146:33:146:36 | this access : B [field c] : C1 | A.cs:146:33:146:38 | access to field c : C1 | | A.cs:146:33:146:36 | this access : B [field c] : C1 | A.cs:146:33:146:38 | access to field c : C1 | | A.cs:147:32:147:32 | c : C | A.cs:149:26:149:26 | access to parameter c : C | +| A.cs:147:32:147:32 | c : C | A.cs:149:26:149:26 | access to parameter c : C | +| A.cs:149:26:149:26 | access to parameter c : C | A.cs:141:20:141:20 | c : C | | A.cs:149:26:149:26 | access to parameter c : C | A.cs:141:20:141:20 | c : C | | A.cs:149:26:149:26 | access to parameter c : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | +| A.cs:149:26:149:26 | access to parameter c : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | +| A.cs:157:25:157:28 | head : B | A.cs:159:25:159:28 | access to parameter head : B | | A.cs:157:25:157:28 | head : B | A.cs:159:25:159:28 | access to parameter head : B | | A.cs:157:38:157:41 | next : MyList [field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | +| A.cs:157:38:157:41 | next : MyList [field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | +| A.cs:157:38:157:41 | next : MyList [field next, field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | | A.cs:159:25:159:28 | access to parameter head : B | A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | +| A.cs:159:25:159:28 | access to parameter head : B | A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | +| A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | | A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | | A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | +| A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | +| B.cs:5:17:5:31 | call to method Source : Elem | B.cs:6:27:6:27 | access to local variable e : Elem | | B.cs:5:17:5:31 | call to method Source : Elem | B.cs:6:27:6:27 | access to local variable e : Elem | | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | +| B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | +| B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | | B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | | B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:29:26:29:27 | e1 : Elem | +| B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:29:26:29:27 | e1 : Elem | +| B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | | B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | +| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | +| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | | B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | | B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | +| B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | +| B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | B.cs:8:14:8:26 | access to field elem1 | | B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | B.cs:8:14:8:26 | access to field elem1 | | B.cs:14:17:14:31 | call to method Source : Elem | B.cs:15:33:15:33 | access to local variable e : Elem | +| B.cs:14:17:14:31 | call to method Source : Elem | B.cs:15:33:15:33 | access to local variable e : Elem | +| B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | | B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | +| B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | +| B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:29:35:29:36 | e2 : Elem | | B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:29:35:29:36 | e2 : Elem | | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | +| B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | +| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | | B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | | B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | +| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | +| B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | | B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | | B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | B.cs:18:14:18:26 | access to field elem2 | +| B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | B.cs:18:14:18:26 | access to field elem2 | +| B.cs:29:26:29:27 | e1 : Elem | B.cs:31:26:31:27 | access to parameter e1 : Elem | | B.cs:29:26:29:27 | e1 : Elem | B.cs:31:26:31:27 | access to parameter e1 : Elem | | B.cs:29:35:29:36 | e2 : Elem | B.cs:32:26:32:27 | access to parameter e2 : Elem | +| B.cs:29:35:29:36 | e2 : Elem | B.cs:32:26:32:27 | access to parameter e2 : Elem | +| B.cs:31:26:31:27 | access to parameter e1 : Elem | B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | | B.cs:31:26:31:27 | access to parameter e1 : Elem | B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | | B.cs:32:26:32:27 | access to parameter e2 : Elem | B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | +| B.cs:32:26:32:27 | access to parameter e2 : Elem | B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | +| B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | +| B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | +| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | +| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | +| C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | | C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | | C.cs:3:23:3:37 | call to method Source : Elem | C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | +| C.cs:3:23:3:37 | call to method Source : Elem | C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | +| C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | | C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | | C.cs:4:32:4:46 | call to method Source : Elem | C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | +| C.cs:4:32:4:46 | call to method Source : Elem | C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | +| C.cs:6:30:6:44 | call to method Source : Elem | C.cs:26:14:26:15 | access to field s4 | | C.cs:6:30:6:44 | call to method Source : Elem | C.cs:26:14:26:15 | access to field s4 | | C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | +| C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | +| C.cs:7:37:7:51 | call to method Source : Elem | C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | | C.cs:7:37:7:51 | call to method Source : Elem | C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | | C.cs:8:30:8:44 | call to method Source : Elem | C.cs:28:14:28:15 | access to property s6 | +| C.cs:8:30:8:44 | call to method Source : Elem | C.cs:28:14:28:15 | access to property s6 | +| C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | | C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | | C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | +| C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | +| C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | | C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | | C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | +| C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | +| C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | C.cs:21:17:21:18 | this : C [field s1] : Elem | | C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | C.cs:21:17:21:18 | this : C [field s1] : Elem | | C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | C.cs:21:17:21:18 | this : C [field s2] : Elem | +| C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | C.cs:21:17:21:18 | this : C [field s2] : Elem | +| C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | C.cs:21:17:21:18 | this : C [field s3] : Elem | | C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | C.cs:21:17:21:18 | this : C [field s3] : Elem | | C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | C.cs:21:17:21:18 | this : C [property s5] : Elem | +| C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | C.cs:21:17:21:18 | this : C [property s5] : Elem | +| C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | | C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | | C.cs:18:19:18:33 | call to method Source : Elem | C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | +| C.cs:18:19:18:33 | call to method Source : Elem | C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | +| C.cs:21:17:21:18 | this : C [field s1] : Elem | C.cs:23:14:23:15 | this access : C [field s1] : Elem | | C.cs:21:17:21:18 | this : C [field s1] : Elem | C.cs:23:14:23:15 | this access : C [field s1] : Elem | | C.cs:21:17:21:18 | this : C [field s2] : Elem | C.cs:24:14:24:15 | this access : C [field s2] : Elem | +| C.cs:21:17:21:18 | this : C [field s2] : Elem | C.cs:24:14:24:15 | this access : C [field s2] : Elem | +| C.cs:21:17:21:18 | this : C [field s3] : Elem | C.cs:25:14:25:15 | this access : C [field s3] : Elem | | C.cs:21:17:21:18 | this : C [field s3] : Elem | C.cs:25:14:25:15 | this access : C [field s3] : Elem | | C.cs:21:17:21:18 | this : C [property s5] : Elem | C.cs:27:14:27:15 | this access : C [property s5] : Elem | +| C.cs:21:17:21:18 | this : C [property s5] : Elem | C.cs:27:14:27:15 | this access : C [property s5] : Elem | +| C.cs:23:14:23:15 | this access : C [field s1] : Elem | C.cs:23:14:23:15 | access to field s1 | | C.cs:23:14:23:15 | this access : C [field s1] : Elem | C.cs:23:14:23:15 | access to field s1 | | C.cs:24:14:24:15 | this access : C [field s2] : Elem | C.cs:24:14:24:15 | access to field s2 | +| C.cs:24:14:24:15 | this access : C [field s2] : Elem | C.cs:24:14:24:15 | access to field s2 | +| C.cs:25:14:25:15 | this access : C [field s3] : Elem | C.cs:25:14:25:15 | access to field s3 | | C.cs:25:14:25:15 | this access : C [field s3] : Elem | C.cs:25:14:25:15 | access to field s3 | | C.cs:27:14:27:15 | this access : C [property s5] : Elem | C.cs:27:14:27:15 | access to property s5 | +| C.cs:27:14:27:15 | this access : C [property s5] : Elem | C.cs:27:14:27:15 | access to property s5 | +| C_ctor.cs:3:18:3:19 | [post] this access : C_no_ctor [field s1] : Elem | C_ctor.cs:7:23:7:37 | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | | C_ctor.cs:3:18:3:19 | [post] this access : C_no_ctor [field s1] : Elem | C_ctor.cs:7:23:7:37 | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | | C_ctor.cs:3:23:3:42 | call to method Source : Elem | C_ctor.cs:3:18:3:19 | [post] this access : C_no_ctor [field s1] : Elem | +| C_ctor.cs:3:23:3:42 | call to method Source : Elem | C_ctor.cs:3:18:3:19 | [post] this access : C_no_ctor [field s1] : Elem | +| C_ctor.cs:7:23:7:37 | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | C_ctor.cs:8:9:8:9 | access to local variable c : C_no_ctor [field s1] : Elem | | C_ctor.cs:7:23:7:37 | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | C_ctor.cs:8:9:8:9 | access to local variable c : C_no_ctor [field s1] : Elem | | C_ctor.cs:8:9:8:9 | access to local variable c : C_no_ctor [field s1] : Elem | C_ctor.cs:11:17:11:18 | this : C_no_ctor [field s1] : Elem | +| C_ctor.cs:8:9:8:9 | access to local variable c : C_no_ctor [field s1] : Elem | C_ctor.cs:11:17:11:18 | this : C_no_ctor [field s1] : Elem | +| C_ctor.cs:11:17:11:18 | this : C_no_ctor [field s1] : Elem | C_ctor.cs:13:19:13:20 | this access : C_no_ctor [field s1] : Elem | | C_ctor.cs:11:17:11:18 | this : C_no_ctor [field s1] : Elem | C_ctor.cs:13:19:13:20 | this access : C_no_ctor [field s1] : Elem | | C_ctor.cs:13:19:13:20 | this access : C_no_ctor [field s1] : Elem | C_ctor.cs:13:19:13:20 | access to field s1 | +| C_ctor.cs:13:19:13:20 | this access : C_no_ctor [field s1] : Elem | C_ctor.cs:13:19:13:20 | access to field s1 | +| C_ctor.cs:19:18:19:19 | [post] this access : C_with_ctor [field s1] : Elem | C_ctor.cs:23:25:23:41 | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | | C_ctor.cs:19:18:19:19 | [post] this access : C_with_ctor [field s1] : Elem | C_ctor.cs:23:25:23:41 | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | | C_ctor.cs:19:23:19:42 | call to method Source : Elem | C_ctor.cs:19:18:19:19 | [post] this access : C_with_ctor [field s1] : Elem | +| C_ctor.cs:19:23:19:42 | call to method Source : Elem | C_ctor.cs:19:18:19:19 | [post] this access : C_with_ctor [field s1] : Elem | +| C_ctor.cs:23:25:23:41 | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | C_ctor.cs:24:9:24:9 | access to local variable c : C_with_ctor [field s1] : Elem | | C_ctor.cs:23:25:23:41 | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | C_ctor.cs:24:9:24:9 | access to local variable c : C_with_ctor [field s1] : Elem | | C_ctor.cs:24:9:24:9 | access to local variable c : C_with_ctor [field s1] : Elem | C_ctor.cs:29:17:29:18 | this : C_with_ctor [field s1] : Elem | +| C_ctor.cs:24:9:24:9 | access to local variable c : C_with_ctor [field s1] : Elem | C_ctor.cs:29:17:29:18 | this : C_with_ctor [field s1] : Elem | +| C_ctor.cs:29:17:29:18 | this : C_with_ctor [field s1] : Elem | C_ctor.cs:31:19:31:20 | this access : C_with_ctor [field s1] : Elem | | C_ctor.cs:29:17:29:18 | this : C_with_ctor [field s1] : Elem | C_ctor.cs:31:19:31:20 | this access : C_with_ctor [field s1] : Elem | | C_ctor.cs:31:19:31:20 | this access : C_with_ctor [field s1] : Elem | C_ctor.cs:31:19:31:20 | access to field s1 | +| C_ctor.cs:31:19:31:20 | this access : C_with_ctor [field s1] : Elem | C_ctor.cs:31:19:31:20 | access to field s1 | +| D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | | D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | D.cs:8:22:8:42 | access to field trivialPropField : Object | +| D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | D.cs:8:22:8:42 | access to field trivialPropField : Object | +| D.cs:9:9:9:11 | value : Object | D.cs:9:39:9:43 | access to parameter value : Object | | D.cs:9:9:9:11 | value : Object | D.cs:9:39:9:43 | access to parameter value : Object | | D.cs:9:39:9:43 | access to parameter value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | +| D.cs:9:39:9:43 | access to parameter value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | +| D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | | D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | D.cs:14:22:14:42 | access to field trivialPropField : Object | +| D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | D.cs:14:22:14:42 | access to field trivialPropField : Object | +| D.cs:15:9:15:11 | value : Object | D.cs:15:34:15:38 | access to parameter value : Object | | D.cs:15:9:15:11 | value : Object | D.cs:15:34:15:38 | access to parameter value : Object | | D.cs:15:34:15:38 | access to parameter value : Object | D.cs:9:9:9:11 | value : Object | +| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:9:9:9:11 | value : Object | +| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | | D.cs:15:34:15:38 | access to parameter value : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | | D.cs:18:28:18:29 | o1 : Object | D.cs:21:24:21:25 | access to parameter o1 : Object | +| D.cs:18:28:18:29 | o1 : Object | D.cs:21:24:21:25 | access to parameter o1 : Object | +| D.cs:18:39:18:40 | o2 : Object | D.cs:22:27:22:28 | access to parameter o2 : Object | | D.cs:18:39:18:40 | o2 : Object | D.cs:22:27:22:28 | access to parameter o2 : Object | | D.cs:18:50:18:51 | o3 : Object | D.cs:23:27:23:28 | access to parameter o3 : Object | +| D.cs:18:50:18:51 | o3 : Object | D.cs:23:27:23:28 | access to parameter o3 : Object | +| D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | D.cs:24:16:24:18 | access to local variable ret : D [property AutoProp] : Object | | D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | D.cs:24:16:24:18 | access to local variable ret : D [property AutoProp] : Object | | D.cs:21:24:21:25 | access to parameter o1 : Object | D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | +| D.cs:21:24:21:25 | access to parameter o1 : Object | D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | +| D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | | D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:9:9:9:11 | value : Object | +| D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:9:9:9:11 | value : Object | +| D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | | D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | +| D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | +| D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:15:9:15:11 | value : Object | | D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:15:9:15:11 | value : Object | | D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | +| D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | +| D.cs:29:17:29:33 | call to method Source : Object | D.cs:31:24:31:24 | access to local variable o : Object | | D.cs:29:17:29:33 | call to method Source : Object | D.cs:31:24:31:24 | access to local variable o : Object | | D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | +| D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | +| D.cs:31:24:31:24 | access to local variable o : Object | D.cs:18:28:18:29 | o1 : Object | | D.cs:31:24:31:24 | access to local variable o : Object | D.cs:18:28:18:29 | o1 : Object | | D.cs:31:24:31:24 | access to local variable o : Object | D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | +| D.cs:31:24:31:24 | access to local variable o : Object | D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | +| D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | D.cs:32:14:32:23 | access to property AutoProp | | D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | D.cs:32:14:32:23 | access to property AutoProp | | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | +| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | +| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | +| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | +| D.cs:37:26:37:42 | call to method Source : Object | D.cs:18:39:18:40 | o2 : Object | | D.cs:37:26:37:42 | call to method Source : Object | D.cs:18:39:18:40 | o2 : Object | | D.cs:37:26:37:42 | call to method Source : Object | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | +| D.cs:37:26:37:42 | call to method Source : Object | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | +| D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | | D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | | D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:39:14:39:26 | access to property TrivialProp | +| D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:39:14:39:26 | access to property TrivialProp | +| D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:40:14:40:31 | access to field trivialPropField | | D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:40:14:40:31 | access to field trivialPropField | | D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | +| D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | +| D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:41:14:41:26 | access to property ComplexProp | | D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:41:14:41:26 | access to property ComplexProp | | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | +| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | +| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | +| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | +| D.cs:43:32:43:48 | call to method Source : Object | D.cs:18:50:18:51 | o3 : Object | | D.cs:43:32:43:48 | call to method Source : Object | D.cs:18:50:18:51 | o3 : Object | | D.cs:43:32:43:48 | call to method Source : Object | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | +| D.cs:43:32:43:48 | call to method Source : Object | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | +| D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | | D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | | D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:45:14:45:26 | access to property TrivialProp | +| D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:45:14:45:26 | access to property TrivialProp | +| D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:46:14:46:31 | access to field trivialPropField | | D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:46:14:46:31 | access to field trivialPropField | | D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | +| D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | +| D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:47:14:47:26 | access to property ComplexProp | | D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:47:14:47:26 | access to property ComplexProp | | E.cs:8:29:8:29 | o : Object | E.cs:11:21:11:21 | access to parameter o : Object | +| E.cs:8:29:8:29 | o : Object | E.cs:11:21:11:21 | access to parameter o : Object | +| E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | E.cs:12:16:12:18 | access to local variable ret : S [field Field] : Object | | E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | E.cs:12:16:12:18 | access to local variable ret : S [field Field] : Object | | E.cs:11:21:11:21 | access to parameter o : Object | E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | +| E.cs:11:21:11:21 | access to parameter o : Object | E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | +| E.cs:22:17:22:33 | call to method Source : Object | E.cs:23:25:23:25 | access to local variable o : Object | | E.cs:22:17:22:33 | call to method Source : Object | E.cs:23:25:23:25 | access to local variable o : Object | | E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | +| E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | +| E.cs:23:25:23:25 | access to local variable o : Object | E.cs:8:29:8:29 | o : Object | | E.cs:23:25:23:25 | access to local variable o : Object | E.cs:8:29:8:29 | o : Object | | E.cs:23:25:23:25 | access to local variable o : Object | E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | +| E.cs:23:25:23:25 | access to local variable o : Object | E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | +| E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | E.cs:24:14:24:20 | access to field Field | | E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | E.cs:24:14:24:20 | access to field Field | | F.cs:6:28:6:29 | o1 : Object | F.cs:6:65:6:66 | access to parameter o1 : Object | +| F.cs:6:28:6:29 | o1 : Object | F.cs:6:65:6:66 | access to parameter o1 : Object | +| F.cs:6:39:6:40 | o2 : Object | F.cs:6:78:6:79 | access to parameter o2 : Object | | F.cs:6:39:6:40 | o2 : Object | F.cs:6:78:6:79 | access to parameter o2 : Object | | F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field1] : Object | +| F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field1] : Object | +| F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field2] : Object | | F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field2] : Object | | F.cs:6:65:6:66 | access to parameter o1 : Object | F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | +| F.cs:6:65:6:66 | access to parameter o1 : Object | F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | +| F.cs:6:78:6:79 | access to parameter o2 : Object | F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | | F.cs:6:78:6:79 | access to parameter o2 : Object | F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | | F.cs:10:17:10:33 | call to method Source : Object | F.cs:11:24:11:24 | access to local variable o : Object | +| F.cs:10:17:10:33 | call to method Source : Object | F.cs:11:24:11:24 | access to local variable o : Object | +| F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | | F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | | F.cs:11:24:11:24 | access to local variable o : Object | F.cs:6:28:6:29 | o1 : Object | +| F.cs:11:24:11:24 | access to local variable o : Object | F.cs:6:28:6:29 | o1 : Object | +| F.cs:11:24:11:24 | access to local variable o : Object | F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | | F.cs:11:24:11:24 | access to local variable o : Object | F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | | F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | F.cs:12:14:12:21 | access to field Field1 | +| F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | F.cs:12:14:12:21 | access to field Field1 | +| F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | | F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | | F.cs:15:26:15:42 | call to method Source : Object | F.cs:6:39:6:40 | o2 : Object | +| F.cs:15:26:15:42 | call to method Source : Object | F.cs:6:39:6:40 | o2 : Object | +| F.cs:15:26:15:42 | call to method Source : Object | F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | | F.cs:15:26:15:42 | call to method Source : Object | F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | | F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | F.cs:17:14:17:21 | access to field Field2 | +| F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | F.cs:17:14:17:21 | access to field Field2 | +| F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | | F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | | F.cs:19:32:19:48 | call to method Source : Object | F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | +| F.cs:19:32:19:48 | call to method Source : Object | F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | +| F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | F.cs:20:14:20:21 | access to field Field1 | | F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | F.cs:20:14:20:21 | access to field Field1 | | F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | +| F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | +| F.cs:23:32:23:48 | call to method Source : Object | F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | | F.cs:23:32:23:48 | call to method Source : Object | F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | | F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | F.cs:25:14:25:21 | access to field Field2 | +| F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | F.cs:25:14:25:21 | access to field Field2 | +| F.cs:30:17:30:33 | call to method Source : Object | F.cs:32:27:32:27 | access to local variable o : Object | | F.cs:30:17:30:33 | call to method Source : Object | F.cs:32:27:32:27 | access to local variable o : Object | | F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | +| F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | +| F.cs:32:27:32:27 | access to local variable o : Object | F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | | F.cs:32:27:32:27 | access to local variable o : Object | F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | | F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | F.cs:33:14:33:16 | access to property X | +| F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | F.cs:33:14:33:16 | access to property X | +| G.cs:7:18:7:32 | call to method Source : Elem | G.cs:9:23:9:23 | access to local variable e : Elem | | G.cs:7:18:7:32 | call to method Source : Elem | G.cs:9:23:9:23 | access to local variable e : Elem | | G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:9:23:9:23 | access to local variable e : Elem | G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:9:23:9:23 | access to local variable e : Elem | G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | | G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | | G.cs:15:18:15:32 | call to method Source : Elem | G.cs:17:24:17:24 | access to local variable e : Elem | +| G.cs:15:18:15:32 | call to method Source : Elem | G.cs:17:24:17:24 | access to local variable e : Elem | +| G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | | G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | | G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | +| G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | +| G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | | G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | | G.cs:23:18:23:32 | call to method Source : Elem | G.cs:25:28:25:28 | access to local variable e : Elem | +| G.cs:23:18:23:32 | call to method Source : Elem | G.cs:25:28:25:28 | access to local variable e : Elem | +| G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:25:28:25:28 | access to local variable e : Elem | G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | | G.cs:25:28:25:28 | access to local variable e : Elem | G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | | G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | +| G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | +| G.cs:31:18:31:32 | call to method Source : Elem | G.cs:33:29:33:29 | access to local variable e : Elem | | G.cs:31:18:31:32 | call to method Source : Elem | G.cs:33:29:33:29 | access to local variable e : Elem | | G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | | G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | | G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | +| G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | +| G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | | G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | | G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:39:14:39:35 | call to method GetElem | +| G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:39:14:39:35 | call to method GetElem | +| G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | | G.cs:44:18:44:32 | call to method Source : Elem | G.cs:46:30:46:30 | access to local variable e : Elem | +| G.cs:44:18:44:32 | call to method Source : Elem | G.cs:46:30:46:30 | access to local variable e : Elem | +| G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | | G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | | G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | | G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | | G.cs:46:30:46:30 | access to local variable e : Elem | G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:46:30:46:30 | access to local variable e : Elem | G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | | G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | | G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | | G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | | G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | +| G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | +| G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | G.cs:52:14:52:31 | access to field Elem | | G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | G.cs:52:14:52:31 | access to field Elem | | G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | +| G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | +| G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | access to field Elem : Elem | | G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | access to field Elem : Elem | | G.cs:64:34:64:34 | e : Elem | G.cs:64:46:64:46 | access to parameter e : Elem | +| G.cs:64:34:64:34 | e : Elem | G.cs:64:46:64:46 | access to parameter e : Elem | +| G.cs:64:46:64:46 | access to parameter e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | | G.cs:64:46:64:46 | access to parameter e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | | G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | +| G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | +| G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | access to field Box1 : Box1 [field Elem] : Elem | | G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | access to field Box1 : Box1 [field Elem] : Elem | | H.cs:13:15:13:15 | a : A [field FieldA] : Object | H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | +| H.cs:13:15:13:15 | a : A [field FieldA] : Object | H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | +| H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | H.cs:17:16:17:18 | access to local variable ret : A [field FieldA] : Object | | H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | H.cs:17:16:17:18 | access to local variable ret : A [field FieldA] : Object | | H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | H.cs:16:22:16:29 | access to field FieldA : Object | +| H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | H.cs:16:22:16:29 | access to field FieldA : Object | +| H.cs:16:22:16:29 | access to field FieldA : Object | H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | | H.cs:16:22:16:29 | access to field FieldA : Object | H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | | H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | +| H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | +| H.cs:23:20:23:36 | call to method Source : Object | H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | | H.cs:23:20:23:36 | call to method Source : Object | H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | | H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | +| H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | +| H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:13:15:13:15 | a : A [field FieldA] : Object | | H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:13:15:13:15 | a : A [field FieldA] : Object | | H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | +| H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | +| H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | H.cs:25:14:25:25 | access to field FieldA | | H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | H.cs:25:14:25:25 | access to field FieldA | | H.cs:33:19:33:19 | a : A [field FieldA] : A | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | +| H.cs:33:19:33:19 | a : A [field FieldA] : A | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | +| H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | | H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : A | +| H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : A | +| H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | H.cs:36:20:36:27 | access to field FieldA : A | +| H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | H.cs:36:20:36:27 | access to field FieldA : A | +| H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | H.cs:36:20:36:27 | access to field FieldA : Object | | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | H.cs:36:20:36:27 | access to field FieldA : Object | | H.cs:36:20:36:27 | access to field FieldA : A | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | +| H.cs:36:20:36:27 | access to field FieldA : A | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | +| H.cs:36:20:36:27 | access to field FieldA : Object | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | | H.cs:36:20:36:27 | access to field FieldA : Object | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | | H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | +| H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | +| H.cs:43:20:43:36 | call to method Source : Object | H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | | H.cs:43:20:43:36 | call to method Source : Object | H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | | H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | +| H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | +| H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | | H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | | H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | +| H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | +| H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | H.cs:45:14:45:21 | access to field FieldB | | H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | H.cs:45:14:45:21 | access to field FieldB | | H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | +| H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | +| H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | H.cs:55:21:55:28 | access to field FieldA : Object | | H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | H.cs:55:21:55:28 | access to field FieldA : Object | | H.cs:55:21:55:28 | access to field FieldA : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | +| H.cs:55:21:55:28 | access to field FieldA : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | +| H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | | H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | | H.cs:63:20:63:36 | call to method Source : Object | H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:63:20:63:36 | call to method Source : Object | H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | | H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | | H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | +| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | +| H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | | H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | H.cs:65:14:65:22 | access to field FieldB | +| H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | H.cs:65:14:65:22 | access to field FieldB | +| H.cs:77:30:77:30 | o : Object | H.cs:79:20:79:20 | access to parameter o : Object | | H.cs:77:30:77:30 | o : Object | H.cs:79:20:79:20 | access to parameter o : Object | | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | +| H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | +| H.cs:79:20:79:20 | access to parameter o : Object | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | | H.cs:79:20:79:20 | access to parameter o : Object | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | | H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | +| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | +| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | | H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | +| H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | +| H.cs:88:20:88:36 | call to method Source : Object | H.cs:77:30:77:30 | o : Object | | H.cs:88:20:88:36 | call to method Source : Object | H.cs:77:30:77:30 | o : Object | | H.cs:88:20:88:36 | call to method Source : Object | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:88:20:88:36 | call to method Source : Object | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:88:20:88:36 | call to method Source : Object | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | | H.cs:88:20:88:36 | call to method Source : Object | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | +| H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | +| H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | H.cs:89:14:89:21 | access to field FieldA | | H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | H.cs:89:14:89:21 | access to field FieldA | | H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | H.cs:90:14:90:22 | access to field FieldB | +| H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | H.cs:90:14:90:22 | access to field FieldB | +| H.cs:102:23:102:23 | a : A [field FieldA] : Object | H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | | H.cs:102:23:102:23 | a : A [field FieldA] : Object | H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | | H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | +| H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | +| H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | | H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | | H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | +| H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | +| H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | | H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | | H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | +| H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | +| H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | | H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | | H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | +| H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | +| H.cs:112:20:112:36 | call to method Source : Object | H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | | H.cs:112:20:112:36 | call to method Source : Object | H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | | H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | +| H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | +| H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:102:23:102:23 | a : A [field FieldA] : Object | | H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:102:23:102:23 | a : A [field FieldA] : Object | | H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | +| H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | +| H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | H.cs:114:14:114:21 | access to field FieldB | | H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | H.cs:114:14:114:21 | access to field FieldB | | H.cs:122:18:122:18 | a : A [field FieldA] : Object | H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | +| H.cs:122:18:122:18 | a : A [field FieldA] : Object | H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | +| H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | H.cs:124:16:124:34 | access to field FieldB : Object | | H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | H.cs:124:16:124:34 | access to field FieldB : Object | | H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | +| H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | +| H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | | H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | | H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | +| H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | +| H.cs:130:20:130:36 | call to method Source : Object | H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | | H.cs:130:20:130:36 | call to method Source : Object | H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | | H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:122:18:122:18 | a : A [field FieldA] : Object | +| H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:122:18:122:18 | a : A [field FieldA] : Object | +| H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:131:14:131:19 | call to method Get | | H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:131:14:131:19 | call to method Get | | H.cs:138:27:138:27 | o : A | H.cs:141:20:141:25 | ... as ... : A | +| H.cs:138:27:138:27 | o : A | H.cs:141:20:141:25 | ... as ... : A | +| H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | | H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | | H.cs:141:20:141:25 | ... as ... : A | H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | +| H.cs:141:20:141:25 | ... as ... : A | H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | +| H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | H.cs:142:16:142:34 | access to field FieldB : A | | H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | H.cs:142:16:142:34 | access to field FieldB : A | | H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:33:19:33:19 | a : A [field FieldA] : A | +| H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:33:19:33:19 | a : A [field FieldA] : A | +| H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | | H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | | H.cs:147:17:147:39 | call to method Through : A | H.cs:148:14:148:14 | access to local variable a | +| H.cs:147:17:147:39 | call to method Through : A | H.cs:148:14:148:14 | access to local variable a | +| H.cs:147:25:147:38 | call to method Source : A | H.cs:138:27:138:27 | o : A | | H.cs:147:25:147:38 | call to method Source : A | H.cs:138:27:138:27 | o : A | | H.cs:147:25:147:38 | call to method Source : A | H.cs:147:17:147:39 | call to method Through : A | +| H.cs:147:25:147:38 | call to method Source : A | H.cs:147:17:147:39 | call to method Through : A | +| H.cs:153:32:153:32 | o : Object | H.cs:156:20:156:20 | access to parameter o : Object | | H.cs:153:32:153:32 | o : Object | H.cs:156:20:156:20 | access to parameter o : Object | | H.cs:155:17:155:30 | call to method Source : B | H.cs:156:9:156:9 | access to local variable b : B | +| H.cs:155:17:155:30 | call to method Source : B | H.cs:156:9:156:9 | access to local variable b : B | +| H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | | H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | | H.cs:156:9:156:9 | access to local variable b : B | H.cs:157:20:157:20 | access to local variable b : B | +| H.cs:156:9:156:9 | access to local variable b : B | H.cs:157:20:157:20 | access to local variable b : B | +| H.cs:156:20:156:20 | access to parameter o : Object | H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | | H.cs:156:20:156:20 | access to parameter o : Object | H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | +| H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | +| H.cs:157:20:157:20 | access to local variable b : B | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | | H.cs:157:20:157:20 | access to local variable b : B | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | | H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | +| H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | +| H.cs:163:17:163:35 | call to method Source : Object | H.cs:164:22:164:22 | access to local variable o : Object | | H.cs:163:17:163:35 | call to method Source : Object | H.cs:164:22:164:22 | access to local variable o : Object | | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | +| H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | +| H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | | H.cs:164:22:164:22 | access to local variable o : Object | H.cs:153:32:153:32 | o : Object | +| H.cs:164:22:164:22 | access to local variable o : Object | H.cs:153:32:153:32 | o : Object | +| H.cs:164:22:164:22 | access to local variable o : Object | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | | H.cs:164:22:164:22 | access to local variable o : Object | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | | H.cs:165:17:165:27 | (...) ... : B | H.cs:166:14:166:14 | access to local variable b | +| H.cs:165:17:165:27 | (...) ... : B | H.cs:166:14:166:14 | access to local variable b | +| H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | | H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | | H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | +| H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | +| H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | H.cs:165:20:165:27 | access to field FieldA : B | | H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | H.cs:165:20:165:27 | access to field FieldA : B | | H.cs:165:20:165:27 | access to field FieldA : B | H.cs:165:17:165:27 | (...) ... : B | +| H.cs:165:20:165:27 | access to field FieldA : B | H.cs:165:17:165:27 | (...) ... : B | +| H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | | H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | | H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | H.cs:167:14:167:21 | access to field FieldB | +| H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | H.cs:167:14:167:21 | access to field FieldB | +| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | | I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | | I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | +| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | +| I.cs:7:18:7:34 | call to method Source : Object | I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | | I.cs:7:18:7:34 | call to method Source : Object | I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | | I.cs:13:17:13:33 | call to method Source : Object | I.cs:15:20:15:20 | access to local variable o : Object | +| I.cs:13:17:13:33 | call to method Source : Object | I.cs:15:20:15:20 | access to local variable o : Object | +| I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | | I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | | I.cs:15:20:15:20 | access to local variable o : Object | I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | +| I.cs:15:20:15:20 | access to local variable o : Object | I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | +| I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | | I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | | I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | +| I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | +| I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | I.cs:18:14:18:21 | access to field Field1 | | I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | I.cs:18:14:18:21 | access to field Field1 | | I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | +| I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | +| I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | | I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | | I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | I.cs:23:14:23:21 | access to field Field1 | +| I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | I.cs:23:14:23:21 | access to field Field1 | +| I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | | I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | | I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | I.cs:27:14:27:21 | access to field Field1 | +| I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | I.cs:27:14:27:21 | access to field Field1 | +| I.cs:31:13:31:29 | call to method Source : Object | I.cs:32:20:32:20 | access to local variable o : Object | | I.cs:31:13:31:29 | call to method Source : Object | I.cs:32:20:32:20 | access to local variable o : Object | | I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | +| I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | +| I.cs:32:20:32:20 | access to local variable o : Object | I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | | I.cs:32:20:32:20 | access to local variable o : Object | I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | | I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | +| I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | +| I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | I.cs:37:23:37:23 | i : I [field Field1] : Object | | I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | I.cs:37:23:37:23 | i : I [field Field1] : Object | | I.cs:37:23:37:23 | i : I [field Field1] : Object | I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | +| I.cs:37:23:37:23 | i : I [field Field1] : Object | I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | +| I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | | I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | | I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:21 | access to field Field1 | +| I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:21 | access to field Field1 | +| J.cs:14:26:14:30 | field : Object | J.cs:14:66:14:70 | access to parameter field : Object | | J.cs:14:26:14:30 | field : Object | J.cs:14:66:14:70 | access to parameter field : Object | | J.cs:14:40:14:43 | prop : Object | J.cs:14:73:14:76 | access to parameter prop : Object | +| J.cs:14:40:14:43 | prop : Object | J.cs:14:73:14:76 | access to parameter prop : Object | +| J.cs:14:66:14:70 | access to parameter field : Object | J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | | J.cs:14:66:14:70 | access to parameter field : Object | J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | | J.cs:14:73:14:76 | access to parameter prop : Object | J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | +| J.cs:14:73:14:76 | access to parameter prop : Object | J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | +| J.cs:21:17:21:33 | call to method Source : Object | J.cs:22:34:22:34 | access to local variable o : Object | | J.cs:21:17:21:33 | call to method Source : Object | J.cs:22:34:22:34 | access to local variable o : Object | | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | +| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | +| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | +| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | +| J.cs:22:34:22:34 | access to local variable o : Object | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | | J.cs:22:34:22:34 | access to local variable o : Object | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | | J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | J.cs:23:14:23:21 | access to property Prop1 | +| J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | J.cs:23:14:23:21 | access to property Prop1 | +| J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | J.cs:27:14:27:21 | access to property Prop1 | | J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | J.cs:27:14:27:21 | access to property Prop1 | | J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | +| J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | +| J.cs:30:36:30:52 | call to method Source : Object | J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | | J.cs:30:36:30:52 | call to method Source : Object | J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | | J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | J.cs:31:14:31:21 | access to property Prop1 | +| J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | J.cs:31:14:31:21 | access to property Prop1 | +| J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | J.cs:32:14:32:21 | access to property Prop2 | | J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | J.cs:32:14:32:21 | access to property Prop2 | | J.cs:41:17:41:33 | call to method Source : Object | J.cs:42:35:42:35 | access to local variable o : Object | +| J.cs:41:17:41:33 | call to method Source : Object | J.cs:42:35:42:35 | access to local variable o : Object | +| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | +| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | +| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | | J.cs:42:35:42:35 | access to local variable o : Object | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | +| J.cs:42:35:42:35 | access to local variable o : Object | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | +| J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | J.cs:43:14:43:21 | access to property Prop1 | | J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | J.cs:43:14:43:21 | access to property Prop1 | | J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | J.cs:47:14:47:21 | access to property Prop1 | +| J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | J.cs:47:14:47:21 | access to property Prop1 | +| J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | | J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | | J.cs:50:36:50:52 | call to method Source : Object | J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | +| J.cs:50:36:50:52 | call to method Source : Object | J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | +| J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | J.cs:51:14:51:21 | access to property Prop1 | | J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | J.cs:51:14:51:21 | access to property Prop1 | | J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | J.cs:52:14:52:21 | access to property Prop2 | +| J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | J.cs:52:14:52:21 | access to property Prop2 | +| J.cs:61:17:61:33 | call to method Source : Object | J.cs:62:29:62:29 | access to local variable o : Object | | J.cs:61:17:61:33 | call to method Source : Object | J.cs:62:29:62:29 | access to local variable o : Object | | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | +| J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | +| J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | | J.cs:62:29:62:29 | access to local variable o : Object | J.cs:14:26:14:30 | field : Object | +| J.cs:62:29:62:29 | access to local variable o : Object | J.cs:14:26:14:30 | field : Object | +| J.cs:62:29:62:29 | access to local variable o : Object | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | | J.cs:62:29:62:29 | access to local variable o : Object | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | | J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | J.cs:65:14:65:21 | access to field Field | +| J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | J.cs:65:14:65:21 | access to field Field | +| J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | | J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | | J.cs:68:35:68:51 | call to method Source : Object | J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | +| J.cs:68:35:68:51 | call to method Source : Object | J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | +| J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | J.cs:69:14:69:21 | access to field Field | | J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | J.cs:69:14:69:21 | access to field Field | | J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | J.cs:70:14:70:20 | access to property Prop | +| J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | J.cs:70:14:70:20 | access to property Prop | +| J.cs:79:17:79:33 | call to method Source : Object | J.cs:80:35:80:35 | access to local variable o : Object | | J.cs:79:17:79:33 | call to method Source : Object | J.cs:80:35:80:35 | access to local variable o : Object | | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | +| J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | +| J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | | J.cs:80:35:80:35 | access to local variable o : Object | J.cs:14:40:14:43 | prop : Object | +| J.cs:80:35:80:35 | access to local variable o : Object | J.cs:14:40:14:43 | prop : Object | +| J.cs:80:35:80:35 | access to local variable o : Object | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | | J.cs:80:35:80:35 | access to local variable o : Object | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | | J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | J.cs:84:14:84:20 | access to property Prop | +| J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | J.cs:84:14:84:20 | access to property Prop | +| J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | | J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | | J.cs:86:36:86:52 | call to method Source : Object | J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | +| J.cs:86:36:86:52 | call to method Source : Object | J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | +| J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | J.cs:87:14:87:21 | access to field Field | | J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | J.cs:87:14:87:21 | access to field Field | | J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | J.cs:88:14:88:20 | access to property Prop | +| J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | J.cs:88:14:88:20 | access to property Prop | +| J.cs:97:17:97:33 | call to method Source : Object | J.cs:99:28:99:28 | access to local variable o : Object | | J.cs:97:17:97:33 | call to method Source : Object | J.cs:99:28:99:28 | access to local variable o : Object | | J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | +| J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | +| J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | | J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | | J.cs:99:28:99:28 | access to local variable o : Object | J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | +| J.cs:99:28:99:28 | access to local variable o : Object | J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | +| J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | J.cs:102:14:102:17 | access to property X | | J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | J.cs:102:14:102:17 | access to property X | | J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | +| J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | +| J.cs:105:32:105:48 | call to method Source : Object | J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | | J.cs:105:32:105:48 | call to method Source : Object | J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | | J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | J.cs:106:14:106:17 | access to property X | +| J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | J.cs:106:14:106:17 | access to property X | +| J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | J.cs:107:14:107:17 | access to property Y | | J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | J.cs:107:14:107:17 | access to property Y | | J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | +| J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | +| J.cs:119:20:119:34 | call to method Source : Int32 | J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | | J.cs:119:20:119:34 | call to method Source : Int32 | J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | | J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | J.cs:125:14:125:17 | access to array element : Int32 | +| J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | J.cs:125:14:125:17 | access to array element : Int32 | +| J.cs:125:14:125:17 | access to array element : Int32 | J.cs:125:14:125:17 | (...) ... | | J.cs:125:14:125:17 | access to array element : Int32 | J.cs:125:14:125:17 | (...) ... | nodes | A.cs:5:17:5:28 | call to method Source : C | semmle.label | call to method Source : C | +| A.cs:5:17:5:28 | call to method Source : C | semmle.label | call to method Source : C | +| A.cs:6:17:6:25 | call to method Make : B [field c] : C | semmle.label | call to method Make : B [field c] : C | | A.cs:6:17:6:25 | call to method Make : B [field c] : C | semmle.label | call to method Make : B [field c] : C | | A.cs:6:24:6:24 | access to local variable c : C | semmle.label | access to local variable c : C | +| A.cs:6:24:6:24 | access to local variable c : C | semmle.label | access to local variable c : C | +| A.cs:7:14:7:14 | access to local variable b : B [field c] : C | semmle.label | access to local variable b : B [field c] : C | | A.cs:7:14:7:14 | access to local variable b : B [field c] : C | semmle.label | access to local variable b : B [field c] : C | | A.cs:7:14:7:16 | access to field c | semmle.label | access to field c | +| A.cs:7:14:7:16 | access to field c | semmle.label | access to field c | +| A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | semmle.label | [post] access to local variable b : B [field c] : C1 | | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | semmle.label | [post] access to local variable b : B [field c] : C1 | | A.cs:13:15:13:29 | call to method Source : C1 | semmle.label | call to method Source : C1 | +| A.cs:13:15:13:29 | call to method Source : C1 | semmle.label | call to method Source : C1 | +| A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | semmle.label | access to local variable b : B [field c] : C1 | | A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | semmle.label | access to local variable b : B [field c] : C1 | | A.cs:14:14:14:20 | call to method Get | semmle.label | call to method Get | +| A.cs:14:14:14:20 | call to method Get | semmle.label | call to method Get | +| A.cs:15:14:15:42 | call to method Get | semmle.label | call to method Get | | A.cs:15:14:15:42 | call to method Get | semmle.label | call to method Get | | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | semmle.label | object creation of type B : B [field c] : C | +| A.cs:15:15:15:35 | object creation of type B : B [field c] : C | semmle.label | object creation of type B : B [field c] : C | +| A.cs:15:21:15:34 | call to method Source : C | semmle.label | call to method Source : C | | A.cs:15:21:15:34 | call to method Source : C | semmle.label | call to method Source : C | | A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | semmle.label | call to method SetOnB : B [field c] : C2 | +| A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | semmle.label | call to method SetOnB : B [field c] : C2 | +| A.cs:22:25:22:37 | call to method Source : C2 | semmle.label | call to method Source : C2 | | A.cs:22:25:22:37 | call to method Source : C2 | semmle.label | call to method Source : C2 | | A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | semmle.label | access to local variable b2 : B [field c] : C2 | +| A.cs:24:14:24:15 | access to local variable b2 : B [field c] : C2 | semmle.label | access to local variable b2 : B [field c] : C2 | +| A.cs:24:14:24:17 | access to field c | semmle.label | access to field c | | A.cs:24:14:24:17 | access to field c | semmle.label | access to field c | | A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | semmle.label | call to method SetOnBWrap : B [field c] : C2 | +| A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | semmle.label | call to method SetOnBWrap : B [field c] : C2 | +| A.cs:31:29:31:41 | call to method Source : C2 | semmle.label | call to method Source : C2 | | A.cs:31:29:31:41 | call to method Source : C2 | semmle.label | call to method Source : C2 | | A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | semmle.label | access to local variable b2 : B [field c] : C2 | +| A.cs:33:14:33:15 | access to local variable b2 : B [field c] : C2 | semmle.label | access to local variable b2 : B [field c] : C2 | +| A.cs:33:14:33:17 | access to field c | semmle.label | access to field c | | A.cs:33:14:33:17 | access to field c | semmle.label | access to field c | | A.cs:36:33:36:33 | c : C2 | semmle.label | c : C2 | +| A.cs:36:33:36:33 | c : C2 | semmle.label | c : C2 | +| A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | semmle.label | call to method SetOnB : B [field c] : C2 | | A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | semmle.label | call to method SetOnB : B [field c] : C2 | | A.cs:38:29:38:29 | access to parameter c : C2 | semmle.label | access to parameter c : C2 | +| A.cs:38:29:38:29 | access to parameter c : C2 | semmle.label | access to parameter c : C2 | +| A.cs:39:16:39:28 | ... ? ... : ... : B [field c] : C2 | semmle.label | ... ? ... : ... : B [field c] : C2 | | A.cs:39:16:39:28 | ... ? ... : ... : B [field c] : C2 | semmle.label | ... ? ... : ... : B [field c] : C2 | | A.cs:42:29:42:29 | c : C2 | semmle.label | c : C2 | +| A.cs:42:29:42:29 | c : C2 | semmle.label | c : C2 | +| A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | semmle.label | [post] access to local variable b2 : B [field c] : C2 | | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | semmle.label | [post] access to local variable b2 : B [field c] : C2 | | A.cs:47:20:47:20 | access to parameter c : C2 | semmle.label | access to parameter c : C2 | +| A.cs:47:20:47:20 | access to parameter c : C2 | semmle.label | access to parameter c : C2 | +| A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | semmle.label | access to local variable b2 : B [field c] : C2 | | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | semmle.label | access to local variable b2 : B [field c] : C2 | | A.cs:55:17:55:28 | call to method Source : A | semmle.label | call to method Source : A | +| A.cs:55:17:55:28 | call to method Source : A | semmle.label | call to method Source : A | +| A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | semmle.label | [post] access to local variable c1 : C1 [field a] : A | | A.cs:57:9:57:10 | [post] access to local variable c1 : C1 [field a] : A | semmle.label | [post] access to local variable c1 : C1 [field a] : A | | A.cs:57:16:57:16 | access to local variable a : A | semmle.label | access to local variable a : A | +| A.cs:57:16:57:16 | access to local variable a : A | semmle.label | access to local variable a : A | +| A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | semmle.label | access to local variable c1 : C1 [field a] : A | | A.cs:58:12:58:13 | access to local variable c1 : C1 [field a] : A | semmle.label | access to local variable c1 : C1 [field a] : A | | A.cs:60:22:60:22 | c : C1 [field a] : A | semmle.label | c : C1 [field a] : A | +| A.cs:60:22:60:22 | c : C1 [field a] : A | semmle.label | c : C1 [field a] : A | +| A.cs:64:18:64:26 | access to field a | semmle.label | access to field a | | A.cs:64:18:64:26 | access to field a | semmle.label | access to field a | | A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | semmle.label | (...) ... : C1 [field a] : A | +| A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | semmle.label | (...) ... : C1 [field a] : A | +| A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | semmle.label | [post] access to parameter b : B [field c] : C | | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | semmle.label | [post] access to parameter b : B [field c] : C | | A.cs:83:15:83:26 | call to method Source : C | semmle.label | call to method Source : C | +| A.cs:83:15:83:26 | call to method Source : C | semmle.label | call to method Source : C | +| A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | semmle.label | [post] access to local variable b : B [field c] : C | | A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | semmle.label | [post] access to local variable b : B [field c] : C | | A.cs:89:14:89:14 | access to local variable b : B [field c] : C | semmle.label | access to local variable b : B [field c] : C | +| A.cs:89:14:89:14 | access to local variable b : B [field c] : C | semmle.label | access to local variable b : B [field c] : C | +| A.cs:89:14:89:16 | access to field c | semmle.label | access to field c | | A.cs:89:14:89:16 | access to field c | semmle.label | access to field c | | A.cs:95:20:95:20 | b : B | semmle.label | b : B | +| A.cs:95:20:95:20 | b : B | semmle.label | b : B | +| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | semmle.label | [post] access to parameter b : B [field c] : C | | A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | semmle.label | [post] access to parameter b : B [field c] : C | | A.cs:97:13:97:13 | access to parameter b : B | semmle.label | access to parameter b : B | +| A.cs:97:13:97:13 | access to parameter b : B | semmle.label | access to parameter b : B | | A.cs:97:19:97:32 | call to method Source : C | semmle.label | call to method Source : C | +| A.cs:97:19:97:32 | call to method Source : C | semmle.label | call to method Source : C | +| A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | semmle.label | [post] this access : D [field b, field c] : C | | A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | semmle.label | [post] this access : D [field b, field c] : C | | A.cs:98:13:98:16 | [post] this access : D [field b] : B | semmle.label | [post] this access : D [field b] : B | | A.cs:98:13:98:16 | [post] this access : D [field b] : B | semmle.label | [post] this access : D [field b] : B | +| A.cs:98:13:98:16 | [post] this access : D [field b] : B | semmle.label | [post] this access : D [field b] : B | +| A.cs:98:13:98:16 | [post] this access : D [field b] : B | semmle.label | [post] this access : D [field b] : B | +| A.cs:98:22:98:43 | ... ? ... : ... : B | semmle.label | ... ? ... : ... : B | +| A.cs:98:22:98:43 | ... ? ... : ... : B | semmle.label | ... ? ... : ... : B | | A.cs:98:22:98:43 | ... ? ... : ... : B | semmle.label | ... ? ... : ... : B | | A.cs:98:22:98:43 | ... ? ... : ... : B | semmle.label | ... ? ... : ... : B | | A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | semmle.label | ... ? ... : ... : B [field c] : C | +| A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | semmle.label | ... ? ... : ... : B [field c] : C | +| A.cs:98:30:98:43 | call to method Source : B | semmle.label | call to method Source : B | | A.cs:98:30:98:43 | call to method Source : B | semmle.label | call to method Source : B | | A.cs:104:17:104:30 | call to method Source : B | semmle.label | call to method Source : B | +| A.cs:104:17:104:30 | call to method Source : B | semmle.label | call to method Source : B | +| A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | semmle.label | object creation of type D : D [field b, field c] : C | | A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | semmle.label | object creation of type D : D [field b, field c] : C | | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | semmle.label | object creation of type D : D [field b] : B | +| A.cs:105:17:105:29 | object creation of type D : D [field b] : B | semmle.label | object creation of type D : D [field b] : B | +| A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | semmle.label | [post] access to local variable b : B [field c] : C | | A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | semmle.label | [post] access to local variable b : B [field c] : C | | A.cs:105:23:105:23 | access to local variable b : B | semmle.label | access to local variable b : B | +| A.cs:105:23:105:23 | access to local variable b : B | semmle.label | access to local variable b : B | +| A.cs:106:14:106:14 | access to local variable d : D [field b] : B | semmle.label | access to local variable d : D [field b] : B | | A.cs:106:14:106:14 | access to local variable d : D [field b] : B | semmle.label | access to local variable d : D [field b] : B | | A.cs:106:14:106:16 | access to field b | semmle.label | access to field b | +| A.cs:106:14:106:16 | access to field b | semmle.label | access to field b | +| A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | semmle.label | access to local variable d : D [field b, field c] : C | | A.cs:107:14:107:14 | access to local variable d : D [field b, field c] : C | semmle.label | access to local variable d : D [field b, field c] : C | | A.cs:107:14:107:16 | access to field b : B [field c] : C | semmle.label | access to field b : B [field c] : C | +| A.cs:107:14:107:16 | access to field b : B [field c] : C | semmle.label | access to field b : B [field c] : C | +| A.cs:107:14:107:18 | access to field c | semmle.label | access to field c | | A.cs:107:14:107:18 | access to field c | semmle.label | access to field c | | A.cs:108:14:108:14 | access to local variable b : B [field c] : C | semmle.label | access to local variable b : B [field c] : C | +| A.cs:108:14:108:14 | access to local variable b : B [field c] : C | semmle.label | access to local variable b : B [field c] : C | +| A.cs:108:14:108:16 | access to field c | semmle.label | access to field c | | A.cs:108:14:108:16 | access to field c | semmle.label | access to field c | | A.cs:113:17:113:29 | call to method Source : B | semmle.label | call to method Source : B | +| A.cs:113:17:113:29 | call to method Source : B | semmle.label | call to method Source : B | +| A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | semmle.label | object creation of type MyList : MyList [field head] : B | | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | semmle.label | object creation of type MyList : MyList [field head] : B | | A.cs:114:29:114:29 | access to local variable b : B | semmle.label | access to local variable b : B | +| A.cs:114:29:114:29 | access to local variable b : B | semmle.label | access to local variable b : B | +| A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | semmle.label | object creation of type MyList : MyList [field next, field head] : B | | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | semmle.label | object creation of type MyList : MyList [field next, field head] : B | | A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | semmle.label | access to local variable l1 : MyList [field head] : B | +| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | semmle.label | access to local variable l1 : MyList [field head] : B | +| A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | semmle.label | object creation of type MyList : MyList [field next, field next, field head] : B | | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | semmle.label | object creation of type MyList : MyList [field next, field next, field head] : B | | A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | semmle.label | access to local variable l2 : MyList [field next, field head] : B | +| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | semmle.label | access to local variable l2 : MyList [field next, field head] : B | +| A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | semmle.label | access to local variable l3 : MyList [field next, field next, field head] : B | | A.cs:119:14:119:15 | access to local variable l3 : MyList [field next, field next, field head] : B | semmle.label | access to local variable l3 : MyList [field next, field next, field head] : B | | A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | semmle.label | access to field next : MyList [field next, field head] : B | +| A.cs:119:14:119:20 | access to field next : MyList [field next, field head] : B | semmle.label | access to field next : MyList [field next, field head] : B | +| A.cs:119:14:119:25 | access to field next : MyList [field head] : B | semmle.label | access to field next : MyList [field head] : B | | A.cs:119:14:119:25 | access to field next : MyList [field head] : B | semmle.label | access to field next : MyList [field head] : B | | A.cs:119:14:119:30 | access to field head | semmle.label | access to field head | +| A.cs:119:14:119:30 | access to field head | semmle.label | access to field head | +| A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | semmle.label | access to local variable l : MyList [field next, field head] : B | | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field head] : B | semmle.label | access to local variable l : MyList [field next, field head] : B | | A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | semmle.label | access to local variable l : MyList [field next, field next, field head] : B | +| A.cs:121:41:121:41 | access to local variable l : MyList [field next, field next, field head] : B | semmle.label | access to local variable l : MyList [field next, field next, field head] : B | +| A.cs:121:41:121:46 | access to field next : MyList [field head] : B | semmle.label | access to field next : MyList [field head] : B | | A.cs:121:41:121:46 | access to field next : MyList [field head] : B | semmle.label | access to field next : MyList [field head] : B | | A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | semmle.label | access to field next : MyList [field next, field head] : B | +| A.cs:121:41:121:46 | access to field next : MyList [field next, field head] : B | semmle.label | access to field next : MyList [field next, field head] : B | +| A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | semmle.label | access to local variable l : MyList [field head] : B | | A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | semmle.label | access to local variable l : MyList [field head] : B | | A.cs:123:18:123:23 | access to field head | semmle.label | access to field head | +| A.cs:123:18:123:23 | access to field head | semmle.label | access to field head | +| A.cs:141:20:141:20 | c : C | semmle.label | c : C | | A.cs:141:20:141:20 | c : C | semmle.label | c : C | | A.cs:143:13:143:16 | [post] this access : B [field c] : C | semmle.label | [post] this access : B [field c] : C | +| A.cs:143:13:143:16 | [post] this access : B [field c] : C | semmle.label | [post] this access : B [field c] : C | +| A.cs:143:22:143:22 | access to parameter c : C | semmle.label | access to parameter c : C | | A.cs:143:22:143:22 | access to parameter c : C | semmle.label | access to parameter c : C | | A.cs:145:27:145:27 | c : C | semmle.label | c : C | +| A.cs:145:27:145:27 | c : C | semmle.label | c : C | +| A.cs:145:27:145:27 | c : C1 | semmle.label | c : C1 | | A.cs:145:27:145:27 | c : C1 | semmle.label | c : C1 | | A.cs:145:27:145:27 | c : C2 | semmle.label | c : C2 | +| A.cs:145:27:145:27 | c : C2 | semmle.label | c : C2 | +| A.cs:145:32:145:35 | [post] this access : B [field c] : C | semmle.label | [post] this access : B [field c] : C | | A.cs:145:32:145:35 | [post] this access : B [field c] : C | semmle.label | [post] this access : B [field c] : C | | A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | semmle.label | [post] this access : B [field c] : C1 | +| A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | semmle.label | [post] this access : B [field c] : C1 | +| A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | semmle.label | [post] this access : B [field c] : C2 | | A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | semmle.label | [post] this access : B [field c] : C2 | | A.cs:145:41:145:41 | access to parameter c : C | semmle.label | access to parameter c : C | +| A.cs:145:41:145:41 | access to parameter c : C | semmle.label | access to parameter c : C | +| A.cs:145:41:145:41 | access to parameter c : C1 | semmle.label | access to parameter c : C1 | | A.cs:145:41:145:41 | access to parameter c : C1 | semmle.label | access to parameter c : C1 | | A.cs:145:41:145:41 | access to parameter c : C2 | semmle.label | access to parameter c : C2 | +| A.cs:145:41:145:41 | access to parameter c : C2 | semmle.label | access to parameter c : C2 | +| A.cs:146:18:146:20 | this : B [field c] : C | semmle.label | this : B [field c] : C | | A.cs:146:18:146:20 | this : B [field c] : C | semmle.label | this : B [field c] : C | | A.cs:146:18:146:20 | this : B [field c] : C1 | semmle.label | this : B [field c] : C1 | +| A.cs:146:18:146:20 | this : B [field c] : C1 | semmle.label | this : B [field c] : C1 | +| A.cs:146:33:146:36 | this access : B [field c] : C | semmle.label | this access : B [field c] : C | | A.cs:146:33:146:36 | this access : B [field c] : C | semmle.label | this access : B [field c] : C | | A.cs:146:33:146:36 | this access : B [field c] : C1 | semmle.label | this access : B [field c] : C1 | +| A.cs:146:33:146:36 | this access : B [field c] : C1 | semmle.label | this access : B [field c] : C1 | +| A.cs:146:33:146:38 | access to field c : C | semmle.label | access to field c : C | | A.cs:146:33:146:38 | access to field c : C | semmle.label | access to field c : C | | A.cs:146:33:146:38 | access to field c : C1 | semmle.label | access to field c : C1 | +| A.cs:146:33:146:38 | access to field c : C1 | semmle.label | access to field c : C1 | +| A.cs:147:32:147:32 | c : C | semmle.label | c : C | | A.cs:147:32:147:32 | c : C | semmle.label | c : C | | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | semmle.label | object creation of type B : B [field c] : C | +| A.cs:149:20:149:27 | object creation of type B : B [field c] : C | semmle.label | object creation of type B : B [field c] : C | +| A.cs:149:26:149:26 | access to parameter c : C | semmle.label | access to parameter c : C | | A.cs:149:26:149:26 | access to parameter c : C | semmle.label | access to parameter c : C | | A.cs:157:25:157:28 | head : B | semmle.label | head : B | +| A.cs:157:25:157:28 | head : B | semmle.label | head : B | +| A.cs:157:38:157:41 | next : MyList [field head] : B | semmle.label | next : MyList [field head] : B | | A.cs:157:38:157:41 | next : MyList [field head] : B | semmle.label | next : MyList [field head] : B | | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | semmle.label | next : MyList [field next, field head] : B | +| A.cs:157:38:157:41 | next : MyList [field next, field head] : B | semmle.label | next : MyList [field next, field head] : B | +| A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | semmle.label | [post] this access : MyList [field head] : B | | A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | semmle.label | [post] this access : MyList [field head] : B | | A.cs:159:25:159:28 | access to parameter head : B | semmle.label | access to parameter head : B | +| A.cs:159:25:159:28 | access to parameter head : B | semmle.label | access to parameter head : B | +| A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | semmle.label | [post] this access : MyList [field next, field head] : B | | A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | semmle.label | [post] this access : MyList [field next, field head] : B | | A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | semmle.label | [post] this access : MyList [field next, field next, field head] : B | +| A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | semmle.label | [post] this access : MyList [field next, field next, field head] : B | +| A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | semmle.label | access to parameter next : MyList [field head] : B | | A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | semmle.label | access to parameter next : MyList [field head] : B | | A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | semmle.label | access to parameter next : MyList [field next, field head] : B | +| A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | semmle.label | access to parameter next : MyList [field next, field head] : B | +| B.cs:5:17:5:31 | call to method Source : Elem | semmle.label | call to method Source : Elem | | B.cs:5:17:5:31 | call to method Source : Elem | semmle.label | call to method Source : Elem | | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | semmle.label | object creation of type Box1 : Box1 [field elem1] : Elem | +| B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | semmle.label | object creation of type Box1 : Box1 [field elem1] : Elem | +| B.cs:6:27:6:27 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | | B.cs:6:27:6:27 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | semmle.label | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | +| B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | semmle.label | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | +| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | semmle.label | access to local variable b1 : Box1 [field elem1] : Elem | | B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | semmle.label | access to local variable b1 : Box1 [field elem1] : Elem | | B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | semmle.label | access to local variable b2 : Box2 [field box1, field elem1] : Elem | +| B.cs:8:14:8:15 | access to local variable b2 : Box2 [field box1, field elem1] : Elem | semmle.label | access to local variable b2 : Box2 [field box1, field elem1] : Elem | +| B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | semmle.label | access to field box1 : Box1 [field elem1] : Elem | | B.cs:8:14:8:20 | access to field box1 : Box1 [field elem1] : Elem | semmle.label | access to field box1 : Box1 [field elem1] : Elem | | B.cs:8:14:8:26 | access to field elem1 | semmle.label | access to field elem1 | +| B.cs:8:14:8:26 | access to field elem1 | semmle.label | access to field elem1 | +| B.cs:14:17:14:31 | call to method Source : Elem | semmle.label | call to method Source : Elem | | B.cs:14:17:14:31 | call to method Source : Elem | semmle.label | call to method Source : Elem | | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | semmle.label | object creation of type Box1 : Box1 [field elem2] : Elem | +| B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | semmle.label | object creation of type Box1 : Box1 [field elem2] : Elem | +| B.cs:15:33:15:33 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | | B.cs:15:33:15:33 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | semmle.label | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | +| B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | semmle.label | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | +| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | semmle.label | access to local variable b1 : Box1 [field elem2] : Elem | | B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | semmle.label | access to local variable b1 : Box1 [field elem2] : Elem | | B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | semmle.label | access to local variable b2 : Box2 [field box1, field elem2] : Elem | +| B.cs:18:14:18:15 | access to local variable b2 : Box2 [field box1, field elem2] : Elem | semmle.label | access to local variable b2 : Box2 [field box1, field elem2] : Elem | +| B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | semmle.label | access to field box1 : Box1 [field elem2] : Elem | | B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | semmle.label | access to field box1 : Box1 [field elem2] : Elem | | B.cs:18:14:18:26 | access to field elem2 | semmle.label | access to field elem2 | +| B.cs:18:14:18:26 | access to field elem2 | semmle.label | access to field elem2 | +| B.cs:29:26:29:27 | e1 : Elem | semmle.label | e1 : Elem | | B.cs:29:26:29:27 | e1 : Elem | semmle.label | e1 : Elem | | B.cs:29:35:29:36 | e2 : Elem | semmle.label | e2 : Elem | +| B.cs:29:35:29:36 | e2 : Elem | semmle.label | e2 : Elem | +| B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | semmle.label | [post] this access : Box1 [field elem1] : Elem | | B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | semmle.label | [post] this access : Box1 [field elem1] : Elem | | B.cs:31:26:31:27 | access to parameter e1 : Elem | semmle.label | access to parameter e1 : Elem | +| B.cs:31:26:31:27 | access to parameter e1 : Elem | semmle.label | access to parameter e1 : Elem | +| B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | semmle.label | [post] this access : Box1 [field elem2] : Elem | | B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | semmle.label | [post] this access : Box1 [field elem2] : Elem | | B.cs:32:26:32:27 | access to parameter e2 : Elem | semmle.label | access to parameter e2 : Elem | +| B.cs:32:26:32:27 | access to parameter e2 : Elem | semmle.label | access to parameter e2 : Elem | +| B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | semmle.label | b1 : Box1 [field elem1] : Elem | | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | semmle.label | b1 : Box1 [field elem1] : Elem | | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | semmle.label | b1 : Box1 [field elem2] : Elem | +| B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | semmle.label | b1 : Box1 [field elem2] : Elem | +| B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | semmle.label | [post] this access : Box2 [field box1, field elem1] : Elem | | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | semmle.label | [post] this access : Box2 [field box1, field elem1] : Elem | | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | semmle.label | [post] this access : Box2 [field box1, field elem2] : Elem | +| B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | semmle.label | [post] this access : Box2 [field box1, field elem2] : Elem | +| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | semmle.label | access to parameter b1 : Box1 [field elem1] : Elem | | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | semmle.label | access to parameter b1 : Box1 [field elem1] : Elem | | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | semmle.label | access to parameter b1 : Box1 [field elem2] : Elem | +| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | semmle.label | access to parameter b1 : Box1 [field elem2] : Elem | +| C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | semmle.label | [post] this access : C [field s1] : Elem | | C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | semmle.label | [post] this access : C [field s1] : Elem | | C.cs:3:23:3:37 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C.cs:3:23:3:37 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | semmle.label | [post] this access : C [field s2] : Elem | | C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | semmle.label | [post] this access : C [field s2] : Elem | | C.cs:4:32:4:46 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C.cs:4:32:4:46 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C.cs:6:30:6:44 | call to method Source : Elem | semmle.label | call to method Source : Elem | | C.cs:6:30:6:44 | call to method Source : Elem | semmle.label | call to method Source : Elem | | C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | semmle.label | [post] this access : C [property s5] : Elem | +| C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | semmle.label | [post] this access : C [property s5] : Elem | +| C.cs:7:37:7:51 | call to method Source : Elem | semmle.label | call to method Source : Elem | | C.cs:7:37:7:51 | call to method Source : Elem | semmle.label | call to method Source : Elem | | C.cs:8:30:8:44 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C.cs:8:30:8:44 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | semmle.label | object creation of type C : C [field s1] : Elem | | C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | semmle.label | object creation of type C : C [field s1] : Elem | | C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | semmle.label | object creation of type C : C [field s2] : Elem | +| C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | semmle.label | object creation of type C : C [field s2] : Elem | +| C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | semmle.label | object creation of type C : C [field s3] : Elem | | C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | semmle.label | object creation of type C : C [field s3] : Elem | | C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | semmle.label | object creation of type C : C [property s5] : Elem | +| C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | semmle.label | object creation of type C : C [property s5] : Elem | +| C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | semmle.label | access to local variable c : C [field s1] : Elem | | C.cs:13:9:13:9 | access to local variable c : C [field s1] : Elem | semmle.label | access to local variable c : C [field s1] : Elem | | C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | semmle.label | access to local variable c : C [field s2] : Elem | +| C.cs:13:9:13:9 | access to local variable c : C [field s2] : Elem | semmle.label | access to local variable c : C [field s2] : Elem | +| C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | semmle.label | access to local variable c : C [field s3] : Elem | | C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | semmle.label | access to local variable c : C [field s3] : Elem | | C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | semmle.label | access to local variable c : C [property s5] : Elem | +| C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | semmle.label | access to local variable c : C [property s5] : Elem | +| C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | semmle.label | [post] this access : C [field s3] : Elem | | C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | semmle.label | [post] this access : C [field s3] : Elem | | C.cs:18:19:18:33 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C.cs:18:19:18:33 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C.cs:21:17:21:18 | this : C [field s1] : Elem | semmle.label | this : C [field s1] : Elem | | C.cs:21:17:21:18 | this : C [field s1] : Elem | semmle.label | this : C [field s1] : Elem | | C.cs:21:17:21:18 | this : C [field s2] : Elem | semmle.label | this : C [field s2] : Elem | +| C.cs:21:17:21:18 | this : C [field s2] : Elem | semmle.label | this : C [field s2] : Elem | +| C.cs:21:17:21:18 | this : C [field s3] : Elem | semmle.label | this : C [field s3] : Elem | | C.cs:21:17:21:18 | this : C [field s3] : Elem | semmle.label | this : C [field s3] : Elem | | C.cs:21:17:21:18 | this : C [property s5] : Elem | semmle.label | this : C [property s5] : Elem | +| C.cs:21:17:21:18 | this : C [property s5] : Elem | semmle.label | this : C [property s5] : Elem | +| C.cs:23:14:23:15 | access to field s1 | semmle.label | access to field s1 | | C.cs:23:14:23:15 | access to field s1 | semmle.label | access to field s1 | | C.cs:23:14:23:15 | this access : C [field s1] : Elem | semmle.label | this access : C [field s1] : Elem | +| C.cs:23:14:23:15 | this access : C [field s1] : Elem | semmle.label | this access : C [field s1] : Elem | +| C.cs:24:14:24:15 | access to field s2 | semmle.label | access to field s2 | | C.cs:24:14:24:15 | access to field s2 | semmle.label | access to field s2 | | C.cs:24:14:24:15 | this access : C [field s2] : Elem | semmle.label | this access : C [field s2] : Elem | +| C.cs:24:14:24:15 | this access : C [field s2] : Elem | semmle.label | this access : C [field s2] : Elem | +| C.cs:25:14:25:15 | access to field s3 | semmle.label | access to field s3 | | C.cs:25:14:25:15 | access to field s3 | semmle.label | access to field s3 | | C.cs:25:14:25:15 | this access : C [field s3] : Elem | semmle.label | this access : C [field s3] : Elem | +| C.cs:25:14:25:15 | this access : C [field s3] : Elem | semmle.label | this access : C [field s3] : Elem | +| C.cs:26:14:26:15 | access to field s4 | semmle.label | access to field s4 | | C.cs:26:14:26:15 | access to field s4 | semmle.label | access to field s4 | | C.cs:27:14:27:15 | access to property s5 | semmle.label | access to property s5 | +| C.cs:27:14:27:15 | access to property s5 | semmle.label | access to property s5 | +| C.cs:27:14:27:15 | this access : C [property s5] : Elem | semmle.label | this access : C [property s5] : Elem | | C.cs:27:14:27:15 | this access : C [property s5] : Elem | semmle.label | this access : C [property s5] : Elem | | C.cs:28:14:28:15 | access to property s6 | semmle.label | access to property s6 | +| C.cs:28:14:28:15 | access to property s6 | semmle.label | access to property s6 | +| C_ctor.cs:3:18:3:19 | [post] this access : C_no_ctor [field s1] : Elem | semmle.label | [post] this access : C_no_ctor [field s1] : Elem | | C_ctor.cs:3:18:3:19 | [post] this access : C_no_ctor [field s1] : Elem | semmle.label | [post] this access : C_no_ctor [field s1] : Elem | | C_ctor.cs:3:23:3:42 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C_ctor.cs:3:23:3:42 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| C_ctor.cs:7:23:7:37 | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | semmle.label | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | | C_ctor.cs:7:23:7:37 | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | semmle.label | object creation of type C_no_ctor : C_no_ctor [field s1] : Elem | | C_ctor.cs:8:9:8:9 | access to local variable c : C_no_ctor [field s1] : Elem | semmle.label | access to local variable c : C_no_ctor [field s1] : Elem | +| C_ctor.cs:8:9:8:9 | access to local variable c : C_no_ctor [field s1] : Elem | semmle.label | access to local variable c : C_no_ctor [field s1] : Elem | +| C_ctor.cs:11:17:11:18 | this : C_no_ctor [field s1] : Elem | semmle.label | this : C_no_ctor [field s1] : Elem | | C_ctor.cs:11:17:11:18 | this : C_no_ctor [field s1] : Elem | semmle.label | this : C_no_ctor [field s1] : Elem | | C_ctor.cs:13:19:13:20 | access to field s1 | semmle.label | access to field s1 | +| C_ctor.cs:13:19:13:20 | access to field s1 | semmle.label | access to field s1 | +| C_ctor.cs:13:19:13:20 | this access : C_no_ctor [field s1] : Elem | semmle.label | this access : C_no_ctor [field s1] : Elem | | C_ctor.cs:13:19:13:20 | this access : C_no_ctor [field s1] : Elem | semmle.label | this access : C_no_ctor [field s1] : Elem | | C_ctor.cs:19:18:19:19 | [post] this access : C_with_ctor [field s1] : Elem | semmle.label | [post] this access : C_with_ctor [field s1] : Elem | +| C_ctor.cs:19:18:19:19 | [post] this access : C_with_ctor [field s1] : Elem | semmle.label | [post] this access : C_with_ctor [field s1] : Elem | +| C_ctor.cs:19:23:19:42 | call to method Source : Elem | semmle.label | call to method Source : Elem | | C_ctor.cs:19:23:19:42 | call to method Source : Elem | semmle.label | call to method Source : Elem | | C_ctor.cs:23:25:23:41 | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | semmle.label | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | +| C_ctor.cs:23:25:23:41 | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | semmle.label | object creation of type C_with_ctor : C_with_ctor [field s1] : Elem | +| C_ctor.cs:24:9:24:9 | access to local variable c : C_with_ctor [field s1] : Elem | semmle.label | access to local variable c : C_with_ctor [field s1] : Elem | | C_ctor.cs:24:9:24:9 | access to local variable c : C_with_ctor [field s1] : Elem | semmle.label | access to local variable c : C_with_ctor [field s1] : Elem | | C_ctor.cs:29:17:29:18 | this : C_with_ctor [field s1] : Elem | semmle.label | this : C_with_ctor [field s1] : Elem | +| C_ctor.cs:29:17:29:18 | this : C_with_ctor [field s1] : Elem | semmle.label | this : C_with_ctor [field s1] : Elem | +| C_ctor.cs:31:19:31:20 | access to field s1 | semmle.label | access to field s1 | | C_ctor.cs:31:19:31:20 | access to field s1 | semmle.label | access to field s1 | | C_ctor.cs:31:19:31:20 | this access : C_with_ctor [field s1] : Elem | semmle.label | this access : C_with_ctor [field s1] : Elem | +| C_ctor.cs:31:19:31:20 | this access : C_with_ctor [field s1] : Elem | semmle.label | this access : C_with_ctor [field s1] : Elem | +| D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | semmle.label | this : D [field trivialPropField] : Object | | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | semmle.label | this : D [field trivialPropField] : Object | | D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | semmle.label | this access : D [field trivialPropField] : Object | +| D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | semmle.label | this access : D [field trivialPropField] : Object | +| D.cs:8:22:8:42 | access to field trivialPropField : Object | semmle.label | access to field trivialPropField : Object | | D.cs:8:22:8:42 | access to field trivialPropField : Object | semmle.label | access to field trivialPropField : Object | | D.cs:9:9:9:11 | value : Object | semmle.label | value : Object | +| D.cs:9:9:9:11 | value : Object | semmle.label | value : Object | +| D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | semmle.label | [post] this access : D [field trivialPropField] : Object | | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | semmle.label | [post] this access : D [field trivialPropField] : Object | | D.cs:9:39:9:43 | access to parameter value : Object | semmle.label | access to parameter value : Object | +| D.cs:9:39:9:43 | access to parameter value : Object | semmle.label | access to parameter value : Object | +| D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | semmle.label | this : D [field trivialPropField] : Object | | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | semmle.label | this : D [field trivialPropField] : Object | | D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | semmle.label | this access : D [field trivialPropField] : Object | +| D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | semmle.label | this access : D [field trivialPropField] : Object | +| D.cs:14:22:14:42 | access to field trivialPropField : Object | semmle.label | access to field trivialPropField : Object | | D.cs:14:22:14:42 | access to field trivialPropField : Object | semmle.label | access to field trivialPropField : Object | | D.cs:15:9:15:11 | value : Object | semmle.label | value : Object | +| D.cs:15:9:15:11 | value : Object | semmle.label | value : Object | +| D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | semmle.label | [post] this access : D [field trivialPropField] : Object | | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | semmle.label | [post] this access : D [field trivialPropField] : Object | | D.cs:15:34:15:38 | access to parameter value : Object | semmle.label | access to parameter value : Object | +| D.cs:15:34:15:38 | access to parameter value : Object | semmle.label | access to parameter value : Object | +| D.cs:18:28:18:29 | o1 : Object | semmle.label | o1 : Object | | D.cs:18:28:18:29 | o1 : Object | semmle.label | o1 : Object | | D.cs:18:39:18:40 | o2 : Object | semmle.label | o2 : Object | +| D.cs:18:39:18:40 | o2 : Object | semmle.label | o2 : Object | +| D.cs:18:50:18:51 | o3 : Object | semmle.label | o3 : Object | | D.cs:18:50:18:51 | o3 : Object | semmle.label | o3 : Object | | D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | semmle.label | [post] access to local variable ret : D [property AutoProp] : Object | +| D.cs:21:9:21:11 | [post] access to local variable ret : D [property AutoProp] : Object | semmle.label | [post] access to local variable ret : D [property AutoProp] : Object | +| D.cs:21:24:21:25 | access to parameter o1 : Object | semmle.label | access to parameter o1 : Object | | D.cs:21:24:21:25 | access to parameter o1 : Object | semmle.label | access to parameter o1 : Object | | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | semmle.label | [post] access to local variable ret : D [field trivialPropField] : Object | +| D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | semmle.label | [post] access to local variable ret : D [field trivialPropField] : Object | +| D.cs:22:27:22:28 | access to parameter o2 : Object | semmle.label | access to parameter o2 : Object | | D.cs:22:27:22:28 | access to parameter o2 : Object | semmle.label | access to parameter o2 : Object | | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | semmle.label | [post] access to local variable ret : D [field trivialPropField] : Object | +| D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | semmle.label | [post] access to local variable ret : D [field trivialPropField] : Object | +| D.cs:23:27:23:28 | access to parameter o3 : Object | semmle.label | access to parameter o3 : Object | | D.cs:23:27:23:28 | access to parameter o3 : Object | semmle.label | access to parameter o3 : Object | | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | semmle.label | access to local variable ret : D [field trivialPropField] : Object | | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | semmle.label | access to local variable ret : D [field trivialPropField] : Object | +| D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | semmle.label | access to local variable ret : D [field trivialPropField] : Object | +| D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | semmle.label | access to local variable ret : D [field trivialPropField] : Object | +| D.cs:24:16:24:18 | access to local variable ret : D [property AutoProp] : Object | semmle.label | access to local variable ret : D [property AutoProp] : Object | | D.cs:24:16:24:18 | access to local variable ret : D [property AutoProp] : Object | semmle.label | access to local variable ret : D [property AutoProp] : Object | | D.cs:29:17:29:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| D.cs:29:17:29:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | semmle.label | call to method Create : D [property AutoProp] : Object | | D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | semmle.label | call to method Create : D [property AutoProp] : Object | | D.cs:31:24:31:24 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| D.cs:31:24:31:24 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | semmle.label | access to local variable d : D [property AutoProp] : Object | | D.cs:32:14:32:14 | access to local variable d : D [property AutoProp] : Object | semmle.label | access to local variable d : D [property AutoProp] : Object | | D.cs:32:14:32:23 | access to property AutoProp | semmle.label | access to property AutoProp | +| D.cs:32:14:32:23 | access to property AutoProp | semmle.label | access to property AutoProp | +| D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | semmle.label | call to method Create : D [field trivialPropField] : Object | | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | semmle.label | call to method Create : D [field trivialPropField] : Object | | D.cs:37:26:37:42 | call to method Source : Object | semmle.label | call to method Source : Object | +| D.cs:37:26:37:42 | call to method Source : Object | semmle.label | call to method Source : Object | +| D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:39:14:39:26 | access to property TrivialProp | semmle.label | access to property TrivialProp | +| D.cs:39:14:39:26 | access to property TrivialProp | semmle.label | access to property TrivialProp | +| D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:40:14:40:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:40:14:40:31 | access to field trivialPropField | semmle.label | access to field trivialPropField | +| D.cs:40:14:40:31 | access to field trivialPropField | semmle.label | access to field trivialPropField | +| D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:41:14:41:26 | access to property ComplexProp | semmle.label | access to property ComplexProp | +| D.cs:41:14:41:26 | access to property ComplexProp | semmle.label | access to property ComplexProp | +| D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | semmle.label | call to method Create : D [field trivialPropField] : Object | | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | semmle.label | call to method Create : D [field trivialPropField] : Object | | D.cs:43:32:43:48 | call to method Source : Object | semmle.label | call to method Source : Object | +| D.cs:43:32:43:48 | call to method Source : Object | semmle.label | call to method Source : Object | +| D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:45:14:45:26 | access to property TrivialProp | semmle.label | access to property TrivialProp | +| D.cs:45:14:45:26 | access to property TrivialProp | semmle.label | access to property TrivialProp | +| D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:46:14:46:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:46:14:46:31 | access to field trivialPropField | semmle.label | access to field trivialPropField | +| D.cs:46:14:46:31 | access to field trivialPropField | semmle.label | access to field trivialPropField | +| D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | semmle.label | access to local variable d : D [field trivialPropField] : Object | | D.cs:47:14:47:26 | access to property ComplexProp | semmle.label | access to property ComplexProp | +| D.cs:47:14:47:26 | access to property ComplexProp | semmle.label | access to property ComplexProp | +| E.cs:8:29:8:29 | o : Object | semmle.label | o : Object | | E.cs:8:29:8:29 | o : Object | semmle.label | o : Object | | E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | semmle.label | [post] access to local variable ret : S [field Field] : Object | +| E.cs:11:9:11:11 | [post] access to local variable ret : S [field Field] : Object | semmle.label | [post] access to local variable ret : S [field Field] : Object | +| E.cs:11:21:11:21 | access to parameter o : Object | semmle.label | access to parameter o : Object | | E.cs:11:21:11:21 | access to parameter o : Object | semmle.label | access to parameter o : Object | | E.cs:12:16:12:18 | access to local variable ret : S [field Field] : Object | semmle.label | access to local variable ret : S [field Field] : Object | +| E.cs:12:16:12:18 | access to local variable ret : S [field Field] : Object | semmle.label | access to local variable ret : S [field Field] : Object | +| E.cs:22:17:22:33 | call to method Source : Object | semmle.label | call to method Source : Object | | E.cs:22:17:22:33 | call to method Source : Object | semmle.label | call to method Source : Object | | E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | semmle.label | call to method CreateS : S [field Field] : Object | +| E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | semmle.label | call to method CreateS : S [field Field] : Object | +| E.cs:23:25:23:25 | access to local variable o : Object | semmle.label | access to local variable o : Object | | E.cs:23:25:23:25 | access to local variable o : Object | semmle.label | access to local variable o : Object | | E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | semmle.label | access to local variable s : S [field Field] : Object | +| E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | semmle.label | access to local variable s : S [field Field] : Object | +| E.cs:24:14:24:20 | access to field Field | semmle.label | access to field Field | | E.cs:24:14:24:20 | access to field Field | semmle.label | access to field Field | | F.cs:6:28:6:29 | o1 : Object | semmle.label | o1 : Object | +| F.cs:6:28:6:29 | o1 : Object | semmle.label | o1 : Object | +| F.cs:6:39:6:40 | o2 : Object | semmle.label | o2 : Object | | F.cs:6:39:6:40 | o2 : Object | semmle.label | o2 : Object | | F.cs:6:46:6:81 | object creation of type F : F [field Field1] : Object | semmle.label | object creation of type F : F [field Field1] : Object | +| F.cs:6:46:6:81 | object creation of type F : F [field Field1] : Object | semmle.label | object creation of type F : F [field Field1] : Object | +| F.cs:6:46:6:81 | object creation of type F : F [field Field2] : Object | semmle.label | object creation of type F : F [field Field2] : Object | | F.cs:6:46:6:81 | object creation of type F : F [field Field2] : Object | semmle.label | object creation of type F : F [field Field2] : Object | | F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | semmle.label | { ..., ... } : F [field Field1] : Object | +| F.cs:6:54:6:81 | { ..., ... } : F [field Field1] : Object | semmle.label | { ..., ... } : F [field Field1] : Object | +| F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | semmle.label | { ..., ... } : F [field Field2] : Object | | F.cs:6:54:6:81 | { ..., ... } : F [field Field2] : Object | semmle.label | { ..., ... } : F [field Field2] : Object | | F.cs:6:65:6:66 | access to parameter o1 : Object | semmle.label | access to parameter o1 : Object | +| F.cs:6:65:6:66 | access to parameter o1 : Object | semmle.label | access to parameter o1 : Object | +| F.cs:6:78:6:79 | access to parameter o2 : Object | semmle.label | access to parameter o2 : Object | | F.cs:6:78:6:79 | access to parameter o2 : Object | semmle.label | access to parameter o2 : Object | | F.cs:10:17:10:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| F.cs:10:17:10:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | semmle.label | call to method Create : F [field Field1] : Object | | F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | semmle.label | call to method Create : F [field Field1] : Object | | F.cs:11:24:11:24 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| F.cs:11:24:11:24 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | semmle.label | access to local variable f : F [field Field1] : Object | | F.cs:12:14:12:14 | access to local variable f : F [field Field1] : Object | semmle.label | access to local variable f : F [field Field1] : Object | | F.cs:12:14:12:21 | access to field Field1 | semmle.label | access to field Field1 | +| F.cs:12:14:12:21 | access to field Field1 | semmle.label | access to field Field1 | +| F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | semmle.label | call to method Create : F [field Field2] : Object | | F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | semmle.label | call to method Create : F [field Field2] : Object | | F.cs:15:26:15:42 | call to method Source : Object | semmle.label | call to method Source : Object | +| F.cs:15:26:15:42 | call to method Source : Object | semmle.label | call to method Source : Object | +| F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | semmle.label | access to local variable f : F [field Field2] : Object | | F.cs:17:14:17:14 | access to local variable f : F [field Field2] : Object | semmle.label | access to local variable f : F [field Field2] : Object | | F.cs:17:14:17:21 | access to field Field2 | semmle.label | access to field Field2 | +| F.cs:17:14:17:21 | access to field Field2 | semmle.label | access to field Field2 | +| F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | semmle.label | { ..., ... } : F [field Field1] : Object | | F.cs:19:21:19:50 | { ..., ... } : F [field Field1] : Object | semmle.label | { ..., ... } : F [field Field1] : Object | | F.cs:19:32:19:48 | call to method Source : Object | semmle.label | call to method Source : Object | +| F.cs:19:32:19:48 | call to method Source : Object | semmle.label | call to method Source : Object | +| F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | semmle.label | access to local variable f : F [field Field1] : Object | | F.cs:20:14:20:14 | access to local variable f : F [field Field1] : Object | semmle.label | access to local variable f : F [field Field1] : Object | | F.cs:20:14:20:21 | access to field Field1 | semmle.label | access to field Field1 | +| F.cs:20:14:20:21 | access to field Field1 | semmle.label | access to field Field1 | +| F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | semmle.label | { ..., ... } : F [field Field2] : Object | | F.cs:23:21:23:50 | { ..., ... } : F [field Field2] : Object | semmle.label | { ..., ... } : F [field Field2] : Object | | F.cs:23:32:23:48 | call to method Source : Object | semmle.label | call to method Source : Object | +| F.cs:23:32:23:48 | call to method Source : Object | semmle.label | call to method Source : Object | +| F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | semmle.label | access to local variable f : F [field Field2] : Object | | F.cs:25:14:25:14 | access to local variable f : F [field Field2] : Object | semmle.label | access to local variable f : F [field Field2] : Object | | F.cs:25:14:25:21 | access to field Field2 | semmle.label | access to field Field2 | +| F.cs:25:14:25:21 | access to field Field2 | semmle.label | access to field Field2 | +| F.cs:30:17:30:33 | call to method Source : Object | semmle.label | call to method Source : Object | | F.cs:30:17:30:33 | call to method Source : Object | semmle.label | call to method Source : Object | | F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | semmle.label | { ..., ... } : <>__AnonType0 [property X] : Object | +| F.cs:32:17:32:40 | { ..., ... } : <>__AnonType0 [property X] : Object | semmle.label | { ..., ... } : <>__AnonType0 [property X] : Object | +| F.cs:32:27:32:27 | access to local variable o : Object | semmle.label | access to local variable o : Object | | F.cs:32:27:32:27 | access to local variable o : Object | semmle.label | access to local variable o : Object | | F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | semmle.label | access to local variable a : <>__AnonType0 [property X] : Object | +| F.cs:33:14:33:14 | access to local variable a : <>__AnonType0 [property X] : Object | semmle.label | access to local variable a : <>__AnonType0 [property X] : Object | +| F.cs:33:14:33:16 | access to property X | semmle.label | access to property X | | F.cs:33:14:33:16 | access to property X | semmle.label | access to property X | | G.cs:7:18:7:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| G.cs:7:18:7:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:9:9:9:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | semmle.label | [post] access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:9:9:9:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | semmle.label | [post] access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:9:23:9:23 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | | G.cs:9:23:9:23 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | | G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:10:18:10:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:15:18:15:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | | G.cs:15:18:15:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | | G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:17:9:17:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | semmle.label | [post] access to field Box1 : Box1 [field Elem] : Elem | | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | semmle.label | [post] access to field Box1 : Box1 [field Elem] : Elem | | G.cs:17:24:17:24 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | +| G.cs:17:24:17:24 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | +| G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:18:18:18:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:23:18:23:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| G.cs:23:18:23:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:25:9:25:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | semmle.label | [post] call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:25:9:25:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | semmle.label | [post] call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:25:28:25:28 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | | G.cs:25:28:25:28 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | | G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:26:18:26:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:31:18:31:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | | G.cs:31:18:31:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | | G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:33:9:33:9 | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to local variable b : Box2 [field Box1, field Elem] : Elem | +| G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | semmle.label | [post] call to method GetBox1 : Box1 [field Elem] : Elem | | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | semmle.label | [post] call to method GetBox1 : Box1 [field Elem] : Elem | | G.cs:33:29:33:29 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | +| G.cs:33:29:33:29 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | +| G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:34:18:34:18 | access to local variable b : Box2 [field Box1, field Elem] : Elem | semmle.label | access to local variable b : Box2 [field Box1, field Elem] : Elem | | G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | semmle.label | b2 : Box2 [field Box1, field Elem] : Elem | +| G.cs:37:38:37:39 | b2 : Box2 [field Box1, field Elem] : Elem | semmle.label | b2 : Box2 [field Box1, field Elem] : Elem | +| G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | semmle.label | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | | G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | semmle.label | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | semmle.label | call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | semmle.label | call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:39:14:39:35 | call to method GetElem | semmle.label | call to method GetElem | | G.cs:39:14:39:35 | call to method GetElem | semmle.label | call to method GetElem | | G.cs:44:18:44:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| G.cs:44:18:44:32 | call to method Source : Elem | semmle.label | call to method Source : Elem | +| G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | | G.cs:46:9:46:16 | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | semmle.label | [post] access to field boxfield : Box2 [field Box1, field Elem] : Elem | | G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | semmle.label | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:46:9:46:16 | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | semmle.label | [post] this access : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | semmle.label | [post] access to field Box1 : Box1 [field Elem] : Elem | | G.cs:46:9:46:21 | [post] access to field Box1 : Box1 [field Elem] : Elem | semmle.label | [post] access to field Box1 : Box1 [field Elem] : Elem | | G.cs:46:30:46:30 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | +| G.cs:46:30:46:30 | access to local variable e : Elem | semmle.label | access to local variable e : Elem | +| G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | semmle.label | this access : G [field boxfield, field Box1, field Elem] : Elem | | G.cs:47:9:47:13 | this access : G [field boxfield, field Box1, field Elem] : Elem | semmle.label | this access : G [field boxfield, field Box1, field Elem] : Elem | | G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | semmle.label | this : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:50:18:50:20 | this : G [field boxfield, field Box1, field Elem] : Elem | semmle.label | this : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | semmle.label | access to field boxfield : Box2 [field Box1, field Elem] : Elem | | G.cs:52:14:52:21 | access to field boxfield : Box2 [field Box1, field Elem] : Elem | semmle.label | access to field boxfield : Box2 [field Box1, field Elem] : Elem | | G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | semmle.label | this access : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:52:14:52:21 | this access : G [field boxfield, field Box1, field Elem] : Elem | semmle.label | this access : G [field boxfield, field Box1, field Elem] : Elem | +| G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | semmle.label | access to field Box1 : Box1 [field Elem] : Elem | | G.cs:52:14:52:26 | access to field Box1 : Box1 [field Elem] : Elem | semmle.label | access to field Box1 : Box1 [field Elem] : Elem | | G.cs:52:14:52:31 | access to field Elem | semmle.label | access to field Elem | +| G.cs:52:14:52:31 | access to field Elem | semmle.label | access to field Elem | +| G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | semmle.label | this : Box1 [field Elem] : Elem | | G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | semmle.label | this : Box1 [field Elem] : Elem | | G.cs:63:34:63:37 | access to field Elem : Elem | semmle.label | access to field Elem : Elem | +| G.cs:63:34:63:37 | access to field Elem : Elem | semmle.label | access to field Elem : Elem | +| G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | semmle.label | this access : Box1 [field Elem] : Elem | | G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | semmle.label | this access : Box1 [field Elem] : Elem | | G.cs:64:34:64:34 | e : Elem | semmle.label | e : Elem | +| G.cs:64:34:64:34 | e : Elem | semmle.label | e : Elem | +| G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | semmle.label | [post] this access : Box1 [field Elem] : Elem | | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | semmle.label | [post] this access : Box1 [field Elem] : Elem | | G.cs:64:46:64:46 | access to parameter e : Elem | semmle.label | access to parameter e : Elem | +| G.cs:64:46:64:46 | access to parameter e : Elem | semmle.label | access to parameter e : Elem | +| G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | semmle.label | this : Box2 [field Box1, field Elem] : Elem | | G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | semmle.label | this : Box2 [field Box1, field Elem] : Elem | | G.cs:71:34:71:37 | access to field Box1 : Box1 [field Elem] : Elem | semmle.label | access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:71:34:71:37 | access to field Box1 : Box1 [field Elem] : Elem | semmle.label | access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | semmle.label | this access : Box2 [field Box1, field Elem] : Elem | | G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | semmle.label | this access : Box2 [field Box1, field Elem] : Elem | | H.cs:13:15:13:15 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | +| H.cs:13:15:13:15 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | +| H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | semmle.label | [post] access to local variable ret : A [field FieldA] : Object | | H.cs:16:9:16:11 | [post] access to local variable ret : A [field FieldA] : Object | semmle.label | [post] access to local variable ret : A [field FieldA] : Object | | H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | +| H.cs:16:22:16:22 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | +| H.cs:16:22:16:29 | access to field FieldA : Object | semmle.label | access to field FieldA : Object | | H.cs:16:22:16:29 | access to field FieldA : Object | semmle.label | access to field FieldA : Object | | H.cs:17:16:17:18 | access to local variable ret : A [field FieldA] : Object | semmle.label | access to local variable ret : A [field FieldA] : Object | +| H.cs:17:16:17:18 | access to local variable ret : A [field FieldA] : Object | semmle.label | access to local variable ret : A [field FieldA] : Object | +| H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | | H.cs:23:9:23:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | | H.cs:23:20:23:36 | call to method Source : Object | semmle.label | call to method Source : Object | +| H.cs:23:20:23:36 | call to method Source : Object | semmle.label | call to method Source : Object | +| H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | semmle.label | call to method Clone : A [field FieldA] : Object | | H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | semmle.label | call to method Clone : A [field FieldA] : Object | | H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | +| H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | +| H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | semmle.label | access to local variable clone : A [field FieldA] : Object | | H.cs:25:14:25:18 | access to local variable clone : A [field FieldA] : Object | semmle.label | access to local variable clone : A [field FieldA] : Object | | H.cs:25:14:25:25 | access to field FieldA | semmle.label | access to field FieldA | +| H.cs:25:14:25:25 | access to field FieldA | semmle.label | access to field FieldA | +| H.cs:33:19:33:19 | a : A [field FieldA] : A | semmle.label | a : A [field FieldA] : A | | H.cs:33:19:33:19 | a : A [field FieldA] : A | semmle.label | a : A [field FieldA] : A | | H.cs:33:19:33:19 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | +| H.cs:33:19:33:19 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | +| H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | semmle.label | [post] access to local variable b : B [field FieldB] : A | | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : A | semmle.label | [post] access to local variable b : B [field FieldB] : A | | H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | semmle.label | [post] access to local variable b : B [field FieldB] : Object | +| H.cs:36:9:36:9 | [post] access to local variable b : B [field FieldB] : Object | semmle.label | [post] access to local variable b : B [field FieldB] : Object | +| H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | semmle.label | access to parameter a : A [field FieldA] : A | | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : A | semmle.label | access to parameter a : A [field FieldA] : A | | H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | +| H.cs:36:20:36:20 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | +| H.cs:36:20:36:27 | access to field FieldA : A | semmle.label | access to field FieldA : A | | H.cs:36:20:36:27 | access to field FieldA : A | semmle.label | access to field FieldA : A | | H.cs:36:20:36:27 | access to field FieldA : Object | semmle.label | access to field FieldA : Object | +| H.cs:36:20:36:27 | access to field FieldA : Object | semmle.label | access to field FieldA : Object | +| H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : A | semmle.label | access to local variable b : B [field FieldB] : A | | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : A | semmle.label | access to local variable b : B [field FieldB] : A | | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | +| H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | +| H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | | H.cs:43:9:43:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | | H.cs:43:20:43:36 | call to method Source : Object | semmle.label | call to method Source : Object | +| H.cs:43:20:43:36 | call to method Source : Object | semmle.label | call to method Source : Object | +| H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | semmle.label | call to method Transform : B [field FieldB] : Object | | H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | semmle.label | call to method Transform : B [field FieldB] : Object | | H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | +| H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | +| H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | | H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | | H.cs:45:14:45:21 | access to field FieldB | semmle.label | access to field FieldB | +| H.cs:45:14:45:21 | access to field FieldB | semmle.label | access to field FieldB | +| H.cs:53:25:53:25 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | | H.cs:53:25:53:25 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | semmle.label | [post] access to parameter b1 : B [field FieldB] : Object | +| H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | semmle.label | [post] access to parameter b1 : B [field FieldB] : Object | +| H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | | H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | | H.cs:55:21:55:28 | access to field FieldA : Object | semmle.label | access to field FieldA : Object | +| H.cs:55:21:55:28 | access to field FieldA : Object | semmle.label | access to field FieldA : Object | +| H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | | H.cs:63:9:63:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | | H.cs:63:20:63:36 | call to method Source : Object | semmle.label | call to method Source : Object | +| H.cs:63:20:63:36 | call to method Source : Object | semmle.label | call to method Source : Object | +| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | | H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | semmle.label | [post] access to local variable b1 : B [field FieldB] : Object | +| H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | semmle.label | [post] access to local variable b1 : B [field FieldB] : Object | +| H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | semmle.label | access to local variable b1 : B [field FieldB] : Object | | H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | semmle.label | access to local variable b1 : B [field FieldB] : Object | | H.cs:65:14:65:22 | access to field FieldB | semmle.label | access to field FieldB | +| H.cs:65:14:65:22 | access to field FieldB | semmle.label | access to field FieldB | +| H.cs:77:30:77:30 | o : Object | semmle.label | o : Object | | H.cs:77:30:77:30 | o : Object | semmle.label | o : Object | | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | semmle.label | [post] access to parameter a : A [field FieldA] : Object | +| H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | semmle.label | [post] access to parameter a : A [field FieldA] : Object | +| H.cs:79:20:79:20 | access to parameter o : Object | semmle.label | access to parameter o : Object | | H.cs:79:20:79:20 | access to parameter o : Object | semmle.label | access to parameter o : Object | | H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | +| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | +| H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | semmle.label | [post] access to parameter b1 : B [field FieldB] : Object | | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | semmle.label | [post] access to parameter b1 : B [field FieldB] : Object | | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:88:20:88:36 | call to method Source : Object | semmle.label | call to method Source : Object | | H.cs:88:20:88:36 | call to method Source : Object | semmle.label | call to method Source : Object | | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | semmle.label | [post] access to local variable b1 : B [field FieldB] : Object | +| H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | semmle.label | [post] access to local variable b1 : B [field FieldB] : Object | +| H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | | H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | | H.cs:89:14:89:21 | access to field FieldA | semmle.label | access to field FieldA | +| H.cs:89:14:89:21 | access to field FieldA | semmle.label | access to field FieldA | +| H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | semmle.label | access to local variable b1 : B [field FieldB] : Object | | H.cs:90:14:90:15 | access to local variable b1 : B [field FieldB] : Object | semmle.label | access to local variable b1 : B [field FieldB] : Object | | H.cs:90:14:90:22 | access to field FieldB | semmle.label | access to field FieldB | +| H.cs:90:14:90:22 | access to field FieldB | semmle.label | access to field FieldB | +| H.cs:102:23:102:23 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | | H.cs:102:23:102:23 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | | H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | semmle.label | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | +| H.cs:105:9:105:12 | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | semmle.label | [post] access to local variable temp : B [field FieldB, field FieldA] : Object | +| H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | | H.cs:105:23:105:23 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | semmle.label | call to method Transform : B [field FieldB] : Object | +| H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | semmle.label | call to method Transform : B [field FieldB] : Object | +| H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | semmle.label | (...) ... : A [field FieldA] : Object | | H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | semmle.label | (...) ... : A [field FieldA] : Object | | H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | semmle.label | access to local variable temp : B [field FieldB, field FieldA] : Object | +| H.cs:106:29:106:32 | access to local variable temp : B [field FieldB, field FieldA] : Object | semmle.label | access to local variable temp : B [field FieldB, field FieldA] : Object | +| H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | semmle.label | access to field FieldB : A [field FieldA] : Object | | H.cs:106:29:106:39 | access to field FieldB : A [field FieldA] : Object | semmle.label | access to field FieldB : A [field FieldA] : Object | | H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:112:9:112:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:112:20:112:36 | call to method Source : Object | semmle.label | call to method Source : Object | | H.cs:112:20:112:36 | call to method Source : Object | semmle.label | call to method Source : Object | | H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | semmle.label | call to method TransformWrap : B [field FieldB] : Object | +| H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | semmle.label | call to method TransformWrap : B [field FieldB] : Object | +| H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | | H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | | H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | +| H.cs:114:14:114:14 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | +| H.cs:114:14:114:21 | access to field FieldB | semmle.label | access to field FieldB | | H.cs:114:14:114:21 | access to field FieldB | semmle.label | access to field FieldB | | H.cs:122:18:122:18 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | +| H.cs:122:18:122:18 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object | +| H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | semmle.label | call to method Transform : B [field FieldB] : Object | | H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | semmle.label | call to method Transform : B [field FieldB] : Object | | H.cs:124:16:124:34 | access to field FieldB : Object | semmle.label | access to field FieldB : Object | +| H.cs:124:16:124:34 | access to field FieldB : Object | semmle.label | access to field FieldB : Object | +| H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | | H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object | | H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:130:9:130:9 | [post] access to local variable a : A [field FieldA] : Object | semmle.label | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:130:20:130:36 | call to method Source : Object | semmle.label | call to method Source : Object | | H.cs:130:20:130:36 | call to method Source : Object | semmle.label | call to method Source : Object | | H.cs:131:14:131:19 | call to method Get | semmle.label | call to method Get | +| H.cs:131:14:131:19 | call to method Get | semmle.label | call to method Get | +| H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | | H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | semmle.label | access to local variable a : A [field FieldA] : Object | | H.cs:138:27:138:27 | o : A | semmle.label | o : A | +| H.cs:138:27:138:27 | o : A | semmle.label | o : A | +| H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | semmle.label | [post] access to local variable a : A [field FieldA] : A | | H.cs:141:9:141:9 | [post] access to local variable a : A [field FieldA] : A | semmle.label | [post] access to local variable a : A [field FieldA] : A | | H.cs:141:20:141:25 | ... as ... : A | semmle.label | ... as ... : A | +| H.cs:141:20:141:25 | ... as ... : A | semmle.label | ... as ... : A | +| H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | semmle.label | call to method Transform : B [field FieldB] : A | | H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | semmle.label | call to method Transform : B [field FieldB] : A | | H.cs:142:16:142:34 | access to field FieldB : A | semmle.label | access to field FieldB : A | +| H.cs:142:16:142:34 | access to field FieldB : A | semmle.label | access to field FieldB : A | +| H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | semmle.label | access to local variable a : A [field FieldA] : A | | H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | semmle.label | access to local variable a : A [field FieldA] : A | | H.cs:147:17:147:39 | call to method Through : A | semmle.label | call to method Through : A | +| H.cs:147:17:147:39 | call to method Through : A | semmle.label | call to method Through : A | +| H.cs:147:25:147:38 | call to method Source : A | semmle.label | call to method Source : A | | H.cs:147:25:147:38 | call to method Source : A | semmle.label | call to method Source : A | | H.cs:148:14:148:14 | access to local variable a | semmle.label | access to local variable a | +| H.cs:148:14:148:14 | access to local variable a | semmle.label | access to local variable a | +| H.cs:153:32:153:32 | o : Object | semmle.label | o : Object | | H.cs:153:32:153:32 | o : Object | semmle.label | o : Object | | H.cs:155:17:155:30 | call to method Source : B | semmle.label | call to method Source : B | +| H.cs:155:17:155:30 | call to method Source : B | semmle.label | call to method Source : B | +| H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | semmle.label | [post] access to local variable b : B [field FieldB] : Object | | H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | semmle.label | [post] access to local variable b : B [field FieldB] : Object | | H.cs:156:9:156:9 | access to local variable b : B | semmle.label | access to local variable b : B | +| H.cs:156:9:156:9 | access to local variable b : B | semmle.label | access to local variable b : B | +| H.cs:156:20:156:20 | access to parameter o : Object | semmle.label | access to parameter o : Object | | H.cs:156:20:156:20 | access to parameter o : Object | semmle.label | access to parameter o : Object | | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | semmle.label | [post] access to parameter a : A [field FieldA, field FieldB] : Object | +| H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | semmle.label | [post] access to parameter a : A [field FieldA, field FieldB] : Object | +| H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | semmle.label | [post] access to parameter a : A [field FieldA] : B | | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | semmle.label | [post] access to parameter a : A [field FieldA] : B | | H.cs:157:20:157:20 | access to local variable b : B | semmle.label | access to local variable b : B | +| H.cs:157:20:157:20 | access to local variable b : B | semmle.label | access to local variable b : B | +| H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | | H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | | H.cs:163:17:163:35 | call to method Source : Object | semmle.label | call to method Source : Object | +| H.cs:163:17:163:35 | call to method Source : Object | semmle.label | call to method Source : Object | +| H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | semmle.label | [post] access to local variable a : A [field FieldA, field FieldB] : Object | | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | semmle.label | [post] access to local variable a : A [field FieldA, field FieldB] : Object | | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | semmle.label | [post] access to local variable a : A [field FieldA] : B | +| H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | semmle.label | [post] access to local variable a : A [field FieldA] : B | +| H.cs:164:22:164:22 | access to local variable o : Object | semmle.label | access to local variable o : Object | | H.cs:164:22:164:22 | access to local variable o : Object | semmle.label | access to local variable o : Object | | H.cs:165:17:165:27 | (...) ... : B | semmle.label | (...) ... : B | +| H.cs:165:17:165:27 | (...) ... : B | semmle.label | (...) ... : B | +| H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | semmle.label | (...) ... : B [field FieldB] : Object | | H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | semmle.label | (...) ... : B [field FieldB] : Object | | H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | semmle.label | access to local variable a : A [field FieldA, field FieldB] : Object | +| H.cs:165:20:165:20 | access to local variable a : A [field FieldA, field FieldB] : Object | semmle.label | access to local variable a : A [field FieldA, field FieldB] : Object | +| H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | semmle.label | access to local variable a : A [field FieldA] : B | | H.cs:165:20:165:20 | access to local variable a : A [field FieldA] : B | semmle.label | access to local variable a : A [field FieldA] : B | | H.cs:165:20:165:27 | access to field FieldA : B | semmle.label | access to field FieldA : B | +| H.cs:165:20:165:27 | access to field FieldA : B | semmle.label | access to field FieldA : B | +| H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | semmle.label | access to field FieldA : B [field FieldB] : Object | | H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | semmle.label | access to field FieldA : B [field FieldB] : Object | | H.cs:166:14:166:14 | access to local variable b | semmle.label | access to local variable b | +| H.cs:166:14:166:14 | access to local variable b | semmle.label | access to local variable b | +| H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | | H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object | | H.cs:167:14:167:21 | access to field FieldB | semmle.label | access to field FieldB | +| H.cs:167:14:167:21 | access to field FieldB | semmle.label | access to field FieldB | +| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | semmle.label | [post] this access : I [field Field1] : Object | | I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | semmle.label | [post] this access : I [field Field1] : Object | | I.cs:7:18:7:34 | call to method Source : Object | semmle.label | call to method Source : Object | +| I.cs:7:18:7:34 | call to method Source : Object | semmle.label | call to method Source : Object | +| I.cs:13:17:13:33 | call to method Source : Object | semmle.label | call to method Source : Object | | I.cs:13:17:13:33 | call to method Source : Object | semmle.label | call to method Source : Object | | I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | semmle.label | [post] access to local variable i : I [field Field1] : Object | +| I.cs:15:9:15:9 | [post] access to local variable i : I [field Field1] : Object | semmle.label | [post] access to local variable i : I [field Field1] : Object | +| I.cs:15:20:15:20 | access to local variable o : Object | semmle.label | access to local variable o : Object | | I.cs:15:20:15:20 | access to local variable o : Object | semmle.label | access to local variable o : Object | | I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | +| I.cs:16:9:16:9 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | +| I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | | I.cs:17:9:17:9 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | | I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | +| I.cs:18:14:18:14 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | +| I.cs:18:14:18:21 | access to field Field1 | semmle.label | access to field Field1 | | I.cs:18:14:18:21 | access to field Field1 | semmle.label | access to field Field1 | | I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | semmle.label | object creation of type I : I [field Field1] : Object | +| I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | semmle.label | object creation of type I : I [field Field1] : Object | +| I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | | I.cs:22:9:22:9 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | | I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | +| I.cs:23:14:23:14 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | +| I.cs:23:14:23:21 | access to field Field1 | semmle.label | access to field Field1 | | I.cs:23:14:23:21 | access to field Field1 | semmle.label | access to field Field1 | | I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | semmle.label | [pre-initializer] object creation of type I : I [field Field1] : Object | +| I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | semmle.label | [pre-initializer] object creation of type I : I [field Field1] : Object | +| I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | | I.cs:27:14:27:14 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | | I.cs:27:14:27:21 | access to field Field1 | semmle.label | access to field Field1 | +| I.cs:27:14:27:21 | access to field Field1 | semmle.label | access to field Field1 | +| I.cs:31:13:31:29 | call to method Source : Object | semmle.label | call to method Source : Object | | I.cs:31:13:31:29 | call to method Source : Object | semmle.label | call to method Source : Object | | I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | semmle.label | [post] access to local variable i : I [field Field1] : Object | +| I.cs:32:9:32:9 | [post] access to local variable i : I [field Field1] : Object | semmle.label | [post] access to local variable i : I [field Field1] : Object | +| I.cs:32:20:32:20 | access to local variable o : Object | semmle.label | access to local variable o : Object | | I.cs:32:20:32:20 | access to local variable o : Object | semmle.label | access to local variable o : Object | | I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | +| I.cs:33:9:33:9 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | +| I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | | I.cs:34:12:34:12 | access to local variable i : I [field Field1] : Object | semmle.label | access to local variable i : I [field Field1] : Object | | I.cs:37:23:37:23 | i : I [field Field1] : Object | semmle.label | i : I [field Field1] : Object | +| I.cs:37:23:37:23 | i : I [field Field1] : Object | semmle.label | i : I [field Field1] : Object | +| I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | semmle.label | access to parameter i : I [field Field1] : Object | | I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | semmle.label | access to parameter i : I [field Field1] : Object | | I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | semmle.label | access to parameter i : I [field Field1] : Object | +| I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | semmle.label | access to parameter i : I [field Field1] : Object | +| I.cs:40:14:40:21 | access to field Field1 | semmle.label | access to field Field1 | | I.cs:40:14:40:21 | access to field Field1 | semmle.label | access to field Field1 | | J.cs:14:26:14:30 | field : Object | semmle.label | field : Object | +| J.cs:14:26:14:30 | field : Object | semmle.label | field : Object | +| J.cs:14:40:14:43 | prop : Object | semmle.label | prop : Object | | J.cs:14:40:14:43 | prop : Object | semmle.label | prop : Object | | J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | semmle.label | [post] this access : Struct [field Field] : Object | +| J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | semmle.label | [post] this access : Struct [field Field] : Object | +| J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | semmle.label | [post] this access : Struct [property Prop] : Object | | J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | semmle.label | [post] this access : Struct [property Prop] : Object | | J.cs:14:66:14:70 | access to parameter field : Object | semmle.label | access to parameter field : Object | +| J.cs:14:66:14:70 | access to parameter field : Object | semmle.label | access to parameter field : Object | +| J.cs:14:73:14:76 | access to parameter prop : Object | semmle.label | access to parameter prop : Object | | J.cs:14:73:14:76 | access to parameter prop : Object | semmle.label | access to parameter prop : Object | | J.cs:21:17:21:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:21:17:21:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | semmle.label | object creation of type RecordClass : RecordClass [property Prop1] : Object | | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object | semmle.label | object creation of type RecordClass : RecordClass [property Prop1] : Object | | J.cs:22:34:22:34 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| J.cs:22:34:22:34 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | semmle.label | access to local variable r1 : RecordClass [property Prop1] : Object | | J.cs:23:14:23:15 | access to local variable r1 : RecordClass [property Prop1] : Object | semmle.label | access to local variable r1 : RecordClass [property Prop1] : Object | | J.cs:23:14:23:21 | access to property Prop1 | semmle.label | access to property Prop1 | +| J.cs:23:14:23:21 | access to property Prop1 | semmle.label | access to property Prop1 | +| J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | semmle.label | access to local variable r2 : RecordClass [property Prop1] : Object | | J.cs:27:14:27:15 | access to local variable r2 : RecordClass [property Prop1] : Object | semmle.label | access to local variable r2 : RecordClass [property Prop1] : Object | | J.cs:27:14:27:21 | access to property Prop1 | semmle.label | access to property Prop1 | +| J.cs:27:14:27:21 | access to property Prop1 | semmle.label | access to property Prop1 | +| J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | semmle.label | ... with { ... } : RecordClass [property Prop2] : Object | | J.cs:30:18:30:54 | ... with { ... } : RecordClass [property Prop2] : Object | semmle.label | ... with { ... } : RecordClass [property Prop2] : Object | | J.cs:30:36:30:52 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:30:36:30:52 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | semmle.label | access to local variable r3 : RecordClass [property Prop1] : Object | | J.cs:31:14:31:15 | access to local variable r3 : RecordClass [property Prop1] : Object | semmle.label | access to local variable r3 : RecordClass [property Prop1] : Object | | J.cs:31:14:31:21 | access to property Prop1 | semmle.label | access to property Prop1 | +| J.cs:31:14:31:21 | access to property Prop1 | semmle.label | access to property Prop1 | +| J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | semmle.label | access to local variable r3 : RecordClass [property Prop2] : Object | | J.cs:32:14:32:15 | access to local variable r3 : RecordClass [property Prop2] : Object | semmle.label | access to local variable r3 : RecordClass [property Prop2] : Object | | J.cs:32:14:32:21 | access to property Prop2 | semmle.label | access to property Prop2 | +| J.cs:32:14:32:21 | access to property Prop2 | semmle.label | access to property Prop2 | +| J.cs:41:17:41:33 | call to method Source : Object | semmle.label | call to method Source : Object | | J.cs:41:17:41:33 | call to method Source : Object | semmle.label | call to method Source : Object | | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | semmle.label | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | +| J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | semmle.label | object creation of type RecordStruct : RecordStruct [property Prop1] : Object | +| J.cs:42:35:42:35 | access to local variable o : Object | semmle.label | access to local variable o : Object | | J.cs:42:35:42:35 | access to local variable o : Object | semmle.label | access to local variable o : Object | | J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | semmle.label | access to local variable r1 : RecordStruct [property Prop1] : Object | +| J.cs:43:14:43:15 | access to local variable r1 : RecordStruct [property Prop1] : Object | semmle.label | access to local variable r1 : RecordStruct [property Prop1] : Object | +| J.cs:43:14:43:21 | access to property Prop1 | semmle.label | access to property Prop1 | | J.cs:43:14:43:21 | access to property Prop1 | semmle.label | access to property Prop1 | | J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | semmle.label | access to local variable r2 : RecordStruct [property Prop1] : Object | +| J.cs:47:14:47:15 | access to local variable r2 : RecordStruct [property Prop1] : Object | semmle.label | access to local variable r2 : RecordStruct [property Prop1] : Object | +| J.cs:47:14:47:21 | access to property Prop1 | semmle.label | access to property Prop1 | | J.cs:47:14:47:21 | access to property Prop1 | semmle.label | access to property Prop1 | | J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | semmle.label | ... with { ... } : RecordStruct [property Prop2] : Object | +| J.cs:50:18:50:54 | ... with { ... } : RecordStruct [property Prop2] : Object | semmle.label | ... with { ... } : RecordStruct [property Prop2] : Object | +| J.cs:50:36:50:52 | call to method Source : Object | semmle.label | call to method Source : Object | | J.cs:50:36:50:52 | call to method Source : Object | semmle.label | call to method Source : Object | | J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | semmle.label | access to local variable r3 : RecordStruct [property Prop1] : Object | +| J.cs:51:14:51:15 | access to local variable r3 : RecordStruct [property Prop1] : Object | semmle.label | access to local variable r3 : RecordStruct [property Prop1] : Object | +| J.cs:51:14:51:21 | access to property Prop1 | semmle.label | access to property Prop1 | | J.cs:51:14:51:21 | access to property Prop1 | semmle.label | access to property Prop1 | | J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | semmle.label | access to local variable r3 : RecordStruct [property Prop2] : Object | +| J.cs:52:14:52:15 | access to local variable r3 : RecordStruct [property Prop2] : Object | semmle.label | access to local variable r3 : RecordStruct [property Prop2] : Object | +| J.cs:52:14:52:21 | access to property Prop2 | semmle.label | access to property Prop2 | | J.cs:52:14:52:21 | access to property Prop2 | semmle.label | access to property Prop2 | | J.cs:61:17:61:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:61:17:61:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | semmle.label | object creation of type Struct : Struct [field Field] : Object | | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | semmle.label | object creation of type Struct : Struct [field Field] : Object | | J.cs:62:29:62:29 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| J.cs:62:29:62:29 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | semmle.label | access to local variable s2 : Struct [field Field] : Object | | J.cs:65:14:65:15 | access to local variable s2 : Struct [field Field] : Object | semmle.label | access to local variable s2 : Struct [field Field] : Object | | J.cs:65:14:65:21 | access to field Field | semmle.label | access to field Field | +| J.cs:65:14:65:21 | access to field Field | semmle.label | access to field Field | +| J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | semmle.label | ... with { ... } : Struct [property Prop] : Object | | J.cs:68:18:68:53 | ... with { ... } : Struct [property Prop] : Object | semmle.label | ... with { ... } : Struct [property Prop] : Object | | J.cs:68:35:68:51 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:68:35:68:51 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | semmle.label | access to local variable s3 : Struct [field Field] : Object | | J.cs:69:14:69:15 | access to local variable s3 : Struct [field Field] : Object | semmle.label | access to local variable s3 : Struct [field Field] : Object | | J.cs:69:14:69:21 | access to field Field | semmle.label | access to field Field | +| J.cs:69:14:69:21 | access to field Field | semmle.label | access to field Field | +| J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | semmle.label | access to local variable s3 : Struct [property Prop] : Object | | J.cs:70:14:70:15 | access to local variable s3 : Struct [property Prop] : Object | semmle.label | access to local variable s3 : Struct [property Prop] : Object | | J.cs:70:14:70:20 | access to property Prop | semmle.label | access to property Prop | +| J.cs:70:14:70:20 | access to property Prop | semmle.label | access to property Prop | +| J.cs:79:17:79:33 | call to method Source : Object | semmle.label | call to method Source : Object | | J.cs:79:17:79:33 | call to method Source : Object | semmle.label | call to method Source : Object | | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | semmle.label | object creation of type Struct : Struct [property Prop] : Object | +| J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | semmle.label | object creation of type Struct : Struct [property Prop] : Object | +| J.cs:80:35:80:35 | access to local variable o : Object | semmle.label | access to local variable o : Object | | J.cs:80:35:80:35 | access to local variable o : Object | semmle.label | access to local variable o : Object | | J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | semmle.label | access to local variable s2 : Struct [property Prop] : Object | +| J.cs:84:14:84:15 | access to local variable s2 : Struct [property Prop] : Object | semmle.label | access to local variable s2 : Struct [property Prop] : Object | +| J.cs:84:14:84:20 | access to property Prop | semmle.label | access to property Prop | | J.cs:84:14:84:20 | access to property Prop | semmle.label | access to property Prop | | J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | semmle.label | ... with { ... } : Struct [field Field] : Object | +| J.cs:86:18:86:54 | ... with { ... } : Struct [field Field] : Object | semmle.label | ... with { ... } : Struct [field Field] : Object | +| J.cs:86:36:86:52 | call to method Source : Object | semmle.label | call to method Source : Object | | J.cs:86:36:86:52 | call to method Source : Object | semmle.label | call to method Source : Object | | J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | semmle.label | access to local variable s3 : Struct [field Field] : Object | +| J.cs:87:14:87:15 | access to local variable s3 : Struct [field Field] : Object | semmle.label | access to local variable s3 : Struct [field Field] : Object | +| J.cs:87:14:87:21 | access to field Field | semmle.label | access to field Field | | J.cs:87:14:87:21 | access to field Field | semmle.label | access to field Field | | J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | semmle.label | access to local variable s3 : Struct [property Prop] : Object | +| J.cs:88:14:88:15 | access to local variable s3 : Struct [property Prop] : Object | semmle.label | access to local variable s3 : Struct [property Prop] : Object | +| J.cs:88:14:88:20 | access to property Prop | semmle.label | access to property Prop | | J.cs:88:14:88:20 | access to property Prop | semmle.label | access to property Prop | | J.cs:97:17:97:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:97:17:97:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | semmle.label | { ..., ... } : <>__AnonType0 [property X] : Object | | J.cs:99:18:99:41 | { ..., ... } : <>__AnonType0 [property X] : Object | semmle.label | { ..., ... } : <>__AnonType0 [property X] : Object | | J.cs:99:28:99:28 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| J.cs:99:28:99:28 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | semmle.label | access to local variable a2 : <>__AnonType0 [property X] : Object | | J.cs:102:14:102:15 | access to local variable a2 : <>__AnonType0 [property X] : Object | semmle.label | access to local variable a2 : <>__AnonType0 [property X] : Object | | J.cs:102:14:102:17 | access to property X | semmle.label | access to property X | +| J.cs:102:14:102:17 | access to property X | semmle.label | access to property X | +| J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | semmle.label | ... with { ... } : <>__AnonType0 [property Y] : Object | | J.cs:105:18:105:50 | ... with { ... } : <>__AnonType0 [property Y] : Object | semmle.label | ... with { ... } : <>__AnonType0 [property Y] : Object | | J.cs:105:32:105:48 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:105:32:105:48 | call to method Source : Object | semmle.label | call to method Source : Object | +| J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | semmle.label | access to local variable a3 : <>__AnonType0 [property X] : Object | | J.cs:106:14:106:15 | access to local variable a3 : <>__AnonType0 [property X] : Object | semmle.label | access to local variable a3 : <>__AnonType0 [property X] : Object | | J.cs:106:14:106:17 | access to property X | semmle.label | access to property X | +| J.cs:106:14:106:17 | access to property X | semmle.label | access to property X | +| J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | semmle.label | access to local variable a3 : <>__AnonType0 [property Y] : Object | | J.cs:107:14:107:15 | access to local variable a3 : <>__AnonType0 [property Y] : Object | semmle.label | access to local variable a3 : <>__AnonType0 [property Y] : Object | | J.cs:107:14:107:17 | access to property Y | semmle.label | access to property Y | +| J.cs:107:14:107:17 | access to property Y | semmle.label | access to property Y | +| J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | semmle.label | [post] access to local variable a : Int32[] [element] : Int32 | | J.cs:119:13:119:13 | [post] access to local variable a : Int32[] [element] : Int32 | semmle.label | [post] access to local variable a : Int32[] [element] : Int32 | | J.cs:119:20:119:34 | call to method Source : Int32 | semmle.label | call to method Source : Int32 | +| J.cs:119:20:119:34 | call to method Source : Int32 | semmle.label | call to method Source : Int32 | +| J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | semmle.label | access to local variable a : Int32[] [element] : Int32 | | J.cs:125:14:125:14 | access to local variable a : Int32[] [element] : Int32 | semmle.label | access to local variable a : Int32[] [element] : Int32 | | J.cs:125:14:125:17 | (...) ... | semmle.label | (...) ... | +| J.cs:125:14:125:17 | (...) ... | semmle.label | (...) ... | +| J.cs:125:14:125:17 | access to array element : Int32 | semmle.label | access to array element : Int32 | | J.cs:125:14:125:17 | access to array element : Int32 | semmle.label | access to array element : Int32 | subpaths | A.cs:6:24:6:24 | access to local variable c : C | A.cs:147:32:147:32 | c : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | A.cs:6:17:6:25 | call to method Make : B [field c] : C | +| A.cs:6:24:6:24 | access to local variable c : C | A.cs:147:32:147:32 | c : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | A.cs:6:17:6:25 | call to method Make : B [field c] : C | +| A.cs:13:15:13:29 | call to method Source : C1 | A.cs:145:27:145:27 | c : C1 | A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | | A.cs:13:15:13:29 | call to method Source : C1 | A.cs:145:27:145:27 | c : C1 | A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 | | A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:146:18:146:20 | this : B [field c] : C1 | A.cs:146:33:146:38 | access to field c : C1 | A.cs:14:14:14:20 | call to method Get | +| A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:146:18:146:20 | this : B [field c] : C1 | A.cs:146:33:146:38 | access to field c : C1 | A.cs:14:14:14:20 | call to method Get | +| A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:146:18:146:20 | this : B [field c] : C | A.cs:146:33:146:38 | access to field c : C | A.cs:15:14:15:42 | call to method Get | | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:146:18:146:20 | this : B [field c] : C | A.cs:146:33:146:38 | access to field c : C | A.cs:15:14:15:42 | call to method Get | | A.cs:15:21:15:34 | call to method Source : C | A.cs:141:20:141:20 | c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | +| A.cs:15:21:15:34 | call to method Source : C | A.cs:141:20:141:20 | c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | A.cs:15:15:15:35 | object creation of type B : B [field c] : C | +| A.cs:22:25:22:37 | call to method Source : C2 | A.cs:42:29:42:29 | c : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | | A.cs:22:25:22:37 | call to method Source : C2 | A.cs:42:29:42:29 | c : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 | | A.cs:31:29:31:41 | call to method Source : C2 | A.cs:36:33:36:33 | c : C2 | A.cs:39:16:39:28 | ... ? ... : ... : B [field c] : C2 | A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | +| A.cs:31:29:31:41 | call to method Source : C2 | A.cs:36:33:36:33 | c : C2 | A.cs:39:16:39:28 | ... ? ... : ... : B [field c] : C2 | A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 | +| A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:42:29:42:29 | c : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | | A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:42:29:42:29 | c : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 | | A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:145:27:145:27 | c : C2 | A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | +| A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:145:27:145:27 | c : C2 | A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 | +| A.cs:83:15:83:26 | call to method Source : C | A.cs:145:27:145:27 | c : C | A.cs:145:32:145:35 | [post] this access : B [field c] : C | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | | A.cs:83:15:83:26 | call to method Source : C | A.cs:145:27:145:27 | c : C | A.cs:145:32:145:35 | [post] this access : B [field c] : C | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | | A.cs:105:23:105:23 | access to local variable b : B | A.cs:95:20:95:20 | b : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | +| A.cs:105:23:105:23 | access to local variable b : B | A.cs:95:20:95:20 | b : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | +| A.cs:114:29:114:29 | access to local variable b : B | A.cs:157:25:157:28 | head : B | A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | | A.cs:114:29:114:29 | access to local variable b : B | A.cs:157:25:157:28 | head : B | A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B | | A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:157:38:157:41 | next : MyList [field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | +| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:157:38:157:41 | next : MyList [field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B | +| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | | A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B | | A.cs:149:26:149:26 | access to parameter c : C | A.cs:141:20:141:20 | c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | +| A.cs:149:26:149:26 | access to parameter c : C | A.cs:141:20:141:20 | c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | +| B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:29:26:29:27 | e1 : Elem | B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | | B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:29:26:29:27 | e1 : Elem | B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem | | B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | +| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem | +| B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:29:35:29:36 | e2 : Elem | B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | | B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:29:35:29:36 | e2 : Elem | B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem | | B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | +| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem | +| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:9:9:9:11 | value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | | D.cs:15:34:15:38 | access to parameter value : Object | D.cs:9:9:9:11 | value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | | D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:9:9:9:11 | value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | +| D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:9:9:9:11 | value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object | +| D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:15:9:15:11 | value : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | | D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:15:9:15:11 | value : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object | | D.cs:31:24:31:24 | access to local variable o : Object | D.cs:18:28:18:29 | o1 : Object | D.cs:24:16:24:18 | access to local variable ret : D [property AutoProp] : Object | D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | +| D.cs:31:24:31:24 | access to local variable o : Object | D.cs:18:28:18:29 | o1 : Object | D.cs:24:16:24:18 | access to local variable ret : D [property AutoProp] : Object | D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object | +| D.cs:37:26:37:42 | call to method Source : Object | D.cs:18:39:18:40 | o2 : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | | D.cs:37:26:37:42 | call to method Source : Object | D.cs:18:39:18:40 | o2 : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object | | D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | D.cs:8:22:8:42 | access to field trivialPropField : Object | D.cs:39:14:39:26 | access to property TrivialProp | +| D.cs:39:14:39:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | D.cs:8:22:8:42 | access to field trivialPropField : Object | D.cs:39:14:39:26 | access to property TrivialProp | +| D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | D.cs:14:22:14:42 | access to field trivialPropField : Object | D.cs:41:14:41:26 | access to property ComplexProp | | D.cs:41:14:41:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | D.cs:14:22:14:42 | access to field trivialPropField : Object | D.cs:41:14:41:26 | access to property ComplexProp | | D.cs:43:32:43:48 | call to method Source : Object | D.cs:18:50:18:51 | o3 : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | +| D.cs:43:32:43:48 | call to method Source : Object | D.cs:18:50:18:51 | o3 : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | D.cs:43:13:43:49 | call to method Create : D [field trivialPropField] : Object | +| D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | D.cs:8:22:8:42 | access to field trivialPropField : Object | D.cs:45:14:45:26 | access to property TrivialProp | | D.cs:45:14:45:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:8:9:8:11 | this : D [field trivialPropField] : Object | D.cs:8:22:8:42 | access to field trivialPropField : Object | D.cs:45:14:45:26 | access to property TrivialProp | | D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | D.cs:14:22:14:42 | access to field trivialPropField : Object | D.cs:47:14:47:26 | access to property ComplexProp | +| D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | D.cs:14:22:14:42 | access to field trivialPropField : Object | D.cs:47:14:47:26 | access to property ComplexProp | +| E.cs:23:25:23:25 | access to local variable o : Object | E.cs:8:29:8:29 | o : Object | E.cs:12:16:12:18 | access to local variable ret : S [field Field] : Object | E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | | E.cs:23:25:23:25 | access to local variable o : Object | E.cs:8:29:8:29 | o : Object | E.cs:12:16:12:18 | access to local variable ret : S [field Field] : Object | E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object | | F.cs:11:24:11:24 | access to local variable o : Object | F.cs:6:28:6:29 | o1 : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field1] : Object | F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | +| F.cs:11:24:11:24 | access to local variable o : Object | F.cs:6:28:6:29 | o1 : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field1] : Object | F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object | +| F.cs:15:26:15:42 | call to method Source : Object | F.cs:6:39:6:40 | o2 : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field2] : Object | F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | | F.cs:15:26:15:42 | call to method Source : Object | F.cs:6:39:6:40 | o2 : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field2] : Object | F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object | | G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem | +| G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | | G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem | | G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | access to field Box1 : Box1 [field Elem] : Elem | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | access to field Box1 : Box1 [field Elem] : Elem | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | +| G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | access to field Elem : Elem | G.cs:39:14:39:35 | call to method GetElem | | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | access to field Elem : Elem | G.cs:39:14:39:35 | call to method GetElem | | H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:13:15:13:15 | a : A [field FieldA] : Object | H.cs:17:16:17:18 | access to local variable ret : A [field FieldA] : Object | H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | +| H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:13:15:13:15 | a : A [field FieldA] : Object | H.cs:17:16:17:18 | access to local variable ret : A [field FieldA] : Object | H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object | +| H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | | H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object | | H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | +| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object | +| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | | H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | | H.cs:88:20:88:36 | call to method Source : Object | H.cs:77:30:77:30 | o : Object | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:88:20:88:36 | call to method Source : Object | H.cs:77:30:77:30 | o : Object | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | +| H.cs:88:20:88:36 | call to method Source : Object | H.cs:77:30:77:30 | o : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | | H.cs:88:20:88:36 | call to method Source : Object | H.cs:77:30:77:30 | o : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object | | H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | +| H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | +| H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:102:23:102:23 | a : A [field FieldA] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | | H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:102:23:102:23 | a : A [field FieldA] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object | | H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | +| H.cs:124:26:124:26 | access to parameter a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | H.cs:124:16:124:27 | call to method Transform : B [field FieldB] : Object | +| H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:122:18:122:18 | a : A [field FieldA] : Object | H.cs:124:16:124:34 | access to field FieldB : Object | H.cs:131:14:131:19 | call to method Get | | H.cs:131:18:131:18 | access to local variable a : A [field FieldA] : Object | H.cs:122:18:122:18 | a : A [field FieldA] : Object | H.cs:124:16:124:34 | access to field FieldB : Object | H.cs:131:14:131:19 | call to method Get | | H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:33:19:33:19 | a : A [field FieldA] : A | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : A | H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | +| H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:33:19:33:19 | a : A [field FieldA] : A | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : A | H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A | +| H.cs:147:25:147:38 | call to method Source : A | H.cs:138:27:138:27 | o : A | H.cs:142:16:142:34 | access to field FieldB : A | H.cs:147:17:147:39 | call to method Through : A | | H.cs:147:25:147:38 | call to method Source : A | H.cs:138:27:138:27 | o : A | H.cs:142:16:142:34 | access to field FieldB : A | H.cs:147:17:147:39 | call to method Through : A | | H.cs:164:22:164:22 | access to local variable o : Object | H.cs:153:32:153:32 | o : Object | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | +| H.cs:164:22:164:22 | access to local variable o : Object | H.cs:153:32:153:32 | o : Object | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object | | J.cs:62:29:62:29 | access to local variable o : Object | J.cs:14:26:14:30 | field : Object | J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | +| J.cs:62:29:62:29 | access to local variable o : Object | J.cs:14:26:14:30 | field : Object | J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object | +| J.cs:80:35:80:35 | access to local variable o : Object | J.cs:14:40:14:43 | prop : Object | J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | | J.cs:80:35:80:35 | access to local variable o : Object | J.cs:14:40:14:43 | prop : Object | J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object | #select | A.cs:7:14:7:16 | access to field c | A.cs:5:17:5:28 | call to method Source : C | A.cs:7:14:7:16 | access to field c | $@ | A.cs:5:17:5:28 | call to method Source : C | call to method Source : C | +| A.cs:7:14:7:16 | access to field c | A.cs:5:17:5:28 | call to method Source : C | A.cs:7:14:7:16 | access to field c | $@ | A.cs:5:17:5:28 | call to method Source : C | call to method Source : C | +| A.cs:14:14:14:20 | call to method Get | A.cs:13:15:13:29 | call to method Source : C1 | A.cs:14:14:14:20 | call to method Get | $@ | A.cs:13:15:13:29 | call to method Source : C1 | call to method Source : C1 | | A.cs:14:14:14:20 | call to method Get | A.cs:13:15:13:29 | call to method Source : C1 | A.cs:14:14:14:20 | call to method Get | $@ | A.cs:13:15:13:29 | call to method Source : C1 | call to method Source : C1 | | A.cs:15:14:15:42 | call to method Get | A.cs:15:21:15:34 | call to method Source : C | A.cs:15:14:15:42 | call to method Get | $@ | A.cs:15:21:15:34 | call to method Source : C | call to method Source : C | +| A.cs:15:14:15:42 | call to method Get | A.cs:15:21:15:34 | call to method Source : C | A.cs:15:14:15:42 | call to method Get | $@ | A.cs:15:21:15:34 | call to method Source : C | call to method Source : C | +| A.cs:24:14:24:17 | access to field c | A.cs:22:25:22:37 | call to method Source : C2 | A.cs:24:14:24:17 | access to field c | $@ | A.cs:22:25:22:37 | call to method Source : C2 | call to method Source : C2 | | A.cs:24:14:24:17 | access to field c | A.cs:22:25:22:37 | call to method Source : C2 | A.cs:24:14:24:17 | access to field c | $@ | A.cs:22:25:22:37 | call to method Source : C2 | call to method Source : C2 | | A.cs:33:14:33:17 | access to field c | A.cs:31:29:31:41 | call to method Source : C2 | A.cs:33:14:33:17 | access to field c | $@ | A.cs:31:29:31:41 | call to method Source : C2 | call to method Source : C2 | +| A.cs:33:14:33:17 | access to field c | A.cs:31:29:31:41 | call to method Source : C2 | A.cs:33:14:33:17 | access to field c | $@ | A.cs:31:29:31:41 | call to method Source : C2 | call to method Source : C2 | +| A.cs:64:18:64:26 | access to field a | A.cs:55:17:55:28 | call to method Source : A | A.cs:64:18:64:26 | access to field a | $@ | A.cs:55:17:55:28 | call to method Source : A | call to method Source : A | | A.cs:64:18:64:26 | access to field a | A.cs:55:17:55:28 | call to method Source : A | A.cs:64:18:64:26 | access to field a | $@ | A.cs:55:17:55:28 | call to method Source : A | call to method Source : A | | A.cs:89:14:89:16 | access to field c | A.cs:83:15:83:26 | call to method Source : C | A.cs:89:14:89:16 | access to field c | $@ | A.cs:83:15:83:26 | call to method Source : C | call to method Source : C | +| A.cs:89:14:89:16 | access to field c | A.cs:83:15:83:26 | call to method Source : C | A.cs:89:14:89:16 | access to field c | $@ | A.cs:83:15:83:26 | call to method Source : C | call to method Source : C | +| A.cs:106:14:106:16 | access to field b | A.cs:98:30:98:43 | call to method Source : B | A.cs:106:14:106:16 | access to field b | $@ | A.cs:98:30:98:43 | call to method Source : B | call to method Source : B | | A.cs:106:14:106:16 | access to field b | A.cs:98:30:98:43 | call to method Source : B | A.cs:106:14:106:16 | access to field b | $@ | A.cs:98:30:98:43 | call to method Source : B | call to method Source : B | | A.cs:106:14:106:16 | access to field b | A.cs:104:17:104:30 | call to method Source : B | A.cs:106:14:106:16 | access to field b | $@ | A.cs:104:17:104:30 | call to method Source : B | call to method Source : B | +| A.cs:106:14:106:16 | access to field b | A.cs:104:17:104:30 | call to method Source : B | A.cs:106:14:106:16 | access to field b | $@ | A.cs:104:17:104:30 | call to method Source : B | call to method Source : B | +| A.cs:107:14:107:18 | access to field c | A.cs:97:19:97:32 | call to method Source : C | A.cs:107:14:107:18 | access to field c | $@ | A.cs:97:19:97:32 | call to method Source : C | call to method Source : C | | A.cs:107:14:107:18 | access to field c | A.cs:97:19:97:32 | call to method Source : C | A.cs:107:14:107:18 | access to field c | $@ | A.cs:97:19:97:32 | call to method Source : C | call to method Source : C | | A.cs:108:14:108:16 | access to field c | A.cs:97:19:97:32 | call to method Source : C | A.cs:108:14:108:16 | access to field c | $@ | A.cs:97:19:97:32 | call to method Source : C | call to method Source : C | +| A.cs:108:14:108:16 | access to field c | A.cs:97:19:97:32 | call to method Source : C | A.cs:108:14:108:16 | access to field c | $@ | A.cs:97:19:97:32 | call to method Source : C | call to method Source : C | +| A.cs:119:14:119:30 | access to field head | A.cs:113:17:113:29 | call to method Source : B | A.cs:119:14:119:30 | access to field head | $@ | A.cs:113:17:113:29 | call to method Source : B | call to method Source : B | | A.cs:119:14:119:30 | access to field head | A.cs:113:17:113:29 | call to method Source : B | A.cs:119:14:119:30 | access to field head | $@ | A.cs:113:17:113:29 | call to method Source : B | call to method Source : B | | A.cs:123:18:123:23 | access to field head | A.cs:113:17:113:29 | call to method Source : B | A.cs:123:18:123:23 | access to field head | $@ | A.cs:113:17:113:29 | call to method Source : B | call to method Source : B | +| A.cs:123:18:123:23 | access to field head | A.cs:113:17:113:29 | call to method Source : B | A.cs:123:18:123:23 | access to field head | $@ | A.cs:113:17:113:29 | call to method Source : B | call to method Source : B | +| B.cs:8:14:8:26 | access to field elem1 | B.cs:5:17:5:31 | call to method Source : Elem | B.cs:8:14:8:26 | access to field elem1 | $@ | B.cs:5:17:5:31 | call to method Source : Elem | call to method Source : Elem | | B.cs:8:14:8:26 | access to field elem1 | B.cs:5:17:5:31 | call to method Source : Elem | B.cs:8:14:8:26 | access to field elem1 | $@ | B.cs:5:17:5:31 | call to method Source : Elem | call to method Source : Elem | | B.cs:18:14:18:26 | access to field elem2 | B.cs:14:17:14:31 | call to method Source : Elem | B.cs:18:14:18:26 | access to field elem2 | $@ | B.cs:14:17:14:31 | call to method Source : Elem | call to method Source : Elem | +| B.cs:18:14:18:26 | access to field elem2 | B.cs:14:17:14:31 | call to method Source : Elem | B.cs:18:14:18:26 | access to field elem2 | $@ | B.cs:14:17:14:31 | call to method Source : Elem | call to method Source : Elem | +| C.cs:23:14:23:15 | access to field s1 | C.cs:3:23:3:37 | call to method Source : Elem | C.cs:23:14:23:15 | access to field s1 | $@ | C.cs:3:23:3:37 | call to method Source : Elem | call to method Source : Elem | | C.cs:23:14:23:15 | access to field s1 | C.cs:3:23:3:37 | call to method Source : Elem | C.cs:23:14:23:15 | access to field s1 | $@ | C.cs:3:23:3:37 | call to method Source : Elem | call to method Source : Elem | | C.cs:24:14:24:15 | access to field s2 | C.cs:4:32:4:46 | call to method Source : Elem | C.cs:24:14:24:15 | access to field s2 | $@ | C.cs:4:32:4:46 | call to method Source : Elem | call to method Source : Elem | +| C.cs:24:14:24:15 | access to field s2 | C.cs:4:32:4:46 | call to method Source : Elem | C.cs:24:14:24:15 | access to field s2 | $@ | C.cs:4:32:4:46 | call to method Source : Elem | call to method Source : Elem | +| C.cs:25:14:25:15 | access to field s3 | C.cs:18:19:18:33 | call to method Source : Elem | C.cs:25:14:25:15 | access to field s3 | $@ | C.cs:18:19:18:33 | call to method Source : Elem | call to method Source : Elem | | C.cs:25:14:25:15 | access to field s3 | C.cs:18:19:18:33 | call to method Source : Elem | C.cs:25:14:25:15 | access to field s3 | $@ | C.cs:18:19:18:33 | call to method Source : Elem | call to method Source : Elem | | C.cs:26:14:26:15 | access to field s4 | C.cs:6:30:6:44 | call to method Source : Elem | C.cs:26:14:26:15 | access to field s4 | $@ | C.cs:6:30:6:44 | call to method Source : Elem | call to method Source : Elem | +| C.cs:26:14:26:15 | access to field s4 | C.cs:6:30:6:44 | call to method Source : Elem | C.cs:26:14:26:15 | access to field s4 | $@ | C.cs:6:30:6:44 | call to method Source : Elem | call to method Source : Elem | +| C.cs:27:14:27:15 | access to property s5 | C.cs:7:37:7:51 | call to method Source : Elem | C.cs:27:14:27:15 | access to property s5 | $@ | C.cs:7:37:7:51 | call to method Source : Elem | call to method Source : Elem | | C.cs:27:14:27:15 | access to property s5 | C.cs:7:37:7:51 | call to method Source : Elem | C.cs:27:14:27:15 | access to property s5 | $@ | C.cs:7:37:7:51 | call to method Source : Elem | call to method Source : Elem | | C.cs:28:14:28:15 | access to property s6 | C.cs:8:30:8:44 | call to method Source : Elem | C.cs:28:14:28:15 | access to property s6 | $@ | C.cs:8:30:8:44 | call to method Source : Elem | call to method Source : Elem | +| C.cs:28:14:28:15 | access to property s6 | C.cs:8:30:8:44 | call to method Source : Elem | C.cs:28:14:28:15 | access to property s6 | $@ | C.cs:8:30:8:44 | call to method Source : Elem | call to method Source : Elem | +| C_ctor.cs:13:19:13:20 | access to field s1 | C_ctor.cs:3:23:3:42 | call to method Source : Elem | C_ctor.cs:13:19:13:20 | access to field s1 | $@ | C_ctor.cs:3:23:3:42 | call to method Source : Elem | call to method Source : Elem | | C_ctor.cs:13:19:13:20 | access to field s1 | C_ctor.cs:3:23:3:42 | call to method Source : Elem | C_ctor.cs:13:19:13:20 | access to field s1 | $@ | C_ctor.cs:3:23:3:42 | call to method Source : Elem | call to method Source : Elem | | C_ctor.cs:31:19:31:20 | access to field s1 | C_ctor.cs:19:23:19:42 | call to method Source : Elem | C_ctor.cs:31:19:31:20 | access to field s1 | $@ | C_ctor.cs:19:23:19:42 | call to method Source : Elem | call to method Source : Elem | +| C_ctor.cs:31:19:31:20 | access to field s1 | C_ctor.cs:19:23:19:42 | call to method Source : Elem | C_ctor.cs:31:19:31:20 | access to field s1 | $@ | C_ctor.cs:19:23:19:42 | call to method Source : Elem | call to method Source : Elem | +| D.cs:32:14:32:23 | access to property AutoProp | D.cs:29:17:29:33 | call to method Source : Object | D.cs:32:14:32:23 | access to property AutoProp | $@ | D.cs:29:17:29:33 | call to method Source : Object | call to method Source : Object | | D.cs:32:14:32:23 | access to property AutoProp | D.cs:29:17:29:33 | call to method Source : Object | D.cs:32:14:32:23 | access to property AutoProp | $@ | D.cs:29:17:29:33 | call to method Source : Object | call to method Source : Object | | D.cs:39:14:39:26 | access to property TrivialProp | D.cs:37:26:37:42 | call to method Source : Object | D.cs:39:14:39:26 | access to property TrivialProp | $@ | D.cs:37:26:37:42 | call to method Source : Object | call to method Source : Object | +| D.cs:39:14:39:26 | access to property TrivialProp | D.cs:37:26:37:42 | call to method Source : Object | D.cs:39:14:39:26 | access to property TrivialProp | $@ | D.cs:37:26:37:42 | call to method Source : Object | call to method Source : Object | +| D.cs:40:14:40:31 | access to field trivialPropField | D.cs:37:26:37:42 | call to method Source : Object | D.cs:40:14:40:31 | access to field trivialPropField | $@ | D.cs:37:26:37:42 | call to method Source : Object | call to method Source : Object | | D.cs:40:14:40:31 | access to field trivialPropField | D.cs:37:26:37:42 | call to method Source : Object | D.cs:40:14:40:31 | access to field trivialPropField | $@ | D.cs:37:26:37:42 | call to method Source : Object | call to method Source : Object | | D.cs:41:14:41:26 | access to property ComplexProp | D.cs:37:26:37:42 | call to method Source : Object | D.cs:41:14:41:26 | access to property ComplexProp | $@ | D.cs:37:26:37:42 | call to method Source : Object | call to method Source : Object | +| D.cs:41:14:41:26 | access to property ComplexProp | D.cs:37:26:37:42 | call to method Source : Object | D.cs:41:14:41:26 | access to property ComplexProp | $@ | D.cs:37:26:37:42 | call to method Source : Object | call to method Source : Object | +| D.cs:45:14:45:26 | access to property TrivialProp | D.cs:43:32:43:48 | call to method Source : Object | D.cs:45:14:45:26 | access to property TrivialProp | $@ | D.cs:43:32:43:48 | call to method Source : Object | call to method Source : Object | | D.cs:45:14:45:26 | access to property TrivialProp | D.cs:43:32:43:48 | call to method Source : Object | D.cs:45:14:45:26 | access to property TrivialProp | $@ | D.cs:43:32:43:48 | call to method Source : Object | call to method Source : Object | | D.cs:46:14:46:31 | access to field trivialPropField | D.cs:43:32:43:48 | call to method Source : Object | D.cs:46:14:46:31 | access to field trivialPropField | $@ | D.cs:43:32:43:48 | call to method Source : Object | call to method Source : Object | +| D.cs:46:14:46:31 | access to field trivialPropField | D.cs:43:32:43:48 | call to method Source : Object | D.cs:46:14:46:31 | access to field trivialPropField | $@ | D.cs:43:32:43:48 | call to method Source : Object | call to method Source : Object | +| D.cs:47:14:47:26 | access to property ComplexProp | D.cs:43:32:43:48 | call to method Source : Object | D.cs:47:14:47:26 | access to property ComplexProp | $@ | D.cs:43:32:43:48 | call to method Source : Object | call to method Source : Object | | D.cs:47:14:47:26 | access to property ComplexProp | D.cs:43:32:43:48 | call to method Source : Object | D.cs:47:14:47:26 | access to property ComplexProp | $@ | D.cs:43:32:43:48 | call to method Source : Object | call to method Source : Object | | E.cs:24:14:24:20 | access to field Field | E.cs:22:17:22:33 | call to method Source : Object | E.cs:24:14:24:20 | access to field Field | $@ | E.cs:22:17:22:33 | call to method Source : Object | call to method Source : Object | +| E.cs:24:14:24:20 | access to field Field | E.cs:22:17:22:33 | call to method Source : Object | E.cs:24:14:24:20 | access to field Field | $@ | E.cs:22:17:22:33 | call to method Source : Object | call to method Source : Object | +| F.cs:12:14:12:21 | access to field Field1 | F.cs:10:17:10:33 | call to method Source : Object | F.cs:12:14:12:21 | access to field Field1 | $@ | F.cs:10:17:10:33 | call to method Source : Object | call to method Source : Object | | F.cs:12:14:12:21 | access to field Field1 | F.cs:10:17:10:33 | call to method Source : Object | F.cs:12:14:12:21 | access to field Field1 | $@ | F.cs:10:17:10:33 | call to method Source : Object | call to method Source : Object | | F.cs:17:14:17:21 | access to field Field2 | F.cs:15:26:15:42 | call to method Source : Object | F.cs:17:14:17:21 | access to field Field2 | $@ | F.cs:15:26:15:42 | call to method Source : Object | call to method Source : Object | +| F.cs:17:14:17:21 | access to field Field2 | F.cs:15:26:15:42 | call to method Source : Object | F.cs:17:14:17:21 | access to field Field2 | $@ | F.cs:15:26:15:42 | call to method Source : Object | call to method Source : Object | +| F.cs:20:14:20:21 | access to field Field1 | F.cs:19:32:19:48 | call to method Source : Object | F.cs:20:14:20:21 | access to field Field1 | $@ | F.cs:19:32:19:48 | call to method Source : Object | call to method Source : Object | | F.cs:20:14:20:21 | access to field Field1 | F.cs:19:32:19:48 | call to method Source : Object | F.cs:20:14:20:21 | access to field Field1 | $@ | F.cs:19:32:19:48 | call to method Source : Object | call to method Source : Object | | F.cs:25:14:25:21 | access to field Field2 | F.cs:23:32:23:48 | call to method Source : Object | F.cs:25:14:25:21 | access to field Field2 | $@ | F.cs:23:32:23:48 | call to method Source : Object | call to method Source : Object | +| F.cs:25:14:25:21 | access to field Field2 | F.cs:23:32:23:48 | call to method Source : Object | F.cs:25:14:25:21 | access to field Field2 | $@ | F.cs:23:32:23:48 | call to method Source : Object | call to method Source : Object | +| F.cs:33:14:33:16 | access to property X | F.cs:30:17:30:33 | call to method Source : Object | F.cs:33:14:33:16 | access to property X | $@ | F.cs:30:17:30:33 | call to method Source : Object | call to method Source : Object | | F.cs:33:14:33:16 | access to property X | F.cs:30:17:30:33 | call to method Source : Object | F.cs:33:14:33:16 | access to property X | $@ | F.cs:30:17:30:33 | call to method Source : Object | call to method Source : Object | | G.cs:39:14:39:35 | call to method GetElem | G.cs:7:18:7:32 | call to method Source : Elem | G.cs:39:14:39:35 | call to method GetElem | $@ | G.cs:7:18:7:32 | call to method Source : Elem | call to method Source : Elem | +| G.cs:39:14:39:35 | call to method GetElem | G.cs:7:18:7:32 | call to method Source : Elem | G.cs:39:14:39:35 | call to method GetElem | $@ | G.cs:7:18:7:32 | call to method Source : Elem | call to method Source : Elem | +| G.cs:39:14:39:35 | call to method GetElem | G.cs:15:18:15:32 | call to method Source : Elem | G.cs:39:14:39:35 | call to method GetElem | $@ | G.cs:15:18:15:32 | call to method Source : Elem | call to method Source : Elem | | G.cs:39:14:39:35 | call to method GetElem | G.cs:15:18:15:32 | call to method Source : Elem | G.cs:39:14:39:35 | call to method GetElem | $@ | G.cs:15:18:15:32 | call to method Source : Elem | call to method Source : Elem | | G.cs:39:14:39:35 | call to method GetElem | G.cs:23:18:23:32 | call to method Source : Elem | G.cs:39:14:39:35 | call to method GetElem | $@ | G.cs:23:18:23:32 | call to method Source : Elem | call to method Source : Elem | +| G.cs:39:14:39:35 | call to method GetElem | G.cs:23:18:23:32 | call to method Source : Elem | G.cs:39:14:39:35 | call to method GetElem | $@ | G.cs:23:18:23:32 | call to method Source : Elem | call to method Source : Elem | +| G.cs:39:14:39:35 | call to method GetElem | G.cs:31:18:31:32 | call to method Source : Elem | G.cs:39:14:39:35 | call to method GetElem | $@ | G.cs:31:18:31:32 | call to method Source : Elem | call to method Source : Elem | | G.cs:39:14:39:35 | call to method GetElem | G.cs:31:18:31:32 | call to method Source : Elem | G.cs:39:14:39:35 | call to method GetElem | $@ | G.cs:31:18:31:32 | call to method Source : Elem | call to method Source : Elem | | G.cs:52:14:52:31 | access to field Elem | G.cs:44:18:44:32 | call to method Source : Elem | G.cs:52:14:52:31 | access to field Elem | $@ | G.cs:44:18:44:32 | call to method Source : Elem | call to method Source : Elem | +| G.cs:52:14:52:31 | access to field Elem | G.cs:44:18:44:32 | call to method Source : Elem | G.cs:52:14:52:31 | access to field Elem | $@ | G.cs:44:18:44:32 | call to method Source : Elem | call to method Source : Elem | +| H.cs:25:14:25:25 | access to field FieldA | H.cs:23:20:23:36 | call to method Source : Object | H.cs:25:14:25:25 | access to field FieldA | $@ | H.cs:23:20:23:36 | call to method Source : Object | call to method Source : Object | | H.cs:25:14:25:25 | access to field FieldA | H.cs:23:20:23:36 | call to method Source : Object | H.cs:25:14:25:25 | access to field FieldA | $@ | H.cs:23:20:23:36 | call to method Source : Object | call to method Source : Object | | H.cs:45:14:45:21 | access to field FieldB | H.cs:43:20:43:36 | call to method Source : Object | H.cs:45:14:45:21 | access to field FieldB | $@ | H.cs:43:20:43:36 | call to method Source : Object | call to method Source : Object | +| H.cs:45:14:45:21 | access to field FieldB | H.cs:43:20:43:36 | call to method Source : Object | H.cs:45:14:45:21 | access to field FieldB | $@ | H.cs:43:20:43:36 | call to method Source : Object | call to method Source : Object | +| H.cs:65:14:65:22 | access to field FieldB | H.cs:63:20:63:36 | call to method Source : Object | H.cs:65:14:65:22 | access to field FieldB | $@ | H.cs:63:20:63:36 | call to method Source : Object | call to method Source : Object | | H.cs:65:14:65:22 | access to field FieldB | H.cs:63:20:63:36 | call to method Source : Object | H.cs:65:14:65:22 | access to field FieldB | $@ | H.cs:63:20:63:36 | call to method Source : Object | call to method Source : Object | | H.cs:89:14:89:21 | access to field FieldA | H.cs:88:20:88:36 | call to method Source : Object | H.cs:89:14:89:21 | access to field FieldA | $@ | H.cs:88:20:88:36 | call to method Source : Object | call to method Source : Object | +| H.cs:89:14:89:21 | access to field FieldA | H.cs:88:20:88:36 | call to method Source : Object | H.cs:89:14:89:21 | access to field FieldA | $@ | H.cs:88:20:88:36 | call to method Source : Object | call to method Source : Object | +| H.cs:90:14:90:22 | access to field FieldB | H.cs:88:20:88:36 | call to method Source : Object | H.cs:90:14:90:22 | access to field FieldB | $@ | H.cs:88:20:88:36 | call to method Source : Object | call to method Source : Object | | H.cs:90:14:90:22 | access to field FieldB | H.cs:88:20:88:36 | call to method Source : Object | H.cs:90:14:90:22 | access to field FieldB | $@ | H.cs:88:20:88:36 | call to method Source : Object | call to method Source : Object | | H.cs:114:14:114:21 | access to field FieldB | H.cs:112:20:112:36 | call to method Source : Object | H.cs:114:14:114:21 | access to field FieldB | $@ | H.cs:112:20:112:36 | call to method Source : Object | call to method Source : Object | +| H.cs:114:14:114:21 | access to field FieldB | H.cs:112:20:112:36 | call to method Source : Object | H.cs:114:14:114:21 | access to field FieldB | $@ | H.cs:112:20:112:36 | call to method Source : Object | call to method Source : Object | +| H.cs:131:14:131:19 | call to method Get | H.cs:130:20:130:36 | call to method Source : Object | H.cs:131:14:131:19 | call to method Get | $@ | H.cs:130:20:130:36 | call to method Source : Object | call to method Source : Object | | H.cs:131:14:131:19 | call to method Get | H.cs:130:20:130:36 | call to method Source : Object | H.cs:131:14:131:19 | call to method Get | $@ | H.cs:130:20:130:36 | call to method Source : Object | call to method Source : Object | | H.cs:148:14:148:14 | access to local variable a | H.cs:147:25:147:38 | call to method Source : A | H.cs:148:14:148:14 | access to local variable a | $@ | H.cs:147:25:147:38 | call to method Source : A | call to method Source : A | +| H.cs:148:14:148:14 | access to local variable a | H.cs:147:25:147:38 | call to method Source : A | H.cs:148:14:148:14 | access to local variable a | $@ | H.cs:147:25:147:38 | call to method Source : A | call to method Source : A | +| H.cs:166:14:166:14 | access to local variable b | H.cs:155:17:155:30 | call to method Source : B | H.cs:166:14:166:14 | access to local variable b | $@ | H.cs:155:17:155:30 | call to method Source : B | call to method Source : B | | H.cs:166:14:166:14 | access to local variable b | H.cs:155:17:155:30 | call to method Source : B | H.cs:166:14:166:14 | access to local variable b | $@ | H.cs:155:17:155:30 | call to method Source : B | call to method Source : B | | H.cs:167:14:167:21 | access to field FieldB | H.cs:163:17:163:35 | call to method Source : Object | H.cs:167:14:167:21 | access to field FieldB | $@ | H.cs:163:17:163:35 | call to method Source : Object | call to method Source : Object | +| H.cs:167:14:167:21 | access to field FieldB | H.cs:163:17:163:35 | call to method Source : Object | H.cs:167:14:167:21 | access to field FieldB | $@ | H.cs:163:17:163:35 | call to method Source : Object | call to method Source : Object | +| I.cs:18:14:18:21 | access to field Field1 | I.cs:13:17:13:33 | call to method Source : Object | I.cs:18:14:18:21 | access to field Field1 | $@ | I.cs:13:17:13:33 | call to method Source : Object | call to method Source : Object | | I.cs:18:14:18:21 | access to field Field1 | I.cs:13:17:13:33 | call to method Source : Object | I.cs:18:14:18:21 | access to field Field1 | $@ | I.cs:13:17:13:33 | call to method Source : Object | call to method Source : Object | | I.cs:23:14:23:21 | access to field Field1 | I.cs:7:18:7:34 | call to method Source : Object | I.cs:23:14:23:21 | access to field Field1 | $@ | I.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| I.cs:23:14:23:21 | access to field Field1 | I.cs:7:18:7:34 | call to method Source : Object | I.cs:23:14:23:21 | access to field Field1 | $@ | I.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| I.cs:27:14:27:21 | access to field Field1 | I.cs:7:18:7:34 | call to method Source : Object | I.cs:27:14:27:21 | access to field Field1 | $@ | I.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | | I.cs:27:14:27:21 | access to field Field1 | I.cs:7:18:7:34 | call to method Source : Object | I.cs:27:14:27:21 | access to field Field1 | $@ | I.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | | I.cs:40:14:40:21 | access to field Field1 | I.cs:31:13:31:29 | call to method Source : Object | I.cs:40:14:40:21 | access to field Field1 | $@ | I.cs:31:13:31:29 | call to method Source : Object | call to method Source : Object | +| I.cs:40:14:40:21 | access to field Field1 | I.cs:31:13:31:29 | call to method Source : Object | I.cs:40:14:40:21 | access to field Field1 | $@ | I.cs:31:13:31:29 | call to method Source : Object | call to method Source : Object | +| J.cs:23:14:23:21 | access to property Prop1 | J.cs:21:17:21:33 | call to method Source : Object | J.cs:23:14:23:21 | access to property Prop1 | $@ | J.cs:21:17:21:33 | call to method Source : Object | call to method Source : Object | | J.cs:23:14:23:21 | access to property Prop1 | J.cs:21:17:21:33 | call to method Source : Object | J.cs:23:14:23:21 | access to property Prop1 | $@ | J.cs:21:17:21:33 | call to method Source : Object | call to method Source : Object | | J.cs:27:14:27:21 | access to property Prop1 | J.cs:21:17:21:33 | call to method Source : Object | J.cs:27:14:27:21 | access to property Prop1 | $@ | J.cs:21:17:21:33 | call to method Source : Object | call to method Source : Object | +| J.cs:27:14:27:21 | access to property Prop1 | J.cs:21:17:21:33 | call to method Source : Object | J.cs:27:14:27:21 | access to property Prop1 | $@ | J.cs:21:17:21:33 | call to method Source : Object | call to method Source : Object | +| J.cs:31:14:31:21 | access to property Prop1 | J.cs:21:17:21:33 | call to method Source : Object | J.cs:31:14:31:21 | access to property Prop1 | $@ | J.cs:21:17:21:33 | call to method Source : Object | call to method Source : Object | | J.cs:31:14:31:21 | access to property Prop1 | J.cs:21:17:21:33 | call to method Source : Object | J.cs:31:14:31:21 | access to property Prop1 | $@ | J.cs:21:17:21:33 | call to method Source : Object | call to method Source : Object | | J.cs:32:14:32:21 | access to property Prop2 | J.cs:30:36:30:52 | call to method Source : Object | J.cs:32:14:32:21 | access to property Prop2 | $@ | J.cs:30:36:30:52 | call to method Source : Object | call to method Source : Object | +| J.cs:32:14:32:21 | access to property Prop2 | J.cs:30:36:30:52 | call to method Source : Object | J.cs:32:14:32:21 | access to property Prop2 | $@ | J.cs:30:36:30:52 | call to method Source : Object | call to method Source : Object | +| J.cs:43:14:43:21 | access to property Prop1 | J.cs:41:17:41:33 | call to method Source : Object | J.cs:43:14:43:21 | access to property Prop1 | $@ | J.cs:41:17:41:33 | call to method Source : Object | call to method Source : Object | | J.cs:43:14:43:21 | access to property Prop1 | J.cs:41:17:41:33 | call to method Source : Object | J.cs:43:14:43:21 | access to property Prop1 | $@ | J.cs:41:17:41:33 | call to method Source : Object | call to method Source : Object | | J.cs:47:14:47:21 | access to property Prop1 | J.cs:41:17:41:33 | call to method Source : Object | J.cs:47:14:47:21 | access to property Prop1 | $@ | J.cs:41:17:41:33 | call to method Source : Object | call to method Source : Object | +| J.cs:47:14:47:21 | access to property Prop1 | J.cs:41:17:41:33 | call to method Source : Object | J.cs:47:14:47:21 | access to property Prop1 | $@ | J.cs:41:17:41:33 | call to method Source : Object | call to method Source : Object | +| J.cs:51:14:51:21 | access to property Prop1 | J.cs:41:17:41:33 | call to method Source : Object | J.cs:51:14:51:21 | access to property Prop1 | $@ | J.cs:41:17:41:33 | call to method Source : Object | call to method Source : Object | | J.cs:51:14:51:21 | access to property Prop1 | J.cs:41:17:41:33 | call to method Source : Object | J.cs:51:14:51:21 | access to property Prop1 | $@ | J.cs:41:17:41:33 | call to method Source : Object | call to method Source : Object | | J.cs:52:14:52:21 | access to property Prop2 | J.cs:50:36:50:52 | call to method Source : Object | J.cs:52:14:52:21 | access to property Prop2 | $@ | J.cs:50:36:50:52 | call to method Source : Object | call to method Source : Object | +| J.cs:52:14:52:21 | access to property Prop2 | J.cs:50:36:50:52 | call to method Source : Object | J.cs:52:14:52:21 | access to property Prop2 | $@ | J.cs:50:36:50:52 | call to method Source : Object | call to method Source : Object | +| J.cs:65:14:65:21 | access to field Field | J.cs:61:17:61:33 | call to method Source : Object | J.cs:65:14:65:21 | access to field Field | $@ | J.cs:61:17:61:33 | call to method Source : Object | call to method Source : Object | | J.cs:65:14:65:21 | access to field Field | J.cs:61:17:61:33 | call to method Source : Object | J.cs:65:14:65:21 | access to field Field | $@ | J.cs:61:17:61:33 | call to method Source : Object | call to method Source : Object | | J.cs:69:14:69:21 | access to field Field | J.cs:61:17:61:33 | call to method Source : Object | J.cs:69:14:69:21 | access to field Field | $@ | J.cs:61:17:61:33 | call to method Source : Object | call to method Source : Object | +| J.cs:69:14:69:21 | access to field Field | J.cs:61:17:61:33 | call to method Source : Object | J.cs:69:14:69:21 | access to field Field | $@ | J.cs:61:17:61:33 | call to method Source : Object | call to method Source : Object | +| J.cs:70:14:70:20 | access to property Prop | J.cs:68:35:68:51 | call to method Source : Object | J.cs:70:14:70:20 | access to property Prop | $@ | J.cs:68:35:68:51 | call to method Source : Object | call to method Source : Object | | J.cs:70:14:70:20 | access to property Prop | J.cs:68:35:68:51 | call to method Source : Object | J.cs:70:14:70:20 | access to property Prop | $@ | J.cs:68:35:68:51 | call to method Source : Object | call to method Source : Object | | J.cs:84:14:84:20 | access to property Prop | J.cs:79:17:79:33 | call to method Source : Object | J.cs:84:14:84:20 | access to property Prop | $@ | J.cs:79:17:79:33 | call to method Source : Object | call to method Source : Object | +| J.cs:84:14:84:20 | access to property Prop | J.cs:79:17:79:33 | call to method Source : Object | J.cs:84:14:84:20 | access to property Prop | $@ | J.cs:79:17:79:33 | call to method Source : Object | call to method Source : Object | +| J.cs:87:14:87:21 | access to field Field | J.cs:86:36:86:52 | call to method Source : Object | J.cs:87:14:87:21 | access to field Field | $@ | J.cs:86:36:86:52 | call to method Source : Object | call to method Source : Object | | J.cs:87:14:87:21 | access to field Field | J.cs:86:36:86:52 | call to method Source : Object | J.cs:87:14:87:21 | access to field Field | $@ | J.cs:86:36:86:52 | call to method Source : Object | call to method Source : Object | | J.cs:88:14:88:20 | access to property Prop | J.cs:79:17:79:33 | call to method Source : Object | J.cs:88:14:88:20 | access to property Prop | $@ | J.cs:79:17:79:33 | call to method Source : Object | call to method Source : Object | +| J.cs:88:14:88:20 | access to property Prop | J.cs:79:17:79:33 | call to method Source : Object | J.cs:88:14:88:20 | access to property Prop | $@ | J.cs:79:17:79:33 | call to method Source : Object | call to method Source : Object | +| J.cs:102:14:102:17 | access to property X | J.cs:97:17:97:33 | call to method Source : Object | J.cs:102:14:102:17 | access to property X | $@ | J.cs:97:17:97:33 | call to method Source : Object | call to method Source : Object | | J.cs:102:14:102:17 | access to property X | J.cs:97:17:97:33 | call to method Source : Object | J.cs:102:14:102:17 | access to property X | $@ | J.cs:97:17:97:33 | call to method Source : Object | call to method Source : Object | | J.cs:106:14:106:17 | access to property X | J.cs:97:17:97:33 | call to method Source : Object | J.cs:106:14:106:17 | access to property X | $@ | J.cs:97:17:97:33 | call to method Source : Object | call to method Source : Object | +| J.cs:106:14:106:17 | access to property X | J.cs:97:17:97:33 | call to method Source : Object | J.cs:106:14:106:17 | access to property X | $@ | J.cs:97:17:97:33 | call to method Source : Object | call to method Source : Object | +| J.cs:107:14:107:17 | access to property Y | J.cs:105:32:105:48 | call to method Source : Object | J.cs:107:14:107:17 | access to property Y | $@ | J.cs:105:32:105:48 | call to method Source : Object | call to method Source : Object | | J.cs:107:14:107:17 | access to property Y | J.cs:105:32:105:48 | call to method Source : Object | J.cs:107:14:107:17 | access to property Y | $@ | J.cs:105:32:105:48 | call to method Source : Object | call to method Source : Object | | J.cs:125:14:125:17 | (...) ... | J.cs:119:20:119:34 | call to method Source : Int32 | J.cs:125:14:125:17 | (...) ... | $@ | J.cs:119:20:119:34 | call to method Source : Int32 | call to method Source : Int32 | +| J.cs:125:14:125:17 | (...) ... | J.cs:119:20:119:34 | call to method Source : Int32 | J.cs:125:14:125:17 | (...) ... | $@ | J.cs:119:20:119:34 | call to method Source : Int32 | call to method Source : Int32 | diff --git a/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.ql b/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.ql index b01c0f7fcaf..9336e1b28be 100644 --- a/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.ql +++ b/csharp/ql/test/library-tests/dataflow/fields/FieldFlow.ql @@ -3,9 +3,10 @@ */ import csharp -import DefaultValueFlow::PathGraph import TestUtilities.InlineFlowTest +import DefaultFlowTest +import PathGraph -from DefaultValueFlow::PathNode source, DefaultValueFlow::PathNode sink -where DefaultValueFlow::flowPath(source, sink) +from PathNode source, PathNode sink +where flowPath(source, sink) select sink, source, sink, "$@", source, source.toString() diff --git a/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected b/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected index bce1914e42b..767e66301ce 100644 --- a/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected +++ b/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected @@ -267,7 +267,7 @@ edges | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:514:31:514:32 | [post] access to local variable y1 : SimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:514:36:514:37 | [post] access to local variable y2 : SimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:514:42:514:43 | [post] access to local variable y3 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SimpleClass [field field] : String | +| GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SubSimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:532:20:532:20 | [post] access to parameter x : SimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:532:25:532:25 | [post] access to local variable y : SimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:544:20:544:20 | [post] access to local variable x : SimpleClass [field field] : String | @@ -286,8 +286,8 @@ edges | GlobalDataFlow.cs:515:15:515:16 | access to local variable y1 : SimpleClass [field field] : String | GlobalDataFlow.cs:515:15:515:22 | access to field field | | GlobalDataFlow.cs:516:15:516:16 | access to local variable y2 : SimpleClass [field field] : String | GlobalDataFlow.cs:516:15:516:22 | access to field field | | GlobalDataFlow.cs:517:15:517:16 | access to local variable y3 : SimpleClass [field field] : String | GlobalDataFlow.cs:517:15:517:22 | access to field field | -| GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:526:15:526:21 | access to field field | +| GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SubSimpleClass [field field] : String | +| GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:526:15:526:21 | access to field field | | GlobalDataFlow.cs:532:20:532:20 | [post] access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:15 | access to parameter x : SimpleClass [field field] : String | | GlobalDataFlow.cs:532:25:532:25 | [post] access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:534:15:534:15 | access to local variable y : SimpleClass [field field] : String | | GlobalDataFlow.cs:533:15:533:15 | access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:21 | access to field field | @@ -579,8 +579,8 @@ nodes | GlobalDataFlow.cs:516:15:516:22 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:517:15:517:16 | access to local variable y3 : SimpleClass [field field] : String | semmle.label | access to local variable y3 : SimpleClass [field field] : String | | GlobalDataFlow.cs:517:15:517:22 | access to field field | semmle.label | access to field field | -| GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SimpleClass [field field] : String | semmle.label | [post] access to local variable x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SimpleClass [field field] : String | semmle.label | access to local variable x : SimpleClass [field field] : String | +| GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SubSimpleClass [field field] : String | semmle.label | [post] access to local variable x : SubSimpleClass [field field] : String | +| GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SubSimpleClass [field field] : String | semmle.label | access to local variable x : SubSimpleClass [field field] : String | | GlobalDataFlow.cs:526:15:526:21 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:532:20:532:20 | [post] access to parameter x : SimpleClass [field field] : String | semmle.label | [post] access to parameter x : SimpleClass [field field] : String | | GlobalDataFlow.cs:532:25:532:25 | [post] access to local variable y : SimpleClass [field field] : String | semmle.label | [post] access to local variable y : SimpleClass [field field] : String | diff --git a/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected b/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected index 5dae90d82a6..dec8a134712 100644 --- a/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected +++ b/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected @@ -293,7 +293,7 @@ edges | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:514:31:514:32 | [post] access to local variable y1 : SimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:514:36:514:37 | [post] access to local variable y2 : SimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:514:42:514:43 | [post] access to local variable y3 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SimpleClass [field field] : String | +| GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SubSimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:532:20:532:20 | [post] access to parameter x : SimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:532:25:532:25 | [post] access to local variable y : SimpleClass [field field] : String | | GlobalDataFlow.cs:500:9:500:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:544:20:544:20 | [post] access to local variable x : SimpleClass [field field] : String | @@ -312,8 +312,8 @@ edges | GlobalDataFlow.cs:515:15:515:16 | access to local variable y1 : SimpleClass [field field] : String | GlobalDataFlow.cs:515:15:515:22 | access to field field | | GlobalDataFlow.cs:516:15:516:16 | access to local variable y2 : SimpleClass [field field] : String | GlobalDataFlow.cs:516:15:516:22 | access to field field | | GlobalDataFlow.cs:517:15:517:16 | access to local variable y3 : SimpleClass [field field] : String | GlobalDataFlow.cs:517:15:517:22 | access to field field | -| GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:526:15:526:21 | access to field field | +| GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SubSimpleClass [field field] : String | +| GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:526:15:526:21 | access to field field | | GlobalDataFlow.cs:532:20:532:20 | [post] access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:15 | access to parameter x : SimpleClass [field field] : String | | GlobalDataFlow.cs:532:25:532:25 | [post] access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:534:15:534:15 | access to local variable y : SimpleClass [field field] : String | | GlobalDataFlow.cs:533:15:533:15 | access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:21 | access to field field | @@ -633,8 +633,8 @@ nodes | GlobalDataFlow.cs:516:15:516:22 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:517:15:517:16 | access to local variable y3 : SimpleClass [field field] : String | semmle.label | access to local variable y3 : SimpleClass [field field] : String | | GlobalDataFlow.cs:517:15:517:22 | access to field field | semmle.label | access to field field | -| GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SimpleClass [field field] : String | semmle.label | [post] access to local variable x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SimpleClass [field field] : String | semmle.label | access to local variable x : SimpleClass [field field] : String | +| GlobalDataFlow.cs:525:33:525:33 | [post] access to local variable x : SubSimpleClass [field field] : String | semmle.label | [post] access to local variable x : SubSimpleClass [field field] : String | +| GlobalDataFlow.cs:526:15:526:15 | access to local variable x : SubSimpleClass [field field] : String | semmle.label | access to local variable x : SubSimpleClass [field field] : String | | GlobalDataFlow.cs:526:15:526:21 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:532:20:532:20 | [post] access to parameter x : SimpleClass [field field] : String | semmle.label | [post] access to parameter x : SimpleClass [field field] : String | | GlobalDataFlow.cs:532:25:532:25 | [post] access to local variable y : SimpleClass [field field] : String | semmle.label | [post] access to local variable y : SimpleClass [field field] : String | diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected index 46defadf531..70b7ae5b121 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected @@ -1087,7 +1087,7 @@ summary | System.Collections.Generic;List<>;false;Add;(System.Object);;Argument[0];Argument[this].Element;value;manual | | System.Collections.Generic;List<>;false;Add;(T);;Argument[0];Argument[this].Element;value;manual | | System.Collections.Generic;List<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this].Element;value;manual | -| System.Collections.Generic;List<>;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;List<>;false;AsReadOnly;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Generic;List<>;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | | System.Collections.Generic;List<>;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Collections.Generic;List<>;false;CopyTo;(T[]);;Argument[this];Argument[0].Element;taint;df-generated | @@ -1101,13 +1101,11 @@ summary | System.Collections.Generic;List<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | | System.Collections.Generic;List<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.List<>+Enumerator.Current];value;manual | | System.Collections.Generic;List<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | -| System.Collections.Generic;List<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;List<>;false;GetRange;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Generic;List<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Generic;List<>;false;Insert;(System.Int32,T);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Generic;List<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[this].Element;value;manual | | System.Collections.Generic;List<>;false;List;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | -| System.Collections.Generic;List<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Collections.Generic;List<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections.Generic;List<>;false;get_Item;(System.Int32);;Argument[this].Element;ReturnValue;value;manual | | System.Collections.Generic;List<>;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | | System.Collections.Generic;List<>;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | @@ -1231,7 +1229,7 @@ summary | System.Collections.Generic;SortedSet<>;false;GetViewBetween;(T,T);;Argument[1];ReturnValue;taint;df-generated | | System.Collections.Generic;SortedSet<>;false;GetViewBetween;(T,T);;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Generic;SortedSet<>;false;IntersectWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | -| System.Collections.Generic;SortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;SortedSet<>;false;Reverse;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Generic;SortedSet<>;false;SortedSet;(System.Collections.Generic.IComparer);;Argument[0];Argument[this];taint;df-generated | | System.Collections.Generic;SortedSet<>;false;SortedSet;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[this];taint;df-generated | | System.Collections.Generic;SortedSet<>;false;SymmetricExceptWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | @@ -1290,7 +1288,6 @@ summary | System.Collections.Immutable;ImmutableArray<>+Builder;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Collections.Immutable;ImmutableArray<>+Builder;false;Insert;(System.Int32,T);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableArray<>+Builder;false;MoveToImmutable;();;Argument[this];ReturnValue;taint;df-generated | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableArray<>+Builder;false;get_Item;(System.Int32);;Argument[this].Element;ReturnValue;value;manual | | System.Collections.Immutable;ImmutableArray<>+Builder;false;set_Item;(System.Int32,T);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableArray<>+Enumerator;false;get_Current;();;Argument[this];ReturnValue;taint;df-generated | @@ -1487,12 +1484,10 @@ summary | System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value;manual | -| System.Collections.Immutable;ImmutableList<>+Builder;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;GetRange;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;Insert;(System.Int32,T);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[this].Element;value;manual | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;ToImmutable;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableList<>+Builder;false;get_Item;(System.Int32);;Argument[this].Element;ReturnValue;value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;get_SyncRoot;();;Argument[this];ReturnValue;taint;df-generated | @@ -1520,7 +1515,7 @@ summary | System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | | System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value;manual | -| System.Collections.Immutable;ImmutableList<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;GetRange;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableList<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableList<>;false;Insert;(System.Int32,T);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableList<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[this].Element;value;manual | @@ -1537,8 +1532,8 @@ summary | System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[1];Argument[this];taint;df-generated | | System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[this];ReturnValue;taint;df-generated | -| System.Collections.Immutable;ImmutableList<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Collections.Immutable;ImmutableList<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Reverse;();;Argument[this].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Reverse;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[1];Argument[this];taint;df-generated | | System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[1];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[this];ReturnValue;taint;df-generated | @@ -1676,7 +1671,7 @@ summary | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current];value;manual | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;IntersectWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | -| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;Reverse;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;SymmetricExceptWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;ToImmutable;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;TryGetValue;(T,T);;Argument[0];ReturnValue;taint;df-generated | @@ -1703,7 +1698,7 @@ summary | System.Collections.Immutable;ImmutableSortedSet<>;false;Insert;(System.Int32,T);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableSortedSet<>;false;Intersect;(System.Collections.Generic.IEnumerable);;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>;false;Remove;(T);;Argument[this];ReturnValue;taint;df-generated | -| System.Collections.Immutable;ImmutableSortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Reverse;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[this];ReturnValue;taint;df-generated | @@ -1897,7 +1892,7 @@ summary | System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;get_OldItems;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Specialized;OrderedDictionary;false;Add;(System.Object,System.Object);;Argument[0];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | | System.Collections.Specialized;OrderedDictionary;false;Add;(System.Object,System.Object);;Argument[1];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | -| System.Collections.Specialized;OrderedDictionary;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Specialized;OrderedDictionary;false;AsReadOnly;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Specialized;OrderedDictionary;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | | System.Collections.Specialized;OrderedDictionary;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Collections.Specialized;OrderedDictionary;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | @@ -1938,21 +1933,19 @@ summary | System.Collections;ArrayList;false;AddRange;(System.Collections.ICollection);;Argument[0].Element;Argument[this].Element;value;manual | | System.Collections;ArrayList;false;ArrayList;(System.Collections.ICollection);;Argument[0].Element;Argument[this];taint;df-generated | | System.Collections;ArrayList;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | -| System.Collections;ArrayList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;CopyTo;(System.Array);;Argument[this];Argument[0].Element;taint;df-generated | | System.Collections;ArrayList;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Collections;ArrayList;false;FixedSize;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;FixedSize;(System.Collections.IList);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Collections;ArrayList;false;GetEnumerator;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | -| System.Collections;ArrayList;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;GetRange;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | | System.Collections;ArrayList;false;InsertRange;(System.Int32,System.Collections.ICollection);;Argument[1].Element;Argument[this].Element;value;manual | | System.Collections;ArrayList;false;ReadOnly;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections;ArrayList;false;ReadOnly;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections;ArrayList;false;Repeat;(System.Object,System.Int32);;Argument[0];ReturnValue.Element;value;manual | -| System.Collections;ArrayList;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Collections;ArrayList;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;SetRange;(System.Int32,System.Collections.ICollection);;Argument[1].Element;Argument[this];taint;df-generated | | System.Collections;ArrayList;false;Synchronized;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections;ArrayList;false;Synchronized;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;df-generated | @@ -1960,7 +1953,7 @@ summary | System.Collections;ArrayList;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | | System.Collections;ArrayList;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | | System.Collections;BitArray;false;And;(System.Collections.BitArray);;Argument[this];ReturnValue;value;df-generated | -| System.Collections;BitArray;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;BitArray;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;BitArray;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Collections;BitArray;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Collections;BitArray;false;LeftShift;(System.Int32);;Argument[this];ReturnValue;value;df-generated | @@ -2007,7 +2000,7 @@ summary | System.Collections;Hashtable;false;Add;(System.Object,System.Object);;Argument[0];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | | System.Collections;Hashtable;false;Add;(System.Object,System.Object);;Argument[1];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | | System.Collections;Hashtable;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | -| System.Collections;Hashtable;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;Hashtable;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;Hashtable;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Collections;Hashtable;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Collections;Hashtable;false;GetEnumerator;();;Argument[this];ReturnValue;taint;df-generated | @@ -2055,7 +2048,7 @@ summary | System.Collections;IList;true;get_Item;(System.Int32);;Argument[this].Element;ReturnValue;value;manual | | System.Collections;IList;true;set_Item;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | | System.Collections;Queue;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | -| System.Collections;Queue;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;Queue;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;Queue;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Collections;Queue;false;Dequeue;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections;Queue;false;Enqueue;(System.Object);;Argument[0];Argument[this];taint;df-generated | @@ -2071,7 +2064,7 @@ summary | System.Collections;SortedList;false;Add;(System.Object,System.Object);;Argument[0];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | | System.Collections;SortedList;false;Add;(System.Object,System.Object);;Argument[1];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | | System.Collections;SortedList;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | -| System.Collections;SortedList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;SortedList;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;SortedList;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Collections;SortedList;false;GetByIndex;(System.Int32);;Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | | System.Collections;SortedList;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | @@ -2093,7 +2086,7 @@ summary | System.Collections;SortedList;false;set_Item;(System.Object,System.Object);;Argument[0];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | | System.Collections;SortedList;false;set_Item;(System.Object,System.Object);;Argument[1];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];value;manual | | System.Collections;Stack;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | -| System.Collections;Stack;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;Stack;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;Stack;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Collections;Stack;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Collections;Stack;false;Peek;();;Argument[this].Element;ReturnValue;value;manual | @@ -3090,7 +3083,7 @@ summary | System.Data;InternalDataCollectionBase;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Data;InternalDataCollectionBase;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | | System.Data;InternalDataCollectionBase;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | -| System.Data;PropertyCollection;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;PropertyCollection;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Data;TypedTableBase<>;false;Cast<>;();;Argument[this];ReturnValue;taint;df-generated | | System.Data;TypedTableBase<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | | System.Data;TypedTableBase<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | @@ -7346,8 +7339,6 @@ summary | System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Insert;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | | System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Insert;(System.Int32,T);;Argument[1];Argument[this].Element;value;manual | | System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;ReadOnlyCollectionBuilder;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;get_Item;(System.Int32);;Argument[this].Element;ReturnValue;value;manual | | System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | | System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;set_Item;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | @@ -10702,7 +10693,7 @@ summary | System;Array;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | | System;Array;false;Clear;(System.Array);;Argument[0].WithoutElement;Argument[0];value;manual | | System;Array;false;Clear;(System.Array,System.Int32,System.Int32);;Argument[0].WithoutElement;Argument[0];value;manual | -| System;Array;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System;Array;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System;Array;false;CopyTo;(System.Array,System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System;Array;false;CopyTo;(System.Array,System.Int64);;Argument[this].Element;Argument[0].Element;value;manual | | System;Array;false;Fill<>;(T[],T);;Argument[1];Argument[0].Element;taint;df-generated | diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected index 4ae26655169..e1af1614843 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected @@ -707,7 +707,7 @@ summary | System.Collections.Generic;LinkedListNode<>;false;set_Value;(T);;Argument[0];Argument[this];taint;df-generated | | System.Collections.Generic;List<>+Enumerator;false;get_Current;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Generic;List<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this].Element;value;manual | -| System.Collections.Generic;List<>;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;List<>;false;AsReadOnly;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Generic;List<>;false;CopyTo;(T[]);;Argument[this];Argument[0].Element;taint;df-generated | | System.Collections.Generic;List<>;false;Find;(System.Predicate);;Argument[this].Element;Argument[0].Parameter[0];value;manual | | System.Collections.Generic;List<>;false;Find;(System.Predicate);;Argument[this].Element;ReturnValue;value;manual | @@ -716,11 +716,9 @@ summary | System.Collections.Generic;List<>;false;FindLast;(System.Predicate);;Argument[this].Element;Argument[0].Parameter[0];value;manual | | System.Collections.Generic;List<>;false;FindLast;(System.Predicate);;Argument[this].Element;ReturnValue;value;manual | | System.Collections.Generic;List<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.List<>+Enumerator.Current];value;manual | -| System.Collections.Generic;List<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;List<>;false;GetRange;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Generic;List<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[this].Element;value;manual | | System.Collections.Generic;List<>;false;List;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | -| System.Collections.Generic;List<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Collections.Generic;List<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections.Generic;List<>;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | | System.Collections.Generic;PriorityQueue<,>+UnorderedItemsCollection+Enumerator;false;get_Current;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Generic;PriorityQueue<,>+UnorderedItemsCollection;false;GetEnumerator;();;Argument[this];ReturnValue;taint;df-generated | @@ -786,7 +784,7 @@ summary | System.Collections.Generic;SortedSet<>;false;GetViewBetween;(T,T);;Argument[1];ReturnValue;taint;df-generated | | System.Collections.Generic;SortedSet<>;false;GetViewBetween;(T,T);;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Generic;SortedSet<>;false;IntersectWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | -| System.Collections.Generic;SortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Generic;SortedSet<>;false;Reverse;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Generic;SortedSet<>;false;SortedSet;(System.Collections.Generic.IComparer);;Argument[0];Argument[this];taint;df-generated | | System.Collections.Generic;SortedSet<>;false;SortedSet;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[this];taint;df-generated | | System.Collections.Generic;SortedSet<>;false;SymmetricExceptWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | @@ -837,7 +835,6 @@ summary | System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(TDerived[]);;Argument[0].Element;Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableArray<>+Builder;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Generic.IEnumerator<>.Current];value;manual | | System.Collections.Immutable;ImmutableArray<>+Builder;false;MoveToImmutable;();;Argument[this];ReturnValue;taint;df-generated | -| System.Collections.Immutable;ImmutableArray<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableArray<>+Enumerator;false;get_Current;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableArray<>;false;Add;(T);;Argument[0];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableArray<>;false;AddRange;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;df-generated | @@ -971,10 +968,8 @@ summary | System.Collections.Immutable;ImmutableList<>+Builder;false;FindLast;(System.Predicate);;Argument[this].Element;Argument[0].Parameter[0];value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;FindLast;(System.Predicate);;Argument[this].Element;ReturnValue;value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value;manual | -| System.Collections.Immutable;ImmutableList<>+Builder;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>+Builder;false;GetRange;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[this].Element;value;manual | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableList<>+Builder;false;ToImmutable;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableList<>+Builder;false;get_SyncRoot;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableList<>+Enumerator;false;get_Current;();;Argument[this];ReturnValue;taint;df-generated | @@ -992,7 +987,7 @@ summary | System.Collections.Immutable;ImmutableList<>;false;FindLast;(System.Predicate);;Argument[this].Element;Argument[0].Parameter[0];value;manual | | System.Collections.Immutable;ImmutableList<>;false;FindLast;(System.Predicate);;Argument[this].Element;ReturnValue;value;manual | | System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current];value;manual | -| System.Collections.Immutable;ImmutableList<>;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;GetRange;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableList<>;false;Insert;(System.Int32,T);;Argument[1];Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableList<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable);;Argument[1].Element;Argument[this].Element;value;manual | | System.Collections.Immutable;ImmutableList<>;false;Remove;(T);;Argument[this];ReturnValue;taint;df-generated | @@ -1008,8 +1003,8 @@ summary | System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[1];Argument[this];taint;df-generated | | System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[1];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableList<>;false;Replace;(T,T,System.Collections.Generic.IEqualityComparer);;Argument[this];ReturnValue;taint;df-generated | -| System.Collections.Immutable;ImmutableList<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Collections.Immutable;ImmutableList<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Reverse;();;Argument[this].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableList<>;false;Reverse;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[1];Argument[this];taint;df-generated | | System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[1];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableList<>;false;SetItem;(System.Int32,T);;Argument[this];ReturnValue;taint;df-generated | @@ -1106,7 +1101,7 @@ summary | System.Collections.Immutable;ImmutableSortedSet;false;ToImmutableSortedSet<>;(System.Collections.Immutable.ImmutableSortedSet+Builder);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current];value;manual | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;IntersectWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | -| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;Reverse;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;SymmetricExceptWith;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;ToImmutable;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;TryGetValue;(T,T);;Argument[0];ReturnValue;taint;df-generated | @@ -1124,7 +1119,7 @@ summary | System.Collections.Immutable;ImmutableSortedSet<>;false;GetEnumerator;();;Argument[this].Element;ReturnValue.Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current];value;manual | | System.Collections.Immutable;ImmutableSortedSet<>;false;Intersect;(System.Collections.Generic.IEnumerable);;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>;false;Remove;(T);;Argument[this];ReturnValue;taint;df-generated | -| System.Collections.Immutable;ImmutableSortedSet<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Immutable;ImmutableSortedSet<>;false;Reverse;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections.Immutable;ImmutableSortedSet<>;false;SymmetricExcept;(System.Collections.Generic.IEnumerable);;Argument[this];ReturnValue;taint;df-generated | @@ -1237,7 +1232,7 @@ summary | System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;NotifyCollectionChangedEventArgs;(System.Collections.Specialized.NotifyCollectionChangedAction,System.Object,System.Object,System.Int32);;Argument[2];Argument[this];taint;df-generated | | System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;get_NewItems;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections.Specialized;NotifyCollectionChangedEventArgs;false;get_OldItems;();;Argument[this];ReturnValue;taint;df-generated | -| System.Collections.Specialized;OrderedDictionary;false;AsReadOnly;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections.Specialized;OrderedDictionary;false;AsReadOnly;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections.Specialized;OrderedDictionary;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | | System.Collections.Specialized;OrderedDictionary;false;OrderedDictionary;(System.Int32,System.Collections.IEqualityComparer);;Argument[1];Argument[this];taint;df-generated | | System.Collections.Specialized;OrderedDictionary;false;OrderedDictionary;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[0];Argument[this];taint;df-generated | @@ -1258,24 +1253,22 @@ summary | System.Collections;ArrayList;false;Adapter;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections;ArrayList;false;AddRange;(System.Collections.ICollection);;Argument[0].Element;Argument[this].Element;value;manual | | System.Collections;ArrayList;false;ArrayList;(System.Collections.ICollection);;Argument[0].Element;Argument[this];taint;df-generated | -| System.Collections;ArrayList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;CopyTo;(System.Array);;Argument[this];Argument[0].Element;taint;df-generated | | System.Collections;ArrayList;false;FixedSize;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;FixedSize;(System.Collections.IList);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;GetEnumerator;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Property[System.Collections.IEnumerator.Current];value;manual | -| System.Collections;ArrayList;false;GetRange;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;ArrayList;false;GetRange;(System.Int32,System.Int32);;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;InsertRange;(System.Int32,System.Collections.ICollection);;Argument[1].Element;Argument[this].Element;value;manual | | System.Collections;ArrayList;false;ReadOnly;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections;ArrayList;false;ReadOnly;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections;ArrayList;false;Repeat;(System.Object,System.Int32);;Argument[0];ReturnValue.Element;value;manual | -| System.Collections;ArrayList;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Collections;ArrayList;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Collections;ArrayList;false;SetRange;(System.Int32,System.Collections.ICollection);;Argument[1].Element;Argument[this];taint;df-generated | | System.Collections;ArrayList;false;Synchronized;(System.Collections.ArrayList);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections;ArrayList;false;Synchronized;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections;ArrayList;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | | System.Collections;BitArray;false;And;(System.Collections.BitArray);;Argument[this];ReturnValue;value;df-generated | -| System.Collections;BitArray;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;BitArray;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;BitArray;false;LeftShift;(System.Int32);;Argument[this];ReturnValue;value;df-generated | | System.Collections;BitArray;false;Not;();;Argument[this];ReturnValue;value;df-generated | | System.Collections;BitArray;false;Or;(System.Collections.BitArray);;Argument[this];ReturnValue;value;df-generated | @@ -1300,7 +1293,7 @@ summary | System.Collections;DictionaryEntry;false;get_Value;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections;DictionaryEntry;false;set_Key;(System.Object);;Argument[0];Argument[this];taint;df-generated | | System.Collections;DictionaryEntry;false;set_Value;(System.Object);;Argument[0];Argument[this];taint;df-generated | -| System.Collections;Hashtable;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;Hashtable;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;Hashtable;false;GetEnumerator;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections;Hashtable;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | | System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary);;Argument[0].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Key];value;manual | @@ -1341,7 +1334,7 @@ summary | System.Collections;IList;true;get_Item;(System.Int32);;Argument[this].Element;ReturnValue;value;manual | | System.Collections;IList;true;set_Item;(System.Int32,System.Object);;Argument[1];Argument[this].Element;value;manual | | System.Collections;Queue;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | -| System.Collections;Queue;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;Queue;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;Queue;false;Dequeue;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections;Queue;false;Enqueue;(System.Object);;Argument[0];Argument[this];taint;df-generated | | System.Collections;Queue;false;Peek;();;Argument[this].Element;ReturnValue;value;manual | @@ -1350,7 +1343,7 @@ summary | System.Collections;Queue;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | | System.Collections;ReadOnlyCollectionBase;false;get_InnerList;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections;ReadOnlyCollectionBase;false;get_SyncRoot;();;Argument[this];ReturnValue;taint;df-generated | -| System.Collections;SortedList;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;SortedList;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;SortedList;false;GetByIndex;(System.Int32);;Argument[this].Element.Property[System.Collections.Generic.KeyValuePair<,>.Value];ReturnValue;value;manual | | System.Collections;SortedList;false;GetEnumerator;();;Argument[this];ReturnValue;taint;df-generated | | System.Collections;SortedList;false;GetKey;(System.Int32);;Argument[this];ReturnValue;taint;df-generated | @@ -1365,7 +1358,7 @@ summary | System.Collections;SortedList;false;Synchronized;(System.Collections.SortedList);;Argument[0].Element;ReturnValue;taint;df-generated | | System.Collections;SortedList;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | | System.Collections;Stack;false;Clear;();;Argument[this].WithoutElement;Argument[this];value;manual | -| System.Collections;Stack;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Collections;Stack;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Collections;Stack;false;Peek;();;Argument[this].Element;ReturnValue;value;manual | | System.Collections;Stack;false;Pop;();;Argument[this].Element;ReturnValue;value;manual | | System.Collections;Stack;false;Push;(System.Object);;Argument[0];Argument[this];taint;df-generated | @@ -2244,7 +2237,7 @@ summary | System.Data;ITableMappingCollection;true;get_Item;(System.String);;Argument[this].Element;ReturnValue;value;manual | | System.Data;ITableMappingCollection;true;set_Item;(System.String,System.Object);;Argument[1];Argument[this].Element;value;manual | | System.Data;InternalDataCollectionBase;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | -| System.Data;PropertyCollection;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System.Data;PropertyCollection;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System.Data;TypedTableBase<>;false;Cast<>;();;Argument[this];ReturnValue;taint;df-generated | | System.Data;TypedTableBaseExtensions;false;AsEnumerable<>;(System.Data.TypedTableBase);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Data;TypedTableBaseExtensions;false;ElementAtOrDefault<>;(System.Data.TypedTableBase,System.Int32);;Argument[0].Element;ReturnValue;value;manual | @@ -6001,8 +5994,6 @@ summary | System.Runtime.CompilerServices;PoolingAsyncValueTaskMethodBuilder<>;false;SetResult;(TResult);;Argument[0];Argument[this];taint;df-generated | | System.Runtime.CompilerServices;PoolingAsyncValueTaskMethodBuilder<>;false;get_Task;();;Argument[this];ReturnValue;taint;df-generated | | System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;ReadOnlyCollectionBuilder;(System.Collections.Generic.IEnumerable);;Argument[0].Element;Argument[this];taint;df-generated | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;();;Argument[0].Element;ReturnValue.Element;value;manual | -| System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;(System.Int32,System.Int32);;Argument[0].Element;ReturnValue.Element;value;manual | | System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;get_SyncRoot;();;Argument[this];ReturnValue;value;df-generated | | System.Runtime.CompilerServices;RuntimeWrappedException;false;GetObjectData;(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext);;Argument[this];Argument[0];taint;df-generated | | System.Runtime.CompilerServices;RuntimeWrappedException;false;RuntimeWrappedException;(System.Object);;Argument[0];Argument[this];taint;df-generated | @@ -9028,7 +9019,7 @@ summary | System;Array;false;AsReadOnly<>;(T[]);;Argument[0].Element;ReturnValue.Element;value;manual | | System;Array;false;Clear;(System.Array);;Argument[0].WithoutElement;Argument[0];value;manual | | System;Array;false;Clear;(System.Array,System.Int32,System.Int32);;Argument[0].WithoutElement;Argument[0];value;manual | -| System;Array;false;Clone;();;Argument[0].Element;ReturnValue.Element;value;manual | +| System;Array;false;Clone;();;Argument[this].Element;ReturnValue.Element;value;manual | | System;Array;false;CopyTo;(System.Array,System.Int64);;Argument[this].Element;Argument[0].Element;value;manual | | System;Array;false;Fill<>;(T[],T);;Argument[1];Argument[0].Element;taint;df-generated | | System;Array;false;Fill<>;(T[],T,System.Int32,System.Int32);;Argument[1];Argument[0].Element;taint;df-generated | diff --git a/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.expected b/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.expected index 7b173a98e41..2bddf573b6a 100644 --- a/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.expected @@ -1,95 +1,186 @@ failures +testFailures edges | Operator.cs:9:39:9:39 | x : C | Operator.cs:9:50:9:50 | access to parameter x : C | +| Operator.cs:9:39:9:39 | x : C | Operator.cs:9:50:9:50 | access to parameter x : C | +| Operator.cs:16:38:16:38 | x : C | Operator.cs:16:49:16:49 | access to parameter x : C | | Operator.cs:16:38:16:38 | x : C | Operator.cs:16:49:16:49 | access to parameter x : C | | Operator.cs:18:51:18:51 | y : C | Operator.cs:18:57:18:57 | access to parameter y : C | +| Operator.cs:18:51:18:51 | y : C | Operator.cs:18:57:18:57 | access to parameter y : C | +| Operator.cs:19:38:19:38 | x : C | Operator.cs:19:49:19:49 | access to parameter x : C | | Operator.cs:19:38:19:38 | x : C | Operator.cs:19:49:19:49 | access to parameter x : C | | Operator.cs:21:43:21:43 | y : C | Operator.cs:21:49:21:49 | access to parameter y : C | +| Operator.cs:21:43:21:43 | y : C | Operator.cs:21:49:21:49 | access to parameter y : C | +| Operator.cs:22:51:22:51 | y : C | Operator.cs:22:57:22:57 | access to parameter y : C | | Operator.cs:22:51:22:51 | y : C | Operator.cs:22:57:22:57 | access to parameter y : C | | Operator.cs:27:17:27:28 | call to method Source : C | Operator.cs:29:17:29:17 | access to local variable x : C | +| Operator.cs:27:17:27:28 | call to method Source : C | Operator.cs:29:17:29:17 | access to local variable x : C | +| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:16:38:16:38 | x : C | | Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:16:38:16:38 | x : C | | Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:29:17:29:21 | call to operator + : C | +| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:29:17:29:21 | call to operator + : C | +| Operator.cs:29:17:29:21 | call to operator + : C | Operator.cs:30:14:30:14 | access to local variable z | | Operator.cs:29:17:29:21 | call to operator + : C | Operator.cs:30:14:30:14 | access to local variable z | | Operator.cs:35:17:35:28 | call to method Source : C | Operator.cs:37:27:37:27 | access to local variable x : C | +| Operator.cs:35:17:35:28 | call to method Source : C | Operator.cs:37:27:37:27 | access to local variable x : C | +| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:19:38:19:38 | x : C | | Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:19:38:19:38 | x : C | | Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:37:27:37:31 | call to operator - : C | +| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:37:27:37:31 | call to operator - : C | +| Operator.cs:37:27:37:31 | call to operator - : C | Operator.cs:38:14:38:14 | access to local variable z | | Operator.cs:37:27:37:31 | call to operator - : C | Operator.cs:38:14:38:14 | access to local variable z | | Operator.cs:44:17:44:28 | call to method Source : C | Operator.cs:45:29:45:29 | access to local variable y : C | +| Operator.cs:44:17:44:28 | call to method Source : C | Operator.cs:45:29:45:29 | access to local variable y : C | +| Operator.cs:45:25:45:29 | call to operator checked - : C | Operator.cs:46:14:46:14 | access to local variable z | | Operator.cs:45:25:45:29 | call to operator checked - : C | Operator.cs:46:14:46:14 | access to local variable z | | Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:18:51:18:51 | y : C | +| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:18:51:18:51 | y : C | +| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:45:25:45:29 | call to operator checked - : C | | Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:45:25:45:29 | call to operator checked - : C | | Operator.cs:49:28:49:28 | x : C | Operator.cs:51:17:51:17 | access to parameter x : C | +| Operator.cs:49:28:49:28 | x : C | Operator.cs:51:17:51:17 | access to parameter x : C | +| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:9:39:9:39 | x : C | | Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:9:39:9:39 | x : C | | Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:51:17:51:21 | call to operator * : C | +| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:51:17:51:21 | call to operator * : C | +| Operator.cs:51:17:51:21 | call to operator * : C | Operator.cs:52:14:52:14 | (...) ... | | Operator.cs:51:17:51:21 | call to operator * : C | Operator.cs:52:14:52:14 | (...) ... | | Operator.cs:57:17:57:28 | call to method Source : C | Operator.cs:59:15:59:15 | access to local variable x : C | +| Operator.cs:57:17:57:28 | call to method Source : C | Operator.cs:59:15:59:15 | access to local variable x : C | +| Operator.cs:59:15:59:15 | access to local variable x : C | Operator.cs:49:28:49:28 | x : C | | Operator.cs:59:15:59:15 | access to local variable x : C | Operator.cs:49:28:49:28 | x : C | | Operator.cs:62:33:62:33 | y : C | Operator.cs:64:21:64:21 | access to parameter y : C | +| Operator.cs:62:33:62:33 | y : C | Operator.cs:64:21:64:21 | access to parameter y : C | +| Operator.cs:64:17:64:21 | call to operator / : C | Operator.cs:65:14:65:14 | (...) ... | | Operator.cs:64:17:64:21 | call to operator / : C | Operator.cs:65:14:65:14 | (...) ... | | Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:21:43:21:43 | y : C | +| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:21:43:21:43 | y : C | +| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:64:17:64:21 | call to operator / : C | | Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:64:17:64:21 | call to operator / : C | | Operator.cs:71:17:71:29 | call to method Source : C | Operator.cs:72:18:72:18 | access to local variable y : C | +| Operator.cs:71:17:71:29 | call to method Source : C | Operator.cs:72:18:72:18 | access to local variable y : C | +| Operator.cs:72:18:72:18 | access to local variable y : C | Operator.cs:62:33:62:33 | y : C | | Operator.cs:72:18:72:18 | access to local variable y : C | Operator.cs:62:33:62:33 | y : C | | Operator.cs:75:33:75:33 | y : C | Operator.cs:77:29:77:29 | access to parameter y : C | +| Operator.cs:75:33:75:33 | y : C | Operator.cs:77:29:77:29 | access to parameter y : C | +| Operator.cs:77:25:77:29 | call to operator checked / : C | Operator.cs:78:14:78:14 | (...) ... | | Operator.cs:77:25:77:29 | call to operator checked / : C | Operator.cs:78:14:78:14 | (...) ... | | Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:22:51:22:51 | y : C | +| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:22:51:22:51 | y : C | +| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:77:25:77:29 | call to operator checked / : C | | Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:77:25:77:29 | call to operator checked / : C | | Operator.cs:84:17:84:29 | call to method Source : C | Operator.cs:85:18:85:18 | access to local variable y : C | +| Operator.cs:84:17:84:29 | call to method Source : C | Operator.cs:85:18:85:18 | access to local variable y : C | +| Operator.cs:85:18:85:18 | access to local variable y : C | Operator.cs:75:33:75:33 | y : C | | Operator.cs:85:18:85:18 | access to local variable y : C | Operator.cs:75:33:75:33 | y : C | nodes | Operator.cs:9:39:9:39 | x : C | semmle.label | x : C | +| Operator.cs:9:39:9:39 | x : C | semmle.label | x : C | +| Operator.cs:9:50:9:50 | access to parameter x : C | semmle.label | access to parameter x : C | | Operator.cs:9:50:9:50 | access to parameter x : C | semmle.label | access to parameter x : C | | Operator.cs:16:38:16:38 | x : C | semmle.label | x : C | +| Operator.cs:16:38:16:38 | x : C | semmle.label | x : C | +| Operator.cs:16:49:16:49 | access to parameter x : C | semmle.label | access to parameter x : C | | Operator.cs:16:49:16:49 | access to parameter x : C | semmle.label | access to parameter x : C | | Operator.cs:18:51:18:51 | y : C | semmle.label | y : C | +| Operator.cs:18:51:18:51 | y : C | semmle.label | y : C | +| Operator.cs:18:57:18:57 | access to parameter y : C | semmle.label | access to parameter y : C | | Operator.cs:18:57:18:57 | access to parameter y : C | semmle.label | access to parameter y : C | | Operator.cs:19:38:19:38 | x : C | semmle.label | x : C | +| Operator.cs:19:38:19:38 | x : C | semmle.label | x : C | +| Operator.cs:19:49:19:49 | access to parameter x : C | semmle.label | access to parameter x : C | | Operator.cs:19:49:19:49 | access to parameter x : C | semmle.label | access to parameter x : C | | Operator.cs:21:43:21:43 | y : C | semmle.label | y : C | +| Operator.cs:21:43:21:43 | y : C | semmle.label | y : C | +| Operator.cs:21:49:21:49 | access to parameter y : C | semmle.label | access to parameter y : C | | Operator.cs:21:49:21:49 | access to parameter y : C | semmle.label | access to parameter y : C | | Operator.cs:22:51:22:51 | y : C | semmle.label | y : C | +| Operator.cs:22:51:22:51 | y : C | semmle.label | y : C | +| Operator.cs:22:57:22:57 | access to parameter y : C | semmle.label | access to parameter y : C | | Operator.cs:22:57:22:57 | access to parameter y : C | semmle.label | access to parameter y : C | | Operator.cs:27:17:27:28 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:27:17:27:28 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:29:17:29:17 | access to local variable x : C | semmle.label | access to local variable x : C | | Operator.cs:29:17:29:17 | access to local variable x : C | semmle.label | access to local variable x : C | | Operator.cs:29:17:29:21 | call to operator + : C | semmle.label | call to operator + : C | +| Operator.cs:29:17:29:21 | call to operator + : C | semmle.label | call to operator + : C | +| Operator.cs:30:14:30:14 | access to local variable z | semmle.label | access to local variable z | | Operator.cs:30:14:30:14 | access to local variable z | semmle.label | access to local variable z | | Operator.cs:35:17:35:28 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:35:17:35:28 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:37:27:37:27 | access to local variable x : C | semmle.label | access to local variable x : C | | Operator.cs:37:27:37:27 | access to local variable x : C | semmle.label | access to local variable x : C | | Operator.cs:37:27:37:31 | call to operator - : C | semmle.label | call to operator - : C | +| Operator.cs:37:27:37:31 | call to operator - : C | semmle.label | call to operator - : C | +| Operator.cs:38:14:38:14 | access to local variable z | semmle.label | access to local variable z | | Operator.cs:38:14:38:14 | access to local variable z | semmle.label | access to local variable z | | Operator.cs:44:17:44:28 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:44:17:44:28 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:45:25:45:29 | call to operator checked - : C | semmle.label | call to operator checked - : C | | Operator.cs:45:25:45:29 | call to operator checked - : C | semmle.label | call to operator checked - : C | | Operator.cs:45:29:45:29 | access to local variable y : C | semmle.label | access to local variable y : C | +| Operator.cs:45:29:45:29 | access to local variable y : C | semmle.label | access to local variable y : C | +| Operator.cs:46:14:46:14 | access to local variable z | semmle.label | access to local variable z | | Operator.cs:46:14:46:14 | access to local variable z | semmle.label | access to local variable z | | Operator.cs:49:28:49:28 | x : C | semmle.label | x : C | +| Operator.cs:49:28:49:28 | x : C | semmle.label | x : C | +| Operator.cs:51:17:51:17 | access to parameter x : C | semmle.label | access to parameter x : C | | Operator.cs:51:17:51:17 | access to parameter x : C | semmle.label | access to parameter x : C | | Operator.cs:51:17:51:21 | call to operator * : C | semmle.label | call to operator * : C | +| Operator.cs:51:17:51:21 | call to operator * : C | semmle.label | call to operator * : C | +| Operator.cs:52:14:52:14 | (...) ... | semmle.label | (...) ... | | Operator.cs:52:14:52:14 | (...) ... | semmle.label | (...) ... | | Operator.cs:57:17:57:28 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:57:17:57:28 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:59:15:59:15 | access to local variable x : C | semmle.label | access to local variable x : C | | Operator.cs:59:15:59:15 | access to local variable x : C | semmle.label | access to local variable x : C | | Operator.cs:62:33:62:33 | y : C | semmle.label | y : C | +| Operator.cs:62:33:62:33 | y : C | semmle.label | y : C | +| Operator.cs:64:17:64:21 | call to operator / : C | semmle.label | call to operator / : C | | Operator.cs:64:17:64:21 | call to operator / : C | semmle.label | call to operator / : C | | Operator.cs:64:21:64:21 | access to parameter y : C | semmle.label | access to parameter y : C | +| Operator.cs:64:21:64:21 | access to parameter y : C | semmle.label | access to parameter y : C | +| Operator.cs:65:14:65:14 | (...) ... | semmle.label | (...) ... | | Operator.cs:65:14:65:14 | (...) ... | semmle.label | (...) ... | | Operator.cs:71:17:71:29 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:71:17:71:29 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:72:18:72:18 | access to local variable y : C | semmle.label | access to local variable y : C | | Operator.cs:72:18:72:18 | access to local variable y : C | semmle.label | access to local variable y : C | | Operator.cs:75:33:75:33 | y : C | semmle.label | y : C | +| Operator.cs:75:33:75:33 | y : C | semmle.label | y : C | +| Operator.cs:77:25:77:29 | call to operator checked / : C | semmle.label | call to operator checked / : C | | Operator.cs:77:25:77:29 | call to operator checked / : C | semmle.label | call to operator checked / : C | | Operator.cs:77:29:77:29 | access to parameter y : C | semmle.label | access to parameter y : C | +| Operator.cs:77:29:77:29 | access to parameter y : C | semmle.label | access to parameter y : C | +| Operator.cs:78:14:78:14 | (...) ... | semmle.label | (...) ... | | Operator.cs:78:14:78:14 | (...) ... | semmle.label | (...) ... | | Operator.cs:84:17:84:29 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:84:17:84:29 | call to method Source : C | semmle.label | call to method Source : C | +| Operator.cs:85:18:85:18 | access to local variable y : C | semmle.label | access to local variable y : C | | Operator.cs:85:18:85:18 | access to local variable y : C | semmle.label | access to local variable y : C | subpaths | Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:16:38:16:38 | x : C | Operator.cs:16:49:16:49 | access to parameter x : C | Operator.cs:29:17:29:21 | call to operator + : C | +| Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:16:38:16:38 | x : C | Operator.cs:16:49:16:49 | access to parameter x : C | Operator.cs:29:17:29:21 | call to operator + : C | +| Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:19:38:19:38 | x : C | Operator.cs:19:49:19:49 | access to parameter x : C | Operator.cs:37:27:37:31 | call to operator - : C | | Operator.cs:37:27:37:27 | access to local variable x : C | Operator.cs:19:38:19:38 | x : C | Operator.cs:19:49:19:49 | access to parameter x : C | Operator.cs:37:27:37:31 | call to operator - : C | | Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:18:51:18:51 | y : C | Operator.cs:18:57:18:57 | access to parameter y : C | Operator.cs:45:25:45:29 | call to operator checked - : C | +| Operator.cs:45:29:45:29 | access to local variable y : C | Operator.cs:18:51:18:51 | y : C | Operator.cs:18:57:18:57 | access to parameter y : C | Operator.cs:45:25:45:29 | call to operator checked - : C | +| Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:9:39:9:39 | x : C | Operator.cs:9:50:9:50 | access to parameter x : C | Operator.cs:51:17:51:21 | call to operator * : C | | Operator.cs:51:17:51:17 | access to parameter x : C | Operator.cs:9:39:9:39 | x : C | Operator.cs:9:50:9:50 | access to parameter x : C | Operator.cs:51:17:51:21 | call to operator * : C | | Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:21:43:21:43 | y : C | Operator.cs:21:49:21:49 | access to parameter y : C | Operator.cs:64:17:64:21 | call to operator / : C | +| Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:21:43:21:43 | y : C | Operator.cs:21:49:21:49 | access to parameter y : C | Operator.cs:64:17:64:21 | call to operator / : C | +| Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:22:51:22:51 | y : C | Operator.cs:22:57:22:57 | access to parameter y : C | Operator.cs:77:25:77:29 | call to operator checked / : C | | Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:22:51:22:51 | y : C | Operator.cs:22:57:22:57 | access to parameter y : C | Operator.cs:77:25:77:29 | call to operator checked / : C | #select | Operator.cs:30:14:30:14 | access to local variable z | Operator.cs:27:17:27:28 | call to method Source : C | Operator.cs:30:14:30:14 | access to local variable z | $@ | Operator.cs:27:17:27:28 | call to method Source : C | call to method Source : C | +| Operator.cs:30:14:30:14 | access to local variable z | Operator.cs:27:17:27:28 | call to method Source : C | Operator.cs:30:14:30:14 | access to local variable z | $@ | Operator.cs:27:17:27:28 | call to method Source : C | call to method Source : C | +| Operator.cs:38:14:38:14 | access to local variable z | Operator.cs:35:17:35:28 | call to method Source : C | Operator.cs:38:14:38:14 | access to local variable z | $@ | Operator.cs:35:17:35:28 | call to method Source : C | call to method Source : C | | Operator.cs:38:14:38:14 | access to local variable z | Operator.cs:35:17:35:28 | call to method Source : C | Operator.cs:38:14:38:14 | access to local variable z | $@ | Operator.cs:35:17:35:28 | call to method Source : C | call to method Source : C | | Operator.cs:46:14:46:14 | access to local variable z | Operator.cs:44:17:44:28 | call to method Source : C | Operator.cs:46:14:46:14 | access to local variable z | $@ | Operator.cs:44:17:44:28 | call to method Source : C | call to method Source : C | +| Operator.cs:46:14:46:14 | access to local variable z | Operator.cs:44:17:44:28 | call to method Source : C | Operator.cs:46:14:46:14 | access to local variable z | $@ | Operator.cs:44:17:44:28 | call to method Source : C | call to method Source : C | +| Operator.cs:52:14:52:14 | (...) ... | Operator.cs:57:17:57:28 | call to method Source : C | Operator.cs:52:14:52:14 | (...) ... | $@ | Operator.cs:57:17:57:28 | call to method Source : C | call to method Source : C | | Operator.cs:52:14:52:14 | (...) ... | Operator.cs:57:17:57:28 | call to method Source : C | Operator.cs:52:14:52:14 | (...) ... | $@ | Operator.cs:57:17:57:28 | call to method Source : C | call to method Source : C | | Operator.cs:65:14:65:14 | (...) ... | Operator.cs:71:17:71:29 | call to method Source : C | Operator.cs:65:14:65:14 | (...) ... | $@ | Operator.cs:71:17:71:29 | call to method Source : C | call to method Source : C | +| Operator.cs:65:14:65:14 | (...) ... | Operator.cs:71:17:71:29 | call to method Source : C | Operator.cs:65:14:65:14 | (...) ... | $@ | Operator.cs:71:17:71:29 | call to method Source : C | call to method Source : C | +| Operator.cs:78:14:78:14 | (...) ... | Operator.cs:84:17:84:29 | call to method Source : C | Operator.cs:78:14:78:14 | (...) ... | $@ | Operator.cs:84:17:84:29 | call to method Source : C | call to method Source : C | | Operator.cs:78:14:78:14 | (...) ... | Operator.cs:84:17:84:29 | call to method Source : C | Operator.cs:78:14:78:14 | (...) ... | $@ | Operator.cs:84:17:84:29 | call to method Source : C | call to method Source : C | diff --git a/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.ql b/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.ql index b01c0f7fcaf..9336e1b28be 100644 --- a/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.ql +++ b/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.ql @@ -3,9 +3,10 @@ */ import csharp -import DefaultValueFlow::PathGraph import TestUtilities.InlineFlowTest +import DefaultFlowTest +import PathGraph -from DefaultValueFlow::PathNode source, DefaultValueFlow::PathNode sink -where DefaultValueFlow::flowPath(source, sink) +from PathNode source, PathNode sink +where flowPath(source, sink) select sink, source, sink, "$@", source, source.toString() diff --git a/csharp/ql/test/library-tests/dataflow/patterns/PatternFlow.expected b/csharp/ql/test/library-tests/dataflow/patterns/PatternFlow.expected index f965891244c..f2ab31c12b3 100644 --- a/csharp/ql/test/library-tests/dataflow/patterns/PatternFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/patterns/PatternFlow.expected @@ -1,4 +1,5 @@ failures +testFailures edges nodes subpaths diff --git a/csharp/ql/test/library-tests/dataflow/patterns/PatternFlow.ql b/csharp/ql/test/library-tests/dataflow/patterns/PatternFlow.ql index b01c0f7fcaf..9336e1b28be 100644 --- a/csharp/ql/test/library-tests/dataflow/patterns/PatternFlow.ql +++ b/csharp/ql/test/library-tests/dataflow/patterns/PatternFlow.ql @@ -3,9 +3,10 @@ */ import csharp -import DefaultValueFlow::PathGraph import TestUtilities.InlineFlowTest +import DefaultFlowTest +import PathGraph -from DefaultValueFlow::PathNode source, DefaultValueFlow::PathNode sink -where DefaultValueFlow::flowPath(source, sink) +from PathNode source, PathNode sink +where flowPath(source, sink) select sink, source, sink, "$@", source, source.toString() diff --git a/csharp/ql/test/library-tests/dataflow/tuples/Tuples.expected b/csharp/ql/test/library-tests/dataflow/tuples/Tuples.expected index dae85aa45aa..10b9a4b66ac 100644 --- a/csharp/ql/test/library-tests/dataflow/tuples/Tuples.expected +++ b/csharp/ql/test/library-tests/dataflow/tuples/Tuples.expected @@ -1,233 +1,462 @@ failures +testFailures edges | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:10:21:10:22 | access to local variable o1 : Object | +| Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:10:21:10:22 | access to local variable o1 : Object | +| Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:10:29:10:30 | access to local variable o2 : Object | | Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:10:29:10:30 | access to local variable o2 : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:10:21:10:22 | access to local variable o1 : Object | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:10:21:10:22 | access to local variable o1 : Object | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:10:29:10:30 | access to local variable o2 : Object | Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:10:29:10:30 | access to local variable o2 : Object | Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:11:9:11:27 | SSA def(c) : Object | +| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:11:9:11:27 | SSA def(c) : Object | +| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:11:9:11:27 | SSA def(a) : Object | | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:11:9:11:27 | SSA def(a) : Object | | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:11:9:11:27 | SSA def(a) : Object | Tuples.cs:12:14:12:14 | access to local variable a | | Tuples.cs:11:9:11:27 | SSA def(a) : Object | Tuples.cs:12:14:12:14 | access to local variable a | | Tuples.cs:11:9:11:27 | SSA def(c) : Object | Tuples.cs:14:14:14:14 | access to local variable c | +| Tuples.cs:11:9:11:27 | SSA def(c) : Object | Tuples.cs:14:14:14:14 | access to local variable c | +| Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:16:9:16:23 | SSA def(a) : Object | | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:16:9:16:23 | SSA def(a) : Object | | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:16:9:16:23 | SSA def(a) : Object | Tuples.cs:17:14:17:14 | access to local variable a | | Tuples.cs:16:9:16:23 | SSA def(a) : Object | Tuples.cs:17:14:17:14 | access to local variable a | | Tuples.cs:16:9:16:23 | SSA def(c) : Object | Tuples.cs:19:14:19:14 | access to local variable c | +| Tuples.cs:16:9:16:23 | SSA def(c) : Object | Tuples.cs:19:14:19:14 | access to local variable c | +| Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:16:9:16:23 | SSA def(c) : Object | | Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:16:9:16:23 | SSA def(c) : Object | | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:21:9:21:26 | SSA def(p) : Object | +| Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:21:9:21:26 | SSA def(p) : Object | +| Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | | Tuples.cs:21:9:21:26 | SSA def(p) : Object | Tuples.cs:22:14:22:14 | access to local variable p | +| Tuples.cs:21:9:21:26 | SSA def(p) : Object | Tuples.cs:22:14:22:14 | access to local variable p | +| Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | | Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | | Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | Tuples.cs:24:14:24:20 | access to field Item2 | +| Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | Tuples.cs:24:14:24:20 | access to field Item2 | +| Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:26:14:26:20 | access to field Item1 | | Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:26:14:26:20 | access to field Item1 | | Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:27:14:27:16 | access to field Item1 | +| Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:27:14:27:16 | access to field Item1 | +| Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | | Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | | Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | Tuples.cs:29:14:29:26 | access to field Item2 | +| Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | Tuples.cs:29:14:29:26 | access to field Item2 | +| Tuples.cs:34:18:34:34 | call to method Source : Object | Tuples.cs:37:18:37:19 | access to local variable o1 : Object | | Tuples.cs:34:18:34:34 | call to method Source : Object | Tuples.cs:37:18:37:19 | access to local variable o1 : Object | | Tuples.cs:35:18:35:34 | call to method Source : Object | Tuples.cs:37:46:37:47 | access to local variable o2 : Object | +| Tuples.cs:35:18:35:34 | call to method Source : Object | Tuples.cs:37:46:37:47 | access to local variable o2 : Object | +| Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | +| Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | +| Tuples.cs:37:18:37:19 | access to local variable o1 : Object | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:37:18:37:19 | access to local variable o1 : Object | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:37:46:37:47 | access to local variable o2 : Object | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | +| Tuples.cs:37:46:37:47 | access to local variable o2 : Object | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | +| Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:38:14:38:20 | access to field Item1 | | Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | Tuples.cs:38:14:38:20 | access to field Item1 | | Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | Tuples.cs:40:14:40:21 | access to field Item10 | +| Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | Tuples.cs:40:14:40:21 | access to field Item10 | +| Tuples.cs:45:17:45:33 | call to method Source : String | Tuples.cs:46:48:46:48 | access to local variable o : String | | Tuples.cs:45:17:45:33 | call to method Source : String | Tuples.cs:46:48:46:48 | access to local variable o : String | | Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | +| Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | +| Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | | Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | | Tuples.cs:46:48:46:48 | access to local variable o : String | Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | +| Tuples.cs:46:48:46:48 | access to local variable o : String | Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | +| Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | Tuples.cs:47:14:47:20 | access to field Item1 | | Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | Tuples.cs:47:14:47:20 | access to field Item1 | | Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:59:18:59:19 | access to local variable o1 : String | +| Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:59:18:59:19 | access to local variable o1 : String | +| Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:59:26:59:27 | access to local variable o2 : String | | Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:59:26:59:27 | access to local variable o2 : String | | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:59:18:59:19 | access to local variable o1 : String | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:59:18:59:19 | access to local variable o1 : String | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:59:26:59:27 | access to local variable o2 : String | Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:59:26:59:27 | access to local variable o2 : String | Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | Tuples.cs:63:22:63:28 | access to field Item1 | | Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | Tuples.cs:63:22:63:28 | access to field Item1 | | Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | +| Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | +| Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | Tuples.cs:64:22:64:34 | access to field Item2 | | Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | Tuples.cs:64:22:64:34 | access to field Item2 | | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:67:30:67:30 | SSA def(c) : String | +| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:67:30:67:30 | SSA def(c) : String | +| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:67:23:67:23 | SSA def(a) : String | | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:67:23:67:23 | SSA def(a) : String | | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:67:23:67:23 | SSA def(a) : String | Tuples.cs:68:22:68:22 | access to local variable a | | Tuples.cs:67:23:67:23 | SSA def(a) : String | Tuples.cs:68:22:68:22 | access to local variable a | | Tuples.cs:67:30:67:30 | SSA def(c) : String | Tuples.cs:69:22:69:22 | access to local variable c | +| Tuples.cs:67:30:67:30 | SSA def(c) : String | Tuples.cs:69:22:69:22 | access to local variable c | +| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:87:30:87:30 | SSA def(r) : String | | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | Tuples.cs:87:30:87:30 | SSA def(r) : String | | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:87:23:87:23 | SSA def(p) : String | +| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | Tuples.cs:87:23:87:23 | SSA def(p) : String | +| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | | Tuples.cs:87:23:87:23 | SSA def(p) : String | Tuples.cs:89:18:89:18 | access to local variable p | +| Tuples.cs:87:23:87:23 | SSA def(p) : String | Tuples.cs:89:18:89:18 | access to local variable p | +| Tuples.cs:87:30:87:30 | SSA def(r) : String | Tuples.cs:90:18:90:18 | access to local variable r | | Tuples.cs:87:30:87:30 | SSA def(r) : String | Tuples.cs:90:18:90:18 | access to local variable r | | Tuples.cs:99:17:99:33 | call to method Source : String | Tuples.cs:100:24:100:24 | access to local variable o : String | +| Tuples.cs:99:17:99:33 | call to method Source : String | Tuples.cs:100:24:100:24 | access to local variable o : String | +| Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | | Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | | Tuples.cs:100:24:100:24 | access to local variable o : String | Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | +| Tuples.cs:100:24:100:24 | access to local variable o : String | Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | +| Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | Tuples.cs:101:14:101:16 | access to property i | | Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | Tuples.cs:101:14:101:16 | access to property i | | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:121:28:121:28 | access to local variable o : Object | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:121:28:121:28 | access to local variable o : Object | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:125:25:125:25 | access to local variable o : Object | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:125:25:125:25 | access to local variable o : Object | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:129:31:129:31 | access to local variable o : Object | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:129:31:129:31 | access to local variable o : Object | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:133:28:133:28 | access to local variable o : Object | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:133:28:133:28 | access to local variable o : Object | +| Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | | Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:121:9:121:32 | SSA def(x1) : Object | +| Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:121:9:121:32 | SSA def(x1) : Object | +| Tuples.cs:121:9:121:32 | SSA def(x1) : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | | Tuples.cs:121:9:121:32 | SSA def(x1) : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | | Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | +| Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | +| Tuples.cs:121:28:121:28 | access to local variable o : Object | Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | | Tuples.cs:121:28:121:28 | access to local variable o : Object | Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | | Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:125:9:125:29 | SSA def(x2) : Object | +| Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:125:9:125:29 | SSA def(x2) : Object | +| Tuples.cs:125:9:125:29 | SSA def(x2) : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | | Tuples.cs:125:9:125:29 | SSA def(x2) : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | | Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | +| Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | +| Tuples.cs:125:25:125:25 | access to local variable o : Object | Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | | Tuples.cs:125:25:125:25 | access to local variable o : Object | Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | | Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:129:9:129:32 | SSA def(y3) : Object | +| Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:129:9:129:32 | SSA def(y3) : Object | +| Tuples.cs:129:9:129:32 | SSA def(y3) : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | | Tuples.cs:129:9:129:32 | SSA def(y3) : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | | Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:129:31:129:31 | access to local variable o : Object | Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:129:31:129:31 | access to local variable o : Object | Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:133:9:133:29 | SSA def(y4) : Object | +| Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:133:9:133:29 | SSA def(y4) : Object | +| Tuples.cs:133:9:133:29 | SSA def(y4) : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | | Tuples.cs:133:9:133:29 | SSA def(y4) : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | | Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:133:28:133:28 | access to local variable o : Object | Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:133:28:133:28 | access to local variable o : Object | Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | nodes | Tuples.cs:7:18:7:34 | call to method Source : Object | semmle.label | call to method Source : Object | +| Tuples.cs:7:18:7:34 | call to method Source : Object | semmle.label | call to method Source : Object | +| Tuples.cs:8:18:8:34 | call to method Source : Object | semmle.label | call to method Source : Object | | Tuples.cs:8:18:8:34 | call to method Source : Object | semmle.label | call to method Source : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | semmle.label | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:10:17:10:32 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | semmle.label | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:10:21:10:22 | access to local variable o1 : Object | semmle.label | access to local variable o1 : Object | +| Tuples.cs:10:21:10:22 | access to local variable o1 : Object | semmle.label | access to local variable o1 : Object | +| Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:10:25:10:31 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:10:29:10:30 | access to local variable o2 : Object | semmle.label | access to local variable o2 : Object | +| Tuples.cs:10:29:10:30 | access to local variable o2 : Object | semmle.label | access to local variable o2 : Object | +| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | semmle.label | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:11:9:11:23 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | semmle.label | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:11:9:11:27 | SSA def(a) : Object | semmle.label | SSA def(a) : Object | +| Tuples.cs:11:9:11:27 | SSA def(a) : Object | semmle.label | SSA def(a) : Object | +| Tuples.cs:11:9:11:27 | SSA def(c) : Object | semmle.label | SSA def(c) : Object | | Tuples.cs:11:9:11:27 | SSA def(c) : Object | semmle.label | SSA def(c) : Object | | Tuples.cs:12:14:12:14 | access to local variable a | semmle.label | access to local variable a | +| Tuples.cs:12:14:12:14 | access to local variable a | semmle.label | access to local variable a | +| Tuples.cs:14:14:14:14 | access to local variable c | semmle.label | access to local variable c | | Tuples.cs:14:14:14:14 | access to local variable c | semmle.label | access to local variable c | | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | +| Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | semmle.label | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:16:9:16:19 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | semmle.label | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | | Tuples.cs:16:9:16:23 | SSA def(a) : Object | semmle.label | SSA def(a) : Object | +| Tuples.cs:16:9:16:23 | SSA def(a) : Object | semmle.label | SSA def(a) : Object | +| Tuples.cs:16:9:16:23 | SSA def(c) : Object | semmle.label | SSA def(c) : Object | | Tuples.cs:16:9:16:23 | SSA def(c) : Object | semmle.label | SSA def(c) : Object | | Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:16:13:16:18 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:17:14:17:14 | access to local variable a | semmle.label | access to local variable a | | Tuples.cs:17:14:17:14 | access to local variable a | semmle.label | access to local variable a | | Tuples.cs:19:14:19:14 | access to local variable c | semmle.label | access to local variable c | +| Tuples.cs:19:14:19:14 | access to local variable c | semmle.label | access to local variable c | +| Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | semmle.label | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:21:9:21:22 | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | semmle.label | (..., ...) : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:21:9:21:26 | SSA def(p) : Object | semmle.label | SSA def(p) : Object | | Tuples.cs:21:9:21:26 | SSA def(p) : Object | semmle.label | SSA def(p) : Object | | Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | semmle.label | SSA def(q) : ValueTuple [field Item2] : Object | +| Tuples.cs:21:9:21:26 | SSA def(q) : ValueTuple [field Item2] : Object | semmle.label | SSA def(q) : ValueTuple [field Item2] : Object | +| Tuples.cs:22:14:22:14 | access to local variable p | semmle.label | access to local variable p | | Tuples.cs:22:14:22:14 | access to local variable p | semmle.label | access to local variable p | | Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | semmle.label | access to local variable q : ValueTuple [field Item2] : Object | +| Tuples.cs:24:14:24:14 | access to local variable q : ValueTuple [field Item2] : Object | semmle.label | access to local variable q : ValueTuple [field Item2] : Object | +| Tuples.cs:24:14:24:20 | access to field Item2 | semmle.label | access to field Item2 | | Tuples.cs:24:14:24:20 | access to field Item2 | semmle.label | access to field Item2 | | Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | semmle.label | access to local variable x : ValueTuple> [field Item1] : Object | +| Tuples.cs:26:14:26:14 | access to local variable x : ValueTuple> [field Item1] : Object | semmle.label | access to local variable x : ValueTuple> [field Item1] : Object | +| Tuples.cs:26:14:26:20 | access to field Item1 | semmle.label | access to field Item1 | | Tuples.cs:26:14:26:20 | access to field Item1 | semmle.label | access to field Item1 | | Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | semmle.label | access to local variable x : ValueTuple> [field Item1] : Object | +| Tuples.cs:27:14:27:14 | access to local variable x : ValueTuple> [field Item1] : Object | semmle.label | access to local variable x : ValueTuple> [field Item1] : Object | +| Tuples.cs:27:14:27:16 | access to field Item1 | semmle.label | access to field Item1 | | Tuples.cs:27:14:27:16 | access to field Item1 | semmle.label | access to field Item1 | | Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | semmle.label | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:29:14:29:14 | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | semmle.label | access to local variable x : ValueTuple> [field Item2, field Item2] : Object | +| Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | semmle.label | access to field Item2 : ValueTuple [field Item2] : Object | | Tuples.cs:29:14:29:20 | access to field Item2 : ValueTuple [field Item2] : Object | semmle.label | access to field Item2 : ValueTuple [field Item2] : Object | | Tuples.cs:29:14:29:26 | access to field Item2 | semmle.label | access to field Item2 | +| Tuples.cs:29:14:29:26 | access to field Item2 | semmle.label | access to field Item2 | +| Tuples.cs:34:18:34:34 | call to method Source : Object | semmle.label | call to method Source : Object | | Tuples.cs:34:18:34:34 | call to method Source : Object | semmle.label | call to method Source : Object | | Tuples.cs:35:18:35:34 | call to method Source : Object | semmle.label | call to method Source : Object | +| Tuples.cs:35:18:35:34 | call to method Source : Object | semmle.label | call to method Source : Object | +| Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item1] : Object | semmle.label | (..., ...) : ValueTuple> [field Item1] : Object | | Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | semmle.label | (..., ...) : ValueTuple> [field Item10] : Object | +| Tuples.cs:37:17:37:48 | (..., ...) : ValueTuple> [field Item10] : Object | semmle.label | (..., ...) : ValueTuple> [field Item10] : Object | +| Tuples.cs:37:18:37:19 | access to local variable o1 : Object | semmle.label | access to local variable o1 : Object | | Tuples.cs:37:18:37:19 | access to local variable o1 : Object | semmle.label | access to local variable o1 : Object | | Tuples.cs:37:46:37:47 | access to local variable o2 : Object | semmle.label | access to local variable o2 : Object | +| Tuples.cs:37:46:37:47 | access to local variable o2 : Object | semmle.label | access to local variable o2 : Object | +| Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | semmle.label | access to local variable x : ValueTuple> [field Item1] : Object | | Tuples.cs:38:14:38:14 | access to local variable x : ValueTuple> [field Item1] : Object | semmle.label | access to local variable x : ValueTuple> [field Item1] : Object | | Tuples.cs:38:14:38:20 | access to field Item1 | semmle.label | access to field Item1 | +| Tuples.cs:38:14:38:20 | access to field Item1 | semmle.label | access to field Item1 | +| Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | semmle.label | access to local variable x : ValueTuple> [field Item10] : Object | | Tuples.cs:40:14:40:14 | access to local variable x : ValueTuple> [field Item10] : Object | semmle.label | access to local variable x : ValueTuple> [field Item10] : Object | | Tuples.cs:40:14:40:21 | access to field Item10 | semmle.label | access to field Item10 | +| Tuples.cs:40:14:40:21 | access to field Item10 | semmle.label | access to field Item10 | +| Tuples.cs:45:17:45:33 | call to method Source : String | semmle.label | call to method Source : String | | Tuples.cs:45:17:45:33 | call to method Source : String | semmle.label | call to method Source : String | | Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | semmle.label | (...) ... : ValueTuple [field Item1] : String | +| Tuples.cs:46:17:46:55 | (...) ... : ValueTuple [field Item1] : String | semmle.label | (...) ... : ValueTuple [field Item1] : String | +| Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | semmle.label | (..., ...) : ValueTuple [field Item1] : String | | Tuples.cs:46:47:46:55 | (..., ...) : ValueTuple [field Item1] : String | semmle.label | (..., ...) : ValueTuple [field Item1] : String | | Tuples.cs:46:48:46:48 | access to local variable o : String | semmle.label | access to local variable o : String | +| Tuples.cs:46:48:46:48 | access to local variable o : String | semmle.label | access to local variable o : String | +| Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | semmle.label | access to local variable x : ValueTuple [field Item1] : String | | Tuples.cs:47:14:47:14 | access to local variable x : ValueTuple [field Item1] : String | semmle.label | access to local variable x : ValueTuple [field Item1] : String | | Tuples.cs:47:14:47:20 | access to field Item1 | semmle.label | access to field Item1 | +| Tuples.cs:47:14:47:20 | access to field Item1 | semmle.label | access to field Item1 | +| Tuples.cs:57:18:57:34 | call to method Source : String | semmle.label | call to method Source : String | | Tuples.cs:57:18:57:34 | call to method Source : String | semmle.label | call to method Source : String | | Tuples.cs:58:18:58:34 | call to method Source : String | semmle.label | call to method Source : String | +| Tuples.cs:58:18:58:34 | call to method Source : String | semmle.label | call to method Source : String | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item1] : String | | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item1] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item1] : String | | Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:59:17:59:32 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:59:18:59:19 | access to local variable o1 : String | semmle.label | access to local variable o1 : String | | Tuples.cs:59:18:59:19 | access to local variable o1 : String | semmle.label | access to local variable o1 : String | | Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:59:22:59:28 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:59:26:59:27 | access to local variable o2 : String | semmle.label | access to local variable o2 : String | | Tuples.cs:59:26:59:27 | access to local variable o2 : String | semmle.label | access to local variable o2 : String | | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | semmle.label | SSA def(t) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item1] : String | semmle.label | SSA def(t) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:62:18:62:57 | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | SSA def(t) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | semmle.label | access to local variable t : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:63:22:63:22 | access to local variable t : ValueTuple,Int32> [field Item1] : String | semmle.label | access to local variable t : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:63:22:63:28 | access to field Item1 | semmle.label | access to field Item1 | | Tuples.cs:63:22:63:28 | access to field Item1 | semmle.label | access to field Item1 | | Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:64:22:64:22 | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | access to local variable t : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | semmle.label | access to field Item2 : ValueTuple [field Item2] : String | | Tuples.cs:64:22:64:28 | access to field Item2 : ValueTuple [field Item2] : String | semmle.label | access to field Item2 : ValueTuple [field Item2] : String | | Tuples.cs:64:22:64:34 | access to field Item2 | semmle.label | access to field Item2 | +| Tuples.cs:64:22:64:34 | access to field Item2 | semmle.label | access to field Item2 | +| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item1] : String | +| Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:67:18:67:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | | Tuples.cs:67:23:67:23 | SSA def(a) : String | semmle.label | SSA def(a) : String | +| Tuples.cs:67:23:67:23 | SSA def(a) : String | semmle.label | SSA def(a) : String | +| Tuples.cs:67:30:67:30 | SSA def(c) : String | semmle.label | SSA def(c) : String | | Tuples.cs:67:30:67:30 | SSA def(c) : String | semmle.label | SSA def(c) : String | | Tuples.cs:68:22:68:22 | access to local variable a | semmle.label | access to local variable a | +| Tuples.cs:68:22:68:22 | access to local variable a | semmle.label | access to local variable a | +| Tuples.cs:69:22:69:22 | access to local variable c | semmle.label | access to local variable c | | Tuples.cs:69:22:69:22 | access to local variable c | semmle.label | access to local variable c | | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple [field Item2] : String | semmle.label | (..., ...) : ValueTuple [field Item2] : String | +| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item1] : String | | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item1] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item1] : String | | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | semmle.label | (..., ...) : ValueTuple,Int32> [field Item2, field Item2] : String | +| Tuples.cs:87:23:87:23 | SSA def(p) : String | semmle.label | SSA def(p) : String | | Tuples.cs:87:23:87:23 | SSA def(p) : String | semmle.label | SSA def(p) : String | | Tuples.cs:87:30:87:30 | SSA def(r) : String | semmle.label | SSA def(r) : String | +| Tuples.cs:87:30:87:30 | SSA def(r) : String | semmle.label | SSA def(r) : String | +| Tuples.cs:89:18:89:18 | access to local variable p | semmle.label | access to local variable p | | Tuples.cs:89:18:89:18 | access to local variable p | semmle.label | access to local variable p | | Tuples.cs:90:18:90:18 | access to local variable r | semmle.label | access to local variable r | +| Tuples.cs:90:18:90:18 | access to local variable r | semmle.label | access to local variable r | +| Tuples.cs:99:17:99:33 | call to method Source : String | semmle.label | call to method Source : String | | Tuples.cs:99:17:99:33 | call to method Source : String | semmle.label | call to method Source : String | | Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | semmle.label | object creation of type R1 : R1 [property i] : String | +| Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String | semmle.label | object creation of type R1 : R1 [property i] : String | +| Tuples.cs:100:24:100:24 | access to local variable o : String | semmle.label | access to local variable o : String | | Tuples.cs:100:24:100:24 | access to local variable o : String | semmle.label | access to local variable o : String | | Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | semmle.label | access to local variable r : R1 [property i] : String | +| Tuples.cs:101:14:101:14 | access to local variable r : R1 [property i] : String | semmle.label | access to local variable r : R1 [property i] : String | +| Tuples.cs:101:14:101:16 | access to property i | semmle.label | access to property i | | Tuples.cs:101:14:101:16 | access to property i | semmle.label | access to property i | | Tuples.cs:118:17:118:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| Tuples.cs:118:17:118:33 | call to method Source : Object | semmle.label | call to method Source : Object | +| Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | semmle.label | (..., ...) : ValueTuple [field Item1] : Object | | Tuples.cs:121:9:121:23 | (..., ...) : ValueTuple [field Item1] : Object | semmle.label | (..., ...) : ValueTuple [field Item1] : Object | | Tuples.cs:121:9:121:32 | SSA def(x1) : Object | semmle.label | SSA def(x1) : Object | +| Tuples.cs:121:9:121:32 | SSA def(x1) : Object | semmle.label | SSA def(x1) : Object | +| Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | semmle.label | (..., ...) : ValueTuple [field Item1] : Object | | Tuples.cs:121:27:121:32 | (..., ...) : ValueTuple [field Item1] : Object | semmle.label | (..., ...) : ValueTuple [field Item1] : Object | | Tuples.cs:121:28:121:28 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| Tuples.cs:121:28:121:28 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| Tuples.cs:122:14:122:15 | access to local variable x1 | semmle.label | access to local variable x1 | | Tuples.cs:122:14:122:15 | access to local variable x1 | semmle.label | access to local variable x1 | | Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | semmle.label | (..., ...) : ValueTuple [field Item1] : Object | +| Tuples.cs:125:9:125:20 | (..., ...) : ValueTuple [field Item1] : Object | semmle.label | (..., ...) : ValueTuple [field Item1] : Object | +| Tuples.cs:125:9:125:29 | SSA def(x2) : Object | semmle.label | SSA def(x2) : Object | | Tuples.cs:125:9:125:29 | SSA def(x2) : Object | semmle.label | SSA def(x2) : Object | | Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | semmle.label | (..., ...) : ValueTuple [field Item1] : Object | +| Tuples.cs:125:24:125:29 | (..., ...) : ValueTuple [field Item1] : Object | semmle.label | (..., ...) : ValueTuple [field Item1] : Object | +| Tuples.cs:125:25:125:25 | access to local variable o : Object | semmle.label | access to local variable o : Object | | Tuples.cs:125:25:125:25 | access to local variable o : Object | semmle.label | access to local variable o : Object | | Tuples.cs:126:14:126:15 | access to local variable x2 | semmle.label | access to local variable x2 | +| Tuples.cs:126:14:126:15 | access to local variable x2 | semmle.label | access to local variable x2 | +| Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:129:9:129:23 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:129:9:129:32 | SSA def(y3) : Object | semmle.label | SSA def(y3) : Object | +| Tuples.cs:129:9:129:32 | SSA def(y3) : Object | semmle.label | SSA def(y3) : Object | +| Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:129:27:129:32 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:129:31:129:31 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| Tuples.cs:129:31:129:31 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| Tuples.cs:130:14:130:15 | access to local variable y3 | semmle.label | access to local variable y3 | | Tuples.cs:130:14:130:15 | access to local variable y3 | semmle.label | access to local variable y3 | | Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:133:9:133:20 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:133:9:133:29 | SSA def(y4) : Object | semmle.label | SSA def(y4) : Object | | Tuples.cs:133:9:133:29 | SSA def(y4) : Object | semmle.label | SSA def(y4) : Object | | Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | +| Tuples.cs:133:24:133:29 | (..., ...) : ValueTuple [field Item2] : Object | semmle.label | (..., ...) : ValueTuple [field Item2] : Object | | Tuples.cs:133:28:133:28 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| Tuples.cs:133:28:133:28 | access to local variable o : Object | semmle.label | access to local variable o : Object | +| Tuples.cs:134:14:134:15 | access to local variable y4 | semmle.label | access to local variable y4 | | Tuples.cs:134:14:134:15 | access to local variable y4 | semmle.label | access to local variable y4 | subpaths #select | Tuples.cs:12:14:12:14 | access to local variable a | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:12:14:12:14 | access to local variable a | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:12:14:12:14 | access to local variable a | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:12:14:12:14 | access to local variable a | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:14:14:14:14 | access to local variable c | Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:14:14:14:14 | access to local variable c | $@ | Tuples.cs:8:18:8:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:14:14:14:14 | access to local variable c | Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:14:14:14:14 | access to local variable c | $@ | Tuples.cs:8:18:8:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:17:14:17:14 | access to local variable a | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:17:14:17:14 | access to local variable a | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:17:14:17:14 | access to local variable a | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:17:14:17:14 | access to local variable a | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:19:14:19:14 | access to local variable c | Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:19:14:19:14 | access to local variable c | $@ | Tuples.cs:8:18:8:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:19:14:19:14 | access to local variable c | Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:19:14:19:14 | access to local variable c | $@ | Tuples.cs:8:18:8:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:22:14:22:14 | access to local variable p | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:22:14:22:14 | access to local variable p | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:22:14:22:14 | access to local variable p | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:22:14:22:14 | access to local variable p | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:24:14:24:20 | access to field Item2 | Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:24:14:24:20 | access to field Item2 | $@ | Tuples.cs:8:18:8:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:24:14:24:20 | access to field Item2 | Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:24:14:24:20 | access to field Item2 | $@ | Tuples.cs:8:18:8:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:26:14:26:20 | access to field Item1 | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:26:14:26:20 | access to field Item1 | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:26:14:26:20 | access to field Item1 | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:26:14:26:20 | access to field Item1 | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:27:14:27:16 | access to field Item1 | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:27:14:27:16 | access to field Item1 | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:27:14:27:16 | access to field Item1 | Tuples.cs:7:18:7:34 | call to method Source : Object | Tuples.cs:27:14:27:16 | access to field Item1 | $@ | Tuples.cs:7:18:7:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:29:14:29:26 | access to field Item2 | Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:29:14:29:26 | access to field Item2 | $@ | Tuples.cs:8:18:8:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:29:14:29:26 | access to field Item2 | Tuples.cs:8:18:8:34 | call to method Source : Object | Tuples.cs:29:14:29:26 | access to field Item2 | $@ | Tuples.cs:8:18:8:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:38:14:38:20 | access to field Item1 | Tuples.cs:34:18:34:34 | call to method Source : Object | Tuples.cs:38:14:38:20 | access to field Item1 | $@ | Tuples.cs:34:18:34:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:38:14:38:20 | access to field Item1 | Tuples.cs:34:18:34:34 | call to method Source : Object | Tuples.cs:38:14:38:20 | access to field Item1 | $@ | Tuples.cs:34:18:34:34 | call to method Source : Object | call to method Source : Object | | Tuples.cs:40:14:40:21 | access to field Item10 | Tuples.cs:35:18:35:34 | call to method Source : Object | Tuples.cs:40:14:40:21 | access to field Item10 | $@ | Tuples.cs:35:18:35:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:40:14:40:21 | access to field Item10 | Tuples.cs:35:18:35:34 | call to method Source : Object | Tuples.cs:40:14:40:21 | access to field Item10 | $@ | Tuples.cs:35:18:35:34 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:47:14:47:20 | access to field Item1 | Tuples.cs:45:17:45:33 | call to method Source : String | Tuples.cs:47:14:47:20 | access to field Item1 | $@ | Tuples.cs:45:17:45:33 | call to method Source : String | call to method Source : String | | Tuples.cs:47:14:47:20 | access to field Item1 | Tuples.cs:45:17:45:33 | call to method Source : String | Tuples.cs:47:14:47:20 | access to field Item1 | $@ | Tuples.cs:45:17:45:33 | call to method Source : String | call to method Source : String | | Tuples.cs:63:22:63:28 | access to field Item1 | Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:63:22:63:28 | access to field Item1 | $@ | Tuples.cs:57:18:57:34 | call to method Source : String | call to method Source : String | +| Tuples.cs:63:22:63:28 | access to field Item1 | Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:63:22:63:28 | access to field Item1 | $@ | Tuples.cs:57:18:57:34 | call to method Source : String | call to method Source : String | +| Tuples.cs:64:22:64:34 | access to field Item2 | Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:64:22:64:34 | access to field Item2 | $@ | Tuples.cs:58:18:58:34 | call to method Source : String | call to method Source : String | | Tuples.cs:64:22:64:34 | access to field Item2 | Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:64:22:64:34 | access to field Item2 | $@ | Tuples.cs:58:18:58:34 | call to method Source : String | call to method Source : String | | Tuples.cs:68:22:68:22 | access to local variable a | Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:68:22:68:22 | access to local variable a | $@ | Tuples.cs:57:18:57:34 | call to method Source : String | call to method Source : String | +| Tuples.cs:68:22:68:22 | access to local variable a | Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:68:22:68:22 | access to local variable a | $@ | Tuples.cs:57:18:57:34 | call to method Source : String | call to method Source : String | +| Tuples.cs:69:22:69:22 | access to local variable c | Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:69:22:69:22 | access to local variable c | $@ | Tuples.cs:58:18:58:34 | call to method Source : String | call to method Source : String | | Tuples.cs:69:22:69:22 | access to local variable c | Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:69:22:69:22 | access to local variable c | $@ | Tuples.cs:58:18:58:34 | call to method Source : String | call to method Source : String | | Tuples.cs:89:18:89:18 | access to local variable p | Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:89:18:89:18 | access to local variable p | $@ | Tuples.cs:57:18:57:34 | call to method Source : String | call to method Source : String | +| Tuples.cs:89:18:89:18 | access to local variable p | Tuples.cs:57:18:57:34 | call to method Source : String | Tuples.cs:89:18:89:18 | access to local variable p | $@ | Tuples.cs:57:18:57:34 | call to method Source : String | call to method Source : String | +| Tuples.cs:90:18:90:18 | access to local variable r | Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:90:18:90:18 | access to local variable r | $@ | Tuples.cs:58:18:58:34 | call to method Source : String | call to method Source : String | | Tuples.cs:90:18:90:18 | access to local variable r | Tuples.cs:58:18:58:34 | call to method Source : String | Tuples.cs:90:18:90:18 | access to local variable r | $@ | Tuples.cs:58:18:58:34 | call to method Source : String | call to method Source : String | | Tuples.cs:101:14:101:16 | access to property i | Tuples.cs:99:17:99:33 | call to method Source : String | Tuples.cs:101:14:101:16 | access to property i | $@ | Tuples.cs:99:17:99:33 | call to method Source : String | call to method Source : String | +| Tuples.cs:101:14:101:16 | access to property i | Tuples.cs:99:17:99:33 | call to method Source : String | Tuples.cs:101:14:101:16 | access to property i | $@ | Tuples.cs:99:17:99:33 | call to method Source : String | call to method Source : String | +| Tuples.cs:122:14:122:15 | access to local variable x1 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | | Tuples.cs:122:14:122:15 | access to local variable x1 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:122:14:122:15 | access to local variable x1 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | | Tuples.cs:126:14:126:15 | access to local variable x2 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:126:14:126:15 | access to local variable x2 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:126:14:126:15 | access to local variable x2 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:130:14:130:15 | access to local variable y3 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | | Tuples.cs:130:14:130:15 | access to local variable y3 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:130:14:130:15 | access to local variable y3 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | | Tuples.cs:134:14:134:15 | access to local variable y4 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | +| Tuples.cs:134:14:134:15 | access to local variable y4 | Tuples.cs:118:17:118:33 | call to method Source : Object | Tuples.cs:134:14:134:15 | access to local variable y4 | $@ | Tuples.cs:118:17:118:33 | call to method Source : Object | call to method Source : Object | diff --git a/csharp/ql/test/library-tests/dataflow/tuples/Tuples.ql b/csharp/ql/test/library-tests/dataflow/tuples/Tuples.ql index b01c0f7fcaf..9336e1b28be 100644 --- a/csharp/ql/test/library-tests/dataflow/tuples/Tuples.ql +++ b/csharp/ql/test/library-tests/dataflow/tuples/Tuples.ql @@ -3,9 +3,10 @@ */ import csharp -import DefaultValueFlow::PathGraph import TestUtilities.InlineFlowTest +import DefaultFlowTest +import PathGraph -from DefaultValueFlow::PathNode source, DefaultValueFlow::PathNode sink -where DefaultValueFlow::flowPath(source, sink) +from PathNode source, PathNode sink +where flowPath(source, sink) select sink, source, sink, "$@", source, source.toString() diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/Dataflow.expected b/csharp/ql/test/library-tests/frameworks/EntityFramework/Dataflow.expected index 811f1a04d8b..a9d4895fb46 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/Dataflow.expected +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/Dataflow.expected @@ -74,14 +74,14 @@ edges | EntityFramework.cs:196:13:196:23 | [post] access to property Persons : DbSet [element, property Name] : String | EntityFramework.cs:196:13:196:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | | EntityFramework.cs:196:29:196:29 | access to parameter p : Person [property Name] : String | EntityFramework.cs:196:13:196:23 | [post] access to property Persons : DbSet [element, property Name] : String | | EntityFramework.cs:197:13:197:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | -| EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | EntityFramework.cs:204:18:204:36 | call to method First : Object [property Name] : String | -| EntityFramework.cs:204:18:204:36 | call to method First : Object [property Name] : String | EntityFramework.cs:204:18:204:41 | access to property Name | -| EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
    [element, property Street] : String | EntityFramework.cs:212:18:212:38 | call to method First
    : Object [property Street] : String | -| EntityFramework.cs:212:18:212:38 | call to method First
    : Object [property Street] : String | EntityFramework.cs:212:18:212:45 | access to property Street | -| EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:36 | call to method First : Object [property Addresses, element, property Street] : String | -| EntityFramework.cs:219:18:219:36 | call to method First : Object [property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:46 | access to property Addresses : ICollection
    [element, property Street] : String | -| EntityFramework.cs:219:18:219:46 | access to property Addresses : ICollection
    [element, property Street] : String | EntityFramework.cs:219:18:219:54 | call to method First
    : Object [property Street] : String | -| EntityFramework.cs:219:18:219:54 | call to method First
    : Object [property Street] : String | EntityFramework.cs:219:18:219:61 | access to property Street | +| EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | EntityFramework.cs:204:18:204:36 | call to method First : Person [property Name] : String | +| EntityFramework.cs:204:18:204:36 | call to method First : Person [property Name] : String | EntityFramework.cs:204:18:204:41 | access to property Name | +| EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
    [element, property Street] : String | EntityFramework.cs:212:18:212:38 | call to method First
    : Address [property Street] : String | +| EntityFramework.cs:212:18:212:38 | call to method First
    : Address [property Street] : String | EntityFramework.cs:212:18:212:45 | access to property Street | +| EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:36 | call to method First : Person [property Addresses, element, property Street] : String | +| EntityFramework.cs:219:18:219:36 | call to method First : Person [property Addresses, element, property Street] : String | EntityFramework.cs:219:18:219:46 | access to property Addresses : ICollection
    [element, property Street] : String | +| EntityFramework.cs:219:18:219:46 | access to property Addresses : ICollection
    [element, property Street] : String | EntityFramework.cs:219:18:219:54 | call to method First
    : Address [property Street] : String | +| EntityFramework.cs:219:18:219:54 | call to method First
    : Address [property Street] : String | EntityFramework.cs:219:18:219:61 | access to property Street | | EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:83:18:83:28 | access to local variable taintSource | | EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:84:35:84:45 | access to local variable taintSource : String | | EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | EntityFrameworkCore.cs:85:18:85:42 | (...) ... | @@ -165,14 +165,14 @@ edges | EntityFrameworkCore.cs:229:13:229:23 | [post] access to property Persons : DbSet [element, property Name] : String | EntityFrameworkCore.cs:229:13:229:15 | [post] access to local variable ctx : MyContext [property Persons, element, property Name] : String | | EntityFrameworkCore.cs:229:29:229:29 | access to parameter p : Person [property Name] : String | EntityFrameworkCore.cs:229:13:229:23 | [post] access to property Persons : DbSet [element, property Name] : String | | EntityFrameworkCore.cs:230:13:230:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | -| EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | EntityFrameworkCore.cs:237:18:237:36 | call to method First : Object [property Name] : String | -| EntityFrameworkCore.cs:237:18:237:36 | call to method First : Object [property Name] : String | EntityFrameworkCore.cs:237:18:237:41 | access to property Name | -| EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
    [element, property Street] : String | EntityFrameworkCore.cs:245:18:245:38 | call to method First
    : Object [property Street] : String | -| EntityFrameworkCore.cs:245:18:245:38 | call to method First
    : Object [property Street] : String | EntityFrameworkCore.cs:245:18:245:45 | access to property Street | -| EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:36 | call to method First : Object [property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:252:18:252:36 | call to method First : Object [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:46 | access to property Addresses : ICollection
    [element, property Street] : String | -| EntityFrameworkCore.cs:252:18:252:46 | access to property Addresses : ICollection
    [element, property Street] : String | EntityFrameworkCore.cs:252:18:252:54 | call to method First
    : Object [property Street] : String | -| EntityFrameworkCore.cs:252:18:252:54 | call to method First
    : Object [property Street] : String | EntityFrameworkCore.cs:252:18:252:61 | access to property Street | +| EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | EntityFrameworkCore.cs:237:18:237:36 | call to method First : Person [property Name] : String | +| EntityFrameworkCore.cs:237:18:237:36 | call to method First : Person [property Name] : String | EntityFrameworkCore.cs:237:18:237:41 | access to property Name | +| EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
    [element, property Street] : String | EntityFrameworkCore.cs:245:18:245:38 | call to method First
    : Address [property Street] : String | +| EntityFrameworkCore.cs:245:18:245:38 | call to method First
    : Address [property Street] : String | EntityFrameworkCore.cs:245:18:245:45 | access to property Street | +| EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:36 | call to method First : Person [property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:252:18:252:36 | call to method First : Person [property Addresses, element, property Street] : String | EntityFrameworkCore.cs:252:18:252:46 | access to property Addresses : ICollection
    [element, property Street] : String | +| EntityFrameworkCore.cs:252:18:252:46 | access to property Addresses : ICollection
    [element, property Street] : String | EntityFrameworkCore.cs:252:18:252:54 | call to method First
    : Address [property Street] : String | +| EntityFrameworkCore.cs:252:18:252:54 | call to method First
    : Address [property Street] : String | EntityFrameworkCore.cs:252:18:252:61 | access to property Street | nodes | EntityFramework.cs:59:13:62:13 | { ..., ... } : Person [property Name] : String | semmle.label | { ..., ... } : Person [property Name] : String | | EntityFramework.cs:61:24:61:32 | "tainted" : String | semmle.label | "tainted" : String | @@ -237,15 +237,15 @@ nodes | EntityFramework.cs:196:29:196:29 | access to parameter p : Person [property Name] : String | semmle.label | access to parameter p : Person [property Name] : String | | EntityFramework.cs:197:13:197:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | semmle.label | access to local variable ctx : MyContext [property Persons, element, property Name] : String | | EntityFramework.cs:204:18:204:28 | access to property Persons : DbSet [element, property Name] : String | semmle.label | access to property Persons : DbSet [element, property Name] : String | -| EntityFramework.cs:204:18:204:36 | call to method First : Object [property Name] : String | semmle.label | call to method First : Object [property Name] : String | +| EntityFramework.cs:204:18:204:36 | call to method First : Person [property Name] : String | semmle.label | call to method First : Person [property Name] : String | | EntityFramework.cs:204:18:204:41 | access to property Name | semmle.label | access to property Name | | EntityFramework.cs:212:18:212:30 | access to property Addresses : DbSet
    [element, property Street] : String | semmle.label | access to property Addresses : DbSet
    [element, property Street] : String | -| EntityFramework.cs:212:18:212:38 | call to method First
    : Object [property Street] : String | semmle.label | call to method First
    : Object [property Street] : String | +| EntityFramework.cs:212:18:212:38 | call to method First
    : Address [property Street] : String | semmle.label | call to method First
    : Address [property Street] : String | | EntityFramework.cs:212:18:212:45 | access to property Street | semmle.label | access to property Street | | EntityFramework.cs:219:18:219:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | semmle.label | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFramework.cs:219:18:219:36 | call to method First : Object [property Addresses, element, property Street] : String | semmle.label | call to method First : Object [property Addresses, element, property Street] : String | +| EntityFramework.cs:219:18:219:36 | call to method First : Person [property Addresses, element, property Street] : String | semmle.label | call to method First : Person [property Addresses, element, property Street] : String | | EntityFramework.cs:219:18:219:46 | access to property Addresses : ICollection
    [element, property Street] : String | semmle.label | access to property Addresses : ICollection
    [element, property Street] : String | -| EntityFramework.cs:219:18:219:54 | call to method First
    : Object [property Street] : String | semmle.label | call to method First
    : Object [property Street] : String | +| EntityFramework.cs:219:18:219:54 | call to method First
    : Address [property Street] : String | semmle.label | call to method First
    : Address [property Street] : String | | EntityFramework.cs:219:18:219:61 | access to property Street | semmle.label | access to property Street | | EntityFrameworkCore.cs:82:31:82:39 | "tainted" : String | semmle.label | "tainted" : String | | EntityFrameworkCore.cs:83:18:83:28 | access to local variable taintSource | semmle.label | access to local variable taintSource | @@ -318,15 +318,15 @@ nodes | EntityFrameworkCore.cs:229:29:229:29 | access to parameter p : Person [property Name] : String | semmle.label | access to parameter p : Person [property Name] : String | | EntityFrameworkCore.cs:230:13:230:15 | access to local variable ctx : MyContext [property Persons, element, property Name] : String | semmle.label | access to local variable ctx : MyContext [property Persons, element, property Name] : String | | EntityFrameworkCore.cs:237:18:237:28 | access to property Persons : DbSet [element, property Name] : String | semmle.label | access to property Persons : DbSet [element, property Name] : String | -| EntityFrameworkCore.cs:237:18:237:36 | call to method First : Object [property Name] : String | semmle.label | call to method First : Object [property Name] : String | +| EntityFrameworkCore.cs:237:18:237:36 | call to method First : Person [property Name] : String | semmle.label | call to method First : Person [property Name] : String | | EntityFrameworkCore.cs:237:18:237:41 | access to property Name | semmle.label | access to property Name | | EntityFrameworkCore.cs:245:18:245:30 | access to property Addresses : DbSet
    [element, property Street] : String | semmle.label | access to property Addresses : DbSet
    [element, property Street] : String | -| EntityFrameworkCore.cs:245:18:245:38 | call to method First
    : Object [property Street] : String | semmle.label | call to method First
    : Object [property Street] : String | +| EntityFrameworkCore.cs:245:18:245:38 | call to method First
    : Address [property Street] : String | semmle.label | call to method First
    : Address [property Street] : String | | EntityFrameworkCore.cs:245:18:245:45 | access to property Street | semmle.label | access to property Street | | EntityFrameworkCore.cs:252:18:252:28 | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | semmle.label | access to property Persons : DbSet [element, property Addresses, element, property Street] : String | -| EntityFrameworkCore.cs:252:18:252:36 | call to method First : Object [property Addresses, element, property Street] : String | semmle.label | call to method First : Object [property Addresses, element, property Street] : String | +| EntityFrameworkCore.cs:252:18:252:36 | call to method First : Person [property Addresses, element, property Street] : String | semmle.label | call to method First : Person [property Addresses, element, property Street] : String | | EntityFrameworkCore.cs:252:18:252:46 | access to property Addresses : ICollection
    [element, property Street] : String | semmle.label | access to property Addresses : ICollection
    [element, property Street] : String | -| EntityFrameworkCore.cs:252:18:252:54 | call to method First
    : Object [property Street] : String | semmle.label | call to method First
    : Object [property Street] : String | +| EntityFrameworkCore.cs:252:18:252:54 | call to method First
    : Address [property Street] : String | semmle.label | call to method First
    : Address [property Street] : String | | EntityFrameworkCore.cs:252:18:252:61 | access to property Street | semmle.label | access to property Street | subpaths #select diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFramework.cs b/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFramework.cs index af51015b51c..d70369f6eaa 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFramework.cs +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFramework.cs @@ -5,7 +5,7 @@ using System.Linq; namespace EFTests { - class Person + public class Person { public virtual int Id { get; set; } public virtual string Name { get; set; } @@ -17,13 +17,13 @@ namespace EFTests public ICollection
    Addresses { get; set; } } - class Address + public class Address { public int Id { get; set; } public string Street { get; set; } } - class PersonAddressMap + public class PersonAddressMap { public int Id { get; set; } public int PersonId { get; set; } @@ -34,7 +34,7 @@ namespace EFTests public Address Address { get; set; } } - class MyContext : DbContext + public class MyContext : DbContext { public virtual DbSet Persons { get; set; } public virtual DbSet
    Addresses { get; set; } diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFrameworkCore.cs b/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFrameworkCore.cs index b45290dc799..1c7febb3398 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFrameworkCore.cs +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/EntityFrameworkCore.cs @@ -6,7 +6,7 @@ using System.Linq; namespace EFCoreTests { - class Person + public class Person { public virtual int Id { get; set; } public virtual string Name { get; set; } @@ -18,13 +18,13 @@ namespace EFCoreTests public ICollection
    Addresses { get; set; } } - class Address + public class Address { public int Id { get; set; } public string Street { get; set; } } - class PersonAddressMap + public class PersonAddressMap { public int Id { get; set; } public int PersonId { get; set; } @@ -35,7 +35,7 @@ namespace EFCoreTests public Address Address { get; set; } } - class MyContext : DbContext + public class MyContext : DbContext { public virtual DbSet Persons { get; set; } public virtual DbSet
    Addresses { get; set; } diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected b/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected index 4698be24b8c..820aca482f3 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected @@ -1,120 +1,146 @@ summary -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Name];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Name];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Name];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Id];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value;manual | -| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFCoreTests.Person.Name];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Name];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value;manual | -| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Name];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Name];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Id];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];ReturnValue[jump to get_PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value;manual | -| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];ReturnValue[jump to get_Persons].Element.Property[EFTests.Person.Name];value;manual | +| EFCoreTests;MyContext;false;get_Addresses;();;SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];ReturnValue.Element.Property[EFCoreTests.Address.Id];value;manual | +| EFCoreTests;MyContext;false;get_Addresses;();;SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];ReturnValue.Element.Property[EFCoreTests.Address.Street];value;manual | +| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.AddressId]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.AddressId];value;manual | +| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual | +| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual | +| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Id]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Id];value;manual | +| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.PersonId]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.PersonId];value;manual | +| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value;manual | +| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value;manual | +| EFCoreTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual | +| EFCoreTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual | +| EFCoreTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Id]];ReturnValue.Element.Property[EFCoreTests.Person.Id];value;manual | +| EFCoreTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Name]];ReturnValue.Element.Property[EFCoreTests.Person.Name];value;manual | +| EFTests;MyContext;false;get_Addresses;();;SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];ReturnValue.Element.Property[EFTests.Address.Id];value;manual | +| EFTests;MyContext;false;get_Addresses;();;SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];ReturnValue.Element.Property[EFTests.Address.Street];value;manual | +| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.AddressId]];ReturnValue.Element.Property[EFTests.PersonAddressMap.AddressId];value;manual | +| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual | +| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual | +| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Id]];ReturnValue.Element.Property[EFTests.PersonAddressMap.Id];value;manual | +| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.PersonId]];ReturnValue.Element.Property[EFTests.PersonAddressMap.PersonId];value;manual | +| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value;manual | +| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value;manual | +| EFTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual | +| EFTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual | +| EFTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];ReturnValue.Element.Property[EFTests.Person.Id];value;manual | +| EFTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];ReturnValue.Element.Property[EFTests.Person.Name];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.AddressId]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.PersonId]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Name]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Name]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.AddressId]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.PersonId]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Name]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Id]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name]];value;manual | +| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.AddressId]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.PersonId]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.AddressId]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.PersonId]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];value;manual | +| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];value;manual | neutral sourceNode sinkNode diff --git a/csharp/ql/test/library-tests/parameters/Parameters.cs b/csharp/ql/test/library-tests/parameters/Parameters.cs index ebe17322bad..ee62454b404 100644 --- a/csharp/ql/test/library-tests/parameters/Parameters.cs +++ b/csharp/ql/test/library-tests/parameters/Parameters.cs @@ -25,7 +25,14 @@ public class Parameters public void M17([Optional, DefaultParameterValue(null)] object arg7) => throw null; public void M18([Optional, DefaultParameterValue(3)] int? arg8) => throw null; public void M19([Optional, DecimalConstant(1, 0, 0, 0, 103)] decimal arg9) => throw null; + public void M20([Optional, DefaultParameterValue(7)] MyStruct arg10) => throw null; + public void M21([Optional, DefaultParameterValue("mystring")] MyStruct arg10) => throw null; - public struct MyStruct { } + public struct MyStruct + { + public static implicit operator MyStruct(int i) => new MyStruct(); + public static implicit operator MyStruct(string s) => new MyStruct(); + + } public enum MyEnum { A = 1, B = 2 } } \ No newline at end of file diff --git a/csharp/ql/test/library-tests/parameters/Parameters.cs_ b/csharp/ql/test/library-tests/parameters/Parameters.cs_ index 8fce6f198c3..136e7262b98 100644 --- a/csharp/ql/test/library-tests/parameters/Parameters.cs_ +++ b/csharp/ql/test/library-tests/parameters/Parameters.cs_ @@ -25,7 +25,14 @@ public class ParametersDll public void M17([Optional, DefaultParameterValue(null)] object arg7) => throw null; public void M18([Optional, DefaultParameterValue(3)] int? arg8) => throw null; public void M19([Optional, DecimalConstant(1, 0, 0, 0, 103)] decimal arg9) => throw null; + public void M20([Optional, DefaultParameterValue(7)] MyStruct arg10) => throw null; + public void M21([Optional, DefaultParameterValue("mystring")] MyStruct arg10) => throw null; - public struct MyStruct { } + public struct MyStruct + { + public static implicit operator MyStruct(int i) => new MyStruct(); + public static implicit operator MyStruct(string s) => new MyStruct(); + + } public enum MyEnum { A = 1, B = 2 } } \ No newline at end of file diff --git a/csharp/ql/test/library-tests/parameters/Parameters.dll b/csharp/ql/test/library-tests/parameters/Parameters.dll index b40c91369cb..3358306fc89 100644 Binary files a/csharp/ql/test/library-tests/parameters/Parameters.dll and b/csharp/ql/test/library-tests/parameters/Parameters.dll differ diff --git a/csharp/ql/test/library-tests/parameters/Parameters.expected b/csharp/ql/test/library-tests/parameters/Parameters.expected index 4ac08438d3a..820ec37b9ab 100644 --- a/csharp/ql/test/library-tests/parameters/Parameters.expected +++ b/csharp/ql/test/library-tests/parameters/Parameters.expected @@ -5,12 +5,16 @@ noDefaultValue | Parameters.cs:8:17:8:18 | M2 | Parameters.cs:8:24:8:24 | a | 0 | | Parameters.cs:12:17:12:18 | M6 | Parameters.cs:12:29:12:30 | s1 | 0 | | Parameters.cs:13:17:13:18 | M7 | Parameters.cs:13:27:13:28 | e1 | 0 | +| Parameters.cs:33:32:33:39 | implicit conversion | Parameters.cs:33:54:33:54 | i | 0 | +| Parameters.cs:34:32:34:39 | implicit conversion | Parameters.cs:34:57:34:57 | s | 0 | | Parameters.dll:0:0:0:0 | M1 | Parameters.dll:0:0:0:0 | a | 0 | | Parameters.dll:0:0:0:0 | M1 | Parameters.dll:0:0:0:0 | b | 1 | | Parameters.dll:0:0:0:0 | M1 | Parameters.dll:0:0:0:0 | c | 2 | | Parameters.dll:0:0:0:0 | M2 | Parameters.dll:0:0:0:0 | a | 0 | | Parameters.dll:0:0:0:0 | M6 | Parameters.dll:0:0:0:0 | s1 | 0 | | Parameters.dll:0:0:0:0 | M7 | Parameters.dll:0:0:0:0 | e1 | 0 | +| Parameters.dll:0:0:0:0 | implicit conversion | Parameters.dll:0:0:0:0 | i | 0 | +| Parameters.dll:0:0:0:0 | implicit conversion | Parameters.dll:0:0:0:0 | s | 0 | withDefaultValue | Parameters.cs:8:17:8:18 | M2 | Parameters.cs:8:34:8:34 | b | 1 | Parameters.cs:8:38:8:41 | null | null | | Parameters.cs:8:17:8:18 | M2 | Parameters.cs:8:51:8:51 | c | 2 | Parameters.cs:8:55:8:70 | "default string" | default string | @@ -39,6 +43,8 @@ withDefaultValue | Parameters.cs:25:17:25:19 | M17 | Parameters.cs:25:68:25:71 | arg7 | 0 | Parameters.cs:25:21:25:71 | default | null | | Parameters.cs:26:17:26:19 | M18 | Parameters.cs:26:63:26:66 | arg8 | 0 | Parameters.cs:26:21:26:66 | 3 | 3 | | Parameters.cs:27:17:27:19 | M19 | Parameters.cs:27:74:27:77 | arg9 | 0 | Parameters.cs:27:21:27:77 | 10.3 | 10.3 | +| Parameters.cs:28:17:28:19 | M20 | Parameters.cs:28:67:28:71 | arg10 | 0 | Parameters.cs:28:21:28:71 | call to operator implicit conversion | - | +| Parameters.cs:29:17:29:19 | M21 | Parameters.cs:29:76:29:80 | arg10 | 0 | Parameters.cs:29:21:29:80 | call to operator implicit conversion | - | | Parameters.dll:0:0:0:0 | M2 | Parameters.dll:0:0:0:0 | b | 1 | Parameters.dll:0:0:0:0 | default | null | | Parameters.dll:0:0:0:0 | M2 | Parameters.dll:0:0:0:0 | c | 2 | Parameters.dll:0:0:0:0 | "default string" | default string | | Parameters.dll:0:0:0:0 | M3 | Parameters.dll:0:0:0:0 | a | 0 | Parameters.dll:0:0:0:0 | 1 | 1 | @@ -66,8 +72,15 @@ withDefaultValue | Parameters.dll:0:0:0:0 | M17 | Parameters.dll:0:0:0:0 | arg7 | 0 | Parameters.dll:0:0:0:0 | default | null | | Parameters.dll:0:0:0:0 | M18 | Parameters.dll:0:0:0:0 | arg8 | 0 | Parameters.dll:0:0:0:0 | 3 | 3 | | Parameters.dll:0:0:0:0 | M19 | Parameters.dll:0:0:0:0 | arg9 | 0 | Parameters.dll:0:0:0:0 | 10.3 | 10.3 | +| Parameters.dll:0:0:0:0 | M20 | Parameters.dll:0:0:0:0 | arg10 | 0 | Parameters.dll:0:0:0:0 | call to operator implicit conversion | - | +| Parameters.dll:0:0:0:0 | M21 | Parameters.dll:0:0:0:0 | arg10 | 0 | Parameters.dll:0:0:0:0 | call to operator implicit conversion | - | dateTimeDefaults | Parameters.cs:22:17:22:19 | M14 | Parameters.cs:22:64:22:67 | arg4 | Parameters.cs:22:21:22:67 | object creation of type DateTime | DateTime(long) | 14 | | Parameters.cs:23:17:23:19 | M15 | Parameters.cs:23:68:23:71 | arg5 | Parameters.cs:23:21:23:71 | object creation of type DateTime | DateTime(long) | 10001 | | Parameters.dll:0:0:0:0 | M14 | Parameters.dll:0:0:0:0 | arg4 | Parameters.dll:0:0:0:0 | object creation of type DateTime | DateTime(long) | 14 | | Parameters.dll:0:0:0:0 | M15 | Parameters.dll:0:0:0:0 | arg5 | Parameters.dll:0:0:0:0 | object creation of type DateTime | DateTime(long) | 10001 | +implicitConversionDefaults +| Parameters.cs:28:17:28:19 | M20 | Parameters.cs:28:67:28:71 | arg10 | Parameters.cs:28:21:28:71 | call to operator implicit conversion | Parameters.cs:28:21:28:71 | 7 | Int32 | 7 | +| Parameters.cs:29:17:29:19 | M21 | Parameters.cs:29:76:29:80 | arg10 | Parameters.cs:29:21:29:80 | call to operator implicit conversion | Parameters.cs:29:21:29:80 | "mystring" | String | mystring | +| Parameters.dll:0:0:0:0 | M20 | Parameters.dll:0:0:0:0 | arg10 | Parameters.dll:0:0:0:0 | call to operator implicit conversion | Parameters.dll:0:0:0:0 | 7 | Int32 | 7 | +| Parameters.dll:0:0:0:0 | M21 | Parameters.dll:0:0:0:0 | arg10 | Parameters.dll:0:0:0:0 | call to operator implicit conversion | Parameters.dll:0:0:0:0 | "mystring" | String | mystring | diff --git a/csharp/ql/test/library-tests/parameters/Parameters.ql b/csharp/ql/test/library-tests/parameters/Parameters.ql index 09eadc693f0..209cdc12577 100644 --- a/csharp/ql/test/library-tests/parameters/Parameters.ql +++ b/csharp/ql/test/library-tests/parameters/Parameters.ql @@ -16,11 +16,15 @@ query predicate noDefaultValue(Parameterizable container, Parameter p, int i) { not compilerGeneratedAttribute(container) } -query predicate withDefaultValue(Parameterizable container, Parameter p, int i, Expr e, string value) { +private predicate defaultValue(Parameterizable container, Parameter p, int i, Expr e) { fromTestLocation(container) and p.hasDefaultValue() and container.getParameter(i) = p and - p.getDefaultValue() = e and + p.getDefaultValue() = e +} + +query predicate withDefaultValue(Parameterizable container, Parameter p, int i, Expr e, string value) { + defaultValue(container, p, i, e) and (if exists(e.getValue()) then value = e.getValue() else value = "-") and not compilerGeneratedAttribute(container) } @@ -28,11 +32,17 @@ query predicate withDefaultValue(Parameterizable container, Parameter p, int i, query predicate dateTimeDefaults( Parameterizable container, Parameter p, ObjectCreation o, string constructor, string value ) { - fromTestLocation(container) and - p.hasDefaultValue() and - container.getAParameter() = p and - p.getDefaultValue() = o and + defaultValue(container, p, _, o) and o.getTarget().toStringWithTypes() = constructor and o.getAnArgument().getValue() = value and not compilerGeneratedAttribute(container) } + +query predicate implicitConversionDefaults( + Parameterizable container, Parameter p, OperatorCall o, Expr e, string type, string value +) { + defaultValue(container, p, _, o) and + o.getAnArgument() = e and + type = e.getType().toString() and + value = e.getValue() +} diff --git a/csharp/ql/test/query-tests/API Abuse/CallToGCCollect/options b/csharp/ql/test/query-tests/API Abuse/CallToGCCollect/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/CallToGCCollect/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/CallToObsoleteMethod/options b/csharp/ql/test/query-tests/API Abuse/CallToObsoleteMethod/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/CallToObsoleteMethod/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/ClassDoesNotImplementEquals/options b/csharp/ql/test/query-tests/API Abuse/ClassDoesNotImplementEquals/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/ClassDoesNotImplementEquals/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/ClassImplementsICloneable/options b/csharp/ql/test/query-tests/API Abuse/ClassImplementsICloneable/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/ClassImplementsICloneable/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/DisposeNotCalledOnException/options b/csharp/ql/test/query-tests/API Abuse/DisposeNotCalledOnException/options index a0b23f3ee8b..7faed1b92ed 100644 --- a/csharp/ql/test/query-tests/API Abuse/DisposeNotCalledOnException/options +++ b/csharp/ql/test/query-tests/API Abuse/DisposeNotCalledOnException/options @@ -1,2 +1,2 @@ -semmle-extractor-options: /r:System.ComponentModel.Primitives.dll /r:${testdir}/../../../resources/assemblies/System.Data.dll /r:System.Data.Common.dll -semmle-extractor-options: /langversion:8.0 +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/FormatInvalid/options b/csharp/ql/test/query-tests/API Abuse/FormatInvalid/options index ea0639b2d0a..75c39b4541b 100644 --- a/csharp/ql/test/query-tests/API Abuse/FormatInvalid/options +++ b/csharp/ql/test/query-tests/API Abuse/FormatInvalid/options @@ -1 +1,2 @@ -semmle-extractor-options: /r:System.Runtime.Extensions.dll /r:System.Diagnostics.TraceSource.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/InconsistentEqualsGetHashCode/options b/csharp/ql/test/query-tests/API Abuse/InconsistentEqualsGetHashCode/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/InconsistentEqualsGetHashCode/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.cs b/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.cs index 0ecabd07016..5b5780ed977 100644 --- a/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.cs +++ b/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.cs @@ -1,15 +1,4 @@ -namespace System -{ - public interface IComparable - { - int CompareTo(object obj); // GOOD: the very definition of IComparable.CompareTo() - } - - public interface IComparable - { - int CompareTo(T other); // GOOD: the very definition of IComparable.CompareTo() - } -} +using System; class C1 { diff --git a/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.expected b/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.expected index 860009bd3e2..419629319a5 100644 --- a/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.expected +++ b/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.expected @@ -1,2 +1,2 @@ -| IncorrectCompareToSignature.cs:16:16:16:24 | CompareTo | The parameter of this 'CompareTo' method is of type $@, but $@ does not implement 'IComparable<$@>'. | IncorrectCompareToSignature.cs:14:10:14:10 | T | T | IncorrectCompareToSignature.cs:14:7:14:11 | C1<> | C1<> | IncorrectCompareToSignature.cs:14:10:14:10 | T | T | +| IncorrectCompareToSignature.cs:5:16:5:24 | CompareTo | The parameter of this 'CompareTo' method is of type $@, but $@ does not implement 'IComparable<$@>'. | IncorrectCompareToSignature.cs:3:10:3:10 | T | T | IncorrectCompareToSignature.cs:3:7:3:11 | C1<> | C1<> | IncorrectCompareToSignature.cs:3:10:3:10 | T | T | | IncorrectCompareToSignatureBad.cs:5:16:5:24 | CompareTo | The parameter of this 'CompareTo' method is of type $@, but $@ does not implement 'IComparable<$@>'. | IncorrectCompareToSignatureBad.cs:3:7:3:9 | Bad | Bad | IncorrectCompareToSignatureBad.cs:3:7:3:9 | Bad | Bad | IncorrectCompareToSignatureBad.cs:3:7:3:9 | Bad | Bad | diff --git a/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/options b/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/IncorrectEqualsSignature/options b/csharp/ql/test/query-tests/API Abuse/IncorrectEqualsSignature/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/IncorrectEqualsSignature/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/MissingDisposeCall/options b/csharp/ql/test/query-tests/API Abuse/MissingDisposeCall/options index 2d3e53846e4..75c39b4541b 100644 --- a/csharp/ql/test/query-tests/API Abuse/MissingDisposeCall/options +++ b/csharp/ql/test/query-tests/API Abuse/MissingDisposeCall/options @@ -1 +1,2 @@ -semmle-extractor-options: /r:System.ComponentModel.Primitives.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/MissingDisposeMethod/options b/csharp/ql/test/query-tests/API Abuse/MissingDisposeMethod/options index 2d3e53846e4..75c39b4541b 100644 --- a/csharp/ql/test/query-tests/API Abuse/MissingDisposeMethod/options +++ b/csharp/ql/test/query-tests/API Abuse/MissingDisposeMethod/options @@ -1 +1,2 @@ -semmle-extractor-options: /r:System.ComponentModel.Primitives.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/NoDisposeCallOnLocalIDisposable/options b/csharp/ql/test/query-tests/API Abuse/NoDisposeCallOnLocalIDisposable/options index 08e01d88cc1..a02c94f4258 100644 --- a/csharp/ql/test/query-tests/API Abuse/NoDisposeCallOnLocalIDisposable/options +++ b/csharp/ql/test/query-tests/API Abuse/NoDisposeCallOnLocalIDisposable/options @@ -1 +1 @@ -semmle-extractor-options: --cil /langversion:8.0 /r:System.Xml.dll /r:System.Xml.ReaderWriter.dll /r:System.Private.Xml.dll /r:System.ComponentModel.Primitives.dll /r:System.IO.Compression.dll /r:System.Runtime.Extensions.dll +semmle-extractor-options: --cil /r:System.Private.Xml.dll /r:System.IO.Compression.dll diff --git a/csharp/ql/test/query-tests/API Abuse/NonOverridingMethod/options b/csharp/ql/test/query-tests/API Abuse/NonOverridingMethod/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/NonOverridingMethod/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/NullArgumentToEquals/options b/csharp/ql/test/query-tests/API Abuse/NullArgumentToEquals/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/NullArgumentToEquals/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/UncheckedReturnValue.cs b/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/UncheckedReturnValue.cs index f4a4944f4fb..cf290a84bcb 100644 --- a/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/UncheckedReturnValue.cs +++ b/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/UncheckedReturnValue.cs @@ -1,11 +1,6 @@ using System; -class HashSet -{ - public bool Add(T t) - { - return true; - } -} +using System.Text; +using System.Collections.Generic; class C1 { @@ -30,11 +25,6 @@ class C1 } } -class StringBuilder -{ - public StringBuilder Append(string s) { return this; } -} - class C2 { static void Main(string[] args) @@ -59,20 +49,6 @@ class C2 } } -namespace System.IO -{ - public abstract class Stream - { - public abstract int Read(byte[] buffer, int offset, int count); - public virtual int ReadByte() { return 0; } - } - - public class MemoryStream : Stream - { - public override int Read(byte[] buffer, int offset, int count) { return 0; } - } -} - class C3 { static void Main(string[] args) diff --git a/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/UncheckedReturnValue.expected b/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/UncheckedReturnValue.expected index 371205cbc6b..e463ee956eb 100644 --- a/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/UncheckedReturnValue.expected +++ b/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/UncheckedReturnValue.expected @@ -1,8 +1,8 @@ -| UncheckedReturnValue.cs:29:9:29:31 | call to method Add | Result of call to 'Add' is ignored, but 90% of calls to this method have their result used. | -| UncheckedReturnValue.cs:91:9:91:26 | call to method Read | Result of call to 'Read' is ignored, but should always be checked. | -| UncheckedReturnValue.cs:92:9:92:20 | call to method ReadByte | Result of call to 'ReadByte' is ignored, but should always be checked. | -| UncheckedReturnValue.cs:109:9:109:17 | call to method M1 | Result of call to 'M1' is ignored, but 90% of calls to this method have their result used. | -| UncheckedReturnValue.cs:130:9:130:21 | call to method M2 | Result of call to 'M2' is ignored, but 90% of calls to this method have their result used. | -| UncheckedReturnValue.cs:142:9:142:20 | call to method M3 | Result of call to 'M3' is ignored, but 90% of calls to this method have their result used. | +| UncheckedReturnValue.cs:24:9:24:31 | call to method Add | Result of call to 'Add' is ignored, but 90% of calls to this method have their result used. | +| UncheckedReturnValue.cs:67:9:67:26 | call to method Read | Result of call to 'Read' is ignored, but should always be checked. | +| UncheckedReturnValue.cs:68:9:68:20 | call to method ReadByte | Result of call to 'ReadByte' is ignored, but should always be checked. | +| UncheckedReturnValue.cs:85:9:85:17 | call to method M1 | Result of call to 'M1' is ignored, but 90% of calls to this method have their result used. | +| UncheckedReturnValue.cs:106:9:106:21 | call to method M2 | Result of call to 'M2' is ignored, but 90% of calls to this method have their result used. | +| UncheckedReturnValue.cs:118:9:118:20 | call to method M3 | Result of call to 'M3' is ignored, but 90% of calls to this method have their result used. | | UncheckedReturnValueBad.cs:29:9:29:20 | call to method DoPrint | Result of call to 'DoPrint' is ignored, but 90% of calls to this method have their result used. | | UncheckedReturnValueBad.cs:36:13:36:40 | call to method Read | Result of call to 'Read' is ignored, but should always be checked. | diff --git a/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/options b/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/API Abuse/UncheckedReturnValue/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/AlertSuppression/options b/csharp/ql/test/query-tests/AlertSuppression/options new file mode 100644 index 00000000000..77b22963f5c --- /dev/null +++ b/csharp/ql/test/query-tests/AlertSuppression/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Bad Practices/Implementation Hiding/ExposeRepresentation/ExposeRepresentation.expected b/csharp/ql/test/query-tests/Bad Practices/Implementation Hiding/ExposeRepresentation/ExposeRepresentation.expected index 92f7365adeb..f4b2fcbf837 100644 --- a/csharp/ql/test/query-tests/Bad Practices/Implementation Hiding/ExposeRepresentation/ExposeRepresentation.expected +++ b/csharp/ql/test/query-tests/Bad Practices/Implementation Hiding/ExposeRepresentation/ExposeRepresentation.expected @@ -1,2 +1,2 @@ -| ExposeRepresentation.cs:8:21:8:23 | Set | 'Set' exposes the internal representation stored in field 'rarray'. The value may be modified $@. | ExposeRepresentation.cs:16:9:16:9 | ExposeRepresentation.cs:16:9:16:9 | through the variable a | -| ExposeRepresentationBad.cs:18:22:18:24 | Get | 'Get' exposes the internal representation stored in field 'rarray'. The value may be modified $@. | ExposeRepresentationBad.cs:24:23:24:29 | ExposeRepresentationBad.cs:24:23:24:29 | after this call to Get | +| ExposeRepresentation.cs:8:21:8:23 | Set | 'Set' exposes the internal representation stored in field 'rarray'. The value may be modified $@. | ExposeRepresentation.cs:16:9:16:9 | access to local variable a | through the variable a | +| ExposeRepresentationBad.cs:18:22:18:24 | Get | 'Get' exposes the internal representation stored in field 'rarray'. The value may be modified $@. | ExposeRepresentationBad.cs:24:23:24:29 | call to method Get | after this call to Get | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-011/options b/csharp/ql/test/query-tests/Security Features/CWE-011/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-011/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-016/options b/csharp/ql/test/query-tests/Security Features/CWE-016/options new file mode 100644 index 00000000000..a5ea8b797c5 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-016/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-020/options b/csharp/ql/test/query-tests/Security Features/CWE-020/options index 319fd18ddcc..96b0b028bdd 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-020/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-020/options @@ -1 +1,3 @@ -semmle-extractor-options: /r:${testdir}/../../../resources/assemblies/System.Web.dll /r:${testdir}/../../../resources/assemblies/System.Web.ApplicationServices.dll /r:${testdir}/../../../resources/assemblies/System.Data.dll /r:System.Text.RegularExpressions.dll /r:System.Collections.Specialized.dll /r:System.Data.Common.dll /r:System.Security.Cryptography.X509Certificates.dll /r:System.Runtime.InteropServices.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-022/TaintedPath/options b/csharp/ql/test/query-tests/Security Features/CWE-022/TaintedPath/options index 17bfec6a531..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-022/TaintedPath/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-022/TaintedPath/options @@ -1 +1,3 @@ -semmle-extractor-options: /r:System.IO.FileSystem.dll /r:System.Runtime.Extensions.dll /r:System.Collections.Specialized.dll ${testdir}/../../../../resources/stubs/System.Web.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-022/ZipSlip/options b/csharp/ql/test/query-tests/Security Features/CWE-022/ZipSlip/options index acca6983965..a5ea8b797c5 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-022/ZipSlip/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-022/ZipSlip/options @@ -1 +1,2 @@ -semmle-extractor-options: /r:System.IO.Compression.dll /r:System.IO.Compression.FileSystem.dll /r:System.IO.Compression.ZipFile.dll /r:System.IO.FileSystem.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-078/options b/csharp/ql/test/query-tests/Security Features/CWE-078/options index de7d3478af5..7faed1b92ed 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-078/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-078/options @@ -1 +1,2 @@ -semmle-extractor-options: /r:System.ComponentModel.Primitives.dll /r:System.Diagnostics.Process.dll /r:System.Runtime.InteropServices.dll ${testdir}/../../../resources/stubs/System.Data.cs /r:System.Data.Common.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.cs index 24c4eb73912..1096634b690 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.cs @@ -1,5 +1,3 @@ -// semmle-extractor-options: /r:${testdir}/../../../../resources/assemblies/System.Data.dll /r:${testdir}/../../../../resources/assemblies/System.Web.dll /r:${testdir}/../../../../resources/assemblies/System.Web.Mvc.dll /r:System.ComponentModel.Primitives.dll /r:System.Collections.Specialized.dll /r:${testdir}/../../../../resources/assemblies/System.Net.Http.dll - using System; using System.Data.SqlClient; using System.Web; diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.expected b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.expected index bafe7257095..beef5ec2968 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.expected @@ -1,8 +1,8 @@ edges -| StoredXSS.cs:24:60:24:86 | call to method GetString : String | StoredXSS.cs:24:44:24:86 | ... + ... | +| StoredXSS.cs:22:60:22:86 | call to method GetString : String | StoredXSS.cs:22:44:22:86 | ... + ... | nodes -| StoredXSS.cs:24:44:24:86 | ... + ... | semmle.label | ... + ... | -| StoredXSS.cs:24:60:24:86 | call to method GetString : String | semmle.label | call to method GetString : String | +| StoredXSS.cs:22:44:22:86 | ... + ... | semmle.label | ... + ... | +| StoredXSS.cs:22:60:22:86 | call to method GetString : String | semmle.label | call to method GetString : String | subpaths #select -| StoredXSS.cs:24:44:24:86 | ... + ... | StoredXSS.cs:24:60:24:86 | call to method GetString : String | StoredXSS.cs:24:44:24:86 | ... + ... | This HTML or JavaScript write depends on a $@. | StoredXSS.cs:24:60:24:86 | call to method GetString | stored (potentially user-provided) value | +| StoredXSS.cs:22:44:22:86 | ... + ... | StoredXSS.cs:22:60:22:86 | call to method GetString : String | StoredXSS.cs:22:44:22:86 | ... + ... | This HTML or JavaScript write depends on a $@. | StoredXSS.cs:22:60:22:86 | call to method GetString | stored (potentially user-provided) value | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/options b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/options new file mode 100644 index 00000000000..34d9e62e93c --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/options @@ -0,0 +1,3 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/AspInline.expected b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/AspInline.expected similarity index 66% rename from csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/AspInline.expected rename to csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/AspInline.expected index d296914aba7..66468b41a68 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/AspInline.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/AspInline.expected @@ -1,5 +1,5 @@ -| script.aspx:4:1:4:23 | <%= ... %> | XSS.cs:114:16:114:29 | someJavascript | -| script.aspx:8:1:8:12 | <%= ... %> | XSS.cs:121:24:121:28 | Field | +| script.aspx:4:1:4:23 | <%= ... %> | XSS.cs:115:16:115:29 | someJavascript | +| script.aspx:8:1:8:12 | <%= ... %> | XSS.cs:122:24:122:28 | Field | | script.aspx:12:1:12:14 | <%= ... %> | | Request | | script.aspx:16:1:16:34 | <%= ... %> | | QueryString | | script.aspx:20:1:20:41 | <%= ... %> | | QueryString | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/AspInline.ql b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/AspInline.ql similarity index 100% rename from csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/AspInline.ql rename to csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/AspInline.ql diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.cs b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.cs similarity index 92% rename from csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.cs rename to csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.cs index 650f636f875..1fc8a99e61b 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.cs @@ -1,4 +1,4 @@ - +// semmle-extractor-options: /r:${testdir}/../../../../resources/assemblies/System.Web.dll /r:${testdir}/../../../../resources/assemblies/System.Web.Mvc.dll /r:System.Collections.Specialized.dll /r:${testdir}/../../../../resources/assemblies/System.Net.Http.dll using System; using System.Net; using System.Net.Http; @@ -102,7 +102,8 @@ namespace Test new StringContent(HttpUtility.HtmlEncode(name)); } - public void UrlEncoded(HttpContextBase context) { + public void UrlEncoded(HttpContextBase context) + { // GOOD: URL encoding string name = context.Request.QueryString["name"]; new StringContent(HttpUtility.UrlEncode(name)); @@ -135,21 +136,3 @@ namespace Test } } } - -namespace System.Net -{ - public class HttpListenerResponse - { - public System.IO.Stream OutputStream => null; - } - - class HttpListenerContext - { - public HttpListenerResponse Response => null; - } - - class HttpListener - { - public HttpListenerContext GetContext() => null; - } -} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.expected b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.expected similarity index 97% rename from csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.expected rename to csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.expected index f1f4c631769..4b1440cee4a 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.expected @@ -56,7 +56,7 @@ nodes | XSS.cs:94:27:94:53 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | XSS.cs:94:27:94:61 | access to indexer : String | semmle.label | access to indexer : String | | XSS.cs:95:31:95:34 | access to local variable name | semmle.label | access to local variable name | -| XSS.cs:134:20:134:33 | access to property RawUrl | semmle.label | access to property RawUrl | +| XSS.cs:135:20:135:33 | access to property RawUrl | semmle.label | access to property RawUrl | | script.aspx:12:1:12:14 | <%= ... %> | semmle.label | <%= ... %> | | script.aspx:16:1:16:34 | <%= ... %> | semmle.label | <%= ... %> | | script.aspx:20:1:20:41 | <%= ... %> | semmle.label | <%= ... %> | @@ -72,7 +72,7 @@ subpaths | XSS.cs:86:28:86:31 | access to local variable name | XSS.cs:85:27:85:53 | access to property QueryString : NameValueCollection | XSS.cs:86:28:86:31 | access to local variable name | $@ flows to here and is written to HTML or JavaScript. | XSS.cs:85:27:85:53 | access to property QueryString : NameValueCollection | User-provided value | | XSS.cs:87:31:87:34 | access to local variable name | XSS.cs:85:27:85:53 | access to property QueryString : NameValueCollection | XSS.cs:87:31:87:34 | access to local variable name | $@ flows to here and is written to HTML or JavaScript. | XSS.cs:85:27:85:53 | access to property QueryString : NameValueCollection | User-provided value | | XSS.cs:95:31:95:34 | access to local variable name | XSS.cs:94:27:94:53 | access to property QueryString : NameValueCollection | XSS.cs:95:31:95:34 | access to local variable name | $@ flows to here and is written to HTML or JavaScript. | XSS.cs:94:27:94:53 | access to property QueryString : NameValueCollection | User-provided value | -| XSS.cs:134:20:134:33 | access to property RawUrl | XSS.cs:134:20:134:33 | access to property RawUrl | XSS.cs:134:20:134:33 | access to property RawUrl | $@ flows to here and is written to HTML or JavaScript. | XSS.cs:134:20:134:33 | access to property RawUrl | User-provided value | +| XSS.cs:135:20:135:33 | access to property RawUrl | XSS.cs:135:20:135:33 | access to property RawUrl | XSS.cs:135:20:135:33 | access to property RawUrl | $@ flows to here and is written to HTML or JavaScript. | XSS.cs:135:20:135:33 | access to property RawUrl | User-provided value | | script.aspx:12:1:12:14 | <%= ... %> | script.aspx:12:1:12:14 | <%= ... %> | script.aspx:12:1:12:14 | <%= ... %> | $@ flows to here and is a remote source accessed inline in an ASPX page. | script.aspx:12:1:12:14 | <%= ... %> | User-provided value | | script.aspx:16:1:16:34 | <%= ... %> | script.aspx:16:1:16:34 | <%= ... %> | script.aspx:16:1:16:34 | <%= ... %> | $@ flows to here and is a remote source accessed inline in an ASPX page. | script.aspx:16:1:16:34 | <%= ... %> | User-provided value | | script.aspx:20:1:20:41 | <%= ... %> | script.aspx:20:1:20:41 | <%= ... %> | script.aspx:20:1:20:41 | <%= ... %> | $@ flows to here and is a remote source accessed inline in an ASPX page. | script.aspx:20:1:20:41 | <%= ... %> | User-provided value | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.qlref b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.qlref similarity index 100% rename from csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/XSS.qlref rename to csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/XSS.qlref diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/options b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/options new file mode 100644 index 00000000000..a95668cbc59 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/options @@ -0,0 +1 @@ +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Net.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/script.aspx b/csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/script.aspx similarity index 100% rename from csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/script.aspx rename to csharp/ql/test/query-tests/Security Features/CWE-079/XSSAsp/script.aspx diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089/options b/csharp/ql/test/query-tests/Security Features/CWE-089/options index 036514ceb74..b1124d05dcd 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-089/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-089/options @@ -1,6 +1,6 @@ semmle-extractor-options: /nostdlib /noconfig -semmle-extractor-options: --load-sources-from-project:../../../resources/stubs/Dapper/2.0.90/Dapper.csproj -semmle-extractor-options: --load-sources-from-project:../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj -semmle-extractor-options: --load-sources-from-project:../../../resources/stubs/System.Data.SQLite/1.0.116/System.Data.SQLite.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/Dapper/2.0.90/Dapper.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SQLite/1.0.116/System.Data.SQLite.csproj semmle-extractor-options: ${testdir}/../../../resources/stubs/EntityFramework.cs semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Windows.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-090/options b/csharp/ql/test/query-tests/Security Features/CWE-090/options index dfc3914bb98..1a54f1e9c36 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-090/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-090/options @@ -1,2 +1,4 @@ -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs ${testdir}/../../../resources/stubs/System.DirectoryServices.cs /r:System.ComponentModel.Primitives.dll /r:System.Collections.Specialized.dll /r:System.ComponentModel.TypeConverter.dll /r:System.Private.Xml.dll -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Data.cs /r:System.Data.Common.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.DirectoryServices.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-091/XMLInjection/options b/csharp/ql/test/query-tests/Security Features/CWE-091/XMLInjection/options index 5194fddbe4d..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-091/XMLInjection/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-091/XMLInjection/options @@ -1 +1,3 @@ -semmle-extractor-options: /r:System.Private.Xml.dll /r:System.Xml.dll /r:System.Xml.ReaderWriter.dll /r:System.Runtime.Extensions.dll /r:System.Collections.Specialized.dll ${testdir}/../../../../resources/stubs/System.Web.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-094/options b/csharp/ql/test/query-tests/Security Features/CWE-094/options index 97b9301f4dc..cce2f114af6 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-094/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-094/options @@ -1 +1,5 @@ -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll ${testdir}/../../../resources/stubs/Microsoft.CSharp.cs /r:System.ComponentModel.Primitives.dll ${testdir}/../../../resources/stubs/System.Windows.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Windows.cs +semmle-extractor-options: ${testdir}/../../../resources/stubs/Microsoft.CSharp.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-099/options b/csharp/ql/test/query-tests/Security Features/CWE-099/options index 2878eb40d52..6f56ddfc468 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-099/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-099/options @@ -1 +1,3 @@ -semmle-extractor-options: /r:System.Collections.Specialized.dll ${testdir}/../../../resources/stubs/System.Web.cs /r:${testdir}/../../../resources/assemblies/System.Data.dll /r:System.Data.Common.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-112/options b/csharp/ql/test/query-tests/Security Features/CWE-112/options index c72ec0605ab..96b0b028bdd 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-112/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-112/options @@ -1 +1,3 @@ -semmle-extractor-options: /r:System.Collections.Specialized.dll /r:System.Runtime.Extensions.dll ${testdir}/../../../resources/stubs/System.Web.cs /r:System.Xml.ReaderWriter.dll /r:System.Private.Xml.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-114/AssemblyPathInjection/options b/csharp/ql/test/query-tests/Security Features/CWE-114/AssemblyPathInjection/options index 2fe55538006..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-114/AssemblyPathInjection/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-114/AssemblyPathInjection/options @@ -1 +1,3 @@ -semmle-extractor-options: /r:System.Collections.Specialized.dll ${testdir}/../../../../resources/stubs/System.Web.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-119/options b/csharp/ql/test/query-tests/Security Features/CWE-119/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-119/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-134/options b/csharp/ql/test/query-tests/Security Features/CWE-134/options index 54d2098bf4e..ab08ee323e2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-134/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-134/options @@ -1 +1,4 @@ -semmle-extractor-options: /r:System.Runtime.Extensions.dll /r:System.Collections.Specialized.dll ${testdir}/../../../resources/stubs/System.Web.cs ${testdir}/../../../resources/stubs/System.Windows.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Windows.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-201/ExposureInTransmittedData/options b/csharp/ql/test/query-tests/Security Features/CWE-201/ExposureInTransmittedData/options index 3d76f691ef2..34d9e62e93c 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-201/ExposureInTransmittedData/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-201/ExposureInTransmittedData/options @@ -1 +1,3 @@ -semmle-extractor-options: /r:System.Collections.Specialized.dll ${testdir}/../../../../resources/stubs/System.Web.cs ${testdir}/../../../../resources/stubs/System.Data.cs ${testdir}/../../../../resources/stubs/System.Net.cs /r:System.Data.Common.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-209/options b/csharp/ql/test/query-tests/Security Features/CWE-209/options index 326ff69528b..96b0b028bdd 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-209/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-209/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-248/MissingASPNETGlobalErrorHandler/WebConfigOff/options b/csharp/ql/test/query-tests/Security Features/CWE-248/MissingASPNETGlobalErrorHandler/WebConfigOff/options index 96837650998..9d05f9bf06d 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-248/MissingASPNETGlobalErrorHandler/WebConfigOff/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-248/MissingASPNETGlobalErrorHandler/WebConfigOff/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-248/MissingASPNETGlobalErrorHandler/WebConfigOffButGlobal/options b/csharp/ql/test/query-tests/Security Features/CWE-248/MissingASPNETGlobalErrorHandler/WebConfigOffButGlobal/options index 96837650998..9d05f9bf06d 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-248/MissingASPNETGlobalErrorHandler/WebConfigOffButGlobal/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-248/MissingASPNETGlobalErrorHandler/WebConfigOffButGlobal/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-312/options b/csharp/ql/test/query-tests/Security Features/CWE-312/options index 4b3bf418201..ab08ee323e2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-312/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-312/options @@ -1 +1,4 @@ -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll /r:System.Security.Cryptography.dll {testdir}/../../../../resources/stubs/System.Windows.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Windows.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-327/InsecureSQLConnection/options b/csharp/ql/test/query-tests/Security Features/CWE-327/InsecureSQLConnection/options new file mode 100644 index 00000000000..94ad1a6f02b --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-327/InsecureSQLConnection/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-327/InsecureSQLConnection/stubs.cs b/csharp/ql/test/query-tests/Security Features/CWE-327/InsecureSQLConnection/stubs.cs deleted file mode 100644 index 26461fc0224..00000000000 --- a/csharp/ql/test/query-tests/Security Features/CWE-327/InsecureSQLConnection/stubs.cs +++ /dev/null @@ -1,71 +0,0 @@ -// This file contains auto-generated code. - -namespace System -{ - namespace Data - { - // Generated from `System.Data.IDbConnection` in `System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089` - public interface IDbConnection : System.IDisposable - { - string ConnectionString { get; set; } - } - - namespace Common - { - // Generated from `System.Data.Common.DbConnectionStringBuilder` in `System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089` - public class DbConnectionStringBuilder : System.Collections.IEnumerable, System.Collections.IDictionary, System.Collections.ICollection - { - System.Collections.IDictionaryEnumerator System.Collections.IDictionary.GetEnumerator() => throw null; - System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => throw null; - bool System.Collections.ICollection.IsSynchronized { get => throw null; } - bool System.Collections.IDictionary.Contains(object keyword) => throw null; - object System.Collections.ICollection.SyncRoot { get => throw null; } - public object this[object keyword] { get => throw null; set => throw null; } - public bool IsReadOnly { get => throw null; } - public override string ToString() => throw null; - public string ConnectionString { get => throw null; set => throw null; } - public virtual System.Collections.ICollection Keys { get => throw null; } - public virtual System.Collections.ICollection Values { get => throw null; } - public virtual bool IsFixedSize { get => throw null; } - public virtual int Count { get => throw null; } - public virtual void Clear() => throw null; - void System.Collections.ICollection.CopyTo(System.Array array, int index) => throw null; - void System.Collections.IDictionary.Add(object keyword, object value) => throw null; - void System.Collections.IDictionary.Remove(object keyword) => throw null; - public void Dispose() => throw null; - } - - // Generated from `System.Data.Common.DbConnection` in `System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089` - abstract public class DbConnection : System.IDisposable, System.Data.IDbConnection - { - public abstract string ConnectionString { get; set; } - public void Dispose() => throw null; - } - - } - namespace SqlClient - { - // Generated from `System.Data.SqlClient.SqlConnectionStringBuilder` in `System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089` - public class SqlConnectionStringBuilder : System.Data.Common.DbConnectionStringBuilder - { - public SqlConnectionStringBuilder() => throw null; - public SqlConnectionStringBuilder(string connectionString) => throw null; - public bool Encrypt { get => throw null; set => throw null; } - public override System.Collections.ICollection Keys { get => throw null; } - public override System.Collections.ICollection Values { get => throw null; } - public override bool IsFixedSize { get => throw null; } - public override void Clear() => throw null; - } - - // Generated from `System.Data.SqlClient.SqlConnection` in `System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089` - public class SqlConnection : System.Data.Common.DbConnection, System.ICloneable - { - object System.ICloneable.Clone() => throw null; - public SqlConnection() => throw null; - public SqlConnection(string connectionString) => throw null; - public override string ConnectionString { get => throw null; set => throw null; } - } - - } - } -} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-338/InsecureRandomness.expected b/csharp/ql/test/query-tests/Security Features/CWE-338/InsecureRandomness.expected index 4cc2e788074..011ec3faee0 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-338/InsecureRandomness.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-338/InsecureRandomness.expected @@ -1,10 +1,10 @@ edges -| InsecureRandomness.cs:28:13:28:16 | [post] access to local variable data : Byte[] [element] : Int32 | InsecureRandomness.cs:29:57:29:60 | access to local variable data : Byte[] [element] : Int32 | -| InsecureRandomness.cs:28:23:28:43 | (...) ... : Int32 | InsecureRandomness.cs:28:13:28:16 | [post] access to local variable data : Byte[] [element] : Int32 | -| InsecureRandomness.cs:28:29:28:43 | call to method Next : Int32 | InsecureRandomness.cs:28:23:28:43 | (...) ... : Int32 | +| InsecureRandomness.cs:28:13:28:16 | [post] access to local variable data : Byte[] [element] : Byte | InsecureRandomness.cs:29:57:29:60 | access to local variable data : Byte[] [element] : Byte | +| InsecureRandomness.cs:28:23:28:43 | (...) ... : Byte | InsecureRandomness.cs:28:13:28:16 | [post] access to local variable data : Byte[] [element] : Byte | +| InsecureRandomness.cs:28:29:28:43 | call to method Next : Int32 | InsecureRandomness.cs:28:23:28:43 | (...) ... : Byte | | InsecureRandomness.cs:29:13:29:18 | [post] access to local variable result : StringBuilder [element] : String | InsecureRandomness.cs:31:16:31:21 | access to local variable result : StringBuilder [element] : String | | InsecureRandomness.cs:29:27:29:61 | call to method GetString : String | InsecureRandomness.cs:29:13:29:18 | [post] access to local variable result : StringBuilder [element] : String | -| InsecureRandomness.cs:29:57:29:60 | access to local variable data : Byte[] [element] : Int32 | InsecureRandomness.cs:29:27:29:61 | call to method GetString : String | +| InsecureRandomness.cs:29:57:29:60 | access to local variable data : Byte[] [element] : Byte | InsecureRandomness.cs:29:27:29:61 | call to method GetString : String | | InsecureRandomness.cs:31:16:31:21 | access to local variable result : StringBuilder [element] : String | InsecureRandomness.cs:31:16:31:32 | call to method ToString : String | | InsecureRandomness.cs:31:16:31:32 | call to method ToString : String | InsecureRandomness.cs:12:27:12:50 | call to method InsecureRandomString | | InsecureRandomness.cs:60:31:60:39 | call to method Next : Int32 | InsecureRandomness.cs:62:16:62:21 | access to local variable result : String | @@ -16,12 +16,12 @@ nodes | InsecureRandomness.cs:12:27:12:50 | call to method InsecureRandomString | semmle.label | call to method InsecureRandomString | | InsecureRandomness.cs:13:20:13:56 | call to method InsecureRandomStringFromSelection | semmle.label | call to method InsecureRandomStringFromSelection | | InsecureRandomness.cs:14:20:14:54 | call to method InsecureRandomStringFromIndexer | semmle.label | call to method InsecureRandomStringFromIndexer | -| InsecureRandomness.cs:28:13:28:16 | [post] access to local variable data : Byte[] [element] : Int32 | semmle.label | [post] access to local variable data : Byte[] [element] : Int32 | -| InsecureRandomness.cs:28:23:28:43 | (...) ... : Int32 | semmle.label | (...) ... : Int32 | +| InsecureRandomness.cs:28:13:28:16 | [post] access to local variable data : Byte[] [element] : Byte | semmle.label | [post] access to local variable data : Byte[] [element] : Byte | +| InsecureRandomness.cs:28:23:28:43 | (...) ... : Byte | semmle.label | (...) ... : Byte | | InsecureRandomness.cs:28:29:28:43 | call to method Next : Int32 | semmle.label | call to method Next : Int32 | | InsecureRandomness.cs:29:13:29:18 | [post] access to local variable result : StringBuilder [element] : String | semmle.label | [post] access to local variable result : StringBuilder [element] : String | | InsecureRandomness.cs:29:27:29:61 | call to method GetString : String | semmle.label | call to method GetString : String | -| InsecureRandomness.cs:29:57:29:60 | access to local variable data : Byte[] [element] : Int32 | semmle.label | access to local variable data : Byte[] [element] : Int32 | +| InsecureRandomness.cs:29:57:29:60 | access to local variable data : Byte[] [element] : Byte | semmle.label | access to local variable data : Byte[] [element] : Byte | | InsecureRandomness.cs:31:16:31:21 | access to local variable result : StringBuilder [element] : String | semmle.label | access to local variable result : StringBuilder [element] : String | | InsecureRandomness.cs:31:16:31:32 | call to method ToString : String | semmle.label | call to method ToString : String | | InsecureRandomness.cs:60:31:60:39 | call to method Next : Int32 | semmle.label | call to method Next : Int32 | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-338/options b/csharp/ql/test/query-tests/Security Features/CWE-338/options index 1225f3c0220..bd9f6e49ece 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-338/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-338/options @@ -1,2 +1,3 @@ -semmle-extractor-options: /r:System.Security.Cryptography.Csp.dll /r:System.Security.Cryptography.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj semmle-extractor-options: ${testdir}/../../../resources/stubs/Microsoft.VisualStudio.TestTools.UnitTesting.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-352/global/options b/csharp/ql/test/query-tests/Security Features/CWE-352/global/options index 5ce3b321a94..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-352/global/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-352/global/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-352/missing/options b/csharp/ql/test/query-tests/Security Features/CWE-352/missing/options index 5ce3b321a94..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-352/missing/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-352/missing/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-359/options b/csharp/ql/test/query-tests/Security Features/CWE-359/options index aa088071c5d..ab08ee323e2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-359/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-359/options @@ -1 +1,4 @@ -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll /r:System.Security.Cryptography.dll ${testdir}/../../../resources/stubs/System.Windows.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Windows.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-384/options b/csharp/ql/test/query-tests/Security Features/CWE-384/options index 326ff69528b..96b0b028bdd 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-384/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-384/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/CodeAddedHeader/options b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/CodeAddedHeader/options index 96837650998..9d05f9bf06d 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/CodeAddedHeader/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/CodeAddedHeader/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/NoHeader/options b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/NoHeader/options index 96837650998..9d05f9bf06d 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/NoHeader/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/NoHeader/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/options b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/options index 96837650998..9d05f9bf06d 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-451/MissingXFrameOptions/WebConfigAddedHeader/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-502/DeserializedDelegate/options b/csharp/ql/test/query-tests/Security Features/CWE-502/DeserializedDelegate/options index bd4d77c7377..a5ea8b797c5 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-502/DeserializedDelegate/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-502/DeserializedDelegate/options @@ -1 +1,2 @@ -semmle-extractor-options: /r:System.Runtime.Serialization.Formatters.dll /r:System.IO.FileSystem.dll /r:System.Linq.Expressions.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserialization/options b/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserialization/options index 182f92f8d84..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserialization/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserialization/options @@ -1 +1,3 @@ -semmle-extractor-options: /r:System.Private.Xml.dll /r:System.Xml.ReaderWriter.dll /r:System.Private.DataContractSerialization.dll /r:System.Runtime.Serialization.Formatters.dll /r:System.Runtime.Extensions.dll /r:System.IO.FileSystem.dll /r:System.Collections.Specialized.dll ${testdir}/../../../../resources/stubs/System.Web.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInput/options b/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInput/options index 182f92f8d84..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInput/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInput/options @@ -1 +1,3 @@ -semmle-extractor-options: /r:System.Private.Xml.dll /r:System.Xml.ReaderWriter.dll /r:System.Private.DataContractSerialization.dll /r:System.Runtime.Serialization.Formatters.dll /r:System.Runtime.Extensions.dll /r:System.IO.FileSystem.dll /r:System.Collections.Specialized.dll ${testdir}/../../../../resources/stubs/System.Web.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInputNewtonsoftJson/options b/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInputNewtonsoftJson/options index bd183f95f5c..81ebad48b0d 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInputNewtonsoftJson/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-502/UnsafeDeserializationUntrustedInputNewtonsoftJson/options @@ -1 +1,3 @@ -semmle-extractor-options: /nostdlib /noconfig --load-sources-from-project:${testdir}/../../../../resources/stubs/Newtonsoft.Json/13.0.1/Newtonsoft.Json.csproj ${testdir}/../../../../resources/stubs/System.Web.cs +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/Newtonsoft.Json/13.0.1/Newtonsoft.Json.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-539/PersistentCookie/options b/csharp/ql/test/query-tests/Security Features/CWE-539/PersistentCookie/options index 5ce3b321a94..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-539/PersistentCookie/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-539/PersistentCookie/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-548/options b/csharp/ql/test/query-tests/Security Features/CWE-548/options new file mode 100644 index 00000000000..75c39b4541b --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-548/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-601/UrlRedirect/options b/csharp/ql/test/query-tests/Security Features/CWE-601/UrlRedirect/options index fb116749418..daca5d73f55 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-601/UrlRedirect/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-601/UrlRedirect/options @@ -1,4 +1,4 @@ semmle-extractor-options: /nostdlib /noconfig semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj -semmle-extractor-options: --load-sources-from-project:../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/AddedInCode/options b/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/AddedInCode/options index 96837650998..9d05f9bf06d 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/AddedInCode/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/AddedInCode/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/AddedInForms/options b/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/AddedInForms/options new file mode 100644 index 00000000000..f4586e95ef0 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/AddedInForms/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/HttpCookiesCorrect/options b/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/HttpCookiesCorrect/options new file mode 100644 index 00000000000..f4586e95ef0 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/HttpCookiesCorrect/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/RequireSSLMissing/options b/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/RequireSSLMissing/options new file mode 100644 index 00000000000..f4586e95ef0 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-614/RequireSSL/RequireSSLMissing/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Security Features/CWE-643/options b/csharp/ql/test/query-tests/Security Features/CWE-643/options index 9ab01d95193..6f56ddfc468 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-643/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-643/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll ${testdir}/../../../resources/stubs/System.Data.cs /r:System.Private.Xml.dll /r:System.Xml.XPath.dll /r:System.Data.Common.dll /r:System.Runtime.Extensions.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoS/options b/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoS/options index 84463712411..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoS/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoS/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs /r:System.Text.RegularExpressions.dll /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoSGlobalTimeout/options b/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoSGlobalTimeout/options index 1a4a26ba9ed..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoSGlobalTimeout/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-730/ReDoSGlobalTimeout/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs /r:System.Text.RegularExpressions.dll /r:System.Collections.Specialized.dll /r:System.Runtime.Extensions.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-730/RegexInjection/options b/csharp/ql/test/query-tests/Security Features/CWE-730/RegexInjection/options index 84463712411..9290f65d5b2 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-730/RegexInjection/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-730/RegexInjection/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs /r:System.Text.RegularExpressions.dll /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/query-tests/Security Features/CWE-798/options b/csharp/ql/test/query-tests/Security Features/CWE-798/options index 3145ab2441c..a361e4fde29 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-798/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-798/options @@ -1,2 +1,4 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SqlClient/4.8.3/System.Data.SqlClient.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs semmle-extractor-options: ${testdir}/../../../resources/stubs/Microsoft.VisualStudio.TestTools.UnitTesting.cs -semmle-extractor-options: /r:${testdir}/../../../resources/assemblies/System.Web.dll /r:${testdir}/../../../resources/assemblies/System.Web.ApplicationServices.dll /r:${testdir}/../../../resources/assemblies/System.Data.dll /r:System.Text.RegularExpressions.dll /r:System.Collections.Specialized.dll /r:System.Data.Common.dll /r:System.Security.Cryptography.dll /r:System.Runtime.InteropServices.dll diff --git a/csharp/ql/test/query-tests/Security Features/CWE-807/options b/csharp/ql/test/query-tests/Security Features/CWE-807/options index e2ddeb7dac8..96b0b028bdd 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-807/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-807/options @@ -1 +1,3 @@ -semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Net.cs ${testdir}/../../../resources/stubs/System.Web.cs /r:System.Collections.Specialized.dll +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Web.cs diff --git a/csharp/ql/test/resources/assemblies/System.Data.dll b/csharp/ql/test/resources/assemblies/System.Data.dll deleted file mode 100644 index 070caaa81f3..00000000000 Binary files a/csharp/ql/test/resources/assemblies/System.Data.dll and /dev/null differ diff --git a/csharp/ql/test/resources/assemblies/System.Web.ApplicationServices.dll b/csharp/ql/test/resources/assemblies/System.Web.ApplicationServices.dll deleted file mode 100644 index 85db5a3a7e4..00000000000 Binary files a/csharp/ql/test/resources/assemblies/System.Web.ApplicationServices.dll and /dev/null differ diff --git a/csharp/ql/test/resources/stubs/System.Web.cs b/csharp/ql/test/resources/stubs/System.Web.cs index 725b672fbe8..58865f82e6a 100644 --- a/csharp/ql/test/resources/stubs/System.Web.cs +++ b/csharp/ql/test/resources/stubs/System.Web.cs @@ -156,6 +156,7 @@ namespace System.Web public class HttpResponse { public void Write(object o) { } + public void Write(string s) { } public void WriteFile(string s) { } public HttpCookieCollection Cookies => null; public void AddHeader(string name, string value) { } diff --git a/csharp/tools/tracing-config.lua b/csharp/tools/tracing-config.lua index 2db04d83524..f04169caff5 100644 --- a/csharp/tools/tracing-config.lua +++ b/csharp/tools/tracing-config.lua @@ -21,6 +21,7 @@ function RegisterExtractorPack(id) -- if that's `build`, we append `-p:UseSharedCompilation=false` to the command line, -- otherwise we do nothing. local match = false + local testMatch = false local dotnetRunNeedsSeparator = false; local dotnetRunInjectionIndex = nil; local argv = compilerArguments.argv @@ -37,7 +38,7 @@ function RegisterExtractorPack(id) if (not match) then Log(1, 'Dotnet subcommand detected: %s', arg) end - if arg == 'build' or arg == 'msbuild' or arg == 'publish' or arg == 'pack' or arg == 'test' then + if arg == 'build' or arg == 'msbuild' or arg == 'publish' or arg == 'pack' then match = true break end @@ -48,6 +49,16 @@ function RegisterExtractorPack(id) dotnetRunNeedsSeparator = true dotnetRunInjectionIndex = i + 1 end + if arg == 'test' then + match = true + testMatch = true + end + -- for `dotnet test`, we should not append `-p:UseSharedCompilation=false` to the command line + -- if an `exe` or `dll` is passed as an argument as the call is forwarded to vstest. + if testMatch and (arg:match('%.exe$') or arg:match('%.dll')) then + match = false + break + end end -- if we see a separator to `dotnet run`, inject just prior to the existing separator if arg == '--' then @@ -63,7 +74,7 @@ function RegisterExtractorPack(id) end end if match then - local injections = { '-p:UseSharedCompilation=false' } + local injections = { '-p:UseSharedCompilation=false', '-p:EmitCompilerGeneratedFiles=true' } if dotnetRunNeedsSeparator then table.insert(injections, '--') end @@ -118,7 +129,8 @@ function RegisterExtractorPack(id) compilerArguments, nil, { '/p:UseSharedCompilation=false', - '/p:MvcBuildViews=true' + '/p:MvcBuildViews=true', + '/p:EmitCompilerGeneratedFiles=true', }) } @@ -154,7 +166,7 @@ function RegisterExtractorPack(id) if seenCompilerCall then return { - order = ORDER_BEFORE, + order = ORDER_AFTER, invocation = { path = AbsolutifyExtractorPath(id, extractor), arguments = { @@ -194,7 +206,7 @@ function RegisterExtractorPack(id) if seenCompilerCall then return { - order = ORDER_BEFORE, + order = ORDER_AFTER, invocation = { path = AbsolutifyExtractorPath(id, extractor), arguments = { diff --git a/docs/codeql/codeql-for-visual-studio-code/running-codeql-queries-at-scale-with-mrva.rst b/docs/codeql/codeql-for-visual-studio-code/running-codeql-queries-at-scale-with-mrva.rst index 656aec444de..02c9d448ffa 100644 --- a/docs/codeql/codeql-for-visual-studio-code/running-codeql-queries-at-scale-with-mrva.rst +++ b/docs/codeql/codeql-for-visual-studio-code/running-codeql-queries-at-scale-with-mrva.rst @@ -23,7 +23,7 @@ If you want to run variant analysis on your repositories, you need to enable cod Setting a controller repository for variant analysis ---------------------------------------------------- -When you run variant analysis, the analysis is run entirely using GitHub Actions. You don't need to create any workflows, but you must specify which GitHub repository the CodeQL extension should use as the "controller repository." Controller repositories can be empty, but they must have at least one commit. The ``GITHUB_TOKEN`` must also have "Read and write permissions" to run workflows in that repository. For more information, see "`Managing GitHub Actions settings for a repository `__." +When you run variant analysis, the analysis is run entirely using GitHub Actions. You don't need to create any workflows, but you must specify which GitHub repository the CodeQL extension should use as the "controller repository." Controller repositories can be empty, but they must have at least one commit. .. pull-quote:: @@ -153,6 +153,36 @@ For example, if you want to continue analyzing a set of repositories that had re You can then insert the ``new-repo-list`` of repositories into your list of custom repository lists for easy access in the Variant Analysis Repositories panel. +Using GitHub code search to add repositories to a custom list +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +You can use code search directly in the CodeQL extension to add a subset of repositories from GitHub.com to a custom list. + +.. pull-quote:: + + Note + + This feature uses the legacy code search via the code search API. For more information on the syntax to use, see "`Searching code (legacy) `__." + +For example, to add all repositories in the ``rails`` organization on GitHub, you can search ``org:rails``. + +You can add a maximum of 1000 repositories to a custom list per search. + +#. In the Variant Analysis Repositories panel, choose the list that you want to add repositories to. You can create a new list or choose an existing list that already contains repositories. + +#. Right-click on the list you have chosen and then click **Add repositories with GitHub Code Search**. + +#. In the pop-up that appears at the top of the application, under the search bar, select a language for your search from the choices in the dropdown. + + .. image:: ../images/codeql-for-visual-studio-code/variant-analysis-code-search-language.png + :alt: Screenshot of the search bar for using code search to add repositories to a custom list. The search bar asks you to choose a language for your search and has a dropdown list of languages to choose from. + +#. In the search bar, type the search query that you want to use and press **Enter**. + +You can view the progress of your search in the bottom right corner of the application in a box with the text "Searching for repositories...". If you click **Cancel**, no repositories will be added to your list. Once complete, you will see the resulting repositories appear in the dropdown under your custom list in the Variant Analysis Repositories panel. + +Some of the resulting repositories will not have CodeQL databases and some may not allow access by the CodeQL extension for Visual Studio Code. When you run an analysis on the list, the Variant Analysis Results view will show you which repositories were analyzed, which denied access, and which had no CodeQL database. + Troubleshooting variant analysis -------------------------------- diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-java.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-java.rst index baa93e8eb0a..950fdc7bf24 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-java.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-java.rst @@ -315,7 +315,7 @@ The following source kinds are supported: Below is an enumeration of the remaining source kinds, but they are out of scope for this documentation: -- **contentprovider**, **android-widget**, **android-external-storage-dir**. +- **contentprovider**, **android-external-storage-dir**. sinkModel(package, type, subtypes, name, signature, ext, input, kind, provenance) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -327,18 +327,31 @@ Taint sink. As opposed to source kinds, there are many different kinds of sinks The following sink kinds are supported: -- **sql**: A SQL injection vulnerability sink. -- **xss**: A cross-site scripting vulnerability sink. -- **logging**: A log output sink. - -Below is an enumeration of the remaining sinks, but they are out of scope for this documentation: - -- **open-url**, **jndi-injection**, **ldap**, **jdbc-url** -- **mvel**, **xpath**, **groovy**, **ognl-injection** -- **intent-start**, **pending-intent-sent**, **url-redirect** -- **create-file**, **read-file**, **write-file**, **set-hostname-verifier** -- **header-splitting**, **information-leak**, **xslt**, **jexl** -- **bean-validation**, **ssti**, **fragment-injection**, **regex-use[**\ `arg`\ **]** +- **bean-validation**: A sink that can be used for insecure bean validation, such as in calls to **ConstraintValidatorContext.buildConstraintViolationWithTemplate**. +- **command-injection**: A sink that can be used to inject shell commands, such as in calls to **Runtime.exec**. +- **file-content-store**: A sink that can be used to control the contents of a file, such as in a **Files.write** call. +- **fragment-injection**: A sink that can be used for Android fragment injection, such as in a **FragmentTransaction.replace** call. +- **groovy-injection**: A sink that can be used for Groovy injection, such as in a **GroovyShell.evaluate** call. +- **hostname-verification**: A sink that can be used for unsafe hostname verification, such as in calls to **HttpsURLConnection.setHostnameVerifier**. +- **html-injection**: A sink that can be used for XSS via HTML injection, such as in a **ResponseStream.write** call. +- **information-leak**: A sink that can be used to leak information to an HTTP response, such as in calls to **HttpServletResponse.sendError**. +- **intent-redirection**: A sink that can be used for Android intent redirection, such as in a **Context.startActivity** call. +- **jexl-injection**: A sink that can be used for JEXL expression injection, such as in a **JexlExpression.evaluate** call. +- **jndi-injection**: A sink that can be used for JNDI injection, such as in a **Context.lookup** call. +- **js-injection**: A sink that can be used for XSS via JavaScript injection, such as in a **Webview.evaluateJavaScript** call. +- **ldap-injection**: A sink that can be used for LDAP injection, such as in a **DirContext.search** call. +- **log-injection**: A sink that can be used for log injection, such as in a **Logger.warn** call. +- **mvel-injection**: A sink that can be used for MVEL expression injection, such as in a **MVEL.eval** call. +- **ognl-injection**: A sink that can be used for OGNL injection, such as in an **Ognl.getValue** call. +- **path-injection**: A sink that can be used for path injection in a file system access, such as in calls to **new FileReader**. +- **pending-intents**: A sink that can be used to send an implicit and mutable `PendingIntent` to a third party, such as in an **Activity.setResult** call. +- **request-forgery**: A sink that controls the URL of a request, such as in an **HttpRequest.newBuilder** call. +- **response-splitting**: A sink that can be used for HTTP response splitting, such as in calls to **HttpServletResponse.setHeader**. +- **sql-injection**: A sink that can be used for SQL injection, such as in a **Statement.executeQuery** call. +- **template-injection**: A sink that can be used for server side template injection, such as in a **Velocity.evaluate** call. +- **url-redirection**: A sink that can be used to redirect the user to a malicious URL, such as in a **Response.temporaryRedirect** call. +- **xpath-injection**: A sink that can be used for XPath injection, such as in a **XPath.evaluate** call. +- **xslt-injection**: A sink that can be used for XSLT injection, such as in a **Transformer.transform** call. summaryModel(package, type, subtypes, name, signature, ext, input, output, kind, provenance) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst index d8a9e15faf5..d5cf4e0338e 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst @@ -53,7 +53,7 @@ Note that this sink is already recognized by the CodeQL JS analysis, but for thi pack: codeql/javascript-all extensible: sinkModel data: - - ["execa", "Member[shell].Argument[0]", "command-line-injection"] + - ["execa", "Member[shell].Argument[0]", "command-injection"] - Since we're adding a new sink, we add a tuple to the **sinkModel** extensible predicate. @@ -64,7 +64,7 @@ Note that this sink is already recognized by the CodeQL JS analysis, but for thi - **Member[shell]** selects accesses to the **shell** member of the **execa** package. - **Argument[0]** selects the first argument to calls to that member. -- **command-line-injection** indicates that this is considered a sink for the command injection query. +- **command-injection** indicates that this is considered a sink for the command injection query. Example: Taint sources from window 'message' events --------------------------------------------------- @@ -463,7 +463,7 @@ Sink kinds Unlike sources, sinks tend to be highly query-specific, rarely affecting more than one or two queries. Not every query supports customizable sinks. If the following sinks are not suitable for your use case, you should add a new query. - **code-injection**: A sink that can be used to inject code, such as in calls to **eval**. -- **command-line-injection**: A sink that can be used to inject shell commands, such as in calls to **child_process.spawn**. +- **command-injection**: A sink that can be used to inject shell commands, such as in calls to **child_process.spawn**. - **path-injection**: A sink that can be used for path injection in a file system access, such as in calls to **fs.readFile**. - **sql-injection**: A sink that can be used for SQL injection, such as in a MySQL **query** call. - **nosql-injection**: A sink that can be used for NoSQL injection, such as in a MongoDB **findOne** call. diff --git a/docs/codeql/codeql-language-guides/using-flow-labels-for-precise-data-flow-analysis.rst b/docs/codeql/codeql-language-guides/using-flow-labels-for-precise-data-flow-analysis.rst index 597ce491463..8625d637366 100644 --- a/docs/codeql/codeql-language-guides/using-flow-labels-for-precise-data-flow-analysis.rst +++ b/docs/codeql/codeql-language-guides/using-flow-labels-for-precise-data-flow-analysis.rst @@ -70,18 +70,22 @@ For example, we would like to flag this code: .. code-block:: javascript - var data = JSON.parse(str); - if (data.length > 0) { // problematic: `data` may be `null` - ... + function test(str) { + var data = JSON.parse(str); + if (data.length > 0) { // problematic: `data` may be `null` + ... + } } This code, on the other hand, should not be flagged: .. code-block:: javascript - var data = JSON.parse(str); - if (data && data.length > 0) { // unproblematic: `data` is first checked for nullness - ... + function test(str) { + var data = JSON.parse(str); + if (data && data.length > 0) { // unproblematic: `data` is first checked for nullness + ... + } } We will first try to write a query to find this kind of problem without flow labels, and use the @@ -168,11 +172,13 @@ checked for null-guardedness: .. code-block:: javascript - var root = JSON.parse(str); - if (root) { - var payload = root.data; // unproblematic: `root` cannot be `null` here - if (payload.length > 0) { // problematic: `payload` may be `null` here - ... + function test(str) { + var root = JSON.parse(str); + if (root) { + var payload = root.data; // unproblematic: `root` cannot be `null` here + if (payload.length > 0) { // problematic: `payload` may be `null` here + ... + } } } diff --git a/docs/codeql/images/codeql-for-visual-studio-code/variant-analysis-code-search-language.png b/docs/codeql/images/codeql-for-visual-studio-code/variant-analysis-code-search-language.png new file mode 100644 index 00000000000..5f2eddec6f6 Binary files /dev/null and b/docs/codeql/images/codeql-for-visual-studio-code/variant-analysis-code-search-language.png differ diff --git a/docs/codeql/ql-language-reference/formulas.rst b/docs/codeql/ql-language-reference/formulas.rst index cdc8c297b7d..8745217decc 100644 --- a/docs/codeql/ql-language-reference/formulas.rst +++ b/docs/codeql/ql-language-reference/formulas.rst @@ -164,6 +164,38 @@ If the call resolves to a predicate without result, then the call is a formula. It is also possible to call a predicate with result. This kind of call is an expression in QL, instead of a formula. For more information, see ":ref:`calls-with-result`." +Member predicates only apply to members of a particular class and calls to +member predicates have a receiver of a matching type. Syntactically, if a call +contains a dot, then the expression before the dot specifies the receiver of +the call. For instance, ``x`` is the receiver for the call ``x.isEven()``. + +For calls to member predicates of the enclosing class on the member itself +(i.e., the value of ``this``), the receiver may be omitted syntactically. In +this case we say the call has an implicit this receiver. For instance, in the +following example the ``isEven()`` call in ``isOdd()`` is a member predicate +call with an implicit this receiver and the call is equivalent to +``this.isEven()``: + +.. code-block:: ql + + class OneTwoThree extends int { + OneTwoThree() { this = 1 or this = 2 or this = 3 } + + predicate isEven() { this = 2 } + + predicate isOdd() { not isEven() } + } + +Use of implicit this receivers can make it harder to spot predicates that introduce +cartesian products by failing to relate the implicit ``this`` variable with +other variables, which can negatively affect query performance. For more +information on cartesian products, see ":ref:`Troubleshooting query performance +`". + +It is possible to enable warnings about implicit this receivers for `CodeQL packs +`__ +through the ``warnOnImplicitThis`` property. + .. _parenthesized-formulas: Parenthesized formulas diff --git a/docs/codeql/ql-language-reference/modules.rst b/docs/codeql/ql-language-reference/modules.rst index ee0d1f7966b..42344c72e3d 100644 --- a/docs/codeql/ql-language-reference/modules.rst +++ b/docs/codeql/ql-language-reference/modules.rst @@ -139,7 +139,7 @@ Parameterized modules ===================== Parameterized modules are QL's approach to generic programming. -Similar to explicit modules, parameterized modules are defined within other modules using the keywork ``module``. +Similar to explicit modules, parameterized modules are defined within other modules using the keyword ``module``. In addition to the module name, parameterized modules declare one or more parameters between the name and the module body. For example, consider the module ``M``, which takes two predicate parameters and defines a new predicate diff --git a/docs/codeql/ql-language-reference/ql-language-specification.rst b/docs/codeql/ql-language-reference/ql-language-specification.rst index 71dcbdce571..e1e2dad10fa 100644 --- a/docs/codeql/ql-language-reference/ql-language-specification.rst +++ b/docs/codeql/ql-language-reference/ql-language-specification.rst @@ -199,24 +199,37 @@ Kinds of modules A module may be: +- A *declared module*, if it is defined by the ``module`` or ``ql`` grammar rules. +- A *non-declared module*, if it is not a *declared module*. + +A *declared module* may be: + - A *file module*, if it is defined implicitly by a QL file or a QLL file. - A *query module*, if it is defined implicitly by a QL file. - A *library module*, if it is not a query module. +A *non-declared module* may be: + +- A *built-in module*. +- An *instantiated module* (see :ref:`Parameterized modules`). +- An *instantiation-nested module* (see :ref:`Parameterized modules`). + A query module must contain one or more queries. Import directives ~~~~~~~~~~~~~~~~~ -An import directive refers to a module identifier: +An import directive refers to a module expression: :: import ::= annotations "import" importModuleExpr ("as" modulename)? - qualId ::= simpleId | qualId "." simpleId + importModuleExpr ::= importModuleId arguments? - importModuleExpr ::= qualId | importModuleExpr "::" modulename arguments? + importModuleId ::= qualId | importModuleExpr "::" modulename + + qualId ::= simpleId | qualId "." simpleId arguments ::= "<" argument ("," argument)* ">" @@ -249,6 +262,73 @@ For qualified identifiers (``a.b``): A qualified module identifier is only valid within an import. +Module expressions contain a module identifier and optional arguments. If arguments are present, the module expression instantiates the module that the identifier resolves to (see :ref:`Parameterized modules`). + +Module expressions cannot refer to :ref:`Parameterized modules`. Instead, parameterized modules must always be fully instantiated when they are referenced. + +.. _Parameterized modules: + +Parameterized modules +~~~~~~~~~~~~~~~~~~~~~ + +Modules with parameters are called *parameterized modules*. A *declared module* has parameters if and only if it is a *library module* and its declaration uses the ``parameters`` syntax. + +*Parameterized modules* can be instantiated with arguments that match the signatures of the parameters: + +- Given a type signature, the corresponding argument must be a type that transitively extends the specified ``extends`` types and is a transitive subtype of the specified ``instanceof`` types. +- Given a predicate signature, the corresponding argument must be a predicate with exactly matching relational types. +- Given a module signature, the corresponding argument must be a module that exports all the specified type and predicate members. Furthermore, the module must be declared as matching the module signature via the ``implements`` syntax. + +The result of instantiating a *parameterized module* is an *instantiated module*. The parameterized module is called the *underlying module* of the *instantiated module*. + +Instantiation-relative and instantiation-nested entities +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Given an *instantiated module*, every entity has a corresponding entity called the *instantiation-relative* entity, which is determined as follows: + +- If the entity is the *underlying module*, its *instantiation-relative* entity is the *instantiated module*. +- If the entity is a parameter of the *underlying module*, its *instantiation-relative* entity is the corresponding argument. +- If the entity is declared inside the *underlying module* or its nested modules, its *instantiation-relative* entity is an *instantiation-nested* entity that is generated by the module instantiation. Parameters of any modules that are nested inside the *underlying module* are considered declared inside the module for this purpose. +- Otherwise, the entity's *instantiation-relative* entity is the initial entity itself. + +When the *instantiation-relative* entity of an entity is an *instantiation-nested* entity, then the initial entity is called the *underlying nested* entity of the *instantiation-nested* entity*, the *instantiated module* is called the *instantiation root* of the *instantiation-nested* entity, and the *underlying module* is called the *underlying root* of the *instantiation-nested* entity. + +The components of an *instantiation-nested* entity are the *instantiation-relative* entities of the components of its *underlying nested* entity. Among other things, this applies to: + +- values in the exported environments of *instantiation-nested* modules, +- relational types of *instantiation-nested* predicates and predicate signatures, +- required signatures of *instantiation-nested* parameters, +- parameters of an *instantiation-nested* *parameterized module*, +- fields and member predicates of *instantiation-nested* dataclasses. + +Given an *instantiated module*, any alias in the program has a corresponding alias called the *instantiation-relative* alias, which targets the *instantiation-relative* entity. + +Applicative instantiation +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Every entity has an *underlying completely uninstantiated* entity that is determined as follows: + +- If the entity is an *instantiated module*, its *underlying completely uninstantiated* entity is the *underlying completely uninstantiated* entity of the *underlying module*. +- If the entity is an *instantiation-nested* entity, its *underlying completely uninstantiated* entity is the *underlying completely uninstantiated* entity of the *underlying nested* entity. +- Otherwise, its *underlying completely uninstantiated* entity is the entity itself. + +An entity is called *completely uninstantiated* entity if it is its own *underlying completely uninstantiated* entity. + +Every *completely uninstantiated* entity has a *relevant set of parameters*, which is the set of all parameters of all the modules that the entity is transitively nested inside. For entities that are not nested inside any modules, the *relevant set of parameters* is empty. + +Note that the *relevant set of parameters* by construction contains only *completely uninstantiated* parameters. + +For a *completely uninstantiated* parameter, the *bottom-up instantiation-resolution* relative to an entity is defined as: + +- If the entity is an *instantiated module* or an *instantiation-nested* entity, the *bottom-up instantiation-resolution* is the *instantiation-relative* entity of the *bottom-up instantiation-resolution* relative to the *underlying module*. +- Otherwise, the *bottom-up instantiation-resolution* is the parameter itself. + +An entity is called *fully instantiated* if none of the *bottom-up instantiation-resolutions* of the parameters in the *relevant set of parameters* of the entity's *underlying completely uninstantiated* entity are parameters. + +Two *instantiated modules* or two *instantiation-nested* entities are considered *equivalent* if they have the same *underlying completely uninstantiated* entity and each parameter in its *relevant set of parameters* has the same *bottom-up instantiation-resolution* relative to either *instantiated module*. + +Module instantiation is applicative, meaning that *equivalent* *instantiated modules* and *equivalent* *instantiation-nested* entities are indistinguishable. + Module references and active modules ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -268,7 +348,7 @@ QL is a typed language. This section specifies the kinds of types available, the Kinds of types ~~~~~~~~~~~~~~ -Types in QL are either *primitive* types, *database* types, *class* types, *character* types or *class domain* types. +Types in QL are either *primitive* types, *database* types, *class* types, *character* types, *class domain* types, type *parameters*, or *instantiation-nested* types. The primitive types are ``boolean``, ``date``, ``float``, ``int``, and ``string``. @@ -289,7 +369,9 @@ With the exception of class domain types and character types (which cannot be re type ::= (moduleExpr "::")? classname | dbasetype | "boolean" | "date" | "float" | "int" | "string" - moduleExpr ::= modulename arguments? | moduleExpr "::" modulename arguments? + moduleExpr ::= moduleId arguments? + + moduleId ::= modulename | moduleExpr "::" modulename A type reference is resolved to a type as follows: @@ -1236,15 +1318,15 @@ The type environment for the arguments is the same as for the call. A valid call with results *resolves* to a set of predicates. The ways a call can resolve are as follows: -- If the call has no receiver and the predicate name is a simple identifier, then the predicate is resolved by looking up its name and arity in the visible member-predicate environment of the enclosing class. +- If the call has no receiver and the predicate reference is a simple identifier, then the call is resolved by looking up the predicate reference and arity in the visible predicate environment of the enclosing class. -- If the call has no receiver and the predicate name is a simple identifier, then the predicate is resolved by looking up its name and arity in the visible predicate environment of the enclosing module. +- If the call has no receiver and the predicate reference is a simple identifier, then the call is resolved by looking up the predicate reference and arity in the visible predicate environment of the enclosing module. -- If the call has no receiver and the predicate name is a selection identifier, then the qualifier is resolved as a module (see "`Module resolution <#module-resolution>`__"). The identifier is then resolved in the exported predicate environment of the qualifier module. +- If the call has no receiver and the predicate reference is a selection identifier, then the qualifier is resolved as a module (see "`Module resolution <#module-resolution>`__") and the call is resolved by looking up the identifier in the exported predicate environment of the qualifier module. -- If the type of the receiver is the same as the enclosing class, the predicate is resolved by looking up its name and arity in the visible predicate environment of the class. +- If the the call has a receiver and the type of the receiver is the same as the enclosing class, the call is resolved by looking up the predicate name and arity in the visible predicate environment of the enclosing class. -- If the type of the receiver is not the same as the enclosing class, the predicate is resolved by looking up its name and arity in the exported predicate environment of the class or domain type. +- If the the call has a receiver and the type of the receiver is not the same as the enclosing class, the call is resolved by looking up the predicate name and arity in the exported predicate environment of the type of the receiver. If all the predicates that the call resolves to are declared on a primitive type, we then restrict to the set of predicates where each argument of the call is a subtype of the corresponding predicate argument type. Then we find all predicates ``p`` from this new set such that there is not another predicate ``p'`` where each argument of ``p'`` is a subtype of the corresponding argument in ``p``. We then say the call resolves to this set instead. @@ -1960,10 +2042,12 @@ Stratification A QL program can be *stratified* to a sequence of *layers*. A layer is a set of predicates and types. -A valid stratification must include each predicate and type in the QL program. It must not include any other predicates or types. +A valid stratification must include each predicate and type in the QL program that is *fully instantiated*. It must not include any other predicates or types. A valid stratification must not include the same predicate in multiple layers. +Each non-abstract predicate has an associated body. For predicates inside *declared modules*, this is the predicate declaration. The body of an *instantiation-nested* predicate is the body of the *underlying nested* predicate where all references and calls have been substituted with the *instantiation-relative* entity or alias. + Formulas, variable declarations and expressions within a predicate body have a *negation polarity* that is positive, negative, or zero. Positive and negative are opposites of each other, while zero is the opposite of itself. The negation polarity of a formula or expression is then determined as follows: - The body of a predicate is positive. diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index 93b826a94dd..0d38f92a8c8 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -20,12 +20,12 @@ Java,"Java 7 to 20 [4]_","javac (OpenJDK and Oracle JDK), Eclipse compiler for Java (ECJ) [5]_",``.java`` - Kotlin [6]_,"Kotlin 1.5.0 to 1.8.20","kotlinc",``.kt`` + Kotlin [6]_,"Kotlin 1.5.0 to 1.9.0","kotlinc",``.kt`` JavaScript,ECMAScript 2022 or lower,Not applicable,"``.js``, ``.jsx``, ``.mjs``, ``.es``, ``.es6``, ``.htm``, ``.html``, ``.xhtm``, ``.xhtml``, ``.vue``, ``.hbs``, ``.ejs``, ``.njk``, ``.json``, ``.yaml``, ``.yml``, ``.raml``, ``.xml`` [7]_" Python [8]_,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11",Not applicable,``.py`` Ruby [9]_,"up to 3.2",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``" Swift [10]_,"Swift 5.4-5.7","Swift compiler","``.swift``" - TypeScript [11]_,"2.6-5.0",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" + TypeScript [11]_,"2.6-5.1",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" .. container:: footnote-group diff --git a/go/Makefile b/go/Makefile index 7e119b36f03..8f28079f008 100644 --- a/go/Makefile +++ b/go/Makefile @@ -14,7 +14,7 @@ CODEQL_PLATFORM = osx64 endif endif -CODEQL_TOOLS = $(addprefix codeql-tools/,autobuild.cmd autobuild.sh pre-finalize.cmd pre-finalize.sh index.cmd index.sh tracing-config.lua) +CODEQL_TOOLS = $(addprefix codeql-tools/,autobuild.cmd autobuild.sh pre-finalize.cmd pre-finalize.sh index.cmd index.sh identify-environment.cmd identify-environment.sh tracing-config.lua) EXTRACTOR_PACK_OUT = build/codeql-extractor-go diff --git a/go/extractor/cli/go-autobuilder/go-autobuilder.go b/go/extractor/cli/go-autobuilder/go-autobuilder.go index 9fcad68d42a..fc56d4b8715 100644 --- a/go/extractor/cli/go-autobuilder/go-autobuilder.go +++ b/go/extractor/cli/go-autobuilder/go-autobuilder.go @@ -44,7 +44,7 @@ Build behavior: to 'false' disables the GOPATH set-up, CODEQL_EXTRACTOR_GO_BUILD_COMMAND (or alternatively LGTM_INDEX_BUILD_COMMAND), can be set to a newline-separated list of commands to run in order to install dependencies, and LGTM_INDEX_IMPORT_PATH can be used to override the package import path, - which is otherwise inferred from the SEMMLE_REPO_URL or GITHUB_REPOSITORY environment variables. + which is otherwise inferred from the SEMMLE_REPO_URL or GITHUB_REPOSITORY environment variables. In resource-constrained environments, the environment variable CODEQL_EXTRACTOR_GO_MAX_GOROUTINES (or its legacy alias SEMMLE_MAX_GOROUTINES) can be used to limit the number of parallel goroutines @@ -910,6 +910,17 @@ func getVersionWhenGoModVersionSupported(v versionInfo) (msg, version string) { // Check the versions of Go found in the environment and in the `go.mod` file, and return a // version to install. If the version is the empty string then no installation is required. +// We never return a version of Go that is outside of the supported range. +// +// +-----------------------+-----------------------+-----------------------+-----------------------------------------------------+------------------------------------------------+ +// | Found in go.mod > | *None* | *Below min supported* | *In supported range* | *Above max supported | +// | Installed \/ | | | | | +// |-----------------------|-----------------------|-----------------------|-----------------------------------------------------|------------------------------------------------| +// | *None* | Install max supported | Install min supported | Install version from go.mod | Install max supported | +// | *Below min supported* | Install max supported | Install min supported | Install version from go.mod | Install max supported | +// | *In supported range* | No action | No action | Install version from go.mod if newer than installed | Install max supported if newer than installed | +// | *Above max supported* | Install max supported | Install min supported | Install version from go.mod | No action | +// +-----------------------+-----------------------+-----------------------+-----------------------------------------------------+------------------------------------------------+ func getVersionToInstall(v versionInfo) (msg, version string) { if !v.goModVersionFound { return getVersionWhenGoModVersionNotFound(v) @@ -931,9 +942,9 @@ func getVersionToInstall(v versionInfo) (msg, version string) { func outputEnvironmentJson(version string) { var content string if version == "" { - content = `{ "include": [] }` + content = `{ "go": {} }` } else { - content = `{ "include": [ { "go": { "version": "` + version + `" } } ] }` + content = `{ "go": { "version": "` + version + `" } }` } _, err := fmt.Fprint(os.Stdout, content) diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index e144655e159..0e0d00161e1 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.5.3 + +No user-facing changes. + +## 0.5.2 + +### Minor Analysis Improvements + +* Fixed data flow through variadic function parameters. The arguments corresponding to a variadic parameter are no longer returned by `CallNode.getArgument(int i)` and `CallNode.getAnArgument()`, and hence aren't `ArgumentNode`s. They now have one result, which is an `ImplicitVarargsSlice` node. For example, a call `f(a, b, c)` to a function `f(T...)` is treated like `f([]T{a, b, c})`. The old behaviour is preserved by `CallNode.getSyntacticArgument(int i)` and `CallNode.getASyntacticArgument()`. `CallExpr.getArgument(int i)` and `CallExpr.getAnArgument()` are unchanged, and will still have three results in the example given. + ## 0.5.1 ### Minor Analysis Improvements diff --git a/go/ql/lib/change-notes/2023-06-14-log-injection-deprecation.md b/go/ql/lib/change-notes/2023-06-14-log-injection-deprecation.md new file mode 100644 index 00000000000..88ec05c17ce --- /dev/null +++ b/go/ql/lib/change-notes/2023-06-14-log-injection-deprecation.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* The `LogInjection::Configuration` taint flow configuration class has been deprecated. Use the `LogInjection::Flow` module instead. \ No newline at end of file diff --git a/go/ql/lib/change-notes/2023-06-20-function-model-path-nodes.md b/go/ql/lib/change-notes/2023-06-20-function-model-path-nodes.md new file mode 100644 index 00000000000..5c616481326 --- /dev/null +++ b/go/ql/lib/change-notes/2023-06-20-function-model-path-nodes.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* When a result of path query flows through a function modeled using `DataFlow::FunctionModel` or `TaintTracking::FunctionModel`, the path now includes nodes corresponding to the input and output to the function. This brings it in line with functions modeled using Models-as-Data. diff --git a/go/ql/lib/change-notes/2023-04-25-data-flow-varargs-parameters.md b/go/ql/lib/change-notes/released/0.5.2.md similarity index 85% rename from go/ql/lib/change-notes/2023-04-25-data-flow-varargs-parameters.md rename to go/ql/lib/change-notes/released/0.5.2.md index 881d570361e..ad1dea14924 100644 --- a/go/ql/lib/change-notes/2023-04-25-data-flow-varargs-parameters.md +++ b/go/ql/lib/change-notes/released/0.5.2.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- -* Fixed data flow through variadic function parameters. The arguments corresponding to a variadic parameter are no longer returned by `CallNode.getArgument(int i)` and `CallNode.getAnArgument()`, and hence aren't `ArgumentNode`s. They now have one result, which is an `ImplicitVarargsSlice` node. For example, a call `f(a, b, c)` to a function `f(T...)` is treated like `f([]T{a, b, c})`. The old behaviour is preserved by `CallNode.getSyntacticArgument(int i)` and `CallNode.getASyntacticArgument()`. `CallExpr.getArgument(int i)` and `CallExpr.getAnArgument()` are unchanged, and will still have three results in the example given. \ No newline at end of file +## 0.5.2 + +### Minor Analysis Improvements + +* Fixed data flow through variadic function parameters. The arguments corresponding to a variadic parameter are no longer returned by `CallNode.getArgument(int i)` and `CallNode.getAnArgument()`, and hence aren't `ArgumentNode`s. They now have one result, which is an `ImplicitVarargsSlice` node. For example, a call `f(a, b, c)` to a function `f(T...)` is treated like `f([]T{a, b, c})`. The old behaviour is preserved by `CallNode.getSyntacticArgument(int i)` and `CallNode.getASyntacticArgument()`. `CallExpr.getArgument(int i)` and `CallExpr.getAnArgument()` are unchanged, and will still have three results in the example given. diff --git a/go/ql/lib/change-notes/released/0.5.3.md b/go/ql/lib/change-notes/released/0.5.3.md new file mode 100644 index 00000000000..e97503053f0 --- /dev/null +++ b/go/ql/lib/change-notes/released/0.5.3.md @@ -0,0 +1,3 @@ +## 0.5.3 + +No user-facing changes. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 0bf7024c337..2164e038a5d 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.5.1 +lastReleaseVersion: 0.5.3 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 346dc087db4..bf8cd0f648e 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,11 +1,12 @@ name: codeql/go-all -version: 0.5.2-dev +version: 0.5.4-dev groups: go dbscheme: go.dbscheme extractor: go library: true upgrades: upgrades dependencies: + codeql/mad: ${workspace} codeql/tutorial: ${workspace} codeql/util: ${workspace} dataExtensions: diff --git a/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll b/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll index 0c6ee1c3134..73873850982 100644 --- a/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll +++ b/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll @@ -54,6 +54,18 @@ * return value. The return values are zero-indexed * - "ReturnValue[n1..n2]": Similar to "ReturnValue[n]" but selects any * return value in the given range. The range is inclusive at both ends. + * + * For summaries, `input` and `output` may be suffixed by any number of the + * following, separated by ".": + * - "Field[pkg.className.fieldname]": Selects the contents of the field `f` + * which satisfies `f.hasQualifiedName(pkg, className, fieldname)`. + * - "SyntheticField[f]": Selects the contents of the synthetic field `f`. + * - "ArrayElement": Selects an element in an array or slice. + * - "Element": Selects an element in a collection. + * - "MapKey": Selects a key in a map. + * - "MapValue": Selects a value in a map. + * - "Dereference": Selects the value referenced by a pointer. + * * 8. The `kind` column is a tag that can be referenced from QL to determine to * which classes the interpreted elements should be added. For example, for * sources "remote" indicates a default remote flow source, and for summaries @@ -68,6 +80,7 @@ private import internal.FlowSummaryImpl::Private::External private import internal.FlowSummaryImplSpecific private import internal.AccessPathSyntax private import FlowSummary +private import codeql.mad.ModelValidation as SharedModelVal /** * A module importing the frameworks that provide external flow data, @@ -188,13 +201,16 @@ module ModelValidation { ) } - private string getInvalidModelKind() { - exists(string kind | summaryModel(_, _, _, _, _, _, _, _, kind, _) | - not kind = ["taint", "value"] and - result = "Invalid kind \"" + kind + "\" in summary model." - ) + private module KindValConfig implements SharedModelVal::KindValidationConfigSig { + predicate summaryKind(string kind) { summaryModel(_, _, _, _, _, _, _, _, kind, _) } + + predicate sinkKind(string kind) { sinkModel(_, _, _, _, _, _, _, kind, _) } + + predicate sourceKind(string kind) { sourceModel(_, _, _, _, _, _, _, kind, _) } } + private module KindVal = SharedModelVal::KindValidation; + private string getInvalidModelSignature() { exists( string pred, string package, string type, string name, string signature, string ext, @@ -231,7 +247,7 @@ module ModelValidation { msg = [ getInvalidModelSignature(), getInvalidModelInput(), getInvalidModelOutput(), - getInvalidModelKind() + KindVal::getInvalidModelKind() ] } } @@ -342,6 +358,8 @@ predicate parseContent(string component, DataFlow::Content content) { component = "MapKey" and content instanceof DataFlow::MapKeyContent or component = "MapValue" and content instanceof DataFlow::MapValueContent + or + component = "Dereference" and content instanceof DataFlow::PointerContent } cached diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl.qll index ddf98ac0f2f..284fff191ae 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl.qll @@ -1135,8 +1135,8 @@ module Impl { DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow ); - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap); + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t); bindingset[typ, contentType] predicate typecheckStore(Typ typ, DataFlowType contentType); @@ -1199,17 +1199,21 @@ module Impl { NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, ApOption argAp, Typ t, Ap ap, ApApprox apa ) { - fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t, ap, apa) and - PrevStage::revFlow(node, state, apa) and - filter(node, state, t, ap) + fwdFlow1(node, state, cc, summaryCtx, argT, argAp, _, t, ap, apa) } - pragma[inline] - additional predicate fwdFlow( + private predicate fwdFlow1( NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap + ApOption argAp, Typ t0, Typ t, Ap ap, ApApprox apa ) { - fwdFlow(node, state, cc, summaryCtx, argT, argAp, t, ap, _) + fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t0, ap, apa) and + PrevStage::revFlow(node, state, apa) and + filter(node, state, t0, ap, t) + } + + pragma[nomagic] + private predicate typeStrengthen(Typ t0, Ap ap, Typ t) { + fwdFlow1(_, _, _, _, _, _, t0, t, ap, _) and t0 != t } pragma[assume_small_delta] @@ -1339,6 +1343,11 @@ module Impl { private predicate fwdFlowConsCand(Typ t2, Ap cons, Content c, Typ t1, Ap tail) { fwdFlowStore(_, t1, tail, c, t2, _, _, _, _, _, _) and cons = apCons(c, t1, tail) + or + exists(Typ t0 | + typeStrengthen(t0, cons, t2) and + fwdFlowConsCand(t0, cons, c, t1, tail) + ) } pragma[nomagic] @@ -1359,7 +1368,7 @@ module Impl { ParamNodeOption summaryCtx, TypOption argT, ApOption argAp ) { exists(ApHeadContent apc | - fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap) and + fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap, _) and apc = getHeadContent(ap) and readStepCand0(node1, apc, c, node2) ) @@ -1520,14 +1529,14 @@ module Impl { NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { revFlow0(node, state, returnCtx, returnAp, ap) and - fwdFlow(node, state, _, _, _, _, _, ap) + fwdFlow(node, state, _, _, _, _, _, ap, _) } pragma[nomagic] private predicate revFlow0( NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { - fwdFlow(node, state, _, _, _, _, _, ap) and + fwdFlow(node, state, _, _, _, _, _, ap, _) and sinkNode(node, state) and ( if hasSinkCallCtx() @@ -1780,13 +1789,13 @@ module Impl { boolean fwd, int nodes, int fields, int conscand, int states, int tuples ) { fwd = true and - nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _)) and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _, _)) and fields = count(Content f0 | fwdConsCand(f0, _, _)) and conscand = count(Content f0, Typ t, Ap ap | fwdConsCand(f0, t, ap)) and - states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _)) and + states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _, _)) and tuples = count(NodeEx n, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap)) + ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap, _)) or fwd = false and nodes = count(NodeEx node | revFlow(node, _, _, _, _)) and @@ -1963,10 +1972,10 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { PrevStage::revFlowState(state) and - exists(t) and + t0 = t and exists(ap) and not stateBarrier(node, state) and ( @@ -2012,7 +2021,8 @@ module Impl { FlowCheckNode() { castNode(this.asNode()) or clearsContentCached(this.asNode(), _) or - expectsContentCached(this.asNode(), _) + expectsContentCached(this.asNode(), _) or + neverSkipInPathGraph(this.asNode()) } } @@ -2197,8 +2207,8 @@ module Impl { import BooleanCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and exists(lcc) @@ -2218,10 +2228,16 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + // We can get away with not using type strengthening here, since we aren't + // going to use the tracked types in the construction of Stage 4 access + // paths. For Stage 4 and onwards, the tracked types must be consistent as + // the cons candidates including types are used to construct subsequent + // access path approximations. + t0 = t and + (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t0) else any()) and ( notExpectsContent(node) or @@ -2241,6 +2257,16 @@ module Impl { import MkStage::Stage } + bindingset[node, t0] + private predicate strengthenType(NodeEx node, DataFlowType t0, DataFlowType t) { + if castingNodeEx(node) + then + exists(DataFlowType nt | nt = node.getDataFlowType() | + if typeStrongerThan(nt, t0) then t = nt else (compatibleTypes(nt, t0) and t = t0) + ) + else t = t0 + } + private module Stage4Param implements MkStage::StageParam { private module PrevStage = Stage3; @@ -2274,8 +2300,8 @@ module Impl { pragma[nomagic] predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2333,11 +2359,11 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and not clear(node, ap) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + strengthenType(node, t0, t) and ( notExpectsContent(node) or @@ -2365,7 +2391,7 @@ module Impl { exists(AccessPathFront apf | Stage4::revFlow(node, state, TReturnCtxMaybeFlowThrough(_), _, apf) and Stage4::fwdFlow(node, state, any(Stage4::CcCall ccc), _, _, TAccessPathFrontSome(argApf), _, - apf) + apf, _) ) } @@ -2579,8 +2605,8 @@ module Impl { import LocalCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, lcc) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2609,9 +2635,9 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { + strengthenType(node, t0, t) and exists(state) and exists(ap) } @@ -2632,7 +2658,7 @@ module Impl { Stage5::parameterMayFlowThrough(p, _) and Stage5::revFlow(n, state, TReturnCtxMaybeFlowThrough(_), _, apa0) and Stage5::fwdFlow(n, state, any(CallContextCall ccc), TParamNodeSome(p.asNode()), _, - TAccessPathApproxSome(apa), _, apa0) + TAccessPathApproxSome(apa), _, apa0, _) ) } @@ -2649,7 +2675,7 @@ module Impl { TSummaryCtxSome(ParamNodeEx p, FlowState state, DataFlowType t, AccessPath ap) { exists(AccessPathApprox apa | ap.getApprox() = apa | Stage5::parameterMayFlowThrough(p, apa) and - Stage5::fwdFlow(p, state, _, _, _, _, t, apa) and + Stage5::fwdFlow(p, state, _, _, Option::some(t), _, _, apa, _) and Stage5::revFlow(p, state, _) ) } @@ -2820,9 +2846,7 @@ module Impl { ap = TAccessPathNil() or // ... or a step from an existing PathNode to another node. - pathStep(_, node, state, cc, sc, t, ap) and - Stage5::revFlow(node, state, ap.getApprox()) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) + pathStep(_, node, state, cc, sc, t, ap) } or TPathNodeSink(NodeEx node, FlowState state) { exists(PathNodeMid sink | @@ -3340,13 +3364,24 @@ module Impl { ap = mid.getAp() } + private predicate pathStep( + PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, + AccessPath ap + ) { + exists(DataFlowType t0 | + pathStep0(mid, node, state, cc, sc, t0, ap) and + Stage5::revFlow(node, state, ap.getApprox()) and + strengthenType(node, t0, t) + ) + } + /** * Holds if data may flow from `mid` to `node`. The last step in or out of * a callable is recorded by `cc`. */ pragma[assume_small_delta] pragma[nomagic] - private predicate pathStep( + private predicate pathStep0( PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, AccessPath ap ) { @@ -3964,7 +3999,7 @@ module Impl { ap = TPartialNil() and exists(explorationLimit()) or - partialPathNodeMk0(node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and distSrc(node.getEnclosingCallable()) <= explorationLimit() } or TPartialPathNodeRev( @@ -3990,11 +4025,20 @@ module Impl { } pragma[nomagic] - private predicate partialPathNodeMk0( - NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, - TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap + private predicate partialPathStep( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { - partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep1(mid, node, state, cc, sc1, sc2, sc3, sc4, _, t, ap) + } + + pragma[nomagic] + private predicate partialPathStep1( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t0, DataFlowType t, + PartialAccessPath ap + ) { + partialPathStep0(mid, node, state, cc, sc1, sc2, sc3, sc4, t0, ap) and not fullBarrier(node) and not stateBarrier(node, state) and not clearsContentEx(node, ap.getHead()) and @@ -4002,9 +4046,14 @@ module Impl { notExpectsContent(node) or expectsContentEx(node, ap.getHead()) ) and - if node.asNode() instanceof CastingNode - then compatibleTypes(node.getDataFlowType(), t) - else any() + strengthenType(node, t0, t) + } + + pragma[nomagic] + private predicate partialPathTypeStrengthen( + DataFlowType t0, PartialAccessPath ap, DataFlowType t + ) { + partialPathStep1(_, _, _, _, _, _, _, _, t0, t, ap) and t0 != t } /** @@ -4183,7 +4232,8 @@ module Impl { } } - private predicate partialPathStep( + pragma[nomagic] + private predicate partialPathStep0( PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { @@ -4309,6 +4359,11 @@ module Impl { DataFlowType t1, PartialAccessPath ap1, Content c, DataFlowType t2, PartialAccessPath ap2 ) { partialPathStoreStep(_, t1, ap1, c, _, t2, ap2) + or + exists(DataFlowType t0 | + partialPathTypeStrengthen(t0, ap2, t2) and + apConsFwd(t1, ap1, c, t0, ap2) + ) } pragma[nomagic] diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll index e78404ca626..84ed6d5f61c 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll @@ -11,12 +11,7 @@ private newtype TNode = MkSsaNode(SsaDefinition ssa) or MkGlobalFunctionNode(Function f) or MkImplicitVarargsSlice(CallExpr c) { c.hasImplicitVarargs() } or - MkSummarizedParameterNode(SummarizedCallable c, int i) { - FlowSummaryImpl::Private::summaryParameterNodeRange(c, i) - } or - MkSummaryInternalNode(SummarizedCallable c, FlowSummaryImpl::Private::SummaryNodeState state) { - FlowSummaryImpl::Private::summaryNodeRange(c, state) - } + MkFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) /** Nodes intended for only use inside the data-flow libraries. */ module Private { @@ -30,9 +25,7 @@ module Private { not exists(n.getEnclosingCallable()) and result.asFileScope() = n.getFile() or - n = MkSummarizedParameterNode(result.asSummarizedCallable(), _) - or - n = MkSummaryInternalNode(result.asSummarizedCallable(), _) + result.asSummarizedCallable() = n.(FlowSummaryNode).getSummarizedCallable() } /** Holds if `p` is a `ParameterNode` of `c` with position `pos`. */ @@ -52,7 +45,7 @@ module Private { ReturnNode() { this.(Public::ResultNode).getIndex() = kind.getIndex() or - this.(SummaryNode).isReturn(kind) + this.(FlowSummaryNode).isReturn(kind) } /** Gets the kind of this returned value. */ @@ -72,33 +65,33 @@ module Private { /** * A data-flow node used to model flow summaries. */ - class SummaryNode extends Node, MkSummaryInternalNode { - private SummarizedCallable c; - private FlowSummaryImpl::Private::SummaryNodeState state; + class FlowSummaryNode extends Node, MkFlowSummaryNode { + FlowSummaryImpl::Private::SummaryNode getSummaryNode() { this = MkFlowSummaryNode(result) } - SummaryNode() { this = MkSummaryInternalNode(c, state) } - - override predicate hasLocationInfo(string fp, int sl, int sc, int el, int ec) { - c.hasLocationInfo(fp, sl, sc, el, ec) + SummarizedCallable getSummarizedCallable() { + result = this.getSummaryNode().getSummarizedCallable() } - override string toString() { result = "[summary] " + state + " in " + c } + override predicate hasLocationInfo(string fp, int sl, int sc, int el, int ec) { + this.getSummarizedCallable().hasLocationInfo(fp, sl, sc, el, ec) + } + + override string toString() { result = this.getSummaryNode().toString() } /** Holds if this summary node is the `i`th argument of `call`. */ predicate isArgumentOf(DataFlowCall call, int i) { - FlowSummaryImpl::Private::summaryArgumentNode(call, this, i) + FlowSummaryImpl::Private::summaryArgumentNode(call, this.getSummaryNode(), i) } /** Holds if this summary node is a return node. */ - predicate isReturn(ReturnKind kind) { FlowSummaryImpl::Private::summaryReturnNode(this, kind) } + predicate isReturn(ReturnKind kind) { + FlowSummaryImpl::Private::summaryReturnNode(this.getSummaryNode(), kind) + } /** Holds if this summary node is an out node for `call`. */ - predicate isOut(DataFlowCall call) { FlowSummaryImpl::Private::summaryOutNode(call, this, _) } - } - - /** Gets the summary node corresponding to the callable `c` and state `state`. */ - SummaryNode getSummaryNode(SummarizedCallable c, FlowSummaryImpl::Private::SummaryNodeState state) { - result = MkSummaryInternalNode(c, state) + predicate isOut(DataFlowCall call) { + FlowSummaryImpl::Private::summaryOutNode(call, this.getSummaryNode(), _) + } } } @@ -661,11 +654,14 @@ module Public { * A summary node which represents a parameter in a function which doesn't * already have a parameter nodes. */ - class SummarizedParameterNode extends ParameterNode, MkSummarizedParameterNode { - SummarizedCallable c; - int i; + class SummarizedParameterNode extends ParameterNode, FlowSummaryNode { + SummarizedParameterNode() { + FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), _) + } - SummarizedParameterNode() { this = MkSummarizedParameterNode(c, i) } + private int getPos() { + FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), result) + } // There are no AST representations of summarized parameter nodes override ControlFlow::Root getRoot() { none() } @@ -673,19 +669,14 @@ module Public { override string getNodeKind() { result = "external parameter node" } override Type getType() { - result = c.getType().getParameterType(i) + result = this.getSummarizedCallable().getType().getParameterType(this.getPos()) or - i = -1 and result = c.asFunction().(Method).getReceiverType() + this.getPos() = -1 and + result = this.getSummarizedCallable().asFunction().(Method).getReceiverType() } override predicate isParameterOf(DataFlowCallable call, int idx) { - c = call.asSummarizedCallable() and i = idx - } - - override string toString() { result = "parameter " + i + " of " + c.toString() } - - override predicate hasLocationInfo(string fp, int sl, int sc, int el, int ec) { - c.hasLocationInfo(fp, sl, sc, el, ec) + this.getSummarizedCallable() = call.asSummarizedCallable() and this.getPos() = idx } } @@ -1237,10 +1228,12 @@ module Public { private import Private private import Public -class SummaryPostUpdateNode extends SummaryNode, PostUpdateNode { - private Node pre; +class SummaryPostUpdateNode extends FlowSummaryNode, PostUpdateNode { + private FlowSummaryNode pre; - SummaryPostUpdateNode() { FlowSummaryImpl::Private::summaryPostUpdateNode(this, pre) } + SummaryPostUpdateNode() { + FlowSummaryImpl::Private::summaryPostUpdateNode(this.getSummaryNode(), pre.getSummaryNode()) + } override Node getPreUpdateNode() { result = pre } } diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll index d45587aa3d4..99d22d5c4e8 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll @@ -129,7 +129,8 @@ predicate jumpStep(Node n1, Node n2) { n2 = recvRead ) or - FlowSummaryImpl::Private::Steps::summaryJumpStep(n1, n2) + FlowSummaryImpl::Private::Steps::summaryJumpStep(n1.(FlowSummaryNode).getSummaryNode(), + n2.(FlowSummaryNode).getSummaryNode()) } /** @@ -153,7 +154,8 @@ predicate storeStep(Node node1, Content c, Node node2) { node1 = node2.(AddressOperationNode).getOperand() and c = any(DataFlow::PointerContent pc | pc.getPointerType() = node2.getType()) or - FlowSummaryImpl::Private::Steps::summaryStoreStep(node1, c, node2) + FlowSummaryImpl::Private::Steps::summaryStoreStep(node1.(FlowSummaryNode).getSummaryNode(), c, + node2.(FlowSummaryNode).getSummaryNode()) or containerStoreStep(node1, node2, c) } @@ -173,7 +175,8 @@ predicate readStep(Node node1, Content c, Node node2) { c = any(DataFlow::FieldContent fc | fc.getField() = read.getField()) ) or - FlowSummaryImpl::Private::Steps::summaryReadStep(node1, c, node2) + FlowSummaryImpl::Private::Steps::summaryReadStep(node1.(FlowSummaryNode).getSummaryNode(), c, + node2.(FlowSummaryNode).getSummaryNode()) or containerReadStep(node1, node2, c) } @@ -197,9 +200,11 @@ predicate clearsContent(Node n, Content c) { * at node `n`. */ predicate expectsContent(Node n, ContentSet c) { - FlowSummaryImpl::Private::Steps::summaryExpectsContent(n, c) + FlowSummaryImpl::Private::Steps::summaryExpectsContent(n.(FlowSummaryNode).getSummaryNode(), c) } +predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { none() } + /** Gets the type of `n` used for type pruning. */ DataFlowType getNodeType(Node n) { result = TTodoDataFlowType() and exists(n) } @@ -223,6 +228,16 @@ class CastNode extends ExprNode { override ConversionExpr expr; } +/** + * Holds if `n` should never be skipped over in the `PathGraph` and in path + * explanations. + */ +predicate neverSkipInPathGraph(Node n) { + exists(DataFlow::FunctionModel fm | fm.getAnInputNode(_) = n or fm.getAnOutputNode(_) = n) + or + exists(TaintTracking::FunctionModel fm | fm.getAnInputNode(_) = n or fm.getAnOutputNode(_) = n) +} + class DataFlowExpr = Expr; private newtype TDataFlowType = @@ -378,7 +393,7 @@ Node getArgument(CallNode c, int i) { } /** Holds if `n` should be hidden from path explanations. */ -predicate nodeIsHidden(Node n) { n instanceof SummaryNode or n instanceof SummarizedParameterNode } +predicate nodeIsHidden(Node n) { n instanceof FlowSummaryNode } class LambdaCallKind = Unit; diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll index 40ec012cc27..ba0728ff02e 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowUtil.qll @@ -124,7 +124,8 @@ predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo) { // step through function model any(FunctionModel m).flowStep(nodeFrom, nodeTo) or - FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom, nodeTo, true) + FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(), + nodeTo.(FlowSummaryNode).getSummaryNode(), true) } /** diff --git a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll index 034c6101de3..9ea7c44c50c 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll @@ -166,28 +166,26 @@ module Public { SummaryComponentStack return(ReturnKind rk) { result = singleton(SummaryComponent::return(rk)) } } - private predicate noComponentSpecific(SummaryComponent sc) { - not exists(getComponentSpecific(sc)) - } - /** Gets a textual representation of this component used for flow summaries. */ private string getComponent(SummaryComponent sc) { result = getComponentSpecific(sc) or - noComponentSpecific(sc) and - ( - exists(ArgumentPosition pos | - sc = TParameterSummaryComponent(pos) and - result = "Parameter[" + getArgumentPosition(pos) + "]" - ) - or - exists(ParameterPosition pos | - sc = TArgumentSummaryComponent(pos) and - result = "Argument[" + getParameterPosition(pos) + "]" - ) - or - sc = TReturnSummaryComponent(getReturnValueKind()) and result = "ReturnValue" + exists(ArgumentPosition pos | + sc = TParameterSummaryComponent(pos) and + result = "Parameter[" + getArgumentPosition(pos) + "]" ) + or + exists(ParameterPosition pos | + sc = TArgumentSummaryComponent(pos) and + result = "Argument[" + getParameterPosition(pos) + "]" + ) + or + exists(string synthetic | + sc = TSyntheticGlobalSummaryComponent(synthetic) and + result = "SyntheticGlobal[" + synthetic + "]" + ) + or + sc = TReturnSummaryComponent(getReturnValueKind()) and result = "ReturnValue" } /** Gets a textual representation of this stack used for flow summaries. */ @@ -512,6 +510,9 @@ module Private { or // Add the post-update node corresponding to the requested argument node outputState(c, s) and isCallbackParameter(s) + or + // Add the parameter node for parameter side-effects + outputState(c, s) and s = SummaryComponentStack::argument(_) } private newtype TSummaryNodeState = @@ -537,7 +538,7 @@ module Private { * this state represents that the components in `s` _remain to be written_ to * the output. */ - class SummaryNodeState extends TSummaryNodeState { + private class SummaryNodeState extends TSummaryNodeState { /** Holds if this state is a valid input state for `c`. */ pragma[nomagic] predicate isInputState(SummarizedCallable c, SummaryComponentStack s) { @@ -566,6 +567,42 @@ module Private { } } + private newtype TSummaryNode = + TSummaryInternalNode(SummarizedCallable c, SummaryNodeState state) { + summaryNodeRange(c, state) + } or + TSummaryParameterNode(SummarizedCallable c, ParameterPosition pos) { + summaryParameterNodeRange(c, pos) + } + + abstract class SummaryNode extends TSummaryNode { + abstract string toString(); + + abstract SummarizedCallable getSummarizedCallable(); + } + + private class SummaryInternalNode extends SummaryNode, TSummaryInternalNode { + private SummarizedCallable c; + private SummaryNodeState state; + + SummaryInternalNode() { this = TSummaryInternalNode(c, state) } + + override string toString() { result = "[summary] " + state + " in " + c } + + override SummarizedCallable getSummarizedCallable() { result = c } + } + + private class SummaryParamNode extends SummaryNode, TSummaryParameterNode { + private SummarizedCallable c; + private ParameterPosition pos; + + SummaryParamNode() { this = TSummaryParameterNode(c, pos) } + + override string toString() { result = "[summary param] " + pos + " in " + c } + + override SummarizedCallable getSummarizedCallable() { result = c } + } + /** * Holds if `state` represents having read from a parameter at position * `pos` in `c`. In this case we are not synthesizing a data-flow node, @@ -581,7 +618,7 @@ module Private { * Holds if a synthesized summary node is needed for the state `state` in summarized * callable `c`. */ - predicate summaryNodeRange(SummarizedCallable c, SummaryNodeState state) { + private predicate summaryNodeRange(SummarizedCallable c, SummaryNodeState state) { state.isInputState(c, _) and not parameterReadState(c, state, _) or @@ -589,22 +626,22 @@ module Private { } pragma[noinline] - private Node summaryNodeInputState(SummarizedCallable c, SummaryComponentStack s) { + private SummaryNode summaryNodeInputState(SummarizedCallable c, SummaryComponentStack s) { exists(SummaryNodeState state | state.isInputState(c, s) | - result = summaryNode(c, state) + result = TSummaryInternalNode(c, state) or exists(ParameterPosition pos | parameterReadState(c, state, pos) and - result.(ParamNode).isParameterOf(inject(c), pos) + result = TSummaryParameterNode(c, pos) ) ) } pragma[noinline] - private Node summaryNodeOutputState(SummarizedCallable c, SummaryComponentStack s) { + private SummaryNode summaryNodeOutputState(SummarizedCallable c, SummaryComponentStack s) { exists(SummaryNodeState state | state.isOutputState(c, s) and - result = summaryNode(c, state) + result = TSummaryInternalNode(c, state) ) } @@ -612,12 +649,14 @@ module Private { * Holds if a write targets `post`, which is a post-update node for a * parameter at position `pos` in `c`. */ - private predicate isParameterPostUpdate(Node post, SummarizedCallable c, ParameterPosition pos) { + private predicate isParameterPostUpdate( + SummaryNode post, SummarizedCallable c, ParameterPosition pos + ) { post = summaryNodeOutputState(c, SummaryComponentStack::argument(pos)) } /** Holds if a parameter node at position `pos` is required for `c`. */ - predicate summaryParameterNodeRange(SummarizedCallable c, ParameterPosition pos) { + private predicate summaryParameterNodeRange(SummarizedCallable c, ParameterPosition pos) { parameterReadState(c, _, pos) or // Same as `isParameterPostUpdate(_, c, pos)`, but can be used in a negative context @@ -625,7 +664,7 @@ module Private { } private predicate callbackOutput( - SummarizedCallable c, SummaryComponentStack s, Node receiver, ReturnKind rk + SummarizedCallable c, SummaryComponentStack s, SummaryNode receiver, ReturnKind rk ) { any(SummaryNodeState state).isInputState(c, s) and s.head() = TReturnSummaryComponent(rk) and @@ -633,7 +672,7 @@ module Private { } private predicate callbackInput( - SummarizedCallable c, SummaryComponentStack s, Node receiver, ArgumentPosition pos + SummarizedCallable c, SummaryComponentStack s, SummaryNode receiver, ArgumentPosition pos ) { any(SummaryNodeState state).isOutputState(c, s) and s.head() = TParameterSummaryComponent(pos) and @@ -641,7 +680,7 @@ module Private { } /** Holds if a call targeting `receiver` should be synthesized inside `c`. */ - predicate summaryCallbackRange(SummarizedCallable c, Node receiver) { + predicate summaryCallbackRange(SummarizedCallable c, SummaryNode receiver) { callbackOutput(c, _, receiver, _) or callbackInput(c, _, receiver, _) @@ -654,10 +693,10 @@ module Private { * `getContentType()`, `getReturnType()`, `getCallbackParameterType()`, and * `getCallbackReturnType()`. */ - DataFlowType summaryNodeType(Node n) { - exists(Node pre | + DataFlowType summaryNodeType(SummaryNode n) { + exists(SummaryNode pre | summaryPostUpdateNode(n, pre) and - result = getNodeType(pre) + result = summaryNodeType(pre) ) or exists(SummarizedCallable c, SummaryComponentStack s, SummaryComponent head | head = s.head() | @@ -669,12 +708,12 @@ module Private { ) or head = TWithoutContentSummaryComponent(_) and - result = getNodeType(summaryNodeInputState(c, s.tail())) + result = summaryNodeType(summaryNodeInputState(c, s.tail())) or exists(ReturnKind rk | head = TReturnSummaryComponent(rk) and result = - getCallbackReturnType(getNodeType(summaryNodeInputState(pragma[only_bind_out](c), + getCallbackReturnType(summaryNodeType(summaryNodeInputState(pragma[only_bind_out](c), s.tail())), rk) ) or @@ -682,6 +721,11 @@ module Private { head = TSyntheticGlobalSummaryComponent(sg) and result = getSyntheticGlobalType(sg) ) + or + exists(ParameterPosition pos | + head = TArgumentSummaryComponent(pos) and + result = getParameterType(c, pos) + ) ) or n = summaryNodeOutputState(c, s) and @@ -698,7 +742,7 @@ module Private { or exists(ArgumentPosition pos | head = TParameterSummaryComponent(pos) | result = - getCallbackParameterType(getNodeType(summaryNodeInputState(pragma[only_bind_out](c), + getCallbackParameterType(summaryNodeType(summaryNodeInputState(pragma[only_bind_out](c), s.tail())), pos) ) or @@ -710,9 +754,14 @@ module Private { ) } + /** Holds if summary node `p` is a parameter with position `pos`. */ + predicate summaryParameterNode(SummaryNode p, ParameterPosition pos) { + p = TSummaryParameterNode(_, pos) + } + /** Holds if summary node `out` contains output of kind `rk` from call `c`. */ - predicate summaryOutNode(DataFlowCall c, Node out, ReturnKind rk) { - exists(SummarizedCallable callable, SummaryComponentStack s, Node receiver | + predicate summaryOutNode(DataFlowCall c, SummaryNode out, ReturnKind rk) { + exists(SummarizedCallable callable, SummaryComponentStack s, SummaryNode receiver | callbackOutput(callable, s, receiver, rk) and out = summaryNodeInputState(callable, s) and c = summaryDataFlowCall(receiver) @@ -720,8 +769,8 @@ module Private { } /** Holds if summary node `arg` is at position `pos` in the call `c`. */ - predicate summaryArgumentNode(DataFlowCall c, Node arg, ArgumentPosition pos) { - exists(SummarizedCallable callable, SummaryComponentStack s, Node receiver | + predicate summaryArgumentNode(DataFlowCall c, SummaryNode arg, ArgumentPosition pos) { + exists(SummarizedCallable callable, SummaryComponentStack s, SummaryNode receiver | callbackInput(callable, s, receiver, pos) and arg = summaryNodeOutputState(callable, s) and c = summaryDataFlowCall(receiver) @@ -729,10 +778,10 @@ module Private { } /** Holds if summary node `post` is a post-update node with pre-update node `pre`. */ - predicate summaryPostUpdateNode(Node post, Node pre) { + predicate summaryPostUpdateNode(SummaryNode post, SummaryNode pre) { exists(SummarizedCallable c, ParameterPosition pos | isParameterPostUpdate(post, c, pos) and - pre.(ParamNode).isParameterOf(inject(c), pos) + pre = TSummaryParameterNode(c, pos) ) or exists(SummarizedCallable callable, SummaryComponentStack s | @@ -743,7 +792,7 @@ module Private { } /** Holds if summary node `ret` is a return node of kind `rk`. */ - predicate summaryReturnNode(Node ret, ReturnKind rk) { + predicate summaryReturnNode(SummaryNode ret, ReturnKind rk) { exists(SummaryComponentStack s | ret = summaryNodeOutputState(_, s) and s = TSingletonSummaryComponentStack(TReturnSummaryComponent(rk)) @@ -755,7 +804,9 @@ module Private { * node, and back out to `p`. */ predicate summaryAllowParameterReturnInSelf(ParamNode p) { - exists(SummarizedCallable c, ParameterPosition ppos | p.isParameterOf(inject(c), ppos) | + exists(SummarizedCallable c, ParameterPosition ppos | + p.isParameterOf(inject(c), pragma[only_bind_into](ppos)) + | exists(SummaryComponentStack inputContents, SummaryComponentStack outputContents | summary(c, inputContents, outputContents, _) and inputContents.bottom() = pragma[only_bind_into](TArgumentSummaryComponent(ppos)) and @@ -770,7 +821,7 @@ module Private { * Holds if there is a local step from `pred` to `succ`, which is synthesized * from a flow summary. */ - predicate summaryLocalStep(Node pred, Node succ, boolean preservesValue) { + predicate summaryLocalStep(SummaryNode pred, SummaryNode succ, boolean preservesValue) { exists( SummarizedCallable c, SummaryComponentStack inputContents, SummaryComponentStack outputContents @@ -796,7 +847,7 @@ module Private { * Holds if there is a read step of content `c` from `pred` to `succ`, which * is synthesized from a flow summary. */ - predicate summaryReadStep(Node pred, ContentSet c, Node succ) { + predicate summaryReadStep(SummaryNode pred, ContentSet c, SummaryNode succ) { exists(SummarizedCallable sc, SummaryComponentStack s | pred = summaryNodeInputState(sc, s.tail()) and succ = summaryNodeInputState(sc, s) and @@ -808,7 +859,7 @@ module Private { * Holds if there is a store step of content `c` from `pred` to `succ`, which * is synthesized from a flow summary. */ - predicate summaryStoreStep(Node pred, ContentSet c, Node succ) { + predicate summaryStoreStep(SummaryNode pred, ContentSet c, SummaryNode succ) { exists(SummarizedCallable sc, SummaryComponentStack s | pred = summaryNodeOutputState(sc, s) and succ = summaryNodeOutputState(sc, s.tail()) and @@ -820,7 +871,7 @@ module Private { * Holds if there is a jump step from `pred` to `succ`, which is synthesized * from a flow summary. */ - predicate summaryJumpStep(Node pred, Node succ) { + predicate summaryJumpStep(SummaryNode pred, SummaryNode succ) { exists(SummaryComponentStack s | s = SummaryComponentStack::singleton(SummaryComponent::syntheticGlobal(_)) and pred = summaryNodeOutputState(_, s) and @@ -847,9 +898,9 @@ module Private { * `a` on line 2 to the post-update node for `a` on that line (via an intermediate * node where field `b` is cleared). */ - predicate summaryClearsContent(Node n, ContentSet c) { + predicate summaryClearsContent(SummaryNode n, ContentSet c) { exists(SummarizedCallable sc, SummaryNodeState state, SummaryComponentStack stack | - n = summaryNode(sc, state) and + n = TSummaryInternalNode(sc, state) and state.isInputState(sc, stack) and stack.head() = SummaryComponent::withoutContent(c) ) @@ -859,9 +910,9 @@ module Private { * Holds if the value that is being tracked is expected to be stored inside * content `c` at `n`. */ - predicate summaryExpectsContent(Node n, ContentSet c) { + predicate summaryExpectsContent(SummaryNode n, ContentSet c) { exists(SummarizedCallable sc, SummaryNodeState state, SummaryComponentStack stack | - n = summaryNode(sc, state) and + n = TSummaryInternalNode(sc, state) and state.isInputState(sc, stack) and stack.head() = SummaryComponent::withContent(c) ) @@ -869,17 +920,17 @@ module Private { pragma[noinline] private predicate viableParam( - DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos, ParamNode p + DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos, SummaryParamNode p ) { exists(DataFlowCallable c | c = inject(sc) and - p.isParameterOf(c, ppos) and + p = TSummaryParameterNode(sc, ppos) and c = viableCallable(call) ) } pragma[nomagic] - private ParamNode summaryArgParam0(DataFlowCall call, ArgNode arg, SummarizedCallable sc) { + private SummaryParamNode summaryArgParam(DataFlowCall call, ArgNode arg, SummarizedCallable sc) { exists(ParameterPosition ppos | argumentPositionMatch(call, arg, ppos) and viableParam(call, sc, ppos, result) @@ -891,12 +942,12 @@ module Private { * local steps. `clearsOrExpects` records whether any node on the path from `p` to * `n` either clears or expects contents. */ - private predicate paramReachesLocal(ParamNode p, Node n, boolean clearsOrExpects) { + private predicate paramReachesLocal(SummaryParamNode p, SummaryNode n, boolean clearsOrExpects) { viableParam(_, _, _, p) and n = p and clearsOrExpects = false or - exists(Node mid, boolean clearsOrExpectsMid | + exists(SummaryNode mid, boolean clearsOrExpectsMid | paramReachesLocal(p, mid, clearsOrExpectsMid) and summaryLocalStep(mid, n, true) and if @@ -916,21 +967,33 @@ module Private { */ pragma[nomagic] predicate prohibitsUseUseFlow(ArgNode arg, SummarizedCallable sc) { - exists(ParamNode p, ParameterPosition ppos, Node ret | + exists(SummaryParamNode p, ParameterPosition ppos, SummaryNode ret | paramReachesLocal(p, ret, true) and - p = summaryArgParam0(_, arg, sc) and - p.isParameterOf(_, pragma[only_bind_into](ppos)) and + p = summaryArgParam(_, arg, sc) and + p = TSummaryParameterNode(_, pragma[only_bind_into](ppos)) and isParameterPostUpdate(ret, _, pragma[only_bind_into](ppos)) ) } + pragma[nomagic] + private predicate summaryReturnNodeExt(SummaryNode ret, ReturnKindExt rk) { + summaryReturnNode(ret, rk.(ValueReturnKind).getKind()) + or + exists(SummaryParamNode p, SummaryNode pre, ParameterPosition pos | + paramReachesLocal(p, pre, _) and + summaryPostUpdateNode(ret, pre) and + p = TSummaryParameterNode(_, pos) and + rk.(ParamUpdateReturnKind).getPosition() = pos + ) + } + bindingset[ret] - private ParamNode summaryArgParam( - ArgNode arg, ReturnNodeExt ret, OutNodeExt out, SummarizedCallable sc + private SummaryParamNode summaryArgParamRetOut( + ArgNode arg, SummaryNode ret, OutNodeExt out, SummarizedCallable sc ) { exists(DataFlowCall call, ReturnKindExt rk | - result = summaryArgParam0(call, arg, sc) and - ret.getKind() = pragma[only_bind_into](rk) and + result = summaryArgParam(call, arg, sc) and + summaryReturnNodeExt(ret, pragma[only_bind_into](rk)) and out = pragma[only_bind_into](rk).getAnOutNode(call) ) } @@ -943,9 +1006,9 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summaryThroughStepValue(ArgNode arg, Node out, SummarizedCallable sc) { - exists(ReturnKind rk, ReturnNode ret, DataFlowCall call | - summaryLocalStep(summaryArgParam0(call, arg, sc), ret, true) and - ret.getKind() = pragma[only_bind_into](rk) and + exists(ReturnKind rk, SummaryNode ret, DataFlowCall call | + summaryLocalStep(summaryArgParam(call, arg, sc), ret, true) and + summaryReturnNode(ret, pragma[only_bind_into](rk)) and out = getAnOutNode(call, pragma[only_bind_into](rk)) ) } @@ -958,7 +1021,9 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summaryThroughStepTaint(ArgNode arg, Node out, SummarizedCallable sc) { - exists(ReturnNodeExt ret | summaryLocalStep(summaryArgParam(arg, ret, out, sc), ret, false)) + exists(SummaryNode ret | + summaryLocalStep(summaryArgParamRetOut(arg, ret, out, sc), ret, false) + ) } /** @@ -969,8 +1034,8 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summaryGetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { - exists(Node mid, ReturnNodeExt ret | - summaryReadStep(summaryArgParam(arg, ret, out, sc), c, mid) and + exists(SummaryNode mid, SummaryNode ret | + summaryReadStep(summaryArgParamRetOut(arg, ret, out, sc), c, mid) and summaryLocalStep(mid, ret, _) ) } @@ -983,8 +1048,8 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summarySetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { - exists(Node mid, ReturnNodeExt ret | - summaryLocalStep(summaryArgParam(arg, ret, out, sc), mid, _) and + exists(SummaryNode mid, SummaryNode ret | + summaryLocalStep(summaryArgParamRetOut(arg, ret, out, sc), mid, _) and summaryStoreStep(mid, c, ret) ) } @@ -1351,11 +1416,11 @@ module Private { } private newtype TNodeOrCall = - MkNode(Node n) { + MkNode(SummaryNode n) { exists(RelevantSummarizedCallable c | - n = summaryNode(c, _) + n = TSummaryInternalNode(c, _) or - n.(ParamNode).isParameterOf(inject(c), _) + n = TSummaryParameterNode(c, _) ) } or MkCall(DataFlowCall call) { @@ -1364,7 +1429,7 @@ module Private { } private class NodeOrCall extends TNodeOrCall { - Node asNode() { this = MkNode(result) } + SummaryNode asNode() { this = MkNode(result) } DataFlowCall asCall() { this = MkCall(result) } @@ -1384,9 +1449,11 @@ module Private { predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { - this.asNode().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - or - this.asCall().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + filepath = "" and + startline = 0 and + startcolumn = 0 and + endline = 0 and + endcolumn = 0 } } diff --git a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImplSpecific.qll b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImplSpecific.qll index acaa34f943e..609790659f8 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImplSpecific.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImplSpecific.qll @@ -17,7 +17,7 @@ private module FlowSummaries { class SummarizedCallableBase = Callable; -DataFlowCallable inject(SummarizedCallable c) { result.asSummarizedCallable() = c } +DataFlowCallable inject(SummarizedCallable c) { result.asSummarizedCallable() = c or none() } /** Gets the parameter position of the instance parameter. */ ArgumentPosition callbackSelfParameterPosition() { result = -1 } @@ -28,10 +28,8 @@ string getParameterPosition(ParameterPosition pos) { result = pos.toString() } /** Gets the textual representation of an argument position in the format used for flow summaries. */ string getArgumentPosition(ArgumentPosition pos) { result = pos.toString() } -Node summaryNode(SummarizedCallable c, SummaryNodeState state) { result = getSummaryNode(c, state) } - /** Gets the synthesized data-flow call for `receiver`. */ -DataFlowCall summaryDataFlowCall(Node receiver) { +DataFlowCall summaryDataFlowCall(SummaryNode receiver) { // We do not currently have support for callback-based library models. none() } @@ -39,6 +37,9 @@ DataFlowCall summaryDataFlowCall(Node receiver) { /** Gets the type of content `c`. */ DataFlowType getContentType(Content c) { result = c.getType() } +/** Gets the type of the parameter at the given position. */ +DataFlowType getParameterType(SummarizedCallable c, ParameterPosition pos) { any() } + /** Gets the return type of kind `rk` for callable `c`. */ DataFlowType getReturnType(SummarizedCallable c, ReturnKind rk) { any() } @@ -105,16 +106,18 @@ private string getContentSpecific(Content c) { c instanceof MapKeyContent and result = "MapKey" or c instanceof MapValueContent and result = "MapValue" + or + c instanceof PointerContent and result = "Dereference" } /** Gets the textual representation of the content in the format used for flow summaries. */ string getComponentSpecific(SummaryComponent sc) { exists(Content c | sc = TContentSummaryComponent(c) and result = getContentSpecific(c)) or - exists(ReturnKind rk, int n | n = rk.getIndex() | + exists(ReturnKind rk | sc = TReturnSummaryComponent(rk) and - result = "ReturnValue[" + n + "]" and - n != 0 + not rk = getReturnValueKind() and + result = "ReturnValue[" + rk.getIndex() + "]" ) } diff --git a/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll b/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll index 38e03f62b44..21d3f482f6c 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingUtil.qll @@ -5,6 +5,7 @@ private import go private import FlowSummaryImpl as FlowSummaryImpl private import codeql.util.Unit +private import DataFlowPrivate as DataFlowPrivate /** * Holds if taint can flow from `src` to `sink` in zero or more @@ -95,7 +96,8 @@ predicate localAdditionalTaintStep(DataFlow::Node pred, DataFlow::Node succ) { sliceStep(pred, succ) or any(FunctionModel fm).taintStep(pred, succ) or any(AdditionalTaintStep a).step(pred, succ) or - FlowSummaryImpl::Private::Steps::summaryLocalStep(pred, succ, false) + FlowSummaryImpl::Private::Steps::summaryLocalStep(pred.(DataFlowPrivate::FlowSummaryNode) + .getSummaryNode(), succ.(DataFlowPrivate::FlowSummaryNode).getSummaryNode(), false) } /** diff --git a/go/ql/lib/semmle/go/security/LogInjection.qll b/go/ql/lib/semmle/go/security/LogInjection.qll index 12f64c87e4a..70e0947c53b 100644 --- a/go/ql/lib/semmle/go/security/LogInjection.qll +++ b/go/ql/lib/semmle/go/security/LogInjection.qll @@ -17,7 +17,7 @@ module LogInjection { /** * A taint-tracking configuration for reasoning about log injection vulnerabilities. */ - class Configuration extends TaintTracking::Configuration { + deprecated class Configuration extends TaintTracking::Configuration { Configuration() { this = "LogInjection" } override predicate isSource(DataFlow::Node source) { source instanceof Source } @@ -30,4 +30,17 @@ module LogInjection { guard instanceof SanitizerGuard } } + + /** + * A taint-tracking configuration for reasoning about log injection vulnerabilities. + */ + module Config implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof Source } + + predicate isSink(DataFlow::Node sink) { sink instanceof Sink } + + predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof Sanitizer } + } + + module Flow = TaintTracking::Global; } diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 81ce4f00d02..61712c5e790 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,11 @@ +## 0.5.3 + +No user-facing changes. + +## 0.5.2 + +No user-facing changes. + ## 0.5.1 No user-facing changes. diff --git a/go/ql/src/RedundantCode/DeadStoreOfField.ql b/go/ql/src/RedundantCode/DeadStoreOfField.ql index 2060ac1f734..edc1d62cb00 100644 --- a/go/ql/src/RedundantCode/DeadStoreOfField.ql +++ b/go/ql/src/RedundantCode/DeadStoreOfField.ql @@ -36,7 +36,10 @@ predicate escapes(DataFlow::Node nd) { exists(SendStmt s | nd.asExpr() = s.getValue()) or // if `nd` is passed to a function, then it escapes - nd instanceof DataFlow::ArgumentNode + nd = any(DataFlow::CallNode c).getASyntacticArgument() + or + // if `nd` is the receiver of a function, then it escapes + nd = any(DataFlow::MethodCallNode c).getReceiver() or // if `nd` has its address taken, then it escapes exists(AddressExpr ae | nd.asExpr() = ae.getOperand()) diff --git a/go/ql/src/Security/CWE-022/ZipSlip.qhelp b/go/ql/src/Security/CWE-022/ZipSlip.qhelp index 1322dc18c13..ecea2eaeec9 100644 --- a/go/ql/src/Security/CWE-022/ZipSlip.qhelp +++ b/go/ql/src/Security/CWE-022/ZipSlip.qhelp @@ -5,9 +5,9 @@

    -Extracting files from a malicious zip archive without validating that the destination file path -is within the destination directory can cause files outside the destination directory to be -overwritten, due to the possible presence of directory traversal elements (..) in +Extracting files from a malicious zip file, or similar type of archive, +is at risk of directory traversal attacks if filenames from the archive are +not properly validated. archive paths.

    @@ -15,8 +15,8 @@ archive paths. Zip archives contain archive entries representing each file in the archive. These entries include a file path for the entry, but these file paths are not restricted and may contain unexpected special elements such as the directory traversal element (..). If these -file paths are used to determine which output file the contents of an archive item should be written to, then -the file may be written to an unexpected location. This can result in sensitive information being +file paths are used to create a filesystem path, then a file operation may happen in an +unexpected location. This can result in sensitive information being revealed or deleted, or an attacker being able to influence behavior by modifying unexpected files.

    diff --git a/go/ql/src/Security/CWE-022/ZipSlip.ql b/go/ql/src/Security/CWE-022/ZipSlip.ql index ceec7dc57e3..5cfb3998f4d 100644 --- a/go/ql/src/Security/CWE-022/ZipSlip.ql +++ b/go/ql/src/Security/CWE-022/ZipSlip.ql @@ -1,8 +1,8 @@ /** - * @name Arbitrary file write during zip extraction ("zip slip") - * @description Extracting files from a malicious zip archive without validating that the - * destination file path is within the destination directory can cause files outside - * the destination directory to be overwritten. + * @name Arbitrary file access during archive extraction ("Zip Slip") + * @description Extracting files from a malicious ZIP file, or similar type of archive, without + * validating that the destination file path is within the destination directory + * can allow an attacker to unexpectedly gain access to resources. * @kind path-problem * @id go/zipslip * @problem.severity error diff --git a/go/ql/src/Security/CWE-117/LogInjection.ql b/go/ql/src/Security/CWE-117/LogInjection.ql index 39952dbbfa1..5b6586c8e4e 100644 --- a/go/ql/src/Security/CWE-117/LogInjection.ql +++ b/go/ql/src/Security/CWE-117/LogInjection.ql @@ -13,9 +13,9 @@ import go import semmle.go.security.LogInjection -import DataFlow::PathGraph +import LogInjection::Flow::PathGraph -from LogInjection::Configuration c, DataFlow::PathNode source, DataFlow::PathNode sink -where c.hasFlowPath(source, sink) +from LogInjection::Flow::PathNode source, LogInjection::Flow::PathNode sink +where LogInjection::Flow::flowPath(source, sink) select sink.getNode(), source, sink, "This log entry depends on a $@.", source.getNode(), "user-provided value" diff --git a/go/ql/src/change-notes/2023-06-16-zipslip-rename.md b/go/ql/src/change-notes/2023-06-16-zipslip-rename.md new file mode 100644 index 00000000000..72913f37c06 --- /dev/null +++ b/go/ql/src/change-notes/2023-06-16-zipslip-rename.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* The query "Arbitrary file write during zip extraction ("zip slip")" (`go/zipslip`) has been renamed to "Arbitrary file access during archive extraction ("Zip Slip")." diff --git a/go/ql/src/change-notes/released/0.5.2.md b/go/ql/src/change-notes/released/0.5.2.md new file mode 100644 index 00000000000..e94d1f4ad5b --- /dev/null +++ b/go/ql/src/change-notes/released/0.5.2.md @@ -0,0 +1,3 @@ +## 0.5.2 + +No user-facing changes. diff --git a/go/ql/src/change-notes/released/0.5.3.md b/go/ql/src/change-notes/released/0.5.3.md new file mode 100644 index 00000000000..e97503053f0 --- /dev/null +++ b/go/ql/src/change-notes/released/0.5.3.md @@ -0,0 +1,3 @@ +## 0.5.3 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 0bf7024c337..2164e038a5d 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.5.1 +lastReleaseVersion: 0.5.3 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 64be9928c63..ad8b0d5db16 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.5.2-dev +version: 0.5.4-dev groups: - go - queries diff --git a/go/ql/test/TestUtilities/InlineFlowTest.qll b/go/ql/test/TestUtilities/InlineFlowTest.qll index f080de86e16..4f3cfc7599a 100644 --- a/go/ql/test/TestUtilities/InlineFlowTest.qll +++ b/go/ql/test/TestUtilities/InlineFlowTest.qll @@ -3,37 +3,35 @@ * * Example for a test.ql: * ```ql - * import java + * import go * import TestUtilities.InlineFlowTest + * import DefaultFlowTest + * import PathGraph + * + * from PathNode source, PathNode sink + * where flowPath(source, sink) + * select sink, source, sink, "$@", source, source.toString() * ``` * - * To declare expecations, you can use the $hasTaintFlow or $hasValueFlow comments within the test source files. - * Example of the corresponding test file, e.g. Test.java + * To declare expectations, you can use the $hasTaintFlow or $hasValueFlow comments within the test source files. + * Example of the corresponding test file, e.g. Test.go * ```go - * public class Test { - * - * Object source() { return null; } - * String taint() { return null; } - * void sink(Object o) { } - * - * public void test() { - * Object s = source(); - * sink(s); //$hasValueFlow - * String t = "foo" + taint(); - * sink(t); //$hasTaintFlow - * } + * func source() string { return ""; } + * func taint() string { return ""; } + * func sink(s string) { } * + * func test() { + * s := source() + * sink(s) // $ hasValueFlow="s" + * t := "foo" + taint() + * sink(t) // $ hasTaintFlow="t" * } * ``` * - * If you're not interested in a specific flow type, you can disable either value or taint flow expectations as follows: - * ```ql - * class HasFlowTest extends InlineFlowTest { - * override DataFlow::Configuration getTaintFlowConfig() { none() } - * - * override DataFlow::Configuration getValueFlowConfig() { none() } - * } - * ``` + * If you are only interested in value flow, then instead of importing `DefaultFlowTest`, you can import + * `ValueFlowTest`. Similarly, if you are only interested in taint flow, then instead of + * importing `DefaultFlowTest`, you can import `TaintFlowTest`. In both cases + * `DefaultFlowConfig` can be replaced by another implementation of `DataFlow::ConfigSig`. * * If you need more fine-grained tuning, consider implementing a test using `InlineExpectationsTest`. */ @@ -47,57 +45,68 @@ private predicate defaultSource(DataFlow::Node source) { ) } -class DefaultValueFlowConf extends DataFlow::Configuration { - DefaultValueFlowConf() { this = "qltest:defaultValueFlowConf" } - - override predicate isSource(DataFlow::Node source) { defaultSource(source) } - - override predicate isSink(DataFlow::Node sink) { - exists(Function fn | fn.hasQualifiedName(_, "sink") | sink = fn.getACall().getAnArgument()) - } - - override int fieldFlowBranchLimit() { result = 1000 } +private predicate defaultSink(DataFlow::Node sink) { + exists(Function fn | fn.hasQualifiedName(_, "sink") | sink = fn.getACall().getAnArgument()) } -class DefaultTaintFlowConf extends TaintTracking::Configuration { - DefaultTaintFlowConf() { this = "qltest:defaultTaintFlowConf" } +module DefaultFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { defaultSource(source) } - override predicate isSource(DataFlow::Node source) { defaultSource(source) } + predicate isSink(DataFlow::Node sink) { defaultSink(sink) } - override predicate isSink(DataFlow::Node sink) { - exists(Function fn | fn.hasQualifiedName(_, "sink") | sink = fn.getACall().getAnArgument()) - } - - override int fieldFlowBranchLimit() { result = 1000 } + int fieldFlowBranchLimit() { result = 1000 } } -class InlineFlowTest extends InlineExpectationsTest { - InlineFlowTest() { this = "HasFlowTest" } +private module NoFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { none() } - override string getARelevantTag() { result = ["hasValueFlow", "hasTaintFlow"] } + predicate isSink(DataFlow::Node sink) { none() } +} - override predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasValueFlow" and - exists(DataFlow::Node sink | this.getValueFlowConfig().hasFlowTo(sink) | - sink.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - element = sink.toString() and - value = "\"" + sink.toString() + "\"" - ) - or - tag = "hasTaintFlow" and - exists(DataFlow::Node src, DataFlow::Node sink | - this.getTaintFlowConfig().hasFlow(src, sink) and - not this.getValueFlowConfig().hasFlow(src, sink) - | - sink.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), - location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - element = sink.toString() and - value = "\"" + sink.toString() + "\"" - ) +module FlowTest { + module ValueFlow = DataFlow::Global; + + module TaintFlow = TaintTracking::Global; + + private module InlineTest implements TestSig { + string getARelevantTag() { result = ["hasValueFlow", "hasTaintFlow"] } + + predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "hasValueFlow" and + exists(DataFlow::Node sink | ValueFlow::flowTo(sink) | + sink.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), + location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and + element = sink.toString() and + value = "\"" + sink.toString() + "\"" + ) + or + tag = "hasTaintFlow" and + exists(DataFlow::Node src, DataFlow::Node sink | + TaintFlow::flow(src, sink) and not ValueFlow::flow(src, sink) + | + sink.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), + location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and + element = sink.toString() and + value = "\"" + sink.toString() + "\"" + ) + } } - DataFlow::Configuration getValueFlowConfig() { result = any(DefaultValueFlowConf config) } + import MakeTest + import DataFlow::MergePathGraph - DataFlow::Configuration getTaintFlowConfig() { result = any(DefaultTaintFlowConf config) } + predicate flowPath(PathNode source, PathNode sink) { + ValueFlow::flowPath(source.asPathNode1(), sink.asPathNode1()) or + TaintFlow::flowPath(source.asPathNode2(), sink.asPathNode2()) + } +} + +module DefaultFlowTest = FlowTest; + +module ValueFlowTest { + import FlowTest +} + +module TaintFlowTest { + import FlowTest } diff --git a/go/ql/test/example-tests/snippets/typeinfo.expected b/go/ql/test/example-tests/snippets/typeinfo.expected index c3b63b1b25b..728a1dfc6f7 100644 --- a/go/ql/test/example-tests/snippets/typeinfo.expected +++ b/go/ql/test/example-tests/snippets/typeinfo.expected @@ -1,7 +1,7 @@ -| file://:0:0:0:0 | parameter -1 of AddCookie | -| file://:0:0:0:0 | parameter -1 of Clone | -| file://:0:0:0:0 | parameter -1 of Write | -| file://:0:0:0:0 | parameter -1 of WriteProxy | +| file://:0:0:0:0 | [summary param] -1 in AddCookie | +| file://:0:0:0:0 | [summary param] -1 in Clone | +| file://:0:0:0:0 | [summary param] -1 in Write | +| file://:0:0:0:0 | [summary param] -1 in WriteProxy | | main.go:18:12:18:14 | argument corresponding to req | | main.go:18:12:18:14 | definition of req | | main.go:20:5:20:7 | req | diff --git a/go/ql/test/experimental/CWE-134/DsnInjection.expected b/go/ql/test/experimental/CWE-134/DsnInjection.expected index de054067a01..531bdb0ead2 100644 --- a/go/ql/test/experimental/CWE-134/DsnInjection.expected +++ b/go/ql/test/experimental/CWE-134/DsnInjection.expected @@ -1,7 +1,11 @@ edges -| Dsn.go:47:10:47:30 | call to FormValue | Dsn.go:50:29:50:33 | dbDSN | +| Dsn.go:47:10:47:30 | call to FormValue | Dsn.go:49:102:49:105 | name | +| Dsn.go:49:11:49:106 | call to Sprintf | Dsn.go:50:29:50:33 | dbDSN | +| Dsn.go:49:102:49:105 | name | Dsn.go:49:11:49:106 | call to Sprintf | nodes | Dsn.go:47:10:47:30 | call to FormValue | semmle.label | call to FormValue | +| Dsn.go:49:11:49:106 | call to Sprintf | semmle.label | call to Sprintf | +| Dsn.go:49:102:49:105 | name | semmle.label | name | | Dsn.go:50:29:50:33 | dbDSN | semmle.label | dbDSN | subpaths #select diff --git a/go/ql/test/experimental/CWE-134/DsnInjectionLocal.expected b/go/ql/test/experimental/CWE-134/DsnInjectionLocal.expected index de5e959d43f..762c5bf3e04 100644 --- a/go/ql/test/experimental/CWE-134/DsnInjectionLocal.expected +++ b/go/ql/test/experimental/CWE-134/DsnInjectionLocal.expected @@ -1,25 +1,34 @@ edges -| Dsn.go:26:11:26:17 | selection of Args | Dsn.go:29:29:29:33 | dbDSN | +| Dsn.go:26:11:26:17 | selection of Args | Dsn.go:28:102:28:109 | index expression | +| Dsn.go:28:11:28:110 | call to Sprintf | Dsn.go:29:29:29:33 | dbDSN | +| Dsn.go:28:102:28:109 | index expression | Dsn.go:28:11:28:110 | call to Sprintf | | Dsn.go:62:2:62:4 | definition of cfg [pointer] | Dsn.go:63:9:63:11 | cfg [pointer] | | Dsn.go:62:2:62:4 | definition of cfg [pointer] | Dsn.go:67:102:67:104 | cfg [pointer] | | Dsn.go:63:9:63:11 | cfg [pointer] | Dsn.go:63:9:63:11 | implicit dereference | | Dsn.go:63:9:63:11 | implicit dereference | Dsn.go:62:2:62:4 | definition of cfg [pointer] | | Dsn.go:63:9:63:11 | implicit dereference | Dsn.go:63:9:63:11 | implicit dereference | -| Dsn.go:63:9:63:11 | implicit dereference | Dsn.go:68:29:68:33 | dbDSN | -| Dsn.go:63:19:63:25 | selection of Args | Dsn.go:63:9:63:11 | implicit dereference | -| Dsn.go:63:19:63:25 | selection of Args | Dsn.go:68:29:68:33 | dbDSN | +| Dsn.go:63:9:63:11 | implicit dereference | Dsn.go:67:102:67:108 | selection of dsn | +| Dsn.go:63:19:63:25 | selection of Args | Dsn.go:63:19:63:29 | slice expression | +| Dsn.go:63:19:63:29 | slice expression | Dsn.go:63:9:63:11 | implicit dereference | +| Dsn.go:67:11:67:109 | call to Sprintf | Dsn.go:68:29:68:33 | dbDSN | | Dsn.go:67:102:67:104 | cfg [pointer] | Dsn.go:67:102:67:104 | implicit dereference | | Dsn.go:67:102:67:104 | implicit dereference | Dsn.go:63:9:63:11 | implicit dereference | -| Dsn.go:67:102:67:104 | implicit dereference | Dsn.go:68:29:68:33 | dbDSN | +| Dsn.go:67:102:67:104 | implicit dereference | Dsn.go:67:102:67:108 | selection of dsn | +| Dsn.go:67:102:67:108 | selection of dsn | Dsn.go:67:11:67:109 | call to Sprintf | nodes | Dsn.go:26:11:26:17 | selection of Args | semmle.label | selection of Args | +| Dsn.go:28:11:28:110 | call to Sprintf | semmle.label | call to Sprintf | +| Dsn.go:28:102:28:109 | index expression | semmle.label | index expression | | Dsn.go:29:29:29:33 | dbDSN | semmle.label | dbDSN | | Dsn.go:62:2:62:4 | definition of cfg [pointer] | semmle.label | definition of cfg [pointer] | | Dsn.go:63:9:63:11 | cfg [pointer] | semmle.label | cfg [pointer] | | Dsn.go:63:9:63:11 | implicit dereference | semmle.label | implicit dereference | | Dsn.go:63:19:63:25 | selection of Args | semmle.label | selection of Args | +| Dsn.go:63:19:63:29 | slice expression | semmle.label | slice expression | +| Dsn.go:67:11:67:109 | call to Sprintf | semmle.label | call to Sprintf | | Dsn.go:67:102:67:104 | cfg [pointer] | semmle.label | cfg [pointer] | | Dsn.go:67:102:67:104 | implicit dereference | semmle.label | implicit dereference | +| Dsn.go:67:102:67:108 | selection of dsn | semmle.label | selection of dsn | | Dsn.go:68:29:68:33 | dbDSN | semmle.label | dbDSN | subpaths #select diff --git a/go/ql/test/experimental/CWE-918/SSRF.expected b/go/ql/test/experimental/CWE-918/SSRF.expected index 5ba4e98208e..d5a4910ad0d 100644 --- a/go/ql/test/experimental/CWE-918/SSRF.expected +++ b/go/ql/test/experimental/CWE-918/SSRF.expected @@ -4,17 +4,23 @@ edges | builtin.go:97:21:97:31 | call to Referer | builtin.go:101:36:101:49 | untrustedInput | | builtin.go:111:21:111:31 | call to Referer | builtin.go:114:15:114:28 | untrustedInput | | builtin.go:129:21:129:31 | call to Referer | builtin.go:132:38:132:51 | untrustedInput | -| new-tests.go:26:26:26:30 | &... | new-tests.go:31:11:31:57 | call to Sprintf | -| new-tests.go:26:26:26:30 | &... | new-tests.go:32:11:32:57 | call to Sprintf | -| new-tests.go:26:26:26:30 | &... | new-tests.go:35:12:35:58 | call to Sprintf | +| new-tests.go:26:26:26:30 | &... | new-tests.go:31:48:31:56 | selection of word | +| new-tests.go:26:26:26:30 | &... | new-tests.go:32:48:32:56 | selection of safe | +| new-tests.go:26:26:26:30 | &... | new-tests.go:35:49:35:57 | selection of word | +| new-tests.go:31:48:31:56 | selection of word | new-tests.go:31:11:31:57 | call to Sprintf | +| new-tests.go:32:48:32:56 | selection of safe | new-tests.go:32:11:32:57 | call to Sprintf | +| new-tests.go:35:49:35:57 | selection of word | new-tests.go:35:12:35:58 | call to Sprintf | | new-tests.go:39:18:39:30 | call to Param | new-tests.go:47:11:47:46 | ...+... | | new-tests.go:49:18:49:30 | call to Query | new-tests.go:50:11:50:46 | ...+... | | new-tests.go:62:2:62:39 | ... := ...[0] | new-tests.go:63:17:63:23 | reqBody | | new-tests.go:62:31:62:38 | selection of Body | new-tests.go:62:2:62:39 | ... := ...[0] | | new-tests.go:63:17:63:23 | reqBody | new-tests.go:63:26:63:30 | &... | -| new-tests.go:63:26:63:30 | &... | new-tests.go:68:11:68:57 | call to Sprintf | -| new-tests.go:63:26:63:30 | &... | new-tests.go:69:11:69:57 | call to Sprintf | -| new-tests.go:63:26:63:30 | &... | new-tests.go:74:12:74:58 | call to Sprintf | +| new-tests.go:63:26:63:30 | &... | new-tests.go:68:48:68:56 | selection of word | +| new-tests.go:63:26:63:30 | &... | new-tests.go:69:48:69:56 | selection of safe | +| new-tests.go:63:26:63:30 | &... | new-tests.go:74:49:74:57 | selection of word | +| new-tests.go:68:48:68:56 | selection of word | new-tests.go:68:11:68:57 | call to Sprintf | +| new-tests.go:69:48:69:56 | selection of safe | new-tests.go:69:11:69:57 | call to Sprintf | +| new-tests.go:74:49:74:57 | selection of word | new-tests.go:74:12:74:58 | call to Sprintf | | new-tests.go:78:18:78:24 | selection of URL | new-tests.go:78:18:78:32 | call to Query | | new-tests.go:78:18:78:32 | call to Query | new-tests.go:78:18:78:46 | call to Get | | new-tests.go:78:18:78:46 | call to Get | new-tests.go:79:11:79:46 | ...+... | @@ -36,8 +42,11 @@ nodes | builtin.go:132:38:132:51 | untrustedInput | semmle.label | untrustedInput | | new-tests.go:26:26:26:30 | &... | semmle.label | &... | | new-tests.go:31:11:31:57 | call to Sprintf | semmle.label | call to Sprintf | +| new-tests.go:31:48:31:56 | selection of word | semmle.label | selection of word | | new-tests.go:32:11:32:57 | call to Sprintf | semmle.label | call to Sprintf | +| new-tests.go:32:48:32:56 | selection of safe | semmle.label | selection of safe | | new-tests.go:35:12:35:58 | call to Sprintf | semmle.label | call to Sprintf | +| new-tests.go:35:49:35:57 | selection of word | semmle.label | selection of word | | new-tests.go:39:18:39:30 | call to Param | semmle.label | call to Param | | new-tests.go:47:11:47:46 | ...+... | semmle.label | ...+... | | new-tests.go:49:18:49:30 | call to Query | semmle.label | call to Query | @@ -47,8 +56,11 @@ nodes | new-tests.go:63:17:63:23 | reqBody | semmle.label | reqBody | | new-tests.go:63:26:63:30 | &... | semmle.label | &... | | new-tests.go:68:11:68:57 | call to Sprintf | semmle.label | call to Sprintf | +| new-tests.go:68:48:68:56 | selection of word | semmle.label | selection of word | | new-tests.go:69:11:69:57 | call to Sprintf | semmle.label | call to Sprintf | +| new-tests.go:69:48:69:56 | selection of safe | semmle.label | selection of safe | | new-tests.go:74:12:74:58 | call to Sprintf | semmle.label | call to Sprintf | +| new-tests.go:74:49:74:57 | selection of word | semmle.label | selection of word | | new-tests.go:78:18:78:24 | selection of URL | semmle.label | selection of URL | | new-tests.go:78:18:78:32 | call to Query | semmle.label | call to Query | | new-tests.go:78:18:78:46 | call to Get | semmle.label | call to Get | diff --git a/go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.expected b/go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.expected +++ b/go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.ql b/go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.ql index 20dc73705a8..6a1420db6d6 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.ql +++ b/go/ql/test/experimental/frameworks/CleverGo/HeaderWrite.ql @@ -2,14 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import experimental.frameworks.CleverGo -class HttpHeaderWriteTest extends InlineExpectationsTest { - HttpHeaderWriteTest() { this = "HttpHeaderWriteTest" } +module HttpHeaderWriteTest implements TestSig { + string getARelevantTag() { result = ["headerKeyNode", "headerValNode", "headerKey", "headerVal"] } - override string getARelevantTag() { - result = ["headerKeyNode", "headerValNode", "headerKey", "headerVal"] - } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { // Dynamic key-value header: exists(Http::HeaderWrite hw | hw.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -56,3 +52,5 @@ class HttpHeaderWriteTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.expected b/go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.expected +++ b/go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.ql b/go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.ql index 4b7bcb7823c..a0a8ce0a242 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.ql +++ b/go/ql/test/experimental/frameworks/CleverGo/HttpRedirect.ql @@ -2,12 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import experimental.frameworks.CleverGo -class HttpRedirectTest extends InlineExpectationsTest { - HttpRedirectTest() { this = "HttpRedirectTest" } +module HttpRedirectTest implements TestSig { + string getARelevantTag() { result = "redirectUrl" } - override string getARelevantTag() { result = "redirectUrl" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "redirectUrl" and exists(Http::Redirect rd | rd.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -17,3 +15,5 @@ class HttpRedirectTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.expected b/go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.expected +++ b/go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.ql b/go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.ql index a2b3dc62167..b34f1ec23be 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.ql +++ b/go/ql/test/experimental/frameworks/CleverGo/HttpResponseBody.ql @@ -2,12 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import experimental.frameworks.CleverGo -class HttpResponseBodyTest extends InlineExpectationsTest { - HttpResponseBodyTest() { this = "HttpResponseBodyTest" } +module HttpResponseBodyTest implements TestSig { + string getARelevantTag() { result = ["contentType", "responseBody"] } - override string getARelevantTag() { result = ["contentType", "responseBody"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(Http::ResponseBody rd | rd.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and @@ -23,3 +21,5 @@ class HttpResponseBodyTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/experimental/frameworks/CleverGo/TaintTracking.expected b/go/ql/test/experimental/frameworks/CleverGo/TaintTracking.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/TaintTracking.expected +++ b/go/ql/test/experimental/frameworks/CleverGo/TaintTracking.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/CleverGo/TaintTracking.ql b/go/ql/test/experimental/frameworks/CleverGo/TaintTracking.ql index 5de07cbe043..f5d74acdf56 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/TaintTracking.ql +++ b/go/ql/test/experimental/frameworks/CleverGo/TaintTracking.ql @@ -14,12 +14,10 @@ class Configuration extends TaintTracking::Configuration { } } -class TaintTrackingTest extends InlineExpectationsTest { - TaintTrackingTest() { this = "TaintTrackingTest" } +module TaintTrackingTest implements TestSig { + string getARelevantTag() { result = "taintSink" } - override string getARelevantTag() { result = "taintSink" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "taintSink" and exists(DataFlow::Node sink | any(Configuration c).hasFlow(_, sink) | element = sink.toString() and @@ -29,3 +27,5 @@ class TaintTrackingTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.expected b/go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.expected +++ b/go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.ql b/go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.ql index 4ace887e367..d414451dc21 100644 --- a/go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.ql +++ b/go/ql/test/experimental/frameworks/CleverGo/UntrustedSources.ql @@ -2,12 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import experimental.frameworks.CleverGo -class UntrustedFlowSourceTest extends InlineExpectationsTest { - UntrustedFlowSourceTest() { this = "UntrustedFlowSourceTest" } +module UntrustedFlowSourceTest implements TestSig { + string getARelevantTag() { result = "untrustedFlowSource" } - override string getARelevantTag() { result = "untrustedFlowSource" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "untrustedFlowSource" and exists(DataFlow::CallNode sinkCall, DataFlow::ArgumentNode arg | sinkCall.getCalleeName() = "sink" and @@ -21,3 +19,5 @@ class UntrustedFlowSourceTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/experimental/frameworks/Fiber/HeaderWrite.expected b/go/ql/test/experimental/frameworks/Fiber/HeaderWrite.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/Fiber/HeaderWrite.expected +++ b/go/ql/test/experimental/frameworks/Fiber/HeaderWrite.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/Fiber/HeaderWrite.ql b/go/ql/test/experimental/frameworks/Fiber/HeaderWrite.ql index 0130172e7d0..70494910554 100644 --- a/go/ql/test/experimental/frameworks/Fiber/HeaderWrite.ql +++ b/go/ql/test/experimental/frameworks/Fiber/HeaderWrite.ql @@ -2,14 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import experimental.frameworks.Fiber -class HttpHeaderWriteTest extends InlineExpectationsTest { - HttpHeaderWriteTest() { this = "HttpHeaderWriteTest" } +module HttpHeaderWriteTest implements TestSig { + string getARelevantTag() { result = ["headerKeyNode", "headerValNode", "headerKey", "headerVal"] } - override string getARelevantTag() { - result = ["headerKeyNode", "headerValNode", "headerKey", "headerVal"] - } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { // Dynamic key-value header: exists(Http::HeaderWrite hw | hw.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -56,3 +52,5 @@ class HttpHeaderWriteTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/experimental/frameworks/Fiber/Redirect.expected b/go/ql/test/experimental/frameworks/Fiber/Redirect.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/Fiber/Redirect.expected +++ b/go/ql/test/experimental/frameworks/Fiber/Redirect.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/Fiber/Redirect.ql b/go/ql/test/experimental/frameworks/Fiber/Redirect.ql index 37bb0f97bfb..1f609ea3959 100644 --- a/go/ql/test/experimental/frameworks/Fiber/Redirect.ql +++ b/go/ql/test/experimental/frameworks/Fiber/Redirect.ql @@ -2,12 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import experimental.frameworks.Fiber -class HttpRedirectTest extends InlineExpectationsTest { - HttpRedirectTest() { this = "HttpRedirectTest" } +module HttpRedirectTest implements TestSig { + string getARelevantTag() { result = "redirectUrl" } - override string getARelevantTag() { result = "redirectUrl" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "redirectUrl" and exists(Http::Redirect rd | rd.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -17,3 +15,5 @@ class HttpRedirectTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/experimental/frameworks/Fiber/ResponseBody.expected b/go/ql/test/experimental/frameworks/Fiber/ResponseBody.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/Fiber/ResponseBody.expected +++ b/go/ql/test/experimental/frameworks/Fiber/ResponseBody.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/Fiber/ResponseBody.ql b/go/ql/test/experimental/frameworks/Fiber/ResponseBody.ql index 74a9008749d..574f514b343 100644 --- a/go/ql/test/experimental/frameworks/Fiber/ResponseBody.ql +++ b/go/ql/test/experimental/frameworks/Fiber/ResponseBody.ql @@ -2,12 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import experimental.frameworks.Fiber -class HttpResponseBodyTest extends InlineExpectationsTest { - HttpResponseBodyTest() { this = "HttpResponseBodyTest" } +module HttpResponseBodyTest implements TestSig { + string getARelevantTag() { result = ["contentType", "responseBody"] } - override string getARelevantTag() { result = ["contentType", "responseBody"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(Http::ResponseBody rd | rd.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and @@ -23,3 +21,5 @@ class HttpResponseBodyTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/experimental/frameworks/Fiber/TaintTracking.expected b/go/ql/test/experimental/frameworks/Fiber/TaintTracking.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/Fiber/TaintTracking.expected +++ b/go/ql/test/experimental/frameworks/Fiber/TaintTracking.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/Fiber/TaintTracking.ql b/go/ql/test/experimental/frameworks/Fiber/TaintTracking.ql index dba5c65328c..5e2082acd60 100644 --- a/go/ql/test/experimental/frameworks/Fiber/TaintTracking.ql +++ b/go/ql/test/experimental/frameworks/Fiber/TaintTracking.ql @@ -14,12 +14,10 @@ class Configuration extends TaintTracking::Configuration { } } -class TaintTrackingTest extends InlineExpectationsTest { - TaintTrackingTest() { this = "TaintTrackingTest" } +module TaintTrackingTest implements TestSig { + string getARelevantTag() { result = "taintSink" } - override string getARelevantTag() { result = "taintSink" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "taintSink" and exists(DataFlow::Node sink | any(Configuration c).hasFlow(_, sink) | element = sink.toString() and @@ -29,3 +27,5 @@ class TaintTrackingTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.expected b/go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.expected +++ b/go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.ql b/go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.ql index 3e7666b581a..4964c900207 100644 --- a/go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.ql +++ b/go/ql/test/experimental/frameworks/Fiber/UntrustedFlowSources.ql @@ -2,12 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import experimental.frameworks.Fiber -class UntrustedFlowSourceTest extends InlineExpectationsTest { - UntrustedFlowSourceTest() { this = "UntrustedFlowSourceTest" } +module UntrustedFlowSourceTest implements TestSig { + string getARelevantTag() { result = "untrustedFlowSource" } - override string getARelevantTag() { result = "untrustedFlowSource" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "untrustedFlowSource" and exists(DataFlow::CallNode sinkCall, DataFlow::ArgumentNode arg | sinkCall.getCalleeName() = "sink" and @@ -21,3 +19,5 @@ class UntrustedFlowSourceTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/Function/isVariadic.expected b/go/ql/test/library-tests/semmle/go/Function/isVariadic.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/Function/isVariadic.expected +++ b/go/ql/test/library-tests/semmle/go/Function/isVariadic.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/Function/isVariadic.ql b/go/ql/test/library-tests/semmle/go/Function/isVariadic.ql index b501b84eadd..9a75a5f0136 100644 --- a/go/ql/test/library-tests/semmle/go/Function/isVariadic.ql +++ b/go/ql/test/library-tests/semmle/go/Function/isVariadic.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class FunctionIsVariadicTest extends InlineExpectationsTest { - FunctionIsVariadicTest() { this = "Function::IsVariadicTest" } +module FunctionIsVariadicTest implements TestSig { + string getARelevantTag() { result = "isVariadic" } - override string getARelevantTag() { result = "isVariadic" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(CallExpr ce | ce.getTarget().isVariadic() and ce.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -17,3 +15,5 @@ class FunctionIsVariadicTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/Types/ImplementsComparable.expected b/go/ql/test/library-tests/semmle/go/Types/ImplementsComparable.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/Types/ImplementsComparable.expected +++ b/go/ql/test/library-tests/semmle/go/Types/ImplementsComparable.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/Types/ImplementsComparable.ql b/go/ql/test/library-tests/semmle/go/Types/ImplementsComparable.ql index 789472ecd2f..048352a3ee0 100644 --- a/go/ql/test/library-tests/semmle/go/Types/ImplementsComparable.ql +++ b/go/ql/test/library-tests/semmle/go/Types/ImplementsComparable.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class ImplementsComparableTest extends InlineExpectationsTest { - ImplementsComparableTest() { this = "ImplementsComparableTest" } +module ImplementsComparableTest implements TestSig { + string getARelevantTag() { result = "implementsComparable" } - override string getARelevantTag() { result = "implementsComparable" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { // file = "interface.go" and tag = "implementsComparable" and exists(TypeSpec ts | @@ -20,3 +18,5 @@ class ImplementsComparableTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/Types/SignatureType_isVariadic.expected b/go/ql/test/library-tests/semmle/go/Types/SignatureType_isVariadic.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/Types/SignatureType_isVariadic.expected +++ b/go/ql/test/library-tests/semmle/go/Types/SignatureType_isVariadic.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/Types/SignatureType_isVariadic.ql b/go/ql/test/library-tests/semmle/go/Types/SignatureType_isVariadic.ql index d2ae79ae7d9..e6b96ce608e 100644 --- a/go/ql/test/library-tests/semmle/go/Types/SignatureType_isVariadic.ql +++ b/go/ql/test/library-tests/semmle/go/Types/SignatureType_isVariadic.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class SignatureTypeIsVariadicTest extends InlineExpectationsTest { - SignatureTypeIsVariadicTest() { this = "SignatureType::IsVariadicTest" } +module SignatureTypeIsVariadicTest implements TestSig { + string getARelevantTag() { result = "isVariadic" } - override string getARelevantTag() { result = "isVariadic" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(FuncDef fd | fd.isVariadic() and fd.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -17,3 +15,5 @@ class SignatureTypeIsVariadicTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/concepts/HTTP/Handler.expected b/go/ql/test/library-tests/semmle/go/concepts/HTTP/Handler.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/concepts/HTTP/Handler.expected +++ b/go/ql/test/library-tests/semmle/go/concepts/HTTP/Handler.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/concepts/HTTP/Handler.ql b/go/ql/test/library-tests/semmle/go/concepts/HTTP/Handler.ql index c6972eba275..6b982271404 100644 --- a/go/ql/test/library-tests/semmle/go/concepts/HTTP/Handler.ql +++ b/go/ql/test/library-tests/semmle/go/concepts/HTTP/Handler.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class HttpHandler extends InlineExpectationsTest { - HttpHandler() { this = "httphandler" } +module HttpHandler implements TestSig { + string getARelevantTag() { result = "handler" } - override string getARelevantTag() { result = "handler" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "handler" and exists(Http::RequestHandler h, DataFlow::Node check | element = h.toString() and value = check.toString() @@ -17,3 +15,5 @@ class HttpHandler extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/LoggerCall.expected b/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/LoggerCall.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/LoggerCall.expected +++ b/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/LoggerCall.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/LoggerCall.ql b/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/LoggerCall.ql index ce1be9a05d7..ab4890f9746 100644 --- a/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/LoggerCall.ql +++ b/go/ql/test/library-tests/semmle/go/concepts/LoggerCall/LoggerCall.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class LoggerTest extends InlineExpectationsTest { - LoggerTest() { this = "LoggerTest" } +module LoggerTest implements TestSig { + string getARelevantTag() { result = "logger" } - override string getARelevantTag() { result = "logger" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(LoggerCall log | log.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and @@ -16,3 +14,5 @@ class LoggerTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ArrayConversion/Flows.expected b/go/ql/test/library-tests/semmle/go/dataflow/ArrayConversion/Flows.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ArrayConversion/Flows.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ArrayConversion/Flows.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ArrayConversion/Flows.ql b/go/ql/test/library-tests/semmle/go/dataflow/ArrayConversion/Flows.ql index e6e99b0e6c2..500572f5d45 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ArrayConversion/Flows.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/ArrayConversion/Flows.ql @@ -13,12 +13,10 @@ class DataConfiguration extends DataFlow::Configuration { } } -class DataFlowTest extends InlineExpectationsTest { - DataFlowTest() { this = "DataFlowTest" } +module DataFlowTest implements TestSig { + string getARelevantTag() { result = "dataflow" } - override string getARelevantTag() { result = "dataflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "dataflow" and exists(DataFlow::Node sink | any(DataConfiguration c).hasFlow(_, sink) | element = sink.toString() and @@ -41,12 +39,10 @@ class TaintConfiguration extends TaintTracking::Configuration { } } -class TaintFlowTest extends InlineExpectationsTest { - TaintFlowTest() { this = "TaintFlowTest" } +module TaintFlowTest implements TestSig { + string getARelevantTag() { result = "taintflow" } - override string getARelevantTag() { result = "taintflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "taintflow" and exists(DataFlow::Node sink | any(TaintConfiguration c).hasFlow(_, sink) | element = sink.toString() and @@ -56,3 +52,5 @@ class TaintFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.expected b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.expected index 81332464f79..105b7026d0c 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.expected @@ -1,2 +1,3 @@ failures invalidModelRow +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ext.yml b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ext.yml index 79ca023562c..47e51e573f0 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ext.yml +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ext.yml @@ -22,7 +22,9 @@ extensions: - ["github.com/nonexistent/test", "", False, "GetMapKey", "", "", "Argument[0].MapKey", "ReturnValue", "value", "manual"] - ["github.com/nonexistent/test", "", False, "SetElement", "", "", "Argument[0]", "ReturnValue.Element", "value", "manual"] - ["github.com/nonexistent/test", "C", False, "Get", "", "", "Argument[-1].Field[github.com/nonexistent/test.C.F]", "ReturnValue", "value", "manual"] + - ["github.com/nonexistent/test", "C", False, "GetThroughPointer", "", "", "Argument[-1].Dereference.Field[github.com/nonexistent/test.C.F]", "ReturnValue", "value", "manual"] - ["github.com/nonexistent/test", "C", False, "Set", "", "", "Argument[0]", "Argument[-1].Field[github.com/nonexistent/test.C.F]", "value", "manual"] + - ["github.com/nonexistent/test", "C", False, "SetThroughPointer", "", "", "Argument[0]", "Argument[-1].Dereference.Field[github.com/nonexistent/test.C.F]", "value", "manual"] - addsTo: pack: codeql/go-all diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ql b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ql index 9719a9d69a6..2b719551ae0 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/completetest.ql @@ -8,16 +8,10 @@ import ModelValidation import semmle.go.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl import TestUtilities.InlineFlowTest -class Config extends TaintTracking::Configuration { - Config() { this = "external-flow-test" } +module Config implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node src) { sourceNode(src, "qltest") } - override predicate isSource(DataFlow::Node src) { sourceNode(src, "qltest") } - - override predicate isSink(DataFlow::Node src) { sinkNode(src, "qltest") } + predicate isSink(DataFlow::Node src) { sinkNode(src, "qltest") } } -class ExternalFlowTest extends InlineFlowTest { - override DataFlow::Configuration getValueFlowConfig() { none() } - - override DataFlow::Configuration getTaintFlowConfig() { result = any(Config config) } -} +import TaintFlowTest diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/sinks.expected b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/sinks.expected index 21199db73df..38dc380b55b 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/sinks.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/sinks.expected @@ -26,6 +26,10 @@ invalidModelRow | test.go:133:10:133:17 | call to Get | qltest | | test.go:137:10:137:17 | call to Get | qltest | | test.go:142:10:142:17 | call to Get | qltest | -| test.go:148:17:148:20 | arg1 | qltest | -| test.go:148:23:148:26 | arg2 | qltest | -| test.go:148:29:148:32 | arg3 | qltest | +| test.go:146:10:146:14 | selection of F | qltest | +| test.go:149:10:149:32 | call to GetThroughPointer | qltest | +| test.go:153:10:153:32 | call to GetThroughPointer | qltest | +| test.go:158:10:158:32 | call to GetThroughPointer | qltest | +| test.go:164:17:164:20 | arg1 | qltest | +| test.go:164:23:164:26 | arg2 | qltest | +| test.go:164:29:164:32 | arg3 | qltest | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/srcs.expected b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/srcs.expected index 7b721110c67..2f1e3256778 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/srcs.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/srcs.expected @@ -17,3 +17,7 @@ invalidModelRow | test.go:132:15:132:22 | call to Src1 | qltest | | test.go:136:9:136:16 | call to Src1 | qltest | | test.go:140:9:140:16 | call to Src1 | qltest | +| test.go:145:24:145:31 | call to Src1 | qltest | +| test.go:148:17:148:24 | call to Src1 | qltest | +| test.go:152:24:152:31 | call to Src1 | qltest | +| test.go:156:24:156:31 | call to Src1 | qltest | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/test.go b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/test.go index a70b2868f58..35da086a888 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/test.go +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/test.go @@ -141,6 +141,22 @@ func simpleflow() { c4.Set("") b.Sink1(c4.Get()) // $ SPURIOUS: hasTaintFlow="call to Get" // because we currently don't clear content + cp1 := &test.C{""} + cp1.SetThroughPointer(a.Src1().(string)) + b.Sink1(cp1.F) // $ hasTaintFlow="selection of F" + + cp2 := &test.C{a.Src1().(string)} + b.Sink1(cp2.GetThroughPointer()) // $ hasTaintFlow="call to GetThroughPointer" + + cp3 := &test.C{""} + cp3.SetThroughPointer(a.Src1().(string)) + b.Sink1(cp3.GetThroughPointer()) // $ hasTaintFlow="call to GetThroughPointer" + + cp4 := &test.C{""} + cp4.SetThroughPointer(a.Src1().(string)) + cp4.SetThroughPointer("") + b.Sink1(cp4.GetThroughPointer()) // $ SPURIOUS: hasTaintFlow="call to GetThroughPointer" // because we currently don't clear content + arg1 := src arg2 := src arg3 := src diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/vendor/github.com/nonexistent/test/stub.go b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/vendor/github.com/nonexistent/test/stub.go index 2f13fce84e7..746f6ac9a6a 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/vendor/github.com/nonexistent/test/stub.go +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlow/vendor/github.com/nonexistent/test/stub.go @@ -67,3 +67,6 @@ type C struct { func (c C) Set(f string) {} func (c C) Get() string { return "" } + +func (c *C) SetThroughPointer(f string) {} +func (c *C) GetThroughPointer() string { return "" } diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.expected b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.expected index 81332464f79..105b7026d0c 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.expected @@ -1,2 +1,3 @@ failures invalidModelRow +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.ql b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.ql index 1be00de1f13..e30f7bc28e3 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/ExternalFlowVarArgs/Flows.ql @@ -15,12 +15,10 @@ class DataConfiguration extends DataFlow::Configuration { } } -class DataFlowTest extends InlineExpectationsTest { - DataFlowTest() { this = "DataFlowTest" } +module DataFlowTest implements TestSig { + string getARelevantTag() { result = "dataflow" } - override string getARelevantTag() { result = "dataflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "dataflow" and exists(DataFlow::Node sink | any(DataConfiguration c).hasFlow(_, sink) | element = sink.toString() and @@ -43,12 +41,10 @@ class TaintConfiguration extends TaintTracking::Configuration { } } -class TaintFlowTest extends InlineExpectationsTest { - TaintFlowTest() { this = "TaintFlowTest" } +module TaintFlowTest implements TestSig { + string getARelevantTag() { result = "taintflow" } - override string getARelevantTag() { result = "taintflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "taintflow" and exists(DataFlow::Node sink | any(TaintConfiguration c).hasFlow(_, sink) | element = sink.toString() and @@ -58,3 +54,5 @@ class TaintFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalTaintStep.expected b/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalTaintStep.expected index 54091adf7d1..d875c24c49a 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalTaintStep.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalTaintStep.expected @@ -1,286 +1,286 @@ -| file://:0:0:0:0 | parameter 0 of AppendQuote | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuote | -| file://:0:0:0:0 | parameter 0 of AppendQuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToASCII | -| file://:0:0:0:0 | parameter 0 of AppendQuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToGraphic | -| file://:0:0:0:0 | parameter 0 of AppendSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendSlice | -| file://:0:0:0:0 | parameter 0 of As | file://:0:0:0:0 | [summary] to write: argument 1 in As | -| file://:0:0:0:0 | parameter 0 of Base | file://:0:0:0:0 | [summary] to write: return (return[0]) in Base | -| file://:0:0:0:0 | parameter 0 of BytePtrFromString | file://:0:0:0:0 | [summary] to write: return (return[0]) in BytePtrFromString | -| file://:0:0:0:0 | parameter 0 of ByteSliceFromString | file://:0:0:0:0 | [summary] to write: return (return[0]) in ByteSliceFromString | -| file://:0:0:0:0 | parameter 0 of Clean | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clean | -| file://:0:0:0:0 | parameter 0 of Dir | file://:0:0:0:0 | [summary] to write: return (return[0]) in Dir | -| file://:0:0:0:0 | parameter 0 of Expand | file://:0:0:0:0 | [summary] to write: return (return[0]) in Expand | -| file://:0:0:0:0 | parameter 0 of ExpandEnv | file://:0:0:0:0 | [summary] to write: return (return[0]) in ExpandEnv | -| file://:0:0:0:0 | parameter 0 of Ext | file://:0:0:0:0 | [summary] to write: return (return[0]) in Ext | -| file://:0:0:0:0 | parameter 0 of Fields | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fields | -| file://:0:0:0:0 | parameter 0 of FieldsFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldsFunc | -| file://:0:0:0:0 | parameter 0 of FileInfoToDirEntry | file://:0:0:0:0 | [summary] to write: return (return[0]) in FileInfoToDirEntry | -| file://:0:0:0:0 | parameter 0 of Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | -| file://:0:0:0:0 | parameter 0 of Indirect | file://:0:0:0:0 | [summary] to write: return (return[0]) in Indirect | -| file://:0:0:0:0 | parameter 0 of Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | -| file://:0:0:0:0 | parameter 0 of LimitReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in LimitReader | -| file://:0:0:0:0 | parameter 0 of LoadOrStore | file://:0:0:0:0 | [summary] to write: argument -1 in LoadOrStore | -| file://:0:0:0:0 | parameter 0 of LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | -| file://:0:0:0:0 | parameter 0 of LoadPointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadPointer | -| file://:0:0:0:0 | parameter 0 of LoadUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadUintptr | -| file://:0:0:0:0 | parameter 0 of New | file://:0:0:0:0 | [summary] to write: return (return[0]) in New | -| file://:0:0:0:0 | parameter 0 of NewFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewFile | -| file://:0:0:0:0 | parameter 0 of NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | -| file://:0:0:0:0 | parameter 0 of NewSectionReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewSectionReader | -| file://:0:0:0:0 | parameter 0 of NopCloser | file://:0:0:0:0 | [summary] to write: return (return[0]) in NopCloser | -| file://:0:0:0:0 | parameter 0 of Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | -| file://:0:0:0:0 | parameter 0 of Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | -| file://:0:0:0:0 | parameter 0 of ParseQuery | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseQuery | -| file://:0:0:0:0 | parameter 0 of ParseRequestURI | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseRequestURI | -| file://:0:0:0:0 | parameter 0 of PathEscape | file://:0:0:0:0 | [summary] to write: return (return[0]) in PathEscape | -| file://:0:0:0:0 | parameter 0 of PathUnescape | file://:0:0:0:0 | [summary] to write: return (return[0]) in PathUnescape | -| file://:0:0:0:0 | parameter 0 of Put | file://:0:0:0:0 | [summary] to write: argument -1 in Put | -| file://:0:0:0:0 | parameter 0 of QueryEscape | file://:0:0:0:0 | [summary] to write: return (return[0]) in QueryEscape | -| file://:0:0:0:0 | parameter 0 of QueryUnescape | file://:0:0:0:0 | [summary] to write: return (return[0]) in QueryUnescape | -| file://:0:0:0:0 | parameter 0 of Quote | file://:0:0:0:0 | [summary] to write: return (return[0]) in Quote | -| file://:0:0:0:0 | parameter 0 of QuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuoteToASCII | -| file://:0:0:0:0 | parameter 0 of QuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuoteToGraphic | -| file://:0:0:0:0 | parameter 0 of QuotedPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuotedPrefix | -| file://:0:0:0:0 | parameter 0 of ReadAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadAll | -| file://:0:0:0:0 | parameter 0 of ReadAtLeast | file://:0:0:0:0 | [summary] to write: argument 1 in ReadAtLeast | -| file://:0:0:0:0 | parameter 0 of ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | -| file://:0:0:0:0 | parameter 0 of ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFull | file://:0:0:0:0 | [summary] to write: argument 1 in ReadFull | -| file://:0:0:0:0 | parameter 0 of Repeat | file://:0:0:0:0 | [summary] to write: return (return[0]) in Repeat | -| file://:0:0:0:0 | parameter 0 of Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | -| file://:0:0:0:0 | parameter 0 of Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | -| file://:0:0:0:0 | parameter 0 of ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | -| file://:0:0:0:0 | parameter 0 of Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | -| file://:0:0:0:0 | parameter 0 of ResolveReference | file://:0:0:0:0 | [summary] to write: return (return[0]) in ResolveReference | -| file://:0:0:0:0 | parameter 0 of Reverse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Reverse | -| file://:0:0:0:0 | parameter 0 of Send | file://:0:0:0:0 | [summary] to write: argument -1 in Send | -| file://:0:0:0:0 | parameter 0 of Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | -| file://:0:0:0:0 | parameter 0 of SetBytes | file://:0:0:0:0 | [summary] to write: argument -1 in SetBytes | -| file://:0:0:0:0 | parameter 0 of SetMapIndex | file://:0:0:0:0 | [summary] to write: argument -1 in SetMapIndex | -| file://:0:0:0:0 | parameter 0 of SetPointer | file://:0:0:0:0 | [summary] to write: argument -1 in SetPointer | -| file://:0:0:0:0 | parameter 0 of SetString | file://:0:0:0:0 | [summary] to write: argument -1 in SetString | -| file://:0:0:0:0 | parameter 0 of Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | -| file://:0:0:0:0 | parameter 0 of Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | -| file://:0:0:0:0 | parameter 0 of Split | file://:0:0:0:0 | [summary] to write: return (return[1]) in Split | -| file://:0:0:0:0 | parameter 0 of SplitAfter | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfter | -| file://:0:0:0:0 | parameter 0 of SplitAfterN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfterN | -| file://:0:0:0:0 | parameter 0 of SplitN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitN | -| file://:0:0:0:0 | parameter 0 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 0 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 0 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 0 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 0 of StringBytePtr | file://:0:0:0:0 | [summary] to write: return (return[0]) in StringBytePtr | -| file://:0:0:0:0 | parameter 0 of StringByteSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in StringByteSlice | -| file://:0:0:0:0 | parameter 0 of Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | -| file://:0:0:0:0 | parameter 0 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 0 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 0 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 0 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 0 of SwapPointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in SwapPointer | -| file://:0:0:0:0 | parameter 0 of SwapUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in SwapUintptr | -| file://:0:0:0:0 | parameter 0 of TeeReader | file://:0:0:0:0 | [summary] to write: argument 1 in TeeReader | -| file://:0:0:0:0 | parameter 0 of TeeReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in TeeReader | -| file://:0:0:0:0 | parameter 0 of Title | file://:0:0:0:0 | [summary] to write: return (return[0]) in Title | -| file://:0:0:0:0 | parameter 0 of ToLower | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLower | -| file://:0:0:0:0 | parameter 0 of ToTitle | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitle | -| file://:0:0:0:0 | parameter 0 of ToUpper | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpper | -| file://:0:0:0:0 | parameter 0 of ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | -| file://:0:0:0:0 | parameter 0 of Trim | file://:0:0:0:0 | [summary] to write: return (return[0]) in Trim | -| file://:0:0:0:0 | parameter 0 of TrimFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimFunc | -| file://:0:0:0:0 | parameter 0 of TrimLeft | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeft | -| file://:0:0:0:0 | parameter 0 of TrimLeftFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeftFunc | -| file://:0:0:0:0 | parameter 0 of TrimPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimPrefix | -| file://:0:0:0:0 | parameter 0 of TrimRight | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRight | -| file://:0:0:0:0 | parameter 0 of TrimRightFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRightFunc | -| file://:0:0:0:0 | parameter 0 of TrimSpace | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSpace | -| file://:0:0:0:0 | parameter 0 of TrimSuffix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSuffix | -| file://:0:0:0:0 | parameter 0 of TrySend | file://:0:0:0:0 | [summary] to write: argument -1 in TrySend | -| file://:0:0:0:0 | parameter 0 of Unquote | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unquote | -| file://:0:0:0:0 | parameter 0 of UnquoteChar | file://:0:0:0:0 | [summary] to write: return (return[2]) in UnquoteChar | -| file://:0:0:0:0 | parameter 0 of Unwrap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unwrap | -| file://:0:0:0:0 | parameter 0 of User | file://:0:0:0:0 | [summary] to write: return (return[0]) in User | -| file://:0:0:0:0 | parameter 0 of UserPassword | file://:0:0:0:0 | [summary] to write: return (return[0]) in UserPassword | -| file://:0:0:0:0 | parameter 0 of ValueOf | file://:0:0:0:0 | [summary] to write: return (return[0]) in ValueOf | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | -| file://:0:0:0:0 | parameter 0 of WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | -| file://:0:0:0:0 | parameter 0 of WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 1 of AddUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in AddUintptr | -| file://:0:0:0:0 | parameter 1 of AddUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in AddUintptr | -| file://:0:0:0:0 | parameter 1 of AppendQuote | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuote | -| file://:0:0:0:0 | parameter 1 of AppendQuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToASCII | -| file://:0:0:0:0 | parameter 1 of AppendQuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToGraphic | -| file://:0:0:0:0 | parameter 1 of AppendSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendSlice | -| file://:0:0:0:0 | parameter 1 of Copy | file://:0:0:0:0 | [summary] to write: argument 0 in Copy | -| file://:0:0:0:0 | parameter 1 of Copy | file://:0:0:0:0 | [summary] to write: argument 0 in Copy | -| file://:0:0:0:0 | parameter 1 of CopyBuffer | file://:0:0:0:0 | [summary] to write: argument 0 in CopyBuffer | -| file://:0:0:0:0 | parameter 1 of CopyN | file://:0:0:0:0 | [summary] to write: argument 0 in CopyN | -| file://:0:0:0:0 | parameter 1 of Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | -| file://:0:0:0:0 | parameter 1 of LoadOrStore | file://:0:0:0:0 | [summary] to write: argument -1 in LoadOrStore | -| file://:0:0:0:0 | parameter 1 of LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | -| file://:0:0:0:0 | parameter 1 of Map | file://:0:0:0:0 | [summary] to write: return (return[0]) in Map | -| file://:0:0:0:0 | parameter 1 of SetMapIndex | file://:0:0:0:0 | [summary] to write: argument -1 in SetMapIndex | -| file://:0:0:0:0 | parameter 1 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 1 of StorePointer | file://:0:0:0:0 | [summary] to write: argument 0 in StorePointer | -| file://:0:0:0:0 | parameter 1 of StoreUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in StoreUintptr | -| file://:0:0:0:0 | parameter 1 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 1 of SwapPointer | file://:0:0:0:0 | [summary] to write: argument 0 in SwapPointer | -| file://:0:0:0:0 | parameter 1 of SwapUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in SwapUintptr | -| file://:0:0:0:0 | parameter 1 of ToLowerSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLowerSpecial | -| file://:0:0:0:0 | parameter 1 of ToTitleSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitleSpecial | -| file://:0:0:0:0 | parameter 1 of ToUpperSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpperSpecial | -| file://:0:0:0:0 | parameter 1 of ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | -| file://:0:0:0:0 | parameter 1 of UserPassword | file://:0:0:0:0 | [summary] to write: return (return[0]) in UserPassword | -| file://:0:0:0:0 | parameter 1 of WriteString | file://:0:0:0:0 | [summary] to write: argument 0 in WriteString | -| file://:0:0:0:0 | parameter 1 of WriteString | file://:0:0:0:0 | [summary] to write: argument 0 in WriteString | -| file://:0:0:0:0 | parameter 2 of CompareAndSwap | file://:0:0:0:0 | [summary] to write: argument -1 in CompareAndSwap | -| file://:0:0:0:0 | parameter 2 of CompareAndSwapPointer | file://:0:0:0:0 | [summary] to write: argument 0 in CompareAndSwapPointer | -| file://:0:0:0:0 | parameter 2 of CompareAndSwapUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in CompareAndSwapUintptr | -| file://:0:0:0:0 | parameter 2 of Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | -| file://:0:0:0:0 | parameter 2 of ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | -| file://:0:0:0:0 | parameter -1 of Addr | file://:0:0:0:0 | [summary] to write: return (return[0]) in Addr | -| file://:0:0:0:0 | parameter -1 of Bytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Bytes | -| file://:0:0:0:0 | parameter -1 of Convert | file://:0:0:0:0 | [summary] to write: return (return[0]) in Convert | -| file://:0:0:0:0 | parameter -1 of Elem | file://:0:0:0:0 | [summary] to write: return (return[0]) in Elem | -| file://:0:0:0:0 | parameter -1 of Encode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Encode | -| file://:0:0:0:0 | parameter -1 of EscapedPath | file://:0:0:0:0 | [summary] to write: return (return[0]) in EscapedPath | -| file://:0:0:0:0 | parameter -1 of Fd | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fd | -| file://:0:0:0:0 | parameter -1 of Field | file://:0:0:0:0 | [summary] to write: return (return[0]) in Field | -| file://:0:0:0:0 | parameter -1 of FieldByIndex | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByIndex | -| file://:0:0:0:0 | parameter -1 of FieldByName | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByName | -| file://:0:0:0:0 | parameter -1 of FieldByNameFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByNameFunc | -| file://:0:0:0:0 | parameter -1 of Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | -| file://:0:0:0:0 | parameter -1 of Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | -| file://:0:0:0:0 | parameter -1 of Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | -| file://:0:0:0:0 | parameter -1 of Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | -| file://:0:0:0:0 | parameter -1 of Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of Hostname | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hostname | -| file://:0:0:0:0 | parameter -1 of Index | file://:0:0:0:0 | [summary] to write: return (return[0]) in Index | -| file://:0:0:0:0 | parameter -1 of Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | -| file://:0:0:0:0 | parameter -1 of Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | -| file://:0:0:0:0 | parameter -1 of Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | -| file://:0:0:0:0 | parameter -1 of Interface | file://:0:0:0:0 | [summary] to write: return (return[0]) in Interface | -| file://:0:0:0:0 | parameter -1 of InterfaceData | file://:0:0:0:0 | [summary] to write: return (return[0]) in InterfaceData | -| file://:0:0:0:0 | parameter -1 of Key | file://:0:0:0:0 | [summary] to write: return (return[0]) in Key | -| file://:0:0:0:0 | parameter -1 of Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | -| file://:0:0:0:0 | parameter -1 of Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | -| file://:0:0:0:0 | parameter -1 of Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | -| file://:0:0:0:0 | parameter -1 of Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | -| file://:0:0:0:0 | parameter -1 of LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | -| file://:0:0:0:0 | parameter -1 of Lookup | file://:0:0:0:0 | [summary] to write: return (return[0]) in Lookup | -| file://:0:0:0:0 | parameter -1 of MapIndex | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapIndex | -| file://:0:0:0:0 | parameter -1 of MapKeys | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapKeys | -| file://:0:0:0:0 | parameter -1 of MapRange | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapRange | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of Method | file://:0:0:0:0 | [summary] to write: return (return[0]) in Method | -| file://:0:0:0:0 | parameter -1 of MethodByName | file://:0:0:0:0 | [summary] to write: return (return[0]) in MethodByName | -| file://:0:0:0:0 | parameter -1 of Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | -| file://:0:0:0:0 | parameter -1 of Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | -| file://:0:0:0:0 | parameter -1 of Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | -| file://:0:0:0:0 | parameter -1 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter -1 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter -1 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter -1 of Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | -| file://:0:0:0:0 | parameter -1 of Password | file://:0:0:0:0 | [summary] to write: return (return[0]) in Password | -| file://:0:0:0:0 | parameter -1 of Pointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in Pointer | -| file://:0:0:0:0 | parameter -1 of Port | file://:0:0:0:0 | [summary] to write: return (return[0]) in Port | -| file://:0:0:0:0 | parameter -1 of Query | file://:0:0:0:0 | [summary] to write: return (return[0]) in Query | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | -| file://:0:0:0:0 | parameter -1 of ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | -| file://:0:0:0:0 | parameter -1 of ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | -| file://:0:0:0:0 | parameter -1 of ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | -| file://:0:0:0:0 | parameter -1 of ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | -| file://:0:0:0:0 | parameter -1 of ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | -| file://:0:0:0:0 | parameter -1 of ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | -| file://:0:0:0:0 | parameter -1 of ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | -| file://:0:0:0:0 | parameter -1 of Recv | file://:0:0:0:0 | [summary] to write: return (return[0]) in Recv | -| file://:0:0:0:0 | parameter -1 of RequestURI | file://:0:0:0:0 | [summary] to write: return (return[0]) in RequestURI | -| file://:0:0:0:0 | parameter -1 of ResolveReference | file://:0:0:0:0 | [summary] to write: return (return[0]) in ResolveReference | -| file://:0:0:0:0 | parameter -1 of Slice | file://:0:0:0:0 | [summary] to write: return (return[0]) in Slice | -| file://:0:0:0:0 | parameter -1 of Slice3 | file://:0:0:0:0 | [summary] to write: return (return[0]) in Slice3 | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | -| file://:0:0:0:0 | parameter -1 of Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | -| file://:0:0:0:0 | parameter -1 of Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | -| file://:0:0:0:0 | parameter -1 of Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | -| file://:0:0:0:0 | parameter -1 of Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | -| file://:0:0:0:0 | parameter -1 of Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | -| file://:0:0:0:0 | parameter -1 of Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | -| file://:0:0:0:0 | parameter -1 of TryRecv | file://:0:0:0:0 | [summary] to write: return (return[0]) in TryRecv | -| file://:0:0:0:0 | parameter -1 of UnsafeAddr | file://:0:0:0:0 | [summary] to write: return (return[0]) in UnsafeAddr | -| file://:0:0:0:0 | parameter -1 of Username | file://:0:0:0:0 | [summary] to write: return (return[0]) in Username | -| file://:0:0:0:0 | parameter -1 of Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] 0 in AppendQuote | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuote | +| file://:0:0:0:0 | [summary param] 0 in AppendQuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToASCII | +| file://:0:0:0:0 | [summary param] 0 in AppendQuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToGraphic | +| file://:0:0:0:0 | [summary param] 0 in AppendSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendSlice | +| file://:0:0:0:0 | [summary param] 0 in As | file://:0:0:0:0 | [summary] to write: argument 1 in As | +| file://:0:0:0:0 | [summary param] 0 in Base | file://:0:0:0:0 | [summary] to write: return (return[0]) in Base | +| file://:0:0:0:0 | [summary param] 0 in BytePtrFromString | file://:0:0:0:0 | [summary] to write: return (return[0]) in BytePtrFromString | +| file://:0:0:0:0 | [summary param] 0 in ByteSliceFromString | file://:0:0:0:0 | [summary] to write: return (return[0]) in ByteSliceFromString | +| file://:0:0:0:0 | [summary param] 0 in Clean | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clean | +| file://:0:0:0:0 | [summary param] 0 in Dir | file://:0:0:0:0 | [summary] to write: return (return[0]) in Dir | +| file://:0:0:0:0 | [summary param] 0 in Expand | file://:0:0:0:0 | [summary] to write: return (return[0]) in Expand | +| file://:0:0:0:0 | [summary param] 0 in ExpandEnv | file://:0:0:0:0 | [summary] to write: return (return[0]) in ExpandEnv | +| file://:0:0:0:0 | [summary param] 0 in Ext | file://:0:0:0:0 | [summary] to write: return (return[0]) in Ext | +| file://:0:0:0:0 | [summary param] 0 in Fields | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fields | +| file://:0:0:0:0 | [summary param] 0 in FieldsFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldsFunc | +| file://:0:0:0:0 | [summary param] 0 in FileInfoToDirEntry | file://:0:0:0:0 | [summary] to write: return (return[0]) in FileInfoToDirEntry | +| file://:0:0:0:0 | [summary param] 0 in Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | +| file://:0:0:0:0 | [summary param] 0 in Indirect | file://:0:0:0:0 | [summary] to write: return (return[0]) in Indirect | +| file://:0:0:0:0 | [summary param] 0 in Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | +| file://:0:0:0:0 | [summary param] 0 in LimitReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in LimitReader | +| file://:0:0:0:0 | [summary param] 0 in LoadOrStore | file://:0:0:0:0 | [summary] to write: argument -1 in LoadOrStore | +| file://:0:0:0:0 | [summary param] 0 in LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | +| file://:0:0:0:0 | [summary param] 0 in LoadPointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadPointer | +| file://:0:0:0:0 | [summary param] 0 in LoadUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadUintptr | +| file://:0:0:0:0 | [summary param] 0 in New | file://:0:0:0:0 | [summary] to write: return (return[0]) in New | +| file://:0:0:0:0 | [summary param] 0 in NewFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewFile | +| file://:0:0:0:0 | [summary param] 0 in NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | +| file://:0:0:0:0 | [summary param] 0 in NewSectionReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewSectionReader | +| file://:0:0:0:0 | [summary param] 0 in NopCloser | file://:0:0:0:0 | [summary] to write: return (return[0]) in NopCloser | +| file://:0:0:0:0 | [summary param] 0 in Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | +| file://:0:0:0:0 | [summary param] 0 in Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | +| file://:0:0:0:0 | [summary param] 0 in ParseQuery | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseQuery | +| file://:0:0:0:0 | [summary param] 0 in ParseRequestURI | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseRequestURI | +| file://:0:0:0:0 | [summary param] 0 in PathEscape | file://:0:0:0:0 | [summary] to write: return (return[0]) in PathEscape | +| file://:0:0:0:0 | [summary param] 0 in PathUnescape | file://:0:0:0:0 | [summary] to write: return (return[0]) in PathUnescape | +| file://:0:0:0:0 | [summary param] 0 in Put | file://:0:0:0:0 | [summary] to write: argument -1 in Put | +| file://:0:0:0:0 | [summary param] 0 in QueryEscape | file://:0:0:0:0 | [summary] to write: return (return[0]) in QueryEscape | +| file://:0:0:0:0 | [summary param] 0 in QueryUnescape | file://:0:0:0:0 | [summary] to write: return (return[0]) in QueryUnescape | +| file://:0:0:0:0 | [summary param] 0 in Quote | file://:0:0:0:0 | [summary] to write: return (return[0]) in Quote | +| file://:0:0:0:0 | [summary param] 0 in QuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuoteToASCII | +| file://:0:0:0:0 | [summary param] 0 in QuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuoteToGraphic | +| file://:0:0:0:0 | [summary param] 0 in QuotedPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuotedPrefix | +| file://:0:0:0:0 | [summary param] 0 in ReadAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadAll | +| file://:0:0:0:0 | [summary param] 0 in ReadAtLeast | file://:0:0:0:0 | [summary] to write: argument 1 in ReadAtLeast | +| file://:0:0:0:0 | [summary param] 0 in ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | +| file://:0:0:0:0 | [summary param] 0 in ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFull | file://:0:0:0:0 | [summary] to write: argument 1 in ReadFull | +| file://:0:0:0:0 | [summary param] 0 in Repeat | file://:0:0:0:0 | [summary] to write: return (return[0]) in Repeat | +| file://:0:0:0:0 | [summary param] 0 in Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | +| file://:0:0:0:0 | [summary param] 0 in Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | +| file://:0:0:0:0 | [summary param] 0 in ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | +| file://:0:0:0:0 | [summary param] 0 in Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | +| file://:0:0:0:0 | [summary param] 0 in ResolveReference | file://:0:0:0:0 | [summary] to write: return (return[0]) in ResolveReference | +| file://:0:0:0:0 | [summary param] 0 in Reverse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Reverse | +| file://:0:0:0:0 | [summary param] 0 in Send | file://:0:0:0:0 | [summary] to write: argument -1 in Send | +| file://:0:0:0:0 | [summary param] 0 in Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | +| file://:0:0:0:0 | [summary param] 0 in SetBytes | file://:0:0:0:0 | [summary] to write: argument -1 in SetBytes | +| file://:0:0:0:0 | [summary param] 0 in SetMapIndex | file://:0:0:0:0 | [summary] to write: argument -1 in SetMapIndex | +| file://:0:0:0:0 | [summary param] 0 in SetPointer | file://:0:0:0:0 | [summary] to write: argument -1 in SetPointer | +| file://:0:0:0:0 | [summary param] 0 in SetString | file://:0:0:0:0 | [summary] to write: argument -1 in SetString | +| file://:0:0:0:0 | [summary param] 0 in Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | +| file://:0:0:0:0 | [summary param] 0 in Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | +| file://:0:0:0:0 | [summary param] 0 in Split | file://:0:0:0:0 | [summary] to write: return (return[1]) in Split | +| file://:0:0:0:0 | [summary param] 0 in SplitAfter | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfter | +| file://:0:0:0:0 | [summary param] 0 in SplitAfterN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfterN | +| file://:0:0:0:0 | [summary param] 0 in SplitN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitN | +| file://:0:0:0:0 | [summary param] 0 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 0 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 0 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 0 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 0 in StringBytePtr | file://:0:0:0:0 | [summary] to write: return (return[0]) in StringBytePtr | +| file://:0:0:0:0 | [summary param] 0 in StringByteSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in StringByteSlice | +| file://:0:0:0:0 | [summary param] 0 in Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | +| file://:0:0:0:0 | [summary param] 0 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 0 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 0 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 0 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 0 in SwapPointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in SwapPointer | +| file://:0:0:0:0 | [summary param] 0 in SwapUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in SwapUintptr | +| file://:0:0:0:0 | [summary param] 0 in TeeReader | file://:0:0:0:0 | [summary] to write: argument 1 in TeeReader | +| file://:0:0:0:0 | [summary param] 0 in TeeReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in TeeReader | +| file://:0:0:0:0 | [summary param] 0 in Title | file://:0:0:0:0 | [summary] to write: return (return[0]) in Title | +| file://:0:0:0:0 | [summary param] 0 in ToLower | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLower | +| file://:0:0:0:0 | [summary param] 0 in ToTitle | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitle | +| file://:0:0:0:0 | [summary param] 0 in ToUpper | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpper | +| file://:0:0:0:0 | [summary param] 0 in ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | +| file://:0:0:0:0 | [summary param] 0 in Trim | file://:0:0:0:0 | [summary] to write: return (return[0]) in Trim | +| file://:0:0:0:0 | [summary param] 0 in TrimFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimFunc | +| file://:0:0:0:0 | [summary param] 0 in TrimLeft | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeft | +| file://:0:0:0:0 | [summary param] 0 in TrimLeftFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeftFunc | +| file://:0:0:0:0 | [summary param] 0 in TrimPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimPrefix | +| file://:0:0:0:0 | [summary param] 0 in TrimRight | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRight | +| file://:0:0:0:0 | [summary param] 0 in TrimRightFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRightFunc | +| file://:0:0:0:0 | [summary param] 0 in TrimSpace | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSpace | +| file://:0:0:0:0 | [summary param] 0 in TrimSuffix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSuffix | +| file://:0:0:0:0 | [summary param] 0 in TrySend | file://:0:0:0:0 | [summary] to write: argument -1 in TrySend | +| file://:0:0:0:0 | [summary param] 0 in Unquote | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unquote | +| file://:0:0:0:0 | [summary param] 0 in UnquoteChar | file://:0:0:0:0 | [summary] to write: return (return[2]) in UnquoteChar | +| file://:0:0:0:0 | [summary param] 0 in Unwrap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unwrap | +| file://:0:0:0:0 | [summary param] 0 in User | file://:0:0:0:0 | [summary] to write: return (return[0]) in User | +| file://:0:0:0:0 | [summary param] 0 in UserPassword | file://:0:0:0:0 | [summary] to write: return (return[0]) in UserPassword | +| file://:0:0:0:0 | [summary param] 0 in ValueOf | file://:0:0:0:0 | [summary] to write: return (return[0]) in ValueOf | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | +| file://:0:0:0:0 | [summary param] 0 in WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | +| file://:0:0:0:0 | [summary param] 0 in WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 1 in AddUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in AddUintptr | +| file://:0:0:0:0 | [summary param] 1 in AddUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in AddUintptr | +| file://:0:0:0:0 | [summary param] 1 in AppendQuote | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuote | +| file://:0:0:0:0 | [summary param] 1 in AppendQuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToASCII | +| file://:0:0:0:0 | [summary param] 1 in AppendQuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToGraphic | +| file://:0:0:0:0 | [summary param] 1 in AppendSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendSlice | +| file://:0:0:0:0 | [summary param] 1 in Copy | file://:0:0:0:0 | [summary] to write: argument 0 in Copy | +| file://:0:0:0:0 | [summary param] 1 in Copy | file://:0:0:0:0 | [summary] to write: argument 0 in Copy | +| file://:0:0:0:0 | [summary param] 1 in CopyBuffer | file://:0:0:0:0 | [summary] to write: argument 0 in CopyBuffer | +| file://:0:0:0:0 | [summary param] 1 in CopyN | file://:0:0:0:0 | [summary] to write: argument 0 in CopyN | +| file://:0:0:0:0 | [summary param] 1 in Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | +| file://:0:0:0:0 | [summary param] 1 in LoadOrStore | file://:0:0:0:0 | [summary] to write: argument -1 in LoadOrStore | +| file://:0:0:0:0 | [summary param] 1 in LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | +| file://:0:0:0:0 | [summary param] 1 in Map | file://:0:0:0:0 | [summary] to write: return (return[0]) in Map | +| file://:0:0:0:0 | [summary param] 1 in SetMapIndex | file://:0:0:0:0 | [summary] to write: argument -1 in SetMapIndex | +| file://:0:0:0:0 | [summary param] 1 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 1 in StorePointer | file://:0:0:0:0 | [summary] to write: argument 0 in StorePointer | +| file://:0:0:0:0 | [summary param] 1 in StoreUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in StoreUintptr | +| file://:0:0:0:0 | [summary param] 1 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 1 in SwapPointer | file://:0:0:0:0 | [summary] to write: argument 0 in SwapPointer | +| file://:0:0:0:0 | [summary param] 1 in SwapUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in SwapUintptr | +| file://:0:0:0:0 | [summary param] 1 in ToLowerSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLowerSpecial | +| file://:0:0:0:0 | [summary param] 1 in ToTitleSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitleSpecial | +| file://:0:0:0:0 | [summary param] 1 in ToUpperSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpperSpecial | +| file://:0:0:0:0 | [summary param] 1 in ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | +| file://:0:0:0:0 | [summary param] 1 in UserPassword | file://:0:0:0:0 | [summary] to write: return (return[0]) in UserPassword | +| file://:0:0:0:0 | [summary param] 1 in WriteString | file://:0:0:0:0 | [summary] to write: argument 0 in WriteString | +| file://:0:0:0:0 | [summary param] 1 in WriteString | file://:0:0:0:0 | [summary] to write: argument 0 in WriteString | +| file://:0:0:0:0 | [summary param] 2 in CompareAndSwap | file://:0:0:0:0 | [summary] to write: argument -1 in CompareAndSwap | +| file://:0:0:0:0 | [summary param] 2 in CompareAndSwapPointer | file://:0:0:0:0 | [summary] to write: argument 0 in CompareAndSwapPointer | +| file://:0:0:0:0 | [summary param] 2 in CompareAndSwapUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in CompareAndSwapUintptr | +| file://:0:0:0:0 | [summary param] 2 in Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | +| file://:0:0:0:0 | [summary param] 2 in ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | +| file://:0:0:0:0 | [summary param] -1 in Addr | file://:0:0:0:0 | [summary] to write: return (return[0]) in Addr | +| file://:0:0:0:0 | [summary param] -1 in Bytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Bytes | +| file://:0:0:0:0 | [summary param] -1 in Convert | file://:0:0:0:0 | [summary] to write: return (return[0]) in Convert | +| file://:0:0:0:0 | [summary param] -1 in Elem | file://:0:0:0:0 | [summary] to write: return (return[0]) in Elem | +| file://:0:0:0:0 | [summary param] -1 in Encode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Encode | +| file://:0:0:0:0 | [summary param] -1 in EscapedPath | file://:0:0:0:0 | [summary] to write: return (return[0]) in EscapedPath | +| file://:0:0:0:0 | [summary param] -1 in Fd | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fd | +| file://:0:0:0:0 | [summary param] -1 in Field | file://:0:0:0:0 | [summary] to write: return (return[0]) in Field | +| file://:0:0:0:0 | [summary param] -1 in FieldByIndex | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByIndex | +| file://:0:0:0:0 | [summary param] -1 in FieldByName | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByName | +| file://:0:0:0:0 | [summary param] -1 in FieldByNameFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByNameFunc | +| file://:0:0:0:0 | [summary param] -1 in Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | +| file://:0:0:0:0 | [summary param] -1 in Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | +| file://:0:0:0:0 | [summary param] -1 in Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | +| file://:0:0:0:0 | [summary param] -1 in Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | +| file://:0:0:0:0 | [summary param] -1 in Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in Hostname | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hostname | +| file://:0:0:0:0 | [summary param] -1 in Index | file://:0:0:0:0 | [summary] to write: return (return[0]) in Index | +| file://:0:0:0:0 | [summary param] -1 in Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | +| file://:0:0:0:0 | [summary param] -1 in Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | +| file://:0:0:0:0 | [summary param] -1 in Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | +| file://:0:0:0:0 | [summary param] -1 in Interface | file://:0:0:0:0 | [summary] to write: return (return[0]) in Interface | +| file://:0:0:0:0 | [summary param] -1 in InterfaceData | file://:0:0:0:0 | [summary] to write: return (return[0]) in InterfaceData | +| file://:0:0:0:0 | [summary param] -1 in Key | file://:0:0:0:0 | [summary] to write: return (return[0]) in Key | +| file://:0:0:0:0 | [summary param] -1 in Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | +| file://:0:0:0:0 | [summary param] -1 in Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | +| file://:0:0:0:0 | [summary param] -1 in Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | +| file://:0:0:0:0 | [summary param] -1 in Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | +| file://:0:0:0:0 | [summary param] -1 in LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | +| file://:0:0:0:0 | [summary param] -1 in Lookup | file://:0:0:0:0 | [summary] to write: return (return[0]) in Lookup | +| file://:0:0:0:0 | [summary param] -1 in MapIndex | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapIndex | +| file://:0:0:0:0 | [summary param] -1 in MapKeys | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapKeys | +| file://:0:0:0:0 | [summary param] -1 in MapRange | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapRange | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in Method | file://:0:0:0:0 | [summary] to write: return (return[0]) in Method | +| file://:0:0:0:0 | [summary param] -1 in MethodByName | file://:0:0:0:0 | [summary] to write: return (return[0]) in MethodByName | +| file://:0:0:0:0 | [summary param] -1 in Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | +| file://:0:0:0:0 | [summary param] -1 in Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | +| file://:0:0:0:0 | [summary param] -1 in Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | +| file://:0:0:0:0 | [summary param] -1 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] -1 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] -1 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] -1 in Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | +| file://:0:0:0:0 | [summary param] -1 in Password | file://:0:0:0:0 | [summary] to write: return (return[0]) in Password | +| file://:0:0:0:0 | [summary param] -1 in Pointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in Pointer | +| file://:0:0:0:0 | [summary param] -1 in Port | file://:0:0:0:0 | [summary] to write: return (return[0]) in Port | +| file://:0:0:0:0 | [summary param] -1 in Query | file://:0:0:0:0 | [summary] to write: return (return[0]) in Query | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | +| file://:0:0:0:0 | [summary param] -1 in ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | +| file://:0:0:0:0 | [summary param] -1 in ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | +| file://:0:0:0:0 | [summary param] -1 in ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | +| file://:0:0:0:0 | [summary param] -1 in ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | +| file://:0:0:0:0 | [summary param] -1 in ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | +| file://:0:0:0:0 | [summary param] -1 in ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | +| file://:0:0:0:0 | [summary param] -1 in ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | +| file://:0:0:0:0 | [summary param] -1 in Recv | file://:0:0:0:0 | [summary] to write: return (return[0]) in Recv | +| file://:0:0:0:0 | [summary param] -1 in RequestURI | file://:0:0:0:0 | [summary] to write: return (return[0]) in RequestURI | +| file://:0:0:0:0 | [summary param] -1 in ResolveReference | file://:0:0:0:0 | [summary] to write: return (return[0]) in ResolveReference | +| file://:0:0:0:0 | [summary param] -1 in Slice | file://:0:0:0:0 | [summary] to write: return (return[0]) in Slice | +| file://:0:0:0:0 | [summary param] -1 in Slice3 | file://:0:0:0:0 | [summary] to write: return (return[0]) in Slice3 | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | +| file://:0:0:0:0 | [summary param] -1 in Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | +| file://:0:0:0:0 | [summary param] -1 in Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | +| file://:0:0:0:0 | [summary param] -1 in Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | +| file://:0:0:0:0 | [summary param] -1 in Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | +| file://:0:0:0:0 | [summary param] -1 in Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | +| file://:0:0:0:0 | [summary param] -1 in Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | +| file://:0:0:0:0 | [summary param] -1 in TryRecv | file://:0:0:0:0 | [summary] to write: return (return[0]) in TryRecv | +| file://:0:0:0:0 | [summary param] -1 in UnsafeAddr | file://:0:0:0:0 | [summary] to write: return (return[0]) in UnsafeAddr | +| file://:0:0:0:0 | [summary param] -1 in Username | file://:0:0:0:0 | [summary] to write: return (return[0]) in Username | +| file://:0:0:0:0 | [summary param] -1 in Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | | main.go:26:11:26:17 | type assertion | main.go:26:2:26:17 | ... := ...[0] | | main.go:26:11:26:17 | type assertion | main.go:26:2:26:17 | ... := ...[1] | | main.go:38:13:38:13 | 1 | main.go:38:7:38:20 | slice literal | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/Flows.expected b/go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/Flows.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/Flows.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/Flows.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/Flows.ql b/go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/Flows.ql index 881d262f400..1b27b27d6dc 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/Flows.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/GenericFunctionsAndTypes/Flows.ql @@ -1,2 +1,3 @@ import go import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.expected b/go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.ql b/go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.ql index 2b11d284076..d5bc1496b3d 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/GuardingFunctions/test.ql @@ -23,12 +23,10 @@ class TestConfig extends DataFlow::Configuration { } } -class DataFlowTest extends InlineExpectationsTest { - DataFlowTest() { this = "DataFlowTest" } +module DataFlowTest implements TestSig { + string getARelevantTag() { result = "dataflow" } - override string getARelevantTag() { result = "dataflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "dataflow" and exists(DataFlow::Node sink | any(TestConfig c).hasFlow(_, sink) | element = sink.toString() and @@ -38,3 +36,5 @@ class DataFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.expected b/go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.ql b/go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.ql index f75495313d4..aa9b9c3e074 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/ListOfConstantsSanitizerGuards/test.ql @@ -13,12 +13,10 @@ class TestConfig extends TaintTracking::Configuration { } } -class DataFlowTest extends InlineExpectationsTest { - DataFlowTest() { this = "DataFlowTest" } +module DataFlowTest implements TestSig { + string getARelevantTag() { result = "dataflow" } - override string getARelevantTag() { result = "dataflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "dataflow" and exists(DataFlow::Node sink | any(TestConfig c).hasFlow(_, sink) | element = sink.toString() and @@ -28,3 +26,5 @@ class DataFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/DataFlowConfig.expected b/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/DataFlowConfig.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/DataFlowConfig.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/DataFlowConfig.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/DataFlowConfig.ql b/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/DataFlowConfig.ql index 90c0878ff8d..8222ae35d87 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/DataFlowConfig.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/DataFlowConfig.ql @@ -21,12 +21,10 @@ class TestConfig extends DataFlow::Configuration { } } -class PromotedFieldsTest extends InlineExpectationsTest { - PromotedFieldsTest() { this = "PromotedFieldsTest" } +module PromotedFieldsTest implements TestSig { + string getARelevantTag() { result = "promotedfields" } - override string getARelevantTag() { result = "promotedfields" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(TestConfig config, DataFlow::PathNode sink | config.hasFlowPath(_, sink) and sink.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -37,3 +35,5 @@ class PromotedFieldsTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/DataFlowConfig.expected b/go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/DataFlowConfig.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/DataFlowConfig.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/DataFlowConfig.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/DataFlowConfig.ql b/go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/DataFlowConfig.ql index f99f7775a3b..fac89a50650 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/DataFlowConfig.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/PromotedMethods/DataFlowConfig.ql @@ -21,12 +21,10 @@ class TestConfig extends DataFlow::Configuration { } } -class PromotedMethodsTest extends InlineExpectationsTest { - PromotedMethodsTest() { this = "PromotedMethodsTest" } +module PromotedMethodsTest implements TestSig { + string getARelevantTag() { result = "promotedmethods" } - override string getARelevantTag() { result = "promotedmethods" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(TestConfig config, DataFlow::Node source, DataFlow::Node sink | config.hasFlow(source, sink) | @@ -38,3 +36,5 @@ class PromotedMethodsTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/DataFlow.expected b/go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/DataFlow.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/DataFlow.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/DataFlow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/DataFlow.ql b/go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/DataFlow.ql index edabb61bf5d..9412fb13486 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/DataFlow.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/TypeAssertions/DataFlow.ql @@ -13,12 +13,10 @@ class Configuration extends DataFlow::Configuration { } } -class DataFlowTest extends InlineExpectationsTest { - DataFlowTest() { this = "DataFlowTest" } +module DataFlowTest implements TestSig { + string getARelevantTag() { result = "dataflow" } - override string getARelevantTag() { result = "dataflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "dataflow" and exists(DataFlow::Node sink | any(Configuration c).hasFlow(_, sink) | element = sink.toString() and @@ -28,3 +26,5 @@ class DataFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/Flows.expected b/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/Flows.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/Flows.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/Flows.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/Flows.ql b/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/Flows.ql index e6e99b0e6c2..500572f5d45 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/Flows.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/VarArgs/Flows.ql @@ -13,12 +13,10 @@ class DataConfiguration extends DataFlow::Configuration { } } -class DataFlowTest extends InlineExpectationsTest { - DataFlowTest() { this = "DataFlowTest" } +module DataFlowTest implements TestSig { + string getARelevantTag() { result = "dataflow" } - override string getARelevantTag() { result = "dataflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "dataflow" and exists(DataFlow::Node sink | any(DataConfiguration c).hasFlow(_, sink) | element = sink.toString() and @@ -41,12 +39,10 @@ class TaintConfiguration extends TaintTracking::Configuration { } } -class TaintFlowTest extends InlineExpectationsTest { - TaintFlowTest() { this = "TaintFlowTest" } +module TaintFlowTest implements TestSig { + string getARelevantTag() { result = "taintflow" } - override string getARelevantTag() { result = "taintflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "taintflow" and exists(DataFlow::Node sink | any(TaintConfiguration c).hasFlow(_, sink) | element = sink.toString() and @@ -56,3 +52,5 @@ class TaintFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/Flows.expected b/go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/Flows.expected index 81332464f79..105b7026d0c 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/Flows.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/Flows.expected @@ -1,2 +1,3 @@ failures invalidModelRow +testFailures diff --git a/go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/Flows.ql b/go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/Flows.ql index 87e9b301148..17194265598 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/Flows.ql +++ b/go/ql/test/library-tests/semmle/go/dataflow/VarArgsWithFunctionModels/Flows.ql @@ -43,12 +43,10 @@ class DataConfiguration extends DataFlow::Configuration { } } -class DataFlowTest extends InlineExpectationsTest { - DataFlowTest() { this = "DataFlowTest" } +module DataFlowTest implements TestSig { + string getARelevantTag() { result = "dataflow" } - override string getARelevantTag() { result = "dataflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "dataflow" and exists(DataFlow::Node sink | any(DataConfiguration c).hasFlow(_, sink) | element = sink.toString() and @@ -71,12 +69,10 @@ class TaintConfiguration extends TaintTracking::Configuration { } } -class TaintFlowTest extends InlineExpectationsTest { - TaintFlowTest() { this = "TaintFlowTest" } +module TaintFlowTest implements TestSig { + string getARelevantTag() { result = "taintflow" } - override string getARelevantTag() { result = "taintflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "taintflow" and exists(DataFlow::Node sink | any(TaintConfiguration c).hasFlow(_, sink) | element = sink.toString() and @@ -86,9 +82,5 @@ class TaintFlowTest extends InlineExpectationsTest { ) } } -// from TaintConfiguration cfg, DataFlow::PartialPathNode source, DataFlow::PartialPathNode sink -// where -// cfg.hasPartialFlow(source, sink, _) -// and -// source.getNode().hasLocationInfo(_, 22, _, _, _) -// select sink, source, sink, "Partial flow from unsanitized user data" + +import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Beego/ReflectedXss.expected b/go/ql/test/library-tests/semmle/go/frameworks/Beego/ReflectedXss.expected index 2d29d2b2357..29b131c367a 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Beego/ReflectedXss.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Beego/ReflectedXss.expected @@ -47,7 +47,7 @@ edges | test.go:240:15:240:36 | call to GetString | test.go:243:21:243:29 | untrusted | | test.go:253:23:253:44 | call to GetCookie | test.go:253:16:253:45 | type conversion | | test.go:264:62:264:83 | call to GetCookie | test.go:264:55:264:84 | type conversion | -| test.go:269:2:269:40 | ... := ...[0] | test.go:277:21:277:61 | call to GetDisplayString | +| test.go:269:2:269:40 | ... := ...[0] | test.go:277:44:277:60 | selection of Filename | | test.go:269:2:269:40 | ... := ...[0] | test.go:278:38:278:49 | genericFiles | | test.go:269:2:269:40 | ... := ...[0] | test.go:279:37:279:48 | genericFiles | | test.go:269:2:269:40 | ... := ...[0] | test.go:285:4:285:15 | genericFiles | @@ -61,6 +61,7 @@ edges | test.go:269:2:269:40 | ... := ...[0] | test.go:295:39:295:50 | genericFiles | | test.go:269:2:269:40 | ... := ...[0] | test.go:296:40:296:51 | genericFiles | | test.go:269:2:269:40 | ... := ...[0] | test.go:297:39:297:50 | genericFiles | +| test.go:277:44:277:60 | selection of Filename | test.go:277:21:277:61 | call to GetDisplayString | | test.go:278:21:278:53 | call to SliceChunk | test.go:278:21:278:92 | selection of Filename | | test.go:278:38:278:49 | genericFiles | test.go:278:21:278:53 | call to SliceChunk | | test.go:279:21:279:60 | call to SliceDiff | test.go:279:21:279:96 | selection of Filename | @@ -177,6 +178,7 @@ nodes | test.go:264:62:264:83 | call to GetCookie | semmle.label | call to GetCookie | | test.go:269:2:269:40 | ... := ...[0] | semmle.label | ... := ...[0] | | test.go:277:21:277:61 | call to GetDisplayString | semmle.label | call to GetDisplayString | +| test.go:277:44:277:60 | selection of Filename | semmle.label | selection of Filename | | test.go:278:21:278:53 | call to SliceChunk | semmle.label | call to SliceChunk | | test.go:278:21:278:92 | selection of Filename | semmle.label | selection of Filename | | test.go:278:38:278:49 | genericFiles | semmle.label | genericFiles | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.expected b/go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.ql b/go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.ql index 535fb6dd627..0b1bef94328 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/CouchbaseV1/test.ql @@ -2,12 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import semmle.go.security.SqlInjection -class SqlInjectionTest extends InlineExpectationsTest { - SqlInjectionTest() { this = "SqlInjectionTest" } +module SqlInjectionTest implements TestSig { + string getARelevantTag() { result = "sqlinjection" } - override string getARelevantTag() { result = "sqlinjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "sqlinjection" and exists(DataFlow::Node sink | any(SqlInjection::Configuration c).hasFlow(_, sink) | element = sink.toString() and @@ -17,3 +15,5 @@ class SqlInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/test.expected b/go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/test.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/test.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/test.ql b/go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/test.ql index e8c68c1c3e1..2ffca8a692a 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/test.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/ElazarlGoproxy/test.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class UntrustedFlowSourceTest extends InlineExpectationsTest { - UntrustedFlowSourceTest() { this = "untrustedflowsource" } +module UntrustedFlowSourceTest implements TestSig { + string getARelevantTag() { result = "untrustedflowsource" } - override string getARelevantTag() { result = "untrustedflowsource" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "untrustedflowsource" and value = element and exists(UntrustedFlowSource src | value = "\"" + src.toString() + "\"" | @@ -16,12 +14,10 @@ class UntrustedFlowSourceTest extends InlineExpectationsTest { } } -class HeaderWriteTest extends InlineExpectationsTest { - HeaderWriteTest() { this = "headerwrite" } +module HeaderWriteTest implements TestSig { + string getARelevantTag() { result = "headerwrite" } - override string getARelevantTag() { result = "headerwrite" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "headerwrite" and exists(Http::HeaderWrite hw, string name, string val | element = hw.toString() | hw.definesHeader(name, val) and @@ -32,12 +28,10 @@ class HeaderWriteTest extends InlineExpectationsTest { } } -class LoggerTest extends InlineExpectationsTest { - LoggerTest() { this = "LoggerTest" } +module LoggerTest implements TestSig { + string getARelevantTag() { result = "logger" } - override string getARelevantTag() { result = "logger" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(LoggerCall log | log.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and @@ -48,32 +42,32 @@ class LoggerTest extends InlineExpectationsTest { } } -class Config extends TaintTracking::Configuration { - Config() { this = "goproxy config" } - - override predicate isSource(DataFlow::Node n) { +module Config implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node n) { n = any(DataFlow::CallNode c | c.getCalleeName().matches("tainted%")).getResult() } - override predicate isSink(DataFlow::Node n) { + predicate isSink(DataFlow::Node n) { n = any(DataFlow::CallNode cn | cn.getTarget().getName() = "sink").getAnArgument() } } -class TaintFlow extends InlineExpectationsTest { - TaintFlow() { this = "goproxy flow" } +module Flow = TaintTracking::Global; - override string getARelevantTag() { result = "taintflow" } +module TaintFlow implements TestSig { + string getARelevantTag() { result = "taintflow" } - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "taintflow" and value = "" and element = "" and - exists(Config c, DataFlow::Node toNode | + exists(DataFlow::Node toNode | toNode .hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - c.hasFlowTo(toNode) + Flow::flowTo(toNode) ) } } + +import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/TaintFlows.expected b/go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/TaintFlows.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/TaintFlows.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/TaintFlows.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/TaintFlows.ql b/go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/TaintFlows.ql index 0d411503e34..998afbf88b5 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/TaintFlows.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/EvanphxJsonPatch/TaintFlows.ql @@ -16,12 +16,10 @@ class Configuration extends TaintTracking::Configuration { } } -class TaintFlowTest extends InlineExpectationsTest { - TaintFlowTest() { this = "TaintFlowTest" } +module TaintFlowTest implements TestSig { + string getARelevantTag() { result = "taintflow" } - override string getARelevantTag() { result = "taintflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "taintflow" and exists(DataFlow::Node sink | any(Configuration c).hasFlow(_, sink) | element = sink.toString() and @@ -31,3 +29,5 @@ class TaintFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/frameworks/GoKit/untrustedflowsource.expected b/go/ql/test/library-tests/semmle/go/frameworks/GoKit/untrustedflowsource.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/GoKit/untrustedflowsource.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/GoKit/untrustedflowsource.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/GoKit/untrustedflowsource.ql b/go/ql/test/library-tests/semmle/go/frameworks/GoKit/untrustedflowsource.ql index 7cffdcb78ba..ff95de5b731 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/GoKit/untrustedflowsource.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/GoKit/untrustedflowsource.ql @@ -2,12 +2,10 @@ import go import semmle.go.frameworks.GoKit import TestUtilities.InlineExpectationsTest -class UntrustedFlowSourceTest extends InlineExpectationsTest { - UntrustedFlowSourceTest() { this = "untrustedflowsourcetest" } +module UntrustedFlowSourceTest implements TestSig { + string getARelevantTag() { result = "source" } - override string getARelevantTag() { result = "source" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(UntrustedFlowSource source | source .hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -18,3 +16,5 @@ class UntrustedFlowSourceTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/TaintFlowsInline.expected b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/TaintFlowsInline.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/TaintFlowsInline.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/TaintFlowsInline.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/TaintFlowsInline.ql b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/TaintFlowsInline.ql index 8a9292957b3..793308837c1 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/TaintFlowsInline.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApiCoreV1/TaintFlowsInline.ql @@ -21,12 +21,10 @@ class TestConfig extends TaintTracking::Configuration { } } -class K8sIoApiCoreV1Test extends InlineExpectationsTest { - K8sIoApiCoreV1Test() { this = "K8sIoApiCoreV1Test" } +module K8sIoApiCoreV1Test implements TestSig { + string getARelevantTag() { result = "KsIoApiCoreV" } - override string getARelevantTag() { result = "KsIoApiCoreV" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(TestConfig config, DataFlow::PathNode sink | config.hasFlowPath(_, sink) and sink.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -37,3 +35,5 @@ class K8sIoApiCoreV1Test extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/TaintFlowsInline.expected b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/TaintFlowsInline.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/TaintFlowsInline.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/TaintFlowsInline.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/TaintFlowsInline.ql b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/TaintFlowsInline.ql index e9b2c13ccca..901dcb9eaf5 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/TaintFlowsInline.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoApimachineryPkgRuntime/TaintFlowsInline.ql @@ -21,12 +21,10 @@ class TestConfig extends TaintTracking::Configuration { } } -class K8sIoApimachineryPkgRuntimeTest extends InlineExpectationsTest { - K8sIoApimachineryPkgRuntimeTest() { this = "KsIoApimachineryPkgRuntimeTest" } +module K8sIoApimachineryPkgRuntimeTest implements TestSig { + string getARelevantTag() { result = "KsIoApimachineryPkgRuntime" } - override string getARelevantTag() { result = "KsIoApimachineryPkgRuntime" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(TestConfig config, DataFlow::PathNode sink | config.hasFlowPath(_, sink) and sink.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -37,3 +35,5 @@ class K8sIoApimachineryPkgRuntimeTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/SecretInterfaceSource.expected b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/SecretInterfaceSource.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/SecretInterfaceSource.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/SecretInterfaceSource.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/SecretInterfaceSource.ql b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/SecretInterfaceSource.ql index 1650e263252..be38cebd11b 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/SecretInterfaceSource.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/K8sIoClientGo/SecretInterfaceSource.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class K8sIoApimachineryPkgRuntimeTest extends InlineExpectationsTest { - K8sIoApimachineryPkgRuntimeTest() { this = "KsIoClientGoTest" } +module K8sIoApimachineryPkgRuntimeTest implements TestSig { + string getARelevantTag() { result = "KsIoClientGo" } - override string getARelevantTag() { result = "KsIoClientGo" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(K8sIoClientGo::SecretInterfaceSource source | source .hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -17,3 +15,5 @@ class K8sIoApimachineryPkgRuntimeTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/frameworks/NoSQL/Query.expected b/go/ql/test/library-tests/semmle/go/frameworks/NoSQL/Query.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/NoSQL/Query.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/NoSQL/Query.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/NoSQL/Query.ql b/go/ql/test/library-tests/semmle/go/frameworks/NoSQL/Query.ql index cfe40a0066e..3f14991d274 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/NoSQL/Query.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/NoSQL/Query.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class NoSqlQueryTest extends InlineExpectationsTest { - NoSqlQueryTest() { this = "NoSQLQueryTest" } +module NoSqlQueryTest implements TestSig { + string getARelevantTag() { result = "nosqlquery" } - override string getARelevantTag() { result = "nosqlquery" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(NoSql::Query q | q.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and @@ -16,3 +14,5 @@ class NoSqlQueryTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Revel/test.expected b/go/ql/test/library-tests/semmle/go/frameworks/Revel/test.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Revel/test.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Revel/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Revel/test.ql b/go/ql/test/library-tests/semmle/go/frameworks/Revel/test.ql index 9d2b876d803..bae5b14ccd4 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Revel/test.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/Revel/test.ql @@ -15,12 +15,10 @@ class TestConfig extends TaintTracking::Configuration { override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } } -class MissingDataFlowTest extends InlineExpectationsTest { - MissingDataFlowTest() { this = "MissingDataFlow" } +module MissingDataFlowTest implements TestSig { + string getARelevantTag() { result = "noflow" } - override string getARelevantTag() { result = "noflow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "noflow" and value = "" and exists(Sink sink | @@ -32,12 +30,10 @@ class MissingDataFlowTest extends InlineExpectationsTest { } } -class HttpResponseBodyTest extends InlineExpectationsTest { - HttpResponseBodyTest() { this = "HttpResponseBodyTest" } +module HttpResponseBodyTest implements TestSig { + string getARelevantTag() { result = "responsebody" } - override string getARelevantTag() { result = "responsebody" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "responsebody" and exists(Http::ResponseBody rb | rb.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -47,3 +43,5 @@ class HttpResponseBodyTest extends InlineExpectationsTest { ) } } + +import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/QueryString.expected b/go/ql/test/library-tests/semmle/go/frameworks/SQL/QueryString.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/QueryString.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/QueryString.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/QueryString.ql b/go/ql/test/library-tests/semmle/go/frameworks/SQL/QueryString.ql index 31852f1b862..6b1c1f70e04 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/SQL/QueryString.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/SQL/QueryString.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class SqlTest extends InlineExpectationsTest { - SqlTest() { this = "SQLTest" } +module SqlTest implements TestSig { + string getARelevantTag() { result = "query" } - override string getARelevantTag() { result = "query" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "query" and exists(SQL::Query q, SQL::QueryString qs | qs = q.getAQueryString() | q.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -17,12 +15,10 @@ class SqlTest extends InlineExpectationsTest { } } -class QueryString extends InlineExpectationsTest { - QueryString() { this = "QueryString no Query" } +module QueryString implements TestSig { + string getARelevantTag() { result = "querystring" } - override string getARelevantTag() { result = "querystring" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "querystring" and element = "" and exists(SQL::QueryString qs | not exists(SQL::Query q | qs = q.getAQueryString()) | @@ -33,30 +29,30 @@ class QueryString extends InlineExpectationsTest { } } -class Config extends TaintTracking::Configuration { - Config() { this = "pg-orm config" } +module Config implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node n) { n.asExpr() instanceof StringLit } - override predicate isSource(DataFlow::Node n) { n.asExpr() instanceof StringLit } - - override predicate isSink(DataFlow::Node n) { + predicate isSink(DataFlow::Node n) { n = any(DataFlow::CallNode cn | cn.getTarget().getName() = "sink").getAnArgument() } } -class TaintFlow extends InlineExpectationsTest { - TaintFlow() { this = "pg-orm flow" } +module Flow = TaintTracking::Global; - override string getARelevantTag() { result = "flowfrom" } +module TaintFlow implements TestSig { + string getARelevantTag() { result = "flowfrom" } - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "flowfrom" and element = "" and - exists(Config c, DataFlow::Node fromNode, DataFlow::Node toNode | + exists(DataFlow::Node fromNode, DataFlow::Node toNode | toNode .hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and - c.hasFlow(fromNode, toNode) and + Flow::flow(fromNode, toNode) and value = fromNode.asExpr().(StringLit).getValue() ) } } + +import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/test.expected b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/test.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/test.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/test.ql b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/test.ql index 57796416265..f91654329a1 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/test.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/StdlibTaintFlow/test.ql @@ -1,12 +1,10 @@ import go import TestUtilities.InlineExpectationsTest -class FileSystemAccessTest extends InlineExpectationsTest { - FileSystemAccessTest() { this = "FileSystemAccess" } +module FileSystemAccessTest implements TestSig { + string getARelevantTag() { result = "fsaccess" } - override string getARelevantTag() { result = "fsaccess" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(FileSystemAccess f | f.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and @@ -16,3 +14,5 @@ class FileSystemAccessTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/TaintStep.expected b/go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/TaintStep.expected index 325c5c60a36..da82753fd19 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/TaintStep.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/TaintSteps/TaintStep.expected @@ -5,861 +5,861 @@ | crypto.go:11:18:11:57 | call to Open | crypto.go:11:2:11:57 | ... := ...[0] | | crypto.go:11:18:11:57 | call to Open | crypto.go:11:2:11:57 | ... := ...[1] | | crypto.go:11:42:11:51 | ciphertext | crypto.go:11:2:11:57 | ... := ...[0] | -| file://:0:0:0:0 | parameter 0 of Abs | file://:0:0:0:0 | [summary] to write: return (return[0]) in Abs | -| file://:0:0:0:0 | parameter 0 of Add | file://:0:0:0:0 | [summary] to write: argument -1 in Add | -| file://:0:0:0:0 | parameter 0 of Add | file://:0:0:0:0 | [summary] to write: argument -1 in Add | -| file://:0:0:0:0 | parameter 0 of AddCookie | file://:0:0:0:0 | [summary] to write: argument -1 in AddCookie | -| file://:0:0:0:0 | parameter 0 of AppendQuote | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuote | -| file://:0:0:0:0 | parameter 0 of AppendQuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToASCII | -| file://:0:0:0:0 | parameter 0 of AppendQuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToGraphic | -| file://:0:0:0:0 | parameter 0 of AppendSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendSlice | -| file://:0:0:0:0 | parameter 0 of As | file://:0:0:0:0 | [summary] to write: argument 1 in As | -| file://:0:0:0:0 | parameter 0 of Base | file://:0:0:0:0 | [summary] to write: return (return[0]) in Base | -| file://:0:0:0:0 | parameter 0 of Base | file://:0:0:0:0 | [summary] to write: return (return[0]) in Base | -| file://:0:0:0:0 | parameter 0 of BytePtrFromString | file://:0:0:0:0 | [summary] to write: return (return[0]) in BytePtrFromString | -| file://:0:0:0:0 | parameter 0 of ByteSliceFromString | file://:0:0:0:0 | [summary] to write: return (return[0]) in ByteSliceFromString | -| file://:0:0:0:0 | parameter 0 of CanonicalHeaderKey | file://:0:0:0:0 | [summary] to write: return (return[0]) in CanonicalHeaderKey | -| file://:0:0:0:0 | parameter 0 of CanonicalMIMEHeaderKey | file://:0:0:0:0 | [summary] to write: return (return[0]) in CanonicalMIMEHeaderKey | -| file://:0:0:0:0 | parameter 0 of Clean | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clean | -| file://:0:0:0:0 | parameter 0 of Clean | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clean | -| file://:0:0:0:0 | parameter 0 of Client | file://:0:0:0:0 | [summary] to write: return (return[0]) in Client | -| file://:0:0:0:0 | parameter 0 of Clone | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clone | -| file://:0:0:0:0 | parameter 0 of Cut | file://:0:0:0:0 | [summary] to write: return (return[0]) in Cut | -| file://:0:0:0:0 | parameter 0 of Cut | file://:0:0:0:0 | [summary] to write: return (return[1]) in Cut | -| file://:0:0:0:0 | parameter 0 of CutPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in CutPrefix | -| file://:0:0:0:0 | parameter 0 of CutSuffix | file://:0:0:0:0 | [summary] to write: return (return[0]) in CutSuffix | -| file://:0:0:0:0 | parameter 0 of Decode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Decode | -| file://:0:0:0:0 | parameter 0 of Decode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Decode | -| file://:0:0:0:0 | parameter 0 of Decode | file://:0:0:0:0 | [summary] to write: return (return[1]) in Decode | -| file://:0:0:0:0 | parameter 0 of DecodeHeader | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecodeHeader | -| file://:0:0:0:0 | parameter 0 of DecodeString | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecodeString | -| file://:0:0:0:0 | parameter 0 of DecodeString | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecodeString | -| file://:0:0:0:0 | parameter 0 of DecryptPEMBlock | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecryptPEMBlock | -| file://:0:0:0:0 | parameter 0 of Dir | file://:0:0:0:0 | [summary] to write: return (return[0]) in Dir | -| file://:0:0:0:0 | parameter 0 of Dir | file://:0:0:0:0 | [summary] to write: return (return[0]) in Dir | -| file://:0:0:0:0 | parameter 0 of Encode | file://:0:0:0:0 | [summary] to write: argument -1 in Encode | -| file://:0:0:0:0 | parameter 0 of EncodeToMemory | file://:0:0:0:0 | [summary] to write: return (return[0]) in EncodeToMemory | -| file://:0:0:0:0 | parameter 0 of EvalSymlinks | file://:0:0:0:0 | [summary] to write: return (return[0]) in EvalSymlinks | -| file://:0:0:0:0 | parameter 0 of Expand | file://:0:0:0:0 | [summary] to write: return (return[0]) in Expand | -| file://:0:0:0:0 | parameter 0 of ExpandEnv | file://:0:0:0:0 | [summary] to write: return (return[0]) in ExpandEnv | -| file://:0:0:0:0 | parameter 0 of Ext | file://:0:0:0:0 | [summary] to write: return (return[0]) in Ext | -| file://:0:0:0:0 | parameter 0 of Ext | file://:0:0:0:0 | [summary] to write: return (return[0]) in Ext | -| file://:0:0:0:0 | parameter 0 of Fields | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fields | -| file://:0:0:0:0 | parameter 0 of Fields | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fields | -| file://:0:0:0:0 | parameter 0 of FieldsFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldsFunc | -| file://:0:0:0:0 | parameter 0 of FieldsFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldsFunc | -| file://:0:0:0:0 | parameter 0 of FileConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in FileConn | -| file://:0:0:0:0 | parameter 0 of FileInfoToDirEntry | file://:0:0:0:0 | [summary] to write: return (return[0]) in FileInfoToDirEntry | -| file://:0:0:0:0 | parameter 0 of FilePacketConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in FilePacketConn | -| file://:0:0:0:0 | parameter 0 of FormatMediaType | file://:0:0:0:0 | [summary] to write: return (return[0]) in FormatMediaType | -| file://:0:0:0:0 | parameter 0 of FromSlash | file://:0:0:0:0 | [summary] to write: return (return[0]) in FromSlash | -| file://:0:0:0:0 | parameter 0 of Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | -| file://:0:0:0:0 | parameter 0 of Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | -| file://:0:0:0:0 | parameter 0 of Indirect | file://:0:0:0:0 | [summary] to write: return (return[0]) in Indirect | -| file://:0:0:0:0 | parameter 0 of InsertAfter | file://:0:0:0:0 | [summary] to write: argument -1 in InsertAfter | -| file://:0:0:0:0 | parameter 0 of InsertAfter | file://:0:0:0:0 | [summary] to write: return (return[0]) in InsertAfter | -| file://:0:0:0:0 | parameter 0 of InsertBefore | file://:0:0:0:0 | [summary] to write: argument -1 in InsertBefore | -| file://:0:0:0:0 | parameter 0 of InsertBefore | file://:0:0:0:0 | [summary] to write: return (return[0]) in InsertBefore | -| file://:0:0:0:0 | parameter 0 of Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | -| file://:0:0:0:0 | parameter 0 of Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | -| file://:0:0:0:0 | parameter 0 of JoinHostPort | file://:0:0:0:0 | [summary] to write: return (return[0]) in JoinHostPort | -| file://:0:0:0:0 | parameter 0 of LimitReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in LimitReader | -| file://:0:0:0:0 | parameter 0 of LoadOrStore | file://:0:0:0:0 | [summary] to write: argument -1 in LoadOrStore | -| file://:0:0:0:0 | parameter 0 of LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | -| file://:0:0:0:0 | parameter 0 of LoadPointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadPointer | -| file://:0:0:0:0 | parameter 0 of LoadUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadUintptr | -| file://:0:0:0:0 | parameter 0 of Marshal | file://:0:0:0:0 | [summary] to write: return (return[0]) in Marshal | -| file://:0:0:0:0 | parameter 0 of Marshal | file://:0:0:0:0 | [summary] to write: return (return[0]) in Marshal | -| file://:0:0:0:0 | parameter 0 of MarshalIndent | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalIndent | -| file://:0:0:0:0 | parameter 0 of MarshalWithParams | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalWithParams | -| file://:0:0:0:0 | parameter 0 of MoveAfter | file://:0:0:0:0 | [summary] to write: argument -1 in MoveAfter | -| file://:0:0:0:0 | parameter 0 of MoveBefore | file://:0:0:0:0 | [summary] to write: argument -1 in MoveBefore | -| file://:0:0:0:0 | parameter 0 of MoveToBack | file://:0:0:0:0 | [summary] to write: argument -1 in MoveToBack | -| file://:0:0:0:0 | parameter 0 of MoveToFront | file://:0:0:0:0 | [summary] to write: argument -1 in MoveToFront | -| file://:0:0:0:0 | parameter 0 of New | file://:0:0:0:0 | [summary] to write: return (return[0]) in New | -| file://:0:0:0:0 | parameter 0 of NewBuffer | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewBuffer | -| file://:0:0:0:0 | parameter 0 of NewBufferString | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewBufferString | -| file://:0:0:0:0 | parameter 0 of NewConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewConn | -| file://:0:0:0:0 | parameter 0 of NewDecoder | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewDecoder | -| file://:0:0:0:0 | parameter 0 of NewDecoder | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewDecoder | -| file://:0:0:0:0 | parameter 0 of NewFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewFile | -| file://:0:0:0:0 | parameter 0 of NewListener | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewListener | -| file://:0:0:0:0 | parameter 0 of NewReadWriter | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReadWriter | -| file://:0:0:0:0 | parameter 0 of NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | -| file://:0:0:0:0 | parameter 0 of NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | -| file://:0:0:0:0 | parameter 0 of NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | -| file://:0:0:0:0 | parameter 0 of NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | -| file://:0:0:0:0 | parameter 0 of NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | -| file://:0:0:0:0 | parameter 0 of NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | -| file://:0:0:0:0 | parameter 0 of NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | -| file://:0:0:0:0 | parameter 0 of NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | -| file://:0:0:0:0 | parameter 0 of NewReaderDict | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReaderDict | -| file://:0:0:0:0 | parameter 0 of NewReaderSize | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReaderSize | -| file://:0:0:0:0 | parameter 0 of NewScanner | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewScanner | -| file://:0:0:0:0 | parameter 0 of NewSectionReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewSectionReader | -| file://:0:0:0:0 | parameter 0 of NopCloser | file://:0:0:0:0 | [summary] to write: return (return[0]) in NopCloser | -| file://:0:0:0:0 | parameter 0 of NopCloser | file://:0:0:0:0 | [summary] to write: return (return[0]) in NopCloser | -| file://:0:0:0:0 | parameter 0 of Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | -| file://:0:0:0:0 | parameter 0 of Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | -| file://:0:0:0:0 | parameter 0 of ParseMediaType | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseMediaType | -| file://:0:0:0:0 | parameter 0 of ParseMediaType | file://:0:0:0:0 | [summary] to write: return (return[1]) in ParseMediaType | -| file://:0:0:0:0 | parameter 0 of ParseQuery | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseQuery | -| file://:0:0:0:0 | parameter 0 of ParseRequestURI | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseRequestURI | -| file://:0:0:0:0 | parameter 0 of PathEscape | file://:0:0:0:0 | [summary] to write: return (return[0]) in PathEscape | -| file://:0:0:0:0 | parameter 0 of PathUnescape | file://:0:0:0:0 | [summary] to write: return (return[0]) in PathUnescape | -| file://:0:0:0:0 | parameter 0 of PushBack | file://:0:0:0:0 | [summary] to write: argument -1 in PushBack | -| file://:0:0:0:0 | parameter 0 of PushBack | file://:0:0:0:0 | [summary] to write: return (return[0]) in PushBack | -| file://:0:0:0:0 | parameter 0 of PushBackList | file://:0:0:0:0 | [summary] to write: argument -1 in PushBackList | -| file://:0:0:0:0 | parameter 0 of PushFront | file://:0:0:0:0 | [summary] to write: argument -1 in PushFront | -| file://:0:0:0:0 | parameter 0 of PushFront | file://:0:0:0:0 | [summary] to write: return (return[0]) in PushFront | -| file://:0:0:0:0 | parameter 0 of PushFrontList | file://:0:0:0:0 | [summary] to write: argument -1 in PushFrontList | -| file://:0:0:0:0 | parameter 0 of Put | file://:0:0:0:0 | [summary] to write: argument -1 in Put | -| file://:0:0:0:0 | parameter 0 of QueryEscape | file://:0:0:0:0 | [summary] to write: return (return[0]) in QueryEscape | -| file://:0:0:0:0 | parameter 0 of QueryUnescape | file://:0:0:0:0 | [summary] to write: return (return[0]) in QueryUnescape | -| file://:0:0:0:0 | parameter 0 of Quote | file://:0:0:0:0 | [summary] to write: return (return[0]) in Quote | -| file://:0:0:0:0 | parameter 0 of QuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuoteToASCII | -| file://:0:0:0:0 | parameter 0 of QuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuoteToGraphic | -| file://:0:0:0:0 | parameter 0 of QuotedPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuotedPrefix | -| file://:0:0:0:0 | parameter 0 of Read | file://:0:0:0:0 | [summary] to write: argument 2 in Read | -| file://:0:0:0:0 | parameter 0 of ReadAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadAll | -| file://:0:0:0:0 | parameter 0 of ReadAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadAll | -| file://:0:0:0:0 | parameter 0 of ReadAtLeast | file://:0:0:0:0 | [summary] to write: argument 1 in ReadAtLeast | -| file://:0:0:0:0 | parameter 0 of ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | -| file://:0:0:0:0 | parameter 0 of ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | -| file://:0:0:0:0 | parameter 0 of ReadFull | file://:0:0:0:0 | [summary] to write: argument 1 in ReadFull | -| file://:0:0:0:0 | parameter 0 of ReadRequest | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadRequest | -| file://:0:0:0:0 | parameter 0 of ReadResponse | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadResponse | -| file://:0:0:0:0 | parameter 0 of Rel | file://:0:0:0:0 | [summary] to write: return (return[0]) in Rel | -| file://:0:0:0:0 | parameter 0 of Remove | file://:0:0:0:0 | [summary] to write: return (return[0]) in Remove | -| file://:0:0:0:0 | parameter 0 of Repeat | file://:0:0:0:0 | [summary] to write: return (return[0]) in Repeat | -| file://:0:0:0:0 | parameter 0 of Repeat | file://:0:0:0:0 | [summary] to write: return (return[0]) in Repeat | -| file://:0:0:0:0 | parameter 0 of Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | -| file://:0:0:0:0 | parameter 0 of Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | -| file://:0:0:0:0 | parameter 0 of Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | -| file://:0:0:0:0 | parameter 0 of ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | -| file://:0:0:0:0 | parameter 0 of ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | -| file://:0:0:0:0 | parameter 0 of Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | -| file://:0:0:0:0 | parameter 0 of Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | -| file://:0:0:0:0 | parameter 0 of Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | -| file://:0:0:0:0 | parameter 0 of Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | -| file://:0:0:0:0 | parameter 0 of Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | -| file://:0:0:0:0 | parameter 0 of Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | -| file://:0:0:0:0 | parameter 0 of ResolveReference | file://:0:0:0:0 | [summary] to write: return (return[0]) in ResolveReference | -| file://:0:0:0:0 | parameter 0 of Reverse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Reverse | -| file://:0:0:0:0 | parameter 0 of Runes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Runes | -| file://:0:0:0:0 | parameter 0 of ScanBytes | file://:0:0:0:0 | [summary] to write: return (return[1]) in ScanBytes | -| file://:0:0:0:0 | parameter 0 of ScanLines | file://:0:0:0:0 | [summary] to write: return (return[1]) in ScanLines | -| file://:0:0:0:0 | parameter 0 of ScanRunes | file://:0:0:0:0 | [summary] to write: return (return[1]) in ScanRunes | -| file://:0:0:0:0 | parameter 0 of ScanWords | file://:0:0:0:0 | [summary] to write: return (return[1]) in ScanWords | -| file://:0:0:0:0 | parameter 0 of Send | file://:0:0:0:0 | [summary] to write: argument -1 in Send | -| file://:0:0:0:0 | parameter 0 of Server | file://:0:0:0:0 | [summary] to write: return (return[0]) in Server | -| file://:0:0:0:0 | parameter 0 of Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | -| file://:0:0:0:0 | parameter 0 of Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | -| file://:0:0:0:0 | parameter 0 of Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | -| file://:0:0:0:0 | parameter 0 of SetBytes | file://:0:0:0:0 | [summary] to write: argument -1 in SetBytes | -| file://:0:0:0:0 | parameter 0 of SetIndent | file://:0:0:0:0 | [summary] to write: argument -1 in SetIndent | -| file://:0:0:0:0 | parameter 0 of SetMapIndex | file://:0:0:0:0 | [summary] to write: argument -1 in SetMapIndex | -| file://:0:0:0:0 | parameter 0 of SetPointer | file://:0:0:0:0 | [summary] to write: argument -1 in SetPointer | -| file://:0:0:0:0 | parameter 0 of SetPrefix | file://:0:0:0:0 | [summary] to write: argument -1 in SetPrefix | -| file://:0:0:0:0 | parameter 0 of SetString | file://:0:0:0:0 | [summary] to write: argument -1 in SetString | -| file://:0:0:0:0 | parameter 0 of Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | -| file://:0:0:0:0 | parameter 0 of Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | -| file://:0:0:0:0 | parameter 0 of Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | -| file://:0:0:0:0 | parameter 0 of Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | -| file://:0:0:0:0 | parameter 0 of Split | file://:0:0:0:0 | [summary] to write: return (return[1]) in Split | -| file://:0:0:0:0 | parameter 0 of Split | file://:0:0:0:0 | [summary] to write: return (return[1]) in Split | -| file://:0:0:0:0 | parameter 0 of SplitAfter | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfter | -| file://:0:0:0:0 | parameter 0 of SplitAfter | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfter | -| file://:0:0:0:0 | parameter 0 of SplitAfterN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfterN | -| file://:0:0:0:0 | parameter 0 of SplitAfterN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfterN | -| file://:0:0:0:0 | parameter 0 of SplitHostPort | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitHostPort | -| file://:0:0:0:0 | parameter 0 of SplitHostPort | file://:0:0:0:0 | [summary] to write: return (return[1]) in SplitHostPort | -| file://:0:0:0:0 | parameter 0 of SplitList | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitList | -| file://:0:0:0:0 | parameter 0 of SplitN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitN | -| file://:0:0:0:0 | parameter 0 of SplitN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitN | -| file://:0:0:0:0 | parameter 0 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 0 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 0 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 0 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 0 of StringBytePtr | file://:0:0:0:0 | [summary] to write: return (return[0]) in StringBytePtr | -| file://:0:0:0:0 | parameter 0 of StringByteSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in StringByteSlice | -| file://:0:0:0:0 | parameter 0 of Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | -| file://:0:0:0:0 | parameter 0 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 0 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 0 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 0 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 0 of SwapPointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in SwapPointer | -| file://:0:0:0:0 | parameter 0 of SwapUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in SwapUintptr | -| file://:0:0:0:0 | parameter 0 of TeeReader | file://:0:0:0:0 | [summary] to write: argument 1 in TeeReader | -| file://:0:0:0:0 | parameter 0 of TeeReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in TeeReader | -| file://:0:0:0:0 | parameter 0 of Title | file://:0:0:0:0 | [summary] to write: return (return[0]) in Title | -| file://:0:0:0:0 | parameter 0 of Title | file://:0:0:0:0 | [summary] to write: return (return[0]) in Title | -| file://:0:0:0:0 | parameter 0 of ToLower | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLower | -| file://:0:0:0:0 | parameter 0 of ToLower | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLower | -| file://:0:0:0:0 | parameter 0 of ToSlash | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToSlash | -| file://:0:0:0:0 | parameter 0 of ToTitle | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitle | -| file://:0:0:0:0 | parameter 0 of ToTitle | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitle | -| file://:0:0:0:0 | parameter 0 of ToUpper | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpper | -| file://:0:0:0:0 | parameter 0 of ToUpper | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpper | -| file://:0:0:0:0 | parameter 0 of ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | -| file://:0:0:0:0 | parameter 0 of ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | -| file://:0:0:0:0 | parameter 0 of Trim | file://:0:0:0:0 | [summary] to write: return (return[0]) in Trim | -| file://:0:0:0:0 | parameter 0 of Trim | file://:0:0:0:0 | [summary] to write: return (return[0]) in Trim | -| file://:0:0:0:0 | parameter 0 of TrimBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimBytes | -| file://:0:0:0:0 | parameter 0 of TrimFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimFunc | -| file://:0:0:0:0 | parameter 0 of TrimFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimFunc | -| file://:0:0:0:0 | parameter 0 of TrimLeft | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeft | -| file://:0:0:0:0 | parameter 0 of TrimLeft | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeft | -| file://:0:0:0:0 | parameter 0 of TrimLeftFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeftFunc | -| file://:0:0:0:0 | parameter 0 of TrimLeftFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeftFunc | -| file://:0:0:0:0 | parameter 0 of TrimPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimPrefix | -| file://:0:0:0:0 | parameter 0 of TrimPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimPrefix | -| file://:0:0:0:0 | parameter 0 of TrimRight | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRight | -| file://:0:0:0:0 | parameter 0 of TrimRight | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRight | -| file://:0:0:0:0 | parameter 0 of TrimRightFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRightFunc | -| file://:0:0:0:0 | parameter 0 of TrimRightFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRightFunc | -| file://:0:0:0:0 | parameter 0 of TrimSpace | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSpace | -| file://:0:0:0:0 | parameter 0 of TrimSpace | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSpace | -| file://:0:0:0:0 | parameter 0 of TrimString | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimString | -| file://:0:0:0:0 | parameter 0 of TrimSuffix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSuffix | -| file://:0:0:0:0 | parameter 0 of TrimSuffix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSuffix | -| file://:0:0:0:0 | parameter 0 of TrySend | file://:0:0:0:0 | [summary] to write: argument -1 in TrySend | -| file://:0:0:0:0 | parameter 0 of Unmarshal | file://:0:0:0:0 | [summary] to write: argument 1 in Unmarshal | -| file://:0:0:0:0 | parameter 0 of Unmarshal | file://:0:0:0:0 | [summary] to write: argument 1 in Unmarshal | -| file://:0:0:0:0 | parameter 0 of Unmarshal | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unmarshal | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | -| file://:0:0:0:0 | parameter 0 of UnmarshalJSON | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalJSON | -| file://:0:0:0:0 | parameter 0 of UnmarshalJSON | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalJSON | -| file://:0:0:0:0 | parameter 0 of UnmarshalJSON | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalJSON | -| file://:0:0:0:0 | parameter 0 of UnmarshalJSON | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalJSON | -| file://:0:0:0:0 | parameter 0 of UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | -| file://:0:0:0:0 | parameter 0 of UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | -| file://:0:0:0:0 | parameter 0 of UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | -| file://:0:0:0:0 | parameter 0 of UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | -| file://:0:0:0:0 | parameter 0 of UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | -| file://:0:0:0:0 | parameter 0 of UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | -| file://:0:0:0:0 | parameter 0 of UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | -| file://:0:0:0:0 | parameter 0 of UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | -| file://:0:0:0:0 | parameter 0 of UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | -| file://:0:0:0:0 | parameter 0 of UnmarshalWithParams | file://:0:0:0:0 | [summary] to write: argument 1 in UnmarshalWithParams | -| file://:0:0:0:0 | parameter 0 of UnmarshalWithParams | file://:0:0:0:0 | [summary] to write: return (return[0]) in UnmarshalWithParams | -| file://:0:0:0:0 | parameter 0 of Unquote | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unquote | -| file://:0:0:0:0 | parameter 0 of UnquoteChar | file://:0:0:0:0 | [summary] to write: return (return[2]) in UnquoteChar | -| file://:0:0:0:0 | parameter 0 of Unwrap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unwrap | -| file://:0:0:0:0 | parameter 0 of User | file://:0:0:0:0 | [summary] to write: return (return[0]) in User | -| file://:0:0:0:0 | parameter 0 of UserPassword | file://:0:0:0:0 | [summary] to write: return (return[0]) in UserPassword | -| file://:0:0:0:0 | parameter 0 of ValueOf | file://:0:0:0:0 | [summary] to write: return (return[0]) in ValueOf | -| file://:0:0:0:0 | parameter 0 of VolumeName | file://:0:0:0:0 | [summary] to write: return (return[0]) in VolumeName | -| file://:0:0:0:0 | parameter 0 of WithCancel | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithCancel | -| file://:0:0:0:0 | parameter 0 of WithDeadline | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithDeadline | -| file://:0:0:0:0 | parameter 0 of WithTimeout | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithTimeout | -| file://:0:0:0:0 | parameter 0 of WithValue | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithValue | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | -| file://:0:0:0:0 | parameter 0 of WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | -| file://:0:0:0:0 | parameter 0 of WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | -| file://:0:0:0:0 | parameter 0 of WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | -| file://:0:0:0:0 | parameter 0 of WriteField | file://:0:0:0:0 | [summary] to write: argument -1 in WriteField | -| file://:0:0:0:0 | parameter 0 of WriteMsgIP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgIP | -| file://:0:0:0:0 | parameter 0 of WriteMsgUDP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgUDP | -| file://:0:0:0:0 | parameter 0 of WriteMsgUnix | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgUnix | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | -| file://:0:0:0:0 | parameter 0 of WriteTo | file://:0:0:0:0 | [summary] to write: argument -1 in WriteTo | -| file://:0:0:0:0 | parameter 0 of WriteTo | file://:0:0:0:0 | [summary] to write: argument -1 in WriteTo | -| file://:0:0:0:0 | parameter 0 of WriteTo | file://:0:0:0:0 | [summary] to write: argument -1 in WriteTo | -| file://:0:0:0:0 | parameter 0 of WriteTo | file://:0:0:0:0 | [summary] to write: argument -1 in WriteTo | -| file://:0:0:0:0 | parameter 0 of WriteToIP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteToIP | -| file://:0:0:0:0 | parameter 0 of WriteToUDP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteToUDP | -| file://:0:0:0:0 | parameter 0 of WriteToUnix | file://:0:0:0:0 | [summary] to write: argument -1 in WriteToUnix | -| file://:0:0:0:0 | parameter 1 of Add | file://:0:0:0:0 | [summary] to write: argument -1 in Add | -| file://:0:0:0:0 | parameter 1 of Add | file://:0:0:0:0 | [summary] to write: argument -1 in Add | -| file://:0:0:0:0 | parameter 1 of AddUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in AddUintptr | -| file://:0:0:0:0 | parameter 1 of AddUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in AddUintptr | -| file://:0:0:0:0 | parameter 1 of AppendQuote | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuote | -| file://:0:0:0:0 | parameter 1 of AppendQuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToASCII | -| file://:0:0:0:0 | parameter 1 of AppendQuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToGraphic | -| file://:0:0:0:0 | parameter 1 of AppendSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendSlice | -| file://:0:0:0:0 | parameter 1 of Compact | file://:0:0:0:0 | [summary] to write: argument 0 in Compact | -| file://:0:0:0:0 | parameter 1 of Copy | file://:0:0:0:0 | [summary] to write: argument 0 in Copy | -| file://:0:0:0:0 | parameter 1 of Copy | file://:0:0:0:0 | [summary] to write: argument 0 in Copy | -| file://:0:0:0:0 | parameter 1 of CopyBuffer | file://:0:0:0:0 | [summary] to write: argument 0 in CopyBuffer | -| file://:0:0:0:0 | parameter 1 of CopyN | file://:0:0:0:0 | [summary] to write: argument 0 in CopyN | -| file://:0:0:0:0 | parameter 1 of Decode | file://:0:0:0:0 | [summary] to write: argument 0 in Decode | -| file://:0:0:0:0 | parameter 1 of Decode | file://:0:0:0:0 | [summary] to write: argument 0 in Decode | -| file://:0:0:0:0 | parameter 1 of Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | -| file://:0:0:0:0 | parameter 1 of Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | -| file://:0:0:0:0 | parameter 1 of Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | -| file://:0:0:0:0 | parameter 1 of Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | -| file://:0:0:0:0 | parameter 1 of Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | -| file://:0:0:0:0 | parameter 1 of Decrypt | file://:0:0:0:0 | [summary] to write: return (return[0]) in Decrypt | -| file://:0:0:0:0 | parameter 1 of Decrypt | file://:0:0:0:0 | [summary] to write: return (return[0]) in Decrypt | -| file://:0:0:0:0 | parameter 1 of Encode | file://:0:0:0:0 | [summary] to write: argument 0 in Encode | -| file://:0:0:0:0 | parameter 1 of Encode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Encode | -| file://:0:0:0:0 | parameter 1 of Error | file://:0:0:0:0 | [summary] to write: argument 0 in Error | -| file://:0:0:0:0 | parameter 1 of FormatMediaType | file://:0:0:0:0 | [summary] to write: return (return[0]) in FormatMediaType | -| file://:0:0:0:0 | parameter 1 of HTMLEscape | file://:0:0:0:0 | [summary] to write: argument 0 in HTMLEscape | -| file://:0:0:0:0 | parameter 1 of Indent | file://:0:0:0:0 | [summary] to write: argument 0 in Indent | -| file://:0:0:0:0 | parameter 1 of Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | -| file://:0:0:0:0 | parameter 1 of Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | -| file://:0:0:0:0 | parameter 1 of JoinHostPort | file://:0:0:0:0 | [summary] to write: return (return[0]) in JoinHostPort | -| file://:0:0:0:0 | parameter 1 of LoadOrStore | file://:0:0:0:0 | [summary] to write: argument -1 in LoadOrStore | -| file://:0:0:0:0 | parameter 1 of LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | -| file://:0:0:0:0 | parameter 1 of Map | file://:0:0:0:0 | [summary] to write: return (return[0]) in Map | -| file://:0:0:0:0 | parameter 1 of Map | file://:0:0:0:0 | [summary] to write: return (return[0]) in Map | -| file://:0:0:0:0 | parameter 1 of MarshalIndent | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalIndent | -| file://:0:0:0:0 | parameter 1 of MarshalWithParams | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalWithParams | -| file://:0:0:0:0 | parameter 1 of MaxBytesReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in MaxBytesReader | -| file://:0:0:0:0 | parameter 1 of NewDecoder | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewDecoder | -| file://:0:0:0:0 | parameter 1 of NewRequest | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewRequest | -| file://:0:0:0:0 | parameter 1 of Rel | file://:0:0:0:0 | [summary] to write: return (return[0]) in Rel | -| file://:0:0:0:0 | parameter 1 of Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | -| file://:0:0:0:0 | parameter 1 of Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | -| file://:0:0:0:0 | parameter 1 of SetCookie | file://:0:0:0:0 | [summary] to write: argument 0 in SetCookie | -| file://:0:0:0:0 | parameter 1 of SetIndent | file://:0:0:0:0 | [summary] to write: argument -1 in SetIndent | -| file://:0:0:0:0 | parameter 1 of SetMapIndex | file://:0:0:0:0 | [summary] to write: argument -1 in SetMapIndex | -| file://:0:0:0:0 | parameter 1 of Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | -| file://:0:0:0:0 | parameter 1 of StorePointer | file://:0:0:0:0 | [summary] to write: argument 0 in StorePointer | -| file://:0:0:0:0 | parameter 1 of StoreUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in StoreUintptr | -| file://:0:0:0:0 | parameter 1 of Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | -| file://:0:0:0:0 | parameter 1 of SwapPointer | file://:0:0:0:0 | [summary] to write: argument 0 in SwapPointer | -| file://:0:0:0:0 | parameter 1 of SwapUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in SwapUintptr | -| file://:0:0:0:0 | parameter 1 of ToLowerSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLowerSpecial | -| file://:0:0:0:0 | parameter 1 of ToLowerSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLowerSpecial | -| file://:0:0:0:0 | parameter 1 of ToTitleSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitleSpecial | -| file://:0:0:0:0 | parameter 1 of ToTitleSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitleSpecial | -| file://:0:0:0:0 | parameter 1 of ToUpperSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpperSpecial | -| file://:0:0:0:0 | parameter 1 of ToUpperSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpperSpecial | -| file://:0:0:0:0 | parameter 1 of ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | -| file://:0:0:0:0 | parameter 1 of ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | -| file://:0:0:0:0 | parameter 1 of UserPassword | file://:0:0:0:0 | [summary] to write: return (return[0]) in UserPassword | -| file://:0:0:0:0 | parameter 1 of WithValue | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithValue | -| file://:0:0:0:0 | parameter 1 of WriteField | file://:0:0:0:0 | [summary] to write: argument -1 in WriteField | -| file://:0:0:0:0 | parameter 1 of WriteMsgIP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgIP | -| file://:0:0:0:0 | parameter 1 of WriteMsgUDP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgUDP | -| file://:0:0:0:0 | parameter 1 of WriteMsgUnix | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgUnix | -| file://:0:0:0:0 | parameter 1 of WriteString | file://:0:0:0:0 | [summary] to write: argument 0 in WriteString | -| file://:0:0:0:0 | parameter 1 of WriteString | file://:0:0:0:0 | [summary] to write: argument 0 in WriteString | -| file://:0:0:0:0 | parameter 2 of CompareAndSwap | file://:0:0:0:0 | [summary] to write: argument -1 in CompareAndSwap | -| file://:0:0:0:0 | parameter 2 of CompareAndSwapPointer | file://:0:0:0:0 | [summary] to write: argument 0 in CompareAndSwapPointer | -| file://:0:0:0:0 | parameter 2 of CompareAndSwapUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in CompareAndSwapUintptr | -| file://:0:0:0:0 | parameter 2 of DecryptPKCS1v15 | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecryptPKCS1v15 | -| file://:0:0:0:0 | parameter 2 of Indent | file://:0:0:0:0 | [summary] to write: argument 0 in Indent | -| file://:0:0:0:0 | parameter 2 of MarshalIndent | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalIndent | -| file://:0:0:0:0 | parameter 2 of NewRequestWithContext | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewRequestWithContext | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter 2 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter 2 of Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | -| file://:0:0:0:0 | parameter 2 of Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | -| file://:0:0:0:0 | parameter 2 of ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | -| file://:0:0:0:0 | parameter 2 of ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | -| file://:0:0:0:0 | parameter 2 of UnmarshalWithParams | file://:0:0:0:0 | [summary] to write: argument 1 in UnmarshalWithParams | -| file://:0:0:0:0 | parameter 2 of UnmarshalWithParams | file://:0:0:0:0 | [summary] to write: return (return[0]) in UnmarshalWithParams | -| file://:0:0:0:0 | parameter 2 of WithValue | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithValue | -| file://:0:0:0:0 | parameter 2 of Write | file://:0:0:0:0 | [summary] to write: argument 0 in Write | -| file://:0:0:0:0 | parameter 3 of DecryptOAEP | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecryptOAEP | -| file://:0:0:0:0 | parameter 3 of Indent | file://:0:0:0:0 | [summary] to write: argument 0 in Indent | -| file://:0:0:0:0 | parameter -1 of Addr | file://:0:0:0:0 | [summary] to write: return (return[0]) in Addr | -| file://:0:0:0:0 | parameter -1 of Back | file://:0:0:0:0 | [summary] to write: return (return[0]) in Back | -| file://:0:0:0:0 | parameter -1 of Buffered | file://:0:0:0:0 | [summary] to write: return (return[0]) in Buffered | -| file://:0:0:0:0 | parameter -1 of Bytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Bytes | -| file://:0:0:0:0 | parameter -1 of Bytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Bytes | -| file://:0:0:0:0 | parameter -1 of Bytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Bytes | -| file://:0:0:0:0 | parameter -1 of Clone | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clone | -| file://:0:0:0:0 | parameter -1 of Clone | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clone | -| file://:0:0:0:0 | parameter -1 of Clone | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clone | -| file://:0:0:0:0 | parameter -1 of Convert | file://:0:0:0:0 | [summary] to write: return (return[0]) in Convert | -| file://:0:0:0:0 | parameter -1 of Decode | file://:0:0:0:0 | [summary] to write: argument 0 in Decode | -| file://:0:0:0:0 | parameter -1 of DotReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in DotReader | -| file://:0:0:0:0 | parameter -1 of Elem | file://:0:0:0:0 | [summary] to write: return (return[0]) in Elem | -| file://:0:0:0:0 | parameter -1 of Encode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Encode | -| file://:0:0:0:0 | parameter -1 of EscapedPath | file://:0:0:0:0 | [summary] to write: return (return[0]) in EscapedPath | -| file://:0:0:0:0 | parameter -1 of Fd | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fd | -| file://:0:0:0:0 | parameter -1 of Field | file://:0:0:0:0 | [summary] to write: return (return[0]) in Field | -| file://:0:0:0:0 | parameter -1 of FieldByIndex | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByIndex | -| file://:0:0:0:0 | parameter -1 of FieldByName | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByName | -| file://:0:0:0:0 | parameter -1 of FieldByNameFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByNameFunc | -| file://:0:0:0:0 | parameter -1 of File | file://:0:0:0:0 | [summary] to write: return (return[0]) in File | -| file://:0:0:0:0 | parameter -1 of File | file://:0:0:0:0 | [summary] to write: return (return[0]) in File | -| file://:0:0:0:0 | parameter -1 of FileName | file://:0:0:0:0 | [summary] to write: return (return[0]) in FileName | -| file://:0:0:0:0 | parameter -1 of FormName | file://:0:0:0:0 | [summary] to write: return (return[0]) in FormName | -| file://:0:0:0:0 | parameter -1 of Front | file://:0:0:0:0 | [summary] to write: return (return[0]) in Front | -| file://:0:0:0:0 | parameter -1 of Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | -| file://:0:0:0:0 | parameter -1 of Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | -| file://:0:0:0:0 | parameter -1 of Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | -| file://:0:0:0:0 | parameter -1 of Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | -| file://:0:0:0:0 | parameter -1 of Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | -| file://:0:0:0:0 | parameter -1 of Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | -| file://:0:0:0:0 | parameter -1 of Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | -| file://:0:0:0:0 | parameter -1 of Hijack | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hijack | -| file://:0:0:0:0 | parameter -1 of Hijack | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hijack | -| file://:0:0:0:0 | parameter -1 of Hijack | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hijack | -| file://:0:0:0:0 | parameter -1 of Hijack | file://:0:0:0:0 | [summary] to write: return (return[1]) in Hijack | -| file://:0:0:0:0 | parameter -1 of Hijack | file://:0:0:0:0 | [summary] to write: return (return[1]) in Hijack | -| file://:0:0:0:0 | parameter -1 of Hijack | file://:0:0:0:0 | [summary] to write: return (return[1]) in Hijack | -| file://:0:0:0:0 | parameter -1 of Hostname | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hostname | -| file://:0:0:0:0 | parameter -1 of Index | file://:0:0:0:0 | [summary] to write: return (return[0]) in Index | -| file://:0:0:0:0 | parameter -1 of Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | -| file://:0:0:0:0 | parameter -1 of Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | -| file://:0:0:0:0 | parameter -1 of Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | -| file://:0:0:0:0 | parameter -1 of Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | -| file://:0:0:0:0 | parameter -1 of Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | -| file://:0:0:0:0 | parameter -1 of Init | file://:0:0:0:0 | [summary] to write: return (return[0]) in Init | -| file://:0:0:0:0 | parameter -1 of Interface | file://:0:0:0:0 | [summary] to write: return (return[0]) in Interface | -| file://:0:0:0:0 | parameter -1 of InterfaceData | file://:0:0:0:0 | [summary] to write: return (return[0]) in InterfaceData | -| file://:0:0:0:0 | parameter -1 of Key | file://:0:0:0:0 | [summary] to write: return (return[0]) in Key | -| file://:0:0:0:0 | parameter -1 of Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | -| file://:0:0:0:0 | parameter -1 of Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | -| file://:0:0:0:0 | parameter -1 of Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | -| file://:0:0:0:0 | parameter -1 of Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | -| file://:0:0:0:0 | parameter -1 of LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | -| file://:0:0:0:0 | parameter -1 of Lookup | file://:0:0:0:0 | [summary] to write: return (return[0]) in Lookup | -| file://:0:0:0:0 | parameter -1 of MapIndex | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapIndex | -| file://:0:0:0:0 | parameter -1 of MapKeys | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapKeys | -| file://:0:0:0:0 | parameter -1 of MapRange | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapRange | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | -| file://:0:0:0:0 | parameter -1 of MarshalJSON | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalJSON | -| file://:0:0:0:0 | parameter -1 of MarshalJSON | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalJSON | -| file://:0:0:0:0 | parameter -1 of MarshalJSON | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalJSON | -| file://:0:0:0:0 | parameter -1 of MarshalJSON | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalJSON | -| file://:0:0:0:0 | parameter -1 of MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | -| file://:0:0:0:0 | parameter -1 of MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | -| file://:0:0:0:0 | parameter -1 of MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | -| file://:0:0:0:0 | parameter -1 of MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | -| file://:0:0:0:0 | parameter -1 of MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | -| file://:0:0:0:0 | parameter -1 of MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | -| file://:0:0:0:0 | parameter -1 of MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | -| file://:0:0:0:0 | parameter -1 of MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | -| file://:0:0:0:0 | parameter -1 of MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | -| file://:0:0:0:0 | parameter -1 of Method | file://:0:0:0:0 | [summary] to write: return (return[0]) in Method | -| file://:0:0:0:0 | parameter -1 of MethodByName | file://:0:0:0:0 | [summary] to write: return (return[0]) in MethodByName | -| file://:0:0:0:0 | parameter -1 of Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | -| file://:0:0:0:0 | parameter -1 of Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | -| file://:0:0:0:0 | parameter -1 of Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | -| file://:0:0:0:0 | parameter -1 of Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | -| file://:0:0:0:0 | parameter -1 of Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | -| file://:0:0:0:0 | parameter -1 of Next | file://:0:0:0:0 | [summary] to write: return (return[0]) in Next | -| file://:0:0:0:0 | parameter -1 of Next | file://:0:0:0:0 | [summary] to write: return (return[0]) in Next | -| file://:0:0:0:0 | parameter -1 of NextPart | file://:0:0:0:0 | [summary] to write: return (return[0]) in NextPart | -| file://:0:0:0:0 | parameter -1 of NextRawPart | file://:0:0:0:0 | [summary] to write: return (return[0]) in NextRawPart | -| file://:0:0:0:0 | parameter -1 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter -1 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter -1 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter -1 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter -1 of Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | -| file://:0:0:0:0 | parameter -1 of Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | -| file://:0:0:0:0 | parameter -1 of Password | file://:0:0:0:0 | [summary] to write: return (return[0]) in Password | -| file://:0:0:0:0 | parameter -1 of Peek | file://:0:0:0:0 | [summary] to write: return (return[0]) in Peek | -| file://:0:0:0:0 | parameter -1 of Pointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in Pointer | -| file://:0:0:0:0 | parameter -1 of Port | file://:0:0:0:0 | [summary] to write: return (return[0]) in Port | -| file://:0:0:0:0 | parameter -1 of Prev | file://:0:0:0:0 | [summary] to write: return (return[0]) in Prev | -| file://:0:0:0:0 | parameter -1 of Query | file://:0:0:0:0 | [summary] to write: return (return[0]) in Query | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | -| file://:0:0:0:0 | parameter -1 of ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | -| file://:0:0:0:0 | parameter -1 of ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | -| file://:0:0:0:0 | parameter -1 of ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | -| file://:0:0:0:0 | parameter -1 of ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | -| file://:0:0:0:0 | parameter -1 of ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | -| file://:0:0:0:0 | parameter -1 of ReadBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadBytes | -| file://:0:0:0:0 | parameter -1 of ReadBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadBytes | -| file://:0:0:0:0 | parameter -1 of ReadCodeLine | file://:0:0:0:0 | [summary] to write: return (return[1]) in ReadCodeLine | -| file://:0:0:0:0 | parameter -1 of ReadContinuedLine | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadContinuedLine | -| file://:0:0:0:0 | parameter -1 of ReadContinuedLineBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadContinuedLineBytes | -| file://:0:0:0:0 | parameter -1 of ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | -| file://:0:0:0:0 | parameter -1 of ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | -| file://:0:0:0:0 | parameter -1 of ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | -| file://:0:0:0:0 | parameter -1 of ReadDotBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDotBytes | -| file://:0:0:0:0 | parameter -1 of ReadDotLines | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDotLines | -| file://:0:0:0:0 | parameter -1 of ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | -| file://:0:0:0:0 | parameter -1 of ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | -| file://:0:0:0:0 | parameter -1 of ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | -| file://:0:0:0:0 | parameter -1 of ReadForm | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadForm | -| file://:0:0:0:0 | parameter -1 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFrom | -| file://:0:0:0:0 | parameter -1 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFrom | -| file://:0:0:0:0 | parameter -1 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFrom | -| file://:0:0:0:0 | parameter -1 of ReadFrom | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFrom | -| file://:0:0:0:0 | parameter -1 of ReadFromIP | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFromIP | -| file://:0:0:0:0 | parameter -1 of ReadFromUDP | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFromUDP | -| file://:0:0:0:0 | parameter -1 of ReadFromUnix | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFromUnix | -| file://:0:0:0:0 | parameter -1 of ReadLine | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadLine | -| file://:0:0:0:0 | parameter -1 of ReadLine | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadLine | -| file://:0:0:0:0 | parameter -1 of ReadLineBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadLineBytes | -| file://:0:0:0:0 | parameter -1 of ReadMIMEHeader | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadMIMEHeader | -| file://:0:0:0:0 | parameter -1 of ReadMsgIP | file://:0:0:0:0 | [summary] to write: argument 0 in ReadMsgIP | -| file://:0:0:0:0 | parameter -1 of ReadMsgIP | file://:0:0:0:0 | [summary] to write: argument 1 in ReadMsgIP | -| file://:0:0:0:0 | parameter -1 of ReadMsgUDP | file://:0:0:0:0 | [summary] to write: argument 0 in ReadMsgUDP | -| file://:0:0:0:0 | parameter -1 of ReadMsgUDP | file://:0:0:0:0 | [summary] to write: argument 1 in ReadMsgUDP | -| file://:0:0:0:0 | parameter -1 of ReadMsgUnix | file://:0:0:0:0 | [summary] to write: argument 0 in ReadMsgUnix | -| file://:0:0:0:0 | parameter -1 of ReadMsgUnix | file://:0:0:0:0 | [summary] to write: argument 1 in ReadMsgUnix | -| file://:0:0:0:0 | parameter -1 of ReadResponse | file://:0:0:0:0 | [summary] to write: return (return[1]) in ReadResponse | -| file://:0:0:0:0 | parameter -1 of ReadSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadSlice | -| file://:0:0:0:0 | parameter -1 of ReadString | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadString | -| file://:0:0:0:0 | parameter -1 of ReadString | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadString | -| file://:0:0:0:0 | parameter -1 of Recv | file://:0:0:0:0 | [summary] to write: return (return[0]) in Recv | -| file://:0:0:0:0 | parameter -1 of RequestURI | file://:0:0:0:0 | [summary] to write: return (return[0]) in RequestURI | -| file://:0:0:0:0 | parameter -1 of Reset | file://:0:0:0:0 | [summary] to write: argument 0 in Reset | -| file://:0:0:0:0 | parameter -1 of Reset | file://:0:0:0:0 | [summary] to write: argument 0 in Reset | -| file://:0:0:0:0 | parameter -1 of Reset | file://:0:0:0:0 | [summary] to write: argument 0 in Reset | -| file://:0:0:0:0 | parameter -1 of ResolveReference | file://:0:0:0:0 | [summary] to write: return (return[0]) in ResolveReference | -| file://:0:0:0:0 | parameter -1 of SetOutput | file://:0:0:0:0 | [summary] to write: argument 0 in SetOutput | -| file://:0:0:0:0 | parameter -1 of Slice | file://:0:0:0:0 | [summary] to write: return (return[0]) in Slice | -| file://:0:0:0:0 | parameter -1 of Slice3 | file://:0:0:0:0 | [summary] to write: return (return[0]) in Slice3 | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | -| file://:0:0:0:0 | parameter -1 of Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | -| file://:0:0:0:0 | parameter -1 of Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | -| file://:0:0:0:0 | parameter -1 of Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | -| file://:0:0:0:0 | parameter -1 of Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | -| file://:0:0:0:0 | parameter -1 of Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | -| file://:0:0:0:0 | parameter -1 of Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | -| file://:0:0:0:0 | parameter -1 of Text | file://:0:0:0:0 | [summary] to write: return (return[0]) in Text | -| file://:0:0:0:0 | parameter -1 of Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | -| file://:0:0:0:0 | parameter -1 of Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | -| file://:0:0:0:0 | parameter -1 of Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | -| file://:0:0:0:0 | parameter -1 of TryRecv | file://:0:0:0:0 | [summary] to write: return (return[0]) in TryRecv | -| file://:0:0:0:0 | parameter -1 of UnsafeAddr | file://:0:0:0:0 | [summary] to write: return (return[0]) in UnsafeAddr | -| file://:0:0:0:0 | parameter -1 of Username | file://:0:0:0:0 | [summary] to write: return (return[0]) in Username | -| file://:0:0:0:0 | parameter -1 of Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | -| file://:0:0:0:0 | parameter -1 of Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | -| file://:0:0:0:0 | parameter -1 of Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | -| file://:0:0:0:0 | parameter -1 of Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | -| file://:0:0:0:0 | parameter -1 of Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | -| file://:0:0:0:0 | parameter -1 of Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | -| file://:0:0:0:0 | parameter -1 of Values | file://:0:0:0:0 | [summary] to write: return (return[0]) in Values | -| file://:0:0:0:0 | parameter -1 of Values | file://:0:0:0:0 | [summary] to write: return (return[0]) in Values | -| file://:0:0:0:0 | parameter -1 of Write | file://:0:0:0:0 | [summary] to write: argument 0 in Write | -| file://:0:0:0:0 | parameter -1 of Write | file://:0:0:0:0 | [summary] to write: argument 0 in Write | -| file://:0:0:0:0 | parameter -1 of Write | file://:0:0:0:0 | [summary] to write: argument 0 in Write | -| file://:0:0:0:0 | parameter -1 of WriteProxy | file://:0:0:0:0 | [summary] to write: argument 0 in WriteProxy | -| file://:0:0:0:0 | parameter -1 of WriteSubset | file://:0:0:0:0 | [summary] to write: argument 0 in WriteSubset | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | -| file://:0:0:0:0 | parameter -1 of Writer | file://:0:0:0:0 | [summary] to write: return (return[0]) in Writer | +| file://:0:0:0:0 | [summary param] 0 in Abs | file://:0:0:0:0 | [summary] to write: return (return[0]) in Abs | +| file://:0:0:0:0 | [summary param] 0 in Add | file://:0:0:0:0 | [summary] to write: argument -1 in Add | +| file://:0:0:0:0 | [summary param] 0 in Add | file://:0:0:0:0 | [summary] to write: argument -1 in Add | +| file://:0:0:0:0 | [summary param] 0 in AddCookie | file://:0:0:0:0 | [summary] to write: argument -1 in AddCookie | +| file://:0:0:0:0 | [summary param] 0 in AppendQuote | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuote | +| file://:0:0:0:0 | [summary param] 0 in AppendQuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToASCII | +| file://:0:0:0:0 | [summary param] 0 in AppendQuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToGraphic | +| file://:0:0:0:0 | [summary param] 0 in AppendSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendSlice | +| file://:0:0:0:0 | [summary param] 0 in As | file://:0:0:0:0 | [summary] to write: argument 1 in As | +| file://:0:0:0:0 | [summary param] 0 in Base | file://:0:0:0:0 | [summary] to write: return (return[0]) in Base | +| file://:0:0:0:0 | [summary param] 0 in Base | file://:0:0:0:0 | [summary] to write: return (return[0]) in Base | +| file://:0:0:0:0 | [summary param] 0 in BytePtrFromString | file://:0:0:0:0 | [summary] to write: return (return[0]) in BytePtrFromString | +| file://:0:0:0:0 | [summary param] 0 in ByteSliceFromString | file://:0:0:0:0 | [summary] to write: return (return[0]) in ByteSliceFromString | +| file://:0:0:0:0 | [summary param] 0 in CanonicalHeaderKey | file://:0:0:0:0 | [summary] to write: return (return[0]) in CanonicalHeaderKey | +| file://:0:0:0:0 | [summary param] 0 in CanonicalMIMEHeaderKey | file://:0:0:0:0 | [summary] to write: return (return[0]) in CanonicalMIMEHeaderKey | +| file://:0:0:0:0 | [summary param] 0 in Clean | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clean | +| file://:0:0:0:0 | [summary param] 0 in Clean | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clean | +| file://:0:0:0:0 | [summary param] 0 in Client | file://:0:0:0:0 | [summary] to write: return (return[0]) in Client | +| file://:0:0:0:0 | [summary param] 0 in Clone | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clone | +| file://:0:0:0:0 | [summary param] 0 in Cut | file://:0:0:0:0 | [summary] to write: return (return[0]) in Cut | +| file://:0:0:0:0 | [summary param] 0 in Cut | file://:0:0:0:0 | [summary] to write: return (return[1]) in Cut | +| file://:0:0:0:0 | [summary param] 0 in CutPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in CutPrefix | +| file://:0:0:0:0 | [summary param] 0 in CutSuffix | file://:0:0:0:0 | [summary] to write: return (return[0]) in CutSuffix | +| file://:0:0:0:0 | [summary param] 0 in Decode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Decode | +| file://:0:0:0:0 | [summary param] 0 in Decode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Decode | +| file://:0:0:0:0 | [summary param] 0 in Decode | file://:0:0:0:0 | [summary] to write: return (return[1]) in Decode | +| file://:0:0:0:0 | [summary param] 0 in DecodeHeader | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecodeHeader | +| file://:0:0:0:0 | [summary param] 0 in DecodeString | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecodeString | +| file://:0:0:0:0 | [summary param] 0 in DecodeString | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecodeString | +| file://:0:0:0:0 | [summary param] 0 in DecryptPEMBlock | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecryptPEMBlock | +| file://:0:0:0:0 | [summary param] 0 in Dir | file://:0:0:0:0 | [summary] to write: return (return[0]) in Dir | +| file://:0:0:0:0 | [summary param] 0 in Dir | file://:0:0:0:0 | [summary] to write: return (return[0]) in Dir | +| file://:0:0:0:0 | [summary param] 0 in Encode | file://:0:0:0:0 | [summary] to write: argument -1 in Encode | +| file://:0:0:0:0 | [summary param] 0 in EncodeToMemory | file://:0:0:0:0 | [summary] to write: return (return[0]) in EncodeToMemory | +| file://:0:0:0:0 | [summary param] 0 in EvalSymlinks | file://:0:0:0:0 | [summary] to write: return (return[0]) in EvalSymlinks | +| file://:0:0:0:0 | [summary param] 0 in Expand | file://:0:0:0:0 | [summary] to write: return (return[0]) in Expand | +| file://:0:0:0:0 | [summary param] 0 in ExpandEnv | file://:0:0:0:0 | [summary] to write: return (return[0]) in ExpandEnv | +| file://:0:0:0:0 | [summary param] 0 in Ext | file://:0:0:0:0 | [summary] to write: return (return[0]) in Ext | +| file://:0:0:0:0 | [summary param] 0 in Ext | file://:0:0:0:0 | [summary] to write: return (return[0]) in Ext | +| file://:0:0:0:0 | [summary param] 0 in Fields | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fields | +| file://:0:0:0:0 | [summary param] 0 in Fields | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fields | +| file://:0:0:0:0 | [summary param] 0 in FieldsFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldsFunc | +| file://:0:0:0:0 | [summary param] 0 in FieldsFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldsFunc | +| file://:0:0:0:0 | [summary param] 0 in FileConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in FileConn | +| file://:0:0:0:0 | [summary param] 0 in FileInfoToDirEntry | file://:0:0:0:0 | [summary] to write: return (return[0]) in FileInfoToDirEntry | +| file://:0:0:0:0 | [summary param] 0 in FilePacketConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in FilePacketConn | +| file://:0:0:0:0 | [summary param] 0 in FormatMediaType | file://:0:0:0:0 | [summary] to write: return (return[0]) in FormatMediaType | +| file://:0:0:0:0 | [summary param] 0 in FromSlash | file://:0:0:0:0 | [summary] to write: return (return[0]) in FromSlash | +| file://:0:0:0:0 | [summary param] 0 in Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | +| file://:0:0:0:0 | [summary param] 0 in Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | +| file://:0:0:0:0 | [summary param] 0 in Indirect | file://:0:0:0:0 | [summary] to write: return (return[0]) in Indirect | +| file://:0:0:0:0 | [summary param] 0 in InsertAfter | file://:0:0:0:0 | [summary] to write: argument -1 in InsertAfter | +| file://:0:0:0:0 | [summary param] 0 in InsertAfter | file://:0:0:0:0 | [summary] to write: return (return[0]) in InsertAfter | +| file://:0:0:0:0 | [summary param] 0 in InsertBefore | file://:0:0:0:0 | [summary] to write: argument -1 in InsertBefore | +| file://:0:0:0:0 | [summary param] 0 in InsertBefore | file://:0:0:0:0 | [summary] to write: return (return[0]) in InsertBefore | +| file://:0:0:0:0 | [summary param] 0 in Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | +| file://:0:0:0:0 | [summary param] 0 in Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | +| file://:0:0:0:0 | [summary param] 0 in JoinHostPort | file://:0:0:0:0 | [summary] to write: return (return[0]) in JoinHostPort | +| file://:0:0:0:0 | [summary param] 0 in LimitReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in LimitReader | +| file://:0:0:0:0 | [summary param] 0 in LoadOrStore | file://:0:0:0:0 | [summary] to write: argument -1 in LoadOrStore | +| file://:0:0:0:0 | [summary param] 0 in LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | +| file://:0:0:0:0 | [summary param] 0 in LoadPointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadPointer | +| file://:0:0:0:0 | [summary param] 0 in LoadUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadUintptr | +| file://:0:0:0:0 | [summary param] 0 in Marshal | file://:0:0:0:0 | [summary] to write: return (return[0]) in Marshal | +| file://:0:0:0:0 | [summary param] 0 in Marshal | file://:0:0:0:0 | [summary] to write: return (return[0]) in Marshal | +| file://:0:0:0:0 | [summary param] 0 in MarshalIndent | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalIndent | +| file://:0:0:0:0 | [summary param] 0 in MarshalWithParams | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalWithParams | +| file://:0:0:0:0 | [summary param] 0 in MoveAfter | file://:0:0:0:0 | [summary] to write: argument -1 in MoveAfter | +| file://:0:0:0:0 | [summary param] 0 in MoveBefore | file://:0:0:0:0 | [summary] to write: argument -1 in MoveBefore | +| file://:0:0:0:0 | [summary param] 0 in MoveToBack | file://:0:0:0:0 | [summary] to write: argument -1 in MoveToBack | +| file://:0:0:0:0 | [summary param] 0 in MoveToFront | file://:0:0:0:0 | [summary] to write: argument -1 in MoveToFront | +| file://:0:0:0:0 | [summary param] 0 in New | file://:0:0:0:0 | [summary] to write: return (return[0]) in New | +| file://:0:0:0:0 | [summary param] 0 in NewBuffer | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewBuffer | +| file://:0:0:0:0 | [summary param] 0 in NewBufferString | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewBufferString | +| file://:0:0:0:0 | [summary param] 0 in NewConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewConn | +| file://:0:0:0:0 | [summary param] 0 in NewDecoder | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewDecoder | +| file://:0:0:0:0 | [summary param] 0 in NewDecoder | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewDecoder | +| file://:0:0:0:0 | [summary param] 0 in NewFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewFile | +| file://:0:0:0:0 | [summary param] 0 in NewListener | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewListener | +| file://:0:0:0:0 | [summary param] 0 in NewReadWriter | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReadWriter | +| file://:0:0:0:0 | [summary param] 0 in NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | +| file://:0:0:0:0 | [summary param] 0 in NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | +| file://:0:0:0:0 | [summary param] 0 in NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | +| file://:0:0:0:0 | [summary param] 0 in NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | +| file://:0:0:0:0 | [summary param] 0 in NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | +| file://:0:0:0:0 | [summary param] 0 in NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | +| file://:0:0:0:0 | [summary param] 0 in NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | +| file://:0:0:0:0 | [summary param] 0 in NewReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReader | +| file://:0:0:0:0 | [summary param] 0 in NewReaderDict | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReaderDict | +| file://:0:0:0:0 | [summary param] 0 in NewReaderSize | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewReaderSize | +| file://:0:0:0:0 | [summary param] 0 in NewScanner | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewScanner | +| file://:0:0:0:0 | [summary param] 0 in NewSectionReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewSectionReader | +| file://:0:0:0:0 | [summary param] 0 in NopCloser | file://:0:0:0:0 | [summary] to write: return (return[0]) in NopCloser | +| file://:0:0:0:0 | [summary param] 0 in NopCloser | file://:0:0:0:0 | [summary] to write: return (return[0]) in NopCloser | +| file://:0:0:0:0 | [summary param] 0 in Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | +| file://:0:0:0:0 | [summary param] 0 in Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | +| file://:0:0:0:0 | [summary param] 0 in ParseMediaType | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseMediaType | +| file://:0:0:0:0 | [summary param] 0 in ParseMediaType | file://:0:0:0:0 | [summary] to write: return (return[1]) in ParseMediaType | +| file://:0:0:0:0 | [summary param] 0 in ParseQuery | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseQuery | +| file://:0:0:0:0 | [summary param] 0 in ParseRequestURI | file://:0:0:0:0 | [summary] to write: return (return[0]) in ParseRequestURI | +| file://:0:0:0:0 | [summary param] 0 in PathEscape | file://:0:0:0:0 | [summary] to write: return (return[0]) in PathEscape | +| file://:0:0:0:0 | [summary param] 0 in PathUnescape | file://:0:0:0:0 | [summary] to write: return (return[0]) in PathUnescape | +| file://:0:0:0:0 | [summary param] 0 in PushBack | file://:0:0:0:0 | [summary] to write: argument -1 in PushBack | +| file://:0:0:0:0 | [summary param] 0 in PushBack | file://:0:0:0:0 | [summary] to write: return (return[0]) in PushBack | +| file://:0:0:0:0 | [summary param] 0 in PushBackList | file://:0:0:0:0 | [summary] to write: argument -1 in PushBackList | +| file://:0:0:0:0 | [summary param] 0 in PushFront | file://:0:0:0:0 | [summary] to write: argument -1 in PushFront | +| file://:0:0:0:0 | [summary param] 0 in PushFront | file://:0:0:0:0 | [summary] to write: return (return[0]) in PushFront | +| file://:0:0:0:0 | [summary param] 0 in PushFrontList | file://:0:0:0:0 | [summary] to write: argument -1 in PushFrontList | +| file://:0:0:0:0 | [summary param] 0 in Put | file://:0:0:0:0 | [summary] to write: argument -1 in Put | +| file://:0:0:0:0 | [summary param] 0 in QueryEscape | file://:0:0:0:0 | [summary] to write: return (return[0]) in QueryEscape | +| file://:0:0:0:0 | [summary param] 0 in QueryUnescape | file://:0:0:0:0 | [summary] to write: return (return[0]) in QueryUnescape | +| file://:0:0:0:0 | [summary param] 0 in Quote | file://:0:0:0:0 | [summary] to write: return (return[0]) in Quote | +| file://:0:0:0:0 | [summary param] 0 in QuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuoteToASCII | +| file://:0:0:0:0 | [summary param] 0 in QuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuoteToGraphic | +| file://:0:0:0:0 | [summary param] 0 in QuotedPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in QuotedPrefix | +| file://:0:0:0:0 | [summary param] 0 in Read | file://:0:0:0:0 | [summary] to write: argument 2 in Read | +| file://:0:0:0:0 | [summary param] 0 in ReadAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadAll | +| file://:0:0:0:0 | [summary param] 0 in ReadAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadAll | +| file://:0:0:0:0 | [summary param] 0 in ReadAtLeast | file://:0:0:0:0 | [summary] to write: argument 1 in ReadAtLeast | +| file://:0:0:0:0 | [summary param] 0 in ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | +| file://:0:0:0:0 | [summary param] 0 in ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument -1 in ReadFrom | +| file://:0:0:0:0 | [summary param] 0 in ReadFull | file://:0:0:0:0 | [summary] to write: argument 1 in ReadFull | +| file://:0:0:0:0 | [summary param] 0 in ReadRequest | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadRequest | +| file://:0:0:0:0 | [summary param] 0 in ReadResponse | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadResponse | +| file://:0:0:0:0 | [summary param] 0 in Rel | file://:0:0:0:0 | [summary] to write: return (return[0]) in Rel | +| file://:0:0:0:0 | [summary param] 0 in Remove | file://:0:0:0:0 | [summary] to write: return (return[0]) in Remove | +| file://:0:0:0:0 | [summary param] 0 in Repeat | file://:0:0:0:0 | [summary] to write: return (return[0]) in Repeat | +| file://:0:0:0:0 | [summary param] 0 in Repeat | file://:0:0:0:0 | [summary] to write: return (return[0]) in Repeat | +| file://:0:0:0:0 | [summary param] 0 in Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | +| file://:0:0:0:0 | [summary param] 0 in Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | +| file://:0:0:0:0 | [summary param] 0 in Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | +| file://:0:0:0:0 | [summary param] 0 in ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | +| file://:0:0:0:0 | [summary param] 0 in ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | +| file://:0:0:0:0 | [summary param] 0 in Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | +| file://:0:0:0:0 | [summary param] 0 in Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | +| file://:0:0:0:0 | [summary param] 0 in Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | +| file://:0:0:0:0 | [summary param] 0 in Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | +| file://:0:0:0:0 | [summary param] 0 in Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | +| file://:0:0:0:0 | [summary param] 0 in Reset | file://:0:0:0:0 | [summary] to write: argument -1 in Reset | +| file://:0:0:0:0 | [summary param] 0 in ResolveReference | file://:0:0:0:0 | [summary] to write: return (return[0]) in ResolveReference | +| file://:0:0:0:0 | [summary param] 0 in Reverse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Reverse | +| file://:0:0:0:0 | [summary param] 0 in Runes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Runes | +| file://:0:0:0:0 | [summary param] 0 in ScanBytes | file://:0:0:0:0 | [summary] to write: return (return[1]) in ScanBytes | +| file://:0:0:0:0 | [summary param] 0 in ScanLines | file://:0:0:0:0 | [summary] to write: return (return[1]) in ScanLines | +| file://:0:0:0:0 | [summary param] 0 in ScanRunes | file://:0:0:0:0 | [summary] to write: return (return[1]) in ScanRunes | +| file://:0:0:0:0 | [summary param] 0 in ScanWords | file://:0:0:0:0 | [summary] to write: return (return[1]) in ScanWords | +| file://:0:0:0:0 | [summary param] 0 in Send | file://:0:0:0:0 | [summary] to write: argument -1 in Send | +| file://:0:0:0:0 | [summary param] 0 in Server | file://:0:0:0:0 | [summary] to write: return (return[0]) in Server | +| file://:0:0:0:0 | [summary param] 0 in Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | +| file://:0:0:0:0 | [summary param] 0 in Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | +| file://:0:0:0:0 | [summary param] 0 in Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | +| file://:0:0:0:0 | [summary param] 0 in SetBytes | file://:0:0:0:0 | [summary] to write: argument -1 in SetBytes | +| file://:0:0:0:0 | [summary param] 0 in SetIndent | file://:0:0:0:0 | [summary] to write: argument -1 in SetIndent | +| file://:0:0:0:0 | [summary param] 0 in SetMapIndex | file://:0:0:0:0 | [summary] to write: argument -1 in SetMapIndex | +| file://:0:0:0:0 | [summary param] 0 in SetPointer | file://:0:0:0:0 | [summary] to write: argument -1 in SetPointer | +| file://:0:0:0:0 | [summary param] 0 in SetPrefix | file://:0:0:0:0 | [summary] to write: argument -1 in SetPrefix | +| file://:0:0:0:0 | [summary param] 0 in SetString | file://:0:0:0:0 | [summary] to write: argument -1 in SetString | +| file://:0:0:0:0 | [summary param] 0 in Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | +| file://:0:0:0:0 | [summary param] 0 in Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | +| file://:0:0:0:0 | [summary param] 0 in Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | +| file://:0:0:0:0 | [summary param] 0 in Split | file://:0:0:0:0 | [summary] to write: return (return[0]) in Split | +| file://:0:0:0:0 | [summary param] 0 in Split | file://:0:0:0:0 | [summary] to write: return (return[1]) in Split | +| file://:0:0:0:0 | [summary param] 0 in Split | file://:0:0:0:0 | [summary] to write: return (return[1]) in Split | +| file://:0:0:0:0 | [summary param] 0 in SplitAfter | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfter | +| file://:0:0:0:0 | [summary param] 0 in SplitAfter | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfter | +| file://:0:0:0:0 | [summary param] 0 in SplitAfterN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfterN | +| file://:0:0:0:0 | [summary param] 0 in SplitAfterN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitAfterN | +| file://:0:0:0:0 | [summary param] 0 in SplitHostPort | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitHostPort | +| file://:0:0:0:0 | [summary param] 0 in SplitHostPort | file://:0:0:0:0 | [summary] to write: return (return[1]) in SplitHostPort | +| file://:0:0:0:0 | [summary param] 0 in SplitList | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitList | +| file://:0:0:0:0 | [summary param] 0 in SplitN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitN | +| file://:0:0:0:0 | [summary param] 0 in SplitN | file://:0:0:0:0 | [summary] to write: return (return[0]) in SplitN | +| file://:0:0:0:0 | [summary param] 0 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 0 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 0 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 0 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 0 in StringBytePtr | file://:0:0:0:0 | [summary] to write: return (return[0]) in StringBytePtr | +| file://:0:0:0:0 | [summary param] 0 in StringByteSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in StringByteSlice | +| file://:0:0:0:0 | [summary param] 0 in Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | +| file://:0:0:0:0 | [summary param] 0 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 0 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 0 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 0 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 0 in SwapPointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in SwapPointer | +| file://:0:0:0:0 | [summary param] 0 in SwapUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in SwapUintptr | +| file://:0:0:0:0 | [summary param] 0 in TeeReader | file://:0:0:0:0 | [summary] to write: argument 1 in TeeReader | +| file://:0:0:0:0 | [summary param] 0 in TeeReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in TeeReader | +| file://:0:0:0:0 | [summary param] 0 in Title | file://:0:0:0:0 | [summary] to write: return (return[0]) in Title | +| file://:0:0:0:0 | [summary param] 0 in Title | file://:0:0:0:0 | [summary] to write: return (return[0]) in Title | +| file://:0:0:0:0 | [summary param] 0 in ToLower | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLower | +| file://:0:0:0:0 | [summary param] 0 in ToLower | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLower | +| file://:0:0:0:0 | [summary param] 0 in ToSlash | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToSlash | +| file://:0:0:0:0 | [summary param] 0 in ToTitle | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitle | +| file://:0:0:0:0 | [summary param] 0 in ToTitle | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitle | +| file://:0:0:0:0 | [summary param] 0 in ToUpper | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpper | +| file://:0:0:0:0 | [summary param] 0 in ToUpper | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpper | +| file://:0:0:0:0 | [summary param] 0 in ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | +| file://:0:0:0:0 | [summary param] 0 in ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | +| file://:0:0:0:0 | [summary param] 0 in Trim | file://:0:0:0:0 | [summary] to write: return (return[0]) in Trim | +| file://:0:0:0:0 | [summary param] 0 in Trim | file://:0:0:0:0 | [summary] to write: return (return[0]) in Trim | +| file://:0:0:0:0 | [summary param] 0 in TrimBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimBytes | +| file://:0:0:0:0 | [summary param] 0 in TrimFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimFunc | +| file://:0:0:0:0 | [summary param] 0 in TrimFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimFunc | +| file://:0:0:0:0 | [summary param] 0 in TrimLeft | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeft | +| file://:0:0:0:0 | [summary param] 0 in TrimLeft | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeft | +| file://:0:0:0:0 | [summary param] 0 in TrimLeftFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeftFunc | +| file://:0:0:0:0 | [summary param] 0 in TrimLeftFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimLeftFunc | +| file://:0:0:0:0 | [summary param] 0 in TrimPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimPrefix | +| file://:0:0:0:0 | [summary param] 0 in TrimPrefix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimPrefix | +| file://:0:0:0:0 | [summary param] 0 in TrimRight | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRight | +| file://:0:0:0:0 | [summary param] 0 in TrimRight | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRight | +| file://:0:0:0:0 | [summary param] 0 in TrimRightFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRightFunc | +| file://:0:0:0:0 | [summary param] 0 in TrimRightFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimRightFunc | +| file://:0:0:0:0 | [summary param] 0 in TrimSpace | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSpace | +| file://:0:0:0:0 | [summary param] 0 in TrimSpace | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSpace | +| file://:0:0:0:0 | [summary param] 0 in TrimString | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimString | +| file://:0:0:0:0 | [summary param] 0 in TrimSuffix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSuffix | +| file://:0:0:0:0 | [summary param] 0 in TrimSuffix | file://:0:0:0:0 | [summary] to write: return (return[0]) in TrimSuffix | +| file://:0:0:0:0 | [summary param] 0 in TrySend | file://:0:0:0:0 | [summary] to write: argument -1 in TrySend | +| file://:0:0:0:0 | [summary param] 0 in Unmarshal | file://:0:0:0:0 | [summary] to write: argument 1 in Unmarshal | +| file://:0:0:0:0 | [summary param] 0 in Unmarshal | file://:0:0:0:0 | [summary] to write: argument 1 in Unmarshal | +| file://:0:0:0:0 | [summary param] 0 in Unmarshal | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unmarshal | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalBinary | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalBinary | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalJSON | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalJSON | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalJSON | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalJSON | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalJSON | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalJSON | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalJSON | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalJSON | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalText | file://:0:0:0:0 | [summary] to write: argument -1 in UnmarshalText | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalWithParams | file://:0:0:0:0 | [summary] to write: argument 1 in UnmarshalWithParams | +| file://:0:0:0:0 | [summary param] 0 in UnmarshalWithParams | file://:0:0:0:0 | [summary] to write: return (return[0]) in UnmarshalWithParams | +| file://:0:0:0:0 | [summary param] 0 in Unquote | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unquote | +| file://:0:0:0:0 | [summary param] 0 in UnquoteChar | file://:0:0:0:0 | [summary] to write: return (return[2]) in UnquoteChar | +| file://:0:0:0:0 | [summary param] 0 in Unwrap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Unwrap | +| file://:0:0:0:0 | [summary param] 0 in User | file://:0:0:0:0 | [summary] to write: return (return[0]) in User | +| file://:0:0:0:0 | [summary param] 0 in UserPassword | file://:0:0:0:0 | [summary] to write: return (return[0]) in UserPassword | +| file://:0:0:0:0 | [summary param] 0 in ValueOf | file://:0:0:0:0 | [summary] to write: return (return[0]) in ValueOf | +| file://:0:0:0:0 | [summary param] 0 in VolumeName | file://:0:0:0:0 | [summary] to write: return (return[0]) in VolumeName | +| file://:0:0:0:0 | [summary param] 0 in WithCancel | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithCancel | +| file://:0:0:0:0 | [summary param] 0 in WithDeadline | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithDeadline | +| file://:0:0:0:0 | [summary param] 0 in WithTimeout | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithTimeout | +| file://:0:0:0:0 | [summary param] 0 in WithValue | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithValue | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in Write | file://:0:0:0:0 | [summary] to write: argument -1 in Write | +| file://:0:0:0:0 | [summary param] 0 in WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | +| file://:0:0:0:0 | [summary param] 0 in WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | +| file://:0:0:0:0 | [summary param] 0 in WriteAt | file://:0:0:0:0 | [summary] to write: argument -1 in WriteAt | +| file://:0:0:0:0 | [summary param] 0 in WriteField | file://:0:0:0:0 | [summary] to write: argument -1 in WriteField | +| file://:0:0:0:0 | [summary param] 0 in WriteMsgIP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgIP | +| file://:0:0:0:0 | [summary param] 0 in WriteMsgUDP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgUDP | +| file://:0:0:0:0 | [summary param] 0 in WriteMsgUnix | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgUnix | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteString | file://:0:0:0:0 | [summary] to write: argument -1 in WriteString | +| file://:0:0:0:0 | [summary param] 0 in WriteTo | file://:0:0:0:0 | [summary] to write: argument -1 in WriteTo | +| file://:0:0:0:0 | [summary param] 0 in WriteTo | file://:0:0:0:0 | [summary] to write: argument -1 in WriteTo | +| file://:0:0:0:0 | [summary param] 0 in WriteTo | file://:0:0:0:0 | [summary] to write: argument -1 in WriteTo | +| file://:0:0:0:0 | [summary param] 0 in WriteTo | file://:0:0:0:0 | [summary] to write: argument -1 in WriteTo | +| file://:0:0:0:0 | [summary param] 0 in WriteToIP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteToIP | +| file://:0:0:0:0 | [summary param] 0 in WriteToUDP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteToUDP | +| file://:0:0:0:0 | [summary param] 0 in WriteToUnix | file://:0:0:0:0 | [summary] to write: argument -1 in WriteToUnix | +| file://:0:0:0:0 | [summary param] 1 in Add | file://:0:0:0:0 | [summary] to write: argument -1 in Add | +| file://:0:0:0:0 | [summary param] 1 in Add | file://:0:0:0:0 | [summary] to write: argument -1 in Add | +| file://:0:0:0:0 | [summary param] 1 in AddUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in AddUintptr | +| file://:0:0:0:0 | [summary param] 1 in AddUintptr | file://:0:0:0:0 | [summary] to write: return (return[0]) in AddUintptr | +| file://:0:0:0:0 | [summary param] 1 in AppendQuote | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuote | +| file://:0:0:0:0 | [summary param] 1 in AppendQuoteToASCII | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToASCII | +| file://:0:0:0:0 | [summary param] 1 in AppendQuoteToGraphic | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendQuoteToGraphic | +| file://:0:0:0:0 | [summary param] 1 in AppendSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in AppendSlice | +| file://:0:0:0:0 | [summary param] 1 in Compact | file://:0:0:0:0 | [summary] to write: argument 0 in Compact | +| file://:0:0:0:0 | [summary param] 1 in Copy | file://:0:0:0:0 | [summary] to write: argument 0 in Copy | +| file://:0:0:0:0 | [summary param] 1 in Copy | file://:0:0:0:0 | [summary] to write: argument 0 in Copy | +| file://:0:0:0:0 | [summary param] 1 in CopyBuffer | file://:0:0:0:0 | [summary] to write: argument 0 in CopyBuffer | +| file://:0:0:0:0 | [summary param] 1 in CopyN | file://:0:0:0:0 | [summary] to write: argument 0 in CopyN | +| file://:0:0:0:0 | [summary param] 1 in Decode | file://:0:0:0:0 | [summary] to write: argument 0 in Decode | +| file://:0:0:0:0 | [summary param] 1 in Decode | file://:0:0:0:0 | [summary] to write: argument 0 in Decode | +| file://:0:0:0:0 | [summary param] 1 in Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | +| file://:0:0:0:0 | [summary param] 1 in Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | +| file://:0:0:0:0 | [summary param] 1 in Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | +| file://:0:0:0:0 | [summary param] 1 in Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | +| file://:0:0:0:0 | [summary param] 1 in Decrypt | file://:0:0:0:0 | [summary] to write: argument 0 in Decrypt | +| file://:0:0:0:0 | [summary param] 1 in Decrypt | file://:0:0:0:0 | [summary] to write: return (return[0]) in Decrypt | +| file://:0:0:0:0 | [summary param] 1 in Decrypt | file://:0:0:0:0 | [summary] to write: return (return[0]) in Decrypt | +| file://:0:0:0:0 | [summary param] 1 in Encode | file://:0:0:0:0 | [summary] to write: argument 0 in Encode | +| file://:0:0:0:0 | [summary param] 1 in Encode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Encode | +| file://:0:0:0:0 | [summary param] 1 in Error | file://:0:0:0:0 | [summary] to write: argument 0 in Error | +| file://:0:0:0:0 | [summary param] 1 in FormatMediaType | file://:0:0:0:0 | [summary] to write: return (return[0]) in FormatMediaType | +| file://:0:0:0:0 | [summary param] 1 in HTMLEscape | file://:0:0:0:0 | [summary] to write: argument 0 in HTMLEscape | +| file://:0:0:0:0 | [summary param] 1 in Indent | file://:0:0:0:0 | [summary] to write: argument 0 in Indent | +| file://:0:0:0:0 | [summary param] 1 in Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | +| file://:0:0:0:0 | [summary param] 1 in Join | file://:0:0:0:0 | [summary] to write: return (return[0]) in Join | +| file://:0:0:0:0 | [summary param] 1 in JoinHostPort | file://:0:0:0:0 | [summary] to write: return (return[0]) in JoinHostPort | +| file://:0:0:0:0 | [summary param] 1 in LoadOrStore | file://:0:0:0:0 | [summary] to write: argument -1 in LoadOrStore | +| file://:0:0:0:0 | [summary param] 1 in LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | +| file://:0:0:0:0 | [summary param] 1 in Map | file://:0:0:0:0 | [summary] to write: return (return[0]) in Map | +| file://:0:0:0:0 | [summary param] 1 in Map | file://:0:0:0:0 | [summary] to write: return (return[0]) in Map | +| file://:0:0:0:0 | [summary param] 1 in MarshalIndent | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalIndent | +| file://:0:0:0:0 | [summary param] 1 in MarshalWithParams | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalWithParams | +| file://:0:0:0:0 | [summary param] 1 in MaxBytesReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in MaxBytesReader | +| file://:0:0:0:0 | [summary param] 1 in NewDecoder | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewDecoder | +| file://:0:0:0:0 | [summary param] 1 in NewRequest | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewRequest | +| file://:0:0:0:0 | [summary param] 1 in Rel | file://:0:0:0:0 | [summary] to write: return (return[0]) in Rel | +| file://:0:0:0:0 | [summary param] 1 in Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | +| file://:0:0:0:0 | [summary param] 1 in Set | file://:0:0:0:0 | [summary] to write: argument -1 in Set | +| file://:0:0:0:0 | [summary param] 1 in SetCookie | file://:0:0:0:0 | [summary] to write: argument 0 in SetCookie | +| file://:0:0:0:0 | [summary param] 1 in SetIndent | file://:0:0:0:0 | [summary] to write: argument -1 in SetIndent | +| file://:0:0:0:0 | [summary param] 1 in SetMapIndex | file://:0:0:0:0 | [summary] to write: argument -1 in SetMapIndex | +| file://:0:0:0:0 | [summary param] 1 in Store | file://:0:0:0:0 | [summary] to write: argument -1 in Store | +| file://:0:0:0:0 | [summary param] 1 in StorePointer | file://:0:0:0:0 | [summary] to write: argument 0 in StorePointer | +| file://:0:0:0:0 | [summary param] 1 in StoreUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in StoreUintptr | +| file://:0:0:0:0 | [summary param] 1 in Swap | file://:0:0:0:0 | [summary] to write: argument -1 in Swap | +| file://:0:0:0:0 | [summary param] 1 in SwapPointer | file://:0:0:0:0 | [summary] to write: argument 0 in SwapPointer | +| file://:0:0:0:0 | [summary param] 1 in SwapUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in SwapUintptr | +| file://:0:0:0:0 | [summary param] 1 in ToLowerSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLowerSpecial | +| file://:0:0:0:0 | [summary param] 1 in ToLowerSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToLowerSpecial | +| file://:0:0:0:0 | [summary param] 1 in ToTitleSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitleSpecial | +| file://:0:0:0:0 | [summary param] 1 in ToTitleSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToTitleSpecial | +| file://:0:0:0:0 | [summary param] 1 in ToUpperSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpperSpecial | +| file://:0:0:0:0 | [summary param] 1 in ToUpperSpecial | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToUpperSpecial | +| file://:0:0:0:0 | [summary param] 1 in ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | +| file://:0:0:0:0 | [summary param] 1 in ToValidUTF8 | file://:0:0:0:0 | [summary] to write: return (return[0]) in ToValidUTF8 | +| file://:0:0:0:0 | [summary param] 1 in UserPassword | file://:0:0:0:0 | [summary] to write: return (return[0]) in UserPassword | +| file://:0:0:0:0 | [summary param] 1 in WithValue | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithValue | +| file://:0:0:0:0 | [summary param] 1 in WriteField | file://:0:0:0:0 | [summary] to write: argument -1 in WriteField | +| file://:0:0:0:0 | [summary param] 1 in WriteMsgIP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgIP | +| file://:0:0:0:0 | [summary param] 1 in WriteMsgUDP | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgUDP | +| file://:0:0:0:0 | [summary param] 1 in WriteMsgUnix | file://:0:0:0:0 | [summary] to write: argument -1 in WriteMsgUnix | +| file://:0:0:0:0 | [summary param] 1 in WriteString | file://:0:0:0:0 | [summary] to write: argument 0 in WriteString | +| file://:0:0:0:0 | [summary param] 1 in WriteString | file://:0:0:0:0 | [summary] to write: argument 0 in WriteString | +| file://:0:0:0:0 | [summary param] 2 in CompareAndSwap | file://:0:0:0:0 | [summary] to write: argument -1 in CompareAndSwap | +| file://:0:0:0:0 | [summary param] 2 in CompareAndSwapPointer | file://:0:0:0:0 | [summary] to write: argument 0 in CompareAndSwapPointer | +| file://:0:0:0:0 | [summary param] 2 in CompareAndSwapUintptr | file://:0:0:0:0 | [summary] to write: argument 0 in CompareAndSwapUintptr | +| file://:0:0:0:0 | [summary param] 2 in DecryptPKCS1v15 | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecryptPKCS1v15 | +| file://:0:0:0:0 | [summary param] 2 in Indent | file://:0:0:0:0 | [summary] to write: argument 0 in Indent | +| file://:0:0:0:0 | [summary param] 2 in MarshalIndent | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalIndent | +| file://:0:0:0:0 | [summary param] 2 in NewRequestWithContext | file://:0:0:0:0 | [summary] to write: return (return[0]) in NewRequestWithContext | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: argument 0 in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] 2 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] 2 in Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | +| file://:0:0:0:0 | [summary param] 2 in Replace | file://:0:0:0:0 | [summary] to write: return (return[0]) in Replace | +| file://:0:0:0:0 | [summary param] 2 in ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | +| file://:0:0:0:0 | [summary param] 2 in ReplaceAll | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReplaceAll | +| file://:0:0:0:0 | [summary param] 2 in UnmarshalWithParams | file://:0:0:0:0 | [summary] to write: argument 1 in UnmarshalWithParams | +| file://:0:0:0:0 | [summary param] 2 in UnmarshalWithParams | file://:0:0:0:0 | [summary] to write: return (return[0]) in UnmarshalWithParams | +| file://:0:0:0:0 | [summary param] 2 in WithValue | file://:0:0:0:0 | [summary] to write: return (return[0]) in WithValue | +| file://:0:0:0:0 | [summary param] 2 in Write | file://:0:0:0:0 | [summary] to write: argument 0 in Write | +| file://:0:0:0:0 | [summary param] 3 in DecryptOAEP | file://:0:0:0:0 | [summary] to write: return (return[0]) in DecryptOAEP | +| file://:0:0:0:0 | [summary param] 3 in Indent | file://:0:0:0:0 | [summary] to write: argument 0 in Indent | +| file://:0:0:0:0 | [summary param] -1 in Addr | file://:0:0:0:0 | [summary] to write: return (return[0]) in Addr | +| file://:0:0:0:0 | [summary param] -1 in Back | file://:0:0:0:0 | [summary] to write: return (return[0]) in Back | +| file://:0:0:0:0 | [summary param] -1 in Buffered | file://:0:0:0:0 | [summary] to write: return (return[0]) in Buffered | +| file://:0:0:0:0 | [summary param] -1 in Bytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Bytes | +| file://:0:0:0:0 | [summary param] -1 in Bytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Bytes | +| file://:0:0:0:0 | [summary param] -1 in Bytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in Bytes | +| file://:0:0:0:0 | [summary param] -1 in Clone | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clone | +| file://:0:0:0:0 | [summary param] -1 in Clone | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clone | +| file://:0:0:0:0 | [summary param] -1 in Clone | file://:0:0:0:0 | [summary] to write: return (return[0]) in Clone | +| file://:0:0:0:0 | [summary param] -1 in Convert | file://:0:0:0:0 | [summary] to write: return (return[0]) in Convert | +| file://:0:0:0:0 | [summary param] -1 in Decode | file://:0:0:0:0 | [summary] to write: argument 0 in Decode | +| file://:0:0:0:0 | [summary param] -1 in DotReader | file://:0:0:0:0 | [summary] to write: return (return[0]) in DotReader | +| file://:0:0:0:0 | [summary param] -1 in Elem | file://:0:0:0:0 | [summary] to write: return (return[0]) in Elem | +| file://:0:0:0:0 | [summary param] -1 in Encode | file://:0:0:0:0 | [summary] to write: return (return[0]) in Encode | +| file://:0:0:0:0 | [summary param] -1 in EscapedPath | file://:0:0:0:0 | [summary] to write: return (return[0]) in EscapedPath | +| file://:0:0:0:0 | [summary param] -1 in Fd | file://:0:0:0:0 | [summary] to write: return (return[0]) in Fd | +| file://:0:0:0:0 | [summary param] -1 in Field | file://:0:0:0:0 | [summary] to write: return (return[0]) in Field | +| file://:0:0:0:0 | [summary param] -1 in FieldByIndex | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByIndex | +| file://:0:0:0:0 | [summary param] -1 in FieldByName | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByName | +| file://:0:0:0:0 | [summary param] -1 in FieldByNameFunc | file://:0:0:0:0 | [summary] to write: return (return[0]) in FieldByNameFunc | +| file://:0:0:0:0 | [summary param] -1 in File | file://:0:0:0:0 | [summary] to write: return (return[0]) in File | +| file://:0:0:0:0 | [summary param] -1 in File | file://:0:0:0:0 | [summary] to write: return (return[0]) in File | +| file://:0:0:0:0 | [summary param] -1 in FileName | file://:0:0:0:0 | [summary] to write: return (return[0]) in FileName | +| file://:0:0:0:0 | [summary param] -1 in FormName | file://:0:0:0:0 | [summary] to write: return (return[0]) in FormName | +| file://:0:0:0:0 | [summary param] -1 in Front | file://:0:0:0:0 | [summary] to write: return (return[0]) in Front | +| file://:0:0:0:0 | [summary param] -1 in Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | +| file://:0:0:0:0 | [summary param] -1 in Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | +| file://:0:0:0:0 | [summary param] -1 in Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | +| file://:0:0:0:0 | [summary param] -1 in Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | +| file://:0:0:0:0 | [summary param] -1 in Get | file://:0:0:0:0 | [summary] to write: return (return[0]) in Get | +| file://:0:0:0:0 | [summary param] -1 in Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | +| file://:0:0:0:0 | [summary param] -1 in Glob | file://:0:0:0:0 | [summary] to write: return (return[0]) in Glob | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in GoString | file://:0:0:0:0 | [summary] to write: return (return[0]) in GoString | +| file://:0:0:0:0 | [summary param] -1 in Hijack | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hijack | +| file://:0:0:0:0 | [summary param] -1 in Hijack | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hijack | +| file://:0:0:0:0 | [summary param] -1 in Hijack | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hijack | +| file://:0:0:0:0 | [summary param] -1 in Hijack | file://:0:0:0:0 | [summary] to write: return (return[1]) in Hijack | +| file://:0:0:0:0 | [summary param] -1 in Hijack | file://:0:0:0:0 | [summary] to write: return (return[1]) in Hijack | +| file://:0:0:0:0 | [summary param] -1 in Hijack | file://:0:0:0:0 | [summary] to write: return (return[1]) in Hijack | +| file://:0:0:0:0 | [summary param] -1 in Hostname | file://:0:0:0:0 | [summary] to write: return (return[0]) in Hostname | +| file://:0:0:0:0 | [summary param] -1 in Index | file://:0:0:0:0 | [summary] to write: return (return[0]) in Index | +| file://:0:0:0:0 | [summary param] -1 in Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | +| file://:0:0:0:0 | [summary param] -1 in Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | +| file://:0:0:0:0 | [summary param] -1 in Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | +| file://:0:0:0:0 | [summary param] -1 in Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | +| file://:0:0:0:0 | [summary param] -1 in Info | file://:0:0:0:0 | [summary] to write: return (return[0]) in Info | +| file://:0:0:0:0 | [summary param] -1 in Init | file://:0:0:0:0 | [summary] to write: return (return[0]) in Init | +| file://:0:0:0:0 | [summary param] -1 in Interface | file://:0:0:0:0 | [summary] to write: return (return[0]) in Interface | +| file://:0:0:0:0 | [summary param] -1 in InterfaceData | file://:0:0:0:0 | [summary] to write: return (return[0]) in InterfaceData | +| file://:0:0:0:0 | [summary param] -1 in Key | file://:0:0:0:0 | [summary] to write: return (return[0]) in Key | +| file://:0:0:0:0 | [summary param] -1 in Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | +| file://:0:0:0:0 | [summary param] -1 in Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | +| file://:0:0:0:0 | [summary param] -1 in Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | +| file://:0:0:0:0 | [summary param] -1 in Load | file://:0:0:0:0 | [summary] to write: return (return[0]) in Load | +| file://:0:0:0:0 | [summary param] -1 in LoadOrStore | file://:0:0:0:0 | [summary] to write: return (return[0]) in LoadOrStore | +| file://:0:0:0:0 | [summary param] -1 in Lookup | file://:0:0:0:0 | [summary] to write: return (return[0]) in Lookup | +| file://:0:0:0:0 | [summary param] -1 in MapIndex | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapIndex | +| file://:0:0:0:0 | [summary param] -1 in MapKeys | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapKeys | +| file://:0:0:0:0 | [summary param] -1 in MapRange | file://:0:0:0:0 | [summary] to write: return (return[0]) in MapRange | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalBinary | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalBinary | +| file://:0:0:0:0 | [summary param] -1 in MarshalJSON | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalJSON | +| file://:0:0:0:0 | [summary param] -1 in MarshalJSON | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalJSON | +| file://:0:0:0:0 | [summary param] -1 in MarshalJSON | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalJSON | +| file://:0:0:0:0 | [summary param] -1 in MarshalJSON | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalJSON | +| file://:0:0:0:0 | [summary param] -1 in MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | +| file://:0:0:0:0 | [summary param] -1 in MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | +| file://:0:0:0:0 | [summary param] -1 in MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | +| file://:0:0:0:0 | [summary param] -1 in MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | +| file://:0:0:0:0 | [summary param] -1 in MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | +| file://:0:0:0:0 | [summary param] -1 in MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | +| file://:0:0:0:0 | [summary param] -1 in MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | +| file://:0:0:0:0 | [summary param] -1 in MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | +| file://:0:0:0:0 | [summary param] -1 in MarshalText | file://:0:0:0:0 | [summary] to write: return (return[0]) in MarshalText | +| file://:0:0:0:0 | [summary param] -1 in Method | file://:0:0:0:0 | [summary] to write: return (return[0]) in Method | +| file://:0:0:0:0 | [summary param] -1 in MethodByName | file://:0:0:0:0 | [summary] to write: return (return[0]) in MethodByName | +| file://:0:0:0:0 | [summary param] -1 in Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | +| file://:0:0:0:0 | [summary param] -1 in Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | +| file://:0:0:0:0 | [summary param] -1 in Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | +| file://:0:0:0:0 | [summary param] -1 in Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | +| file://:0:0:0:0 | [summary param] -1 in Name | file://:0:0:0:0 | [summary] to write: return (return[0]) in Name | +| file://:0:0:0:0 | [summary param] -1 in Next | file://:0:0:0:0 | [summary] to write: return (return[0]) in Next | +| file://:0:0:0:0 | [summary param] -1 in Next | file://:0:0:0:0 | [summary] to write: return (return[0]) in Next | +| file://:0:0:0:0 | [summary param] -1 in NextPart | file://:0:0:0:0 | [summary] to write: return (return[0]) in NextPart | +| file://:0:0:0:0 | [summary param] -1 in NextRawPart | file://:0:0:0:0 | [summary] to write: return (return[0]) in NextRawPart | +| file://:0:0:0:0 | [summary param] -1 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] -1 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] -1 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] -1 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] -1 in Open | file://:0:0:0:0 | [summary] to write: return (return[0]) in Open | +| file://:0:0:0:0 | [summary param] -1 in Parse | file://:0:0:0:0 | [summary] to write: return (return[0]) in Parse | +| file://:0:0:0:0 | [summary param] -1 in Password | file://:0:0:0:0 | [summary] to write: return (return[0]) in Password | +| file://:0:0:0:0 | [summary param] -1 in Peek | file://:0:0:0:0 | [summary] to write: return (return[0]) in Peek | +| file://:0:0:0:0 | [summary param] -1 in Pointer | file://:0:0:0:0 | [summary] to write: return (return[0]) in Pointer | +| file://:0:0:0:0 | [summary param] -1 in Port | file://:0:0:0:0 | [summary] to write: return (return[0]) in Port | +| file://:0:0:0:0 | [summary param] -1 in Prev | file://:0:0:0:0 | [summary] to write: return (return[0]) in Prev | +| file://:0:0:0:0 | [summary param] -1 in Query | file://:0:0:0:0 | [summary] to write: return (return[0]) in Query | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in Read | file://:0:0:0:0 | [summary] to write: argument 0 in Read | +| file://:0:0:0:0 | [summary param] -1 in ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | +| file://:0:0:0:0 | [summary param] -1 in ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | +| file://:0:0:0:0 | [summary param] -1 in ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | +| file://:0:0:0:0 | [summary param] -1 in ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | +| file://:0:0:0:0 | [summary param] -1 in ReadAt | file://:0:0:0:0 | [summary] to write: argument 0 in ReadAt | +| file://:0:0:0:0 | [summary param] -1 in ReadBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadBytes | +| file://:0:0:0:0 | [summary param] -1 in ReadBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadBytes | +| file://:0:0:0:0 | [summary param] -1 in ReadCodeLine | file://:0:0:0:0 | [summary] to write: return (return[1]) in ReadCodeLine | +| file://:0:0:0:0 | [summary param] -1 in ReadContinuedLine | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadContinuedLine | +| file://:0:0:0:0 | [summary param] -1 in ReadContinuedLineBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadContinuedLineBytes | +| file://:0:0:0:0 | [summary param] -1 in ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | +| file://:0:0:0:0 | [summary param] -1 in ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | +| file://:0:0:0:0 | [summary param] -1 in ReadDir | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDir | +| file://:0:0:0:0 | [summary param] -1 in ReadDotBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDotBytes | +| file://:0:0:0:0 | [summary param] -1 in ReadDotLines | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadDotLines | +| file://:0:0:0:0 | [summary param] -1 in ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | +| file://:0:0:0:0 | [summary param] -1 in ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | +| file://:0:0:0:0 | [summary param] -1 in ReadFile | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadFile | +| file://:0:0:0:0 | [summary param] -1 in ReadForm | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadForm | +| file://:0:0:0:0 | [summary param] -1 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFrom | +| file://:0:0:0:0 | [summary param] -1 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFrom | +| file://:0:0:0:0 | [summary param] -1 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFrom | +| file://:0:0:0:0 | [summary param] -1 in ReadFrom | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFrom | +| file://:0:0:0:0 | [summary param] -1 in ReadFromIP | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFromIP | +| file://:0:0:0:0 | [summary param] -1 in ReadFromUDP | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFromUDP | +| file://:0:0:0:0 | [summary param] -1 in ReadFromUnix | file://:0:0:0:0 | [summary] to write: argument 0 in ReadFromUnix | +| file://:0:0:0:0 | [summary param] -1 in ReadLine | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadLine | +| file://:0:0:0:0 | [summary param] -1 in ReadLine | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadLine | +| file://:0:0:0:0 | [summary param] -1 in ReadLineBytes | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadLineBytes | +| file://:0:0:0:0 | [summary param] -1 in ReadMIMEHeader | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadMIMEHeader | +| file://:0:0:0:0 | [summary param] -1 in ReadMsgIP | file://:0:0:0:0 | [summary] to write: argument 0 in ReadMsgIP | +| file://:0:0:0:0 | [summary param] -1 in ReadMsgIP | file://:0:0:0:0 | [summary] to write: argument 1 in ReadMsgIP | +| file://:0:0:0:0 | [summary param] -1 in ReadMsgUDP | file://:0:0:0:0 | [summary] to write: argument 0 in ReadMsgUDP | +| file://:0:0:0:0 | [summary param] -1 in ReadMsgUDP | file://:0:0:0:0 | [summary] to write: argument 1 in ReadMsgUDP | +| file://:0:0:0:0 | [summary param] -1 in ReadMsgUnix | file://:0:0:0:0 | [summary] to write: argument 0 in ReadMsgUnix | +| file://:0:0:0:0 | [summary param] -1 in ReadMsgUnix | file://:0:0:0:0 | [summary] to write: argument 1 in ReadMsgUnix | +| file://:0:0:0:0 | [summary param] -1 in ReadResponse | file://:0:0:0:0 | [summary] to write: return (return[1]) in ReadResponse | +| file://:0:0:0:0 | [summary param] -1 in ReadSlice | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadSlice | +| file://:0:0:0:0 | [summary param] -1 in ReadString | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadString | +| file://:0:0:0:0 | [summary param] -1 in ReadString | file://:0:0:0:0 | [summary] to write: return (return[0]) in ReadString | +| file://:0:0:0:0 | [summary param] -1 in Recv | file://:0:0:0:0 | [summary] to write: return (return[0]) in Recv | +| file://:0:0:0:0 | [summary param] -1 in RequestURI | file://:0:0:0:0 | [summary] to write: return (return[0]) in RequestURI | +| file://:0:0:0:0 | [summary param] -1 in Reset | file://:0:0:0:0 | [summary] to write: argument 0 in Reset | +| file://:0:0:0:0 | [summary param] -1 in Reset | file://:0:0:0:0 | [summary] to write: argument 0 in Reset | +| file://:0:0:0:0 | [summary param] -1 in Reset | file://:0:0:0:0 | [summary] to write: argument 0 in Reset | +| file://:0:0:0:0 | [summary param] -1 in ResolveReference | file://:0:0:0:0 | [summary] to write: return (return[0]) in ResolveReference | +| file://:0:0:0:0 | [summary param] -1 in SetOutput | file://:0:0:0:0 | [summary] to write: argument 0 in SetOutput | +| file://:0:0:0:0 | [summary param] -1 in Slice | file://:0:0:0:0 | [summary] to write: return (return[0]) in Slice | +| file://:0:0:0:0 | [summary param] -1 in Slice3 | file://:0:0:0:0 | [summary] to write: return (return[0]) in Slice3 | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in String | file://:0:0:0:0 | [summary] to write: return (return[0]) in String | +| file://:0:0:0:0 | [summary param] -1 in Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | +| file://:0:0:0:0 | [summary param] -1 in Sub | file://:0:0:0:0 | [summary] to write: return (return[0]) in Sub | +| file://:0:0:0:0 | [summary param] -1 in Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | +| file://:0:0:0:0 | [summary param] -1 in Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | +| file://:0:0:0:0 | [summary param] -1 in Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | +| file://:0:0:0:0 | [summary param] -1 in Swap | file://:0:0:0:0 | [summary] to write: return (return[0]) in Swap | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in SyscallConn | file://:0:0:0:0 | [summary] to write: return (return[0]) in SyscallConn | +| file://:0:0:0:0 | [summary param] -1 in Text | file://:0:0:0:0 | [summary] to write: return (return[0]) in Text | +| file://:0:0:0:0 | [summary param] -1 in Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | +| file://:0:0:0:0 | [summary param] -1 in Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | +| file://:0:0:0:0 | [summary param] -1 in Token | file://:0:0:0:0 | [summary] to write: return (return[0]) in Token | +| file://:0:0:0:0 | [summary param] -1 in TryRecv | file://:0:0:0:0 | [summary] to write: return (return[0]) in TryRecv | +| file://:0:0:0:0 | [summary param] -1 in UnsafeAddr | file://:0:0:0:0 | [summary] to write: return (return[0]) in UnsafeAddr | +| file://:0:0:0:0 | [summary param] -1 in Username | file://:0:0:0:0 | [summary] to write: return (return[0]) in Username | +| file://:0:0:0:0 | [summary param] -1 in Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | +| file://:0:0:0:0 | [summary param] -1 in Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | +| file://:0:0:0:0 | [summary param] -1 in Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | +| file://:0:0:0:0 | [summary param] -1 in Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | +| file://:0:0:0:0 | [summary param] -1 in Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | +| file://:0:0:0:0 | [summary param] -1 in Value | file://:0:0:0:0 | [summary] to write: return (return[0]) in Value | +| file://:0:0:0:0 | [summary param] -1 in Values | file://:0:0:0:0 | [summary] to write: return (return[0]) in Values | +| file://:0:0:0:0 | [summary param] -1 in Values | file://:0:0:0:0 | [summary] to write: return (return[0]) in Values | +| file://:0:0:0:0 | [summary param] -1 in Write | file://:0:0:0:0 | [summary] to write: argument 0 in Write | +| file://:0:0:0:0 | [summary param] -1 in Write | file://:0:0:0:0 | [summary] to write: argument 0 in Write | +| file://:0:0:0:0 | [summary param] -1 in Write | file://:0:0:0:0 | [summary] to write: argument 0 in Write | +| file://:0:0:0:0 | [summary param] -1 in WriteProxy | file://:0:0:0:0 | [summary] to write: argument 0 in WriteProxy | +| file://:0:0:0:0 | [summary param] -1 in WriteSubset | file://:0:0:0:0 | [summary] to write: argument 0 in WriteSubset | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in WriteTo | file://:0:0:0:0 | [summary] to write: argument 0 in WriteTo | +| file://:0:0:0:0 | [summary param] -1 in Writer | file://:0:0:0:0 | [summary] to write: return (return[0]) in Writer | | io.go:14:31:14:43 | "some string" | io.go:14:13:14:44 | call to NewReader | | io.go:16:3:16:3 | definition of w | io.go:16:23:16:27 | &... | | io.go:16:3:16:3 | definition of w | io.go:16:30:16:34 | &... | diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Yaml/tests.expected b/go/ql/test/library-tests/semmle/go/frameworks/Yaml/tests.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Yaml/tests.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Yaml/tests.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Yaml/tests.ql b/go/ql/test/library-tests/semmle/go/frameworks/Yaml/tests.ql index 273f031fc32..c4c0cafb50e 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Yaml/tests.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/Yaml/tests.ql @@ -11,32 +11,29 @@ DataFlow::CallNode getAYamlCall() { isYamlFunction(result.getACalleeIncludingExternals().asFunction()) } -class TaintTransitsFunctionConfig extends TaintTracking::Configuration { - TaintTransitsFunctionConfig() { this = "TaintTransitsFunctionConfig" } - - predicate isSourceSinkPair(DataFlow::Node inNode, DataFlow::Node outNode) { - exists(DataFlow::CallNode cn | cn = getAYamlCall() | - inNode = [cn.getAnArgument(), cn.getReceiver()] and - ( - outNode.(DataFlow::PostUpdateNode).getPreUpdateNode() = - [cn.getAnArgument(), cn.getReceiver()] - or - outNode = cn.getAResult() - ) +predicate isSourceSinkPair(DataFlow::Node inNode, DataFlow::Node outNode) { + exists(DataFlow::CallNode cn | cn = getAYamlCall() | + inNode = [cn.getAnArgument(), cn.getReceiver()] and + ( + outNode.(DataFlow::PostUpdateNode).getPreUpdateNode() = [cn.getAnArgument(), cn.getReceiver()] + or + outNode = cn.getAResult() ) - } - - override predicate isSource(DataFlow::Node n) { this.isSourceSinkPair(n, _) } - - override predicate isSink(DataFlow::Node n) { this.isSourceSinkPair(_, n) } + ) } -class TaintFunctionModelTest extends InlineExpectationsTest { - TaintFunctionModelTest() { this = "TaintFunctionModelTest" } +module TaintTransitsFunctionConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node n) { isSourceSinkPair(n, _) } - override string getARelevantTag() { result = "ttfnmodelstep" } + predicate isSink(DataFlow::Node n) { isSourceSinkPair(_, n) } +} - override predicate hasActualResult(Location location, string element, string tag, string value) { +module TaintTransitsFunctionFlow = TaintTracking::Global; + +module TaintFunctionModelTest implements TestSig { + string getARelevantTag() { result = "ttfnmodelstep" } + + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "ttfnmodelstep" and ( exists(TaintTracking::FunctionModel model, DataFlow::CallNode call | call = model.getACall() | @@ -46,9 +43,9 @@ class TaintFunctionModelTest extends InlineExpectationsTest { value = "\"" + model.getAnInputNode(call) + " -> " + model.getAnOutputNode(call) + "\"" ) or - exists(TaintTransitsFunctionConfig config, DataFlow::Node arg, DataFlow::Node output | - config.hasFlow(arg, output) and - config.isSourceSinkPair(arg, output) and + exists(DataFlow::Node arg, DataFlow::Node output | + TaintTransitsFunctionFlow::flow(arg, output) and + isSourceSinkPair(arg, output) and arg.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and element = arg.toString() and @@ -58,12 +55,10 @@ class TaintFunctionModelTest extends InlineExpectationsTest { } } -class MarshalerTest extends InlineExpectationsTest { - MarshalerTest() { this = "MarshalerTest" } +module MarshalerTest implements TestSig { + string getARelevantTag() { result = "marshaler" } - override string getARelevantTag() { result = "marshaler" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "marshaler" and exists(MarshalingFunction m, DataFlow::CallNode call | call = m.getACall() | call.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -76,12 +71,10 @@ class MarshalerTest extends InlineExpectationsTest { } } -class UnmarshalerTest extends InlineExpectationsTest { - UnmarshalerTest() { this = "UnmarshalerTest" } +module UnmarshalerTest implements TestSig { + string getARelevantTag() { result = "unmarshaler" } - override string getARelevantTag() { result = "unmarshaler" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "unmarshaler" and exists(UnmarshalingFunction m, DataFlow::CallNode call | call = m.getACall() | call.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), @@ -93,3 +86,5 @@ class UnmarshalerTest extends InlineExpectationsTest { ) } } + +import MakeTest> diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Zap/TaintFlows.expected b/go/ql/test/library-tests/semmle/go/frameworks/Zap/TaintFlows.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Zap/TaintFlows.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Zap/TaintFlows.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/library-tests/semmle/go/frameworks/Zap/TaintFlows.ql b/go/ql/test/library-tests/semmle/go/frameworks/Zap/TaintFlows.ql index a012615e48e..14650f8f20d 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Zap/TaintFlows.ql +++ b/go/ql/test/library-tests/semmle/go/frameworks/Zap/TaintFlows.ql @@ -13,12 +13,10 @@ class TestConfig extends TaintTracking::Configuration { } } -class ZapTest extends InlineExpectationsTest { - ZapTest() { this = "ZapTest" } +module ZapTest implements TestSig { + string getARelevantTag() { result = "zap" } - override string getARelevantTag() { result = "zap" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "zap" and exists(DataFlow::Node sink | any(TestConfig c).hasFlow(_, sink) | element = sink.toString() and @@ -28,3 +26,5 @@ class ZapTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/go/ql/test/query-tests/Security/CWE-022/TaintedPath.expected b/go/ql/test/query-tests/Security/CWE-022/TaintedPath.expected index 2e7a965b514..307906f7e9b 100644 --- a/go/ql/test/query-tests/Security/CWE-022/TaintedPath.expected +++ b/go/ql/test/query-tests/Security/CWE-022/TaintedPath.expected @@ -1,13 +1,15 @@ edges | TaintedPath.go:13:18:13:22 | selection of URL | TaintedPath.go:13:18:13:30 | call to Query | | TaintedPath.go:13:18:13:30 | call to Query | TaintedPath.go:16:29:16:40 | tainted_path | -| TaintedPath.go:13:18:13:30 | call to Query | TaintedPath.go:20:28:20:69 | call to Join | +| TaintedPath.go:13:18:13:30 | call to Query | TaintedPath.go:20:57:20:68 | tainted_path | +| TaintedPath.go:20:57:20:68 | tainted_path | TaintedPath.go:20:28:20:69 | call to Join | | tst.go:14:2:14:39 | ... := ...[1] | tst.go:17:41:17:56 | selection of Filename | nodes | TaintedPath.go:13:18:13:22 | selection of URL | semmle.label | selection of URL | | TaintedPath.go:13:18:13:30 | call to Query | semmle.label | call to Query | | TaintedPath.go:16:29:16:40 | tainted_path | semmle.label | tainted_path | | TaintedPath.go:20:28:20:69 | call to Join | semmle.label | call to Join | +| TaintedPath.go:20:57:20:68 | tainted_path | semmle.label | tainted_path | | tst.go:14:2:14:39 | ... := ...[1] | semmle.label | ... := ...[1] | | tst.go:17:41:17:56 | selection of Filename | semmle.label | selection of Filename | subpaths diff --git a/go/ql/test/query-tests/Security/CWE-022/ZipSlip.expected b/go/ql/test/query-tests/Security/CWE-022/ZipSlip.expected index 1c3a46096c2..f10f103c963 100644 --- a/go/ql/test/query-tests/Security/CWE-022/ZipSlip.expected +++ b/go/ql/test/query-tests/Security/CWE-022/ZipSlip.expected @@ -1,5 +1,6 @@ edges -| UnsafeUnzipSymlinkGood.go:52:24:52:32 | definition of candidate | UnsafeUnzipSymlinkGood.go:61:31:61:62 | call to Join | +| UnsafeUnzipSymlinkGood.go:52:24:52:32 | definition of candidate | UnsafeUnzipSymlinkGood.go:61:53:61:61 | candidate | +| UnsafeUnzipSymlinkGood.go:61:53:61:61 | candidate | UnsafeUnzipSymlinkGood.go:61:31:61:62 | call to Join | | UnsafeUnzipSymlinkGood.go:72:3:72:25 | ... := ...[0] | UnsafeUnzipSymlinkGood.go:76:24:76:38 | selection of Linkname | | UnsafeUnzipSymlinkGood.go:72:3:72:25 | ... := ...[0] | UnsafeUnzipSymlinkGood.go:76:70:76:80 | selection of Name | | UnsafeUnzipSymlinkGood.go:76:24:76:38 | selection of Linkname | UnsafeUnzipSymlinkGood.go:52:24:52:32 | definition of candidate | @@ -13,6 +14,7 @@ edges nodes | UnsafeUnzipSymlinkGood.go:52:24:52:32 | definition of candidate | semmle.label | definition of candidate | | UnsafeUnzipSymlinkGood.go:61:31:61:62 | call to Join | semmle.label | call to Join | +| UnsafeUnzipSymlinkGood.go:61:53:61:61 | candidate | semmle.label | candidate | | UnsafeUnzipSymlinkGood.go:72:3:72:25 | ... := ...[0] | semmle.label | ... := ...[0] | | UnsafeUnzipSymlinkGood.go:76:24:76:38 | selection of Linkname | semmle.label | selection of Linkname | | UnsafeUnzipSymlinkGood.go:76:70:76:80 | selection of Name | semmle.label | selection of Name | diff --git a/go/ql/test/query-tests/Security/CWE-078/CommandInjection.expected b/go/ql/test/query-tests/Security/CWE-078/CommandInjection.expected index cfc49180bba..19c94698899 100644 --- a/go/ql/test/query-tests/Security/CWE-078/CommandInjection.expected +++ b/go/ql/test/query-tests/Security/CWE-078/CommandInjection.expected @@ -11,25 +11,47 @@ edges | GitSubcommands.go:10:13:10:27 | call to Query | GitSubcommands.go:16:36:16:42 | tainted | | SanitizingDoubleDash.go:9:13:9:19 | selection of URL | SanitizingDoubleDash.go:9:13:9:27 | call to Query | | SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:14:23:14:33 | slice expression | -| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:40:23:40:30 | arrayLit | -| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:54:23:54:30 | arrayLit | -| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:70:23:70:30 | arrayLit | +| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:39:31:39:37 | tainted | +| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:53:21:53:28 | arrayLit | +| SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:68:31:68:37 | tainted | | SanitizingDoubleDash.go:9:13:9:27 | call to Query | SanitizingDoubleDash.go:80:23:80:29 | tainted | +| SanitizingDoubleDash.go:39:14:39:44 | call to append | SanitizingDoubleDash.go:40:23:40:30 | arrayLit | +| SanitizingDoubleDash.go:39:31:39:37 | tainted | SanitizingDoubleDash.go:39:14:39:44 | call to append | +| SanitizingDoubleDash.go:53:14:53:35 | call to append | SanitizingDoubleDash.go:54:23:54:30 | arrayLit | +| SanitizingDoubleDash.go:53:21:53:28 | arrayLit | SanitizingDoubleDash.go:53:14:53:35 | call to append | +| SanitizingDoubleDash.go:68:14:68:38 | call to append | SanitizingDoubleDash.go:69:21:69:28 | arrayLit | +| SanitizingDoubleDash.go:68:31:68:37 | tainted | SanitizingDoubleDash.go:68:14:68:38 | call to append | +| SanitizingDoubleDash.go:69:14:69:35 | call to append | SanitizingDoubleDash.go:70:23:70:30 | arrayLit | +| SanitizingDoubleDash.go:69:21:69:28 | arrayLit | SanitizingDoubleDash.go:69:14:69:35 | call to append | | SanitizingDoubleDash.go:92:13:92:19 | selection of URL | SanitizingDoubleDash.go:92:13:92:27 | call to Query | | SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:96:24:96:34 | slice expression | | SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:101:24:101:34 | slice expression | | SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:105:30:105:36 | tainted | | SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:106:24:106:31 | arrayLit | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:112:24:112:31 | arrayLit | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:118:24:118:31 | arrayLit | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:124:24:124:31 | arrayLit | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:130:24:130:31 | arrayLit | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:137:24:137:31 | arrayLit | -| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:144:24:144:31 | arrayLit | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:111:37:111:43 | tainted | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:117:31:117:37 | tainted | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:123:31:123:37 | tainted | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:129:21:129:28 | arrayLit | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:136:31:136:37 | tainted | +| SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:142:31:142:37 | tainted | | SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:148:30:148:36 | tainted | | SanitizingDoubleDash.go:92:13:92:27 | call to Query | SanitizingDoubleDash.go:152:24:152:30 | tainted | | SanitizingDoubleDash.go:105:15:105:37 | slice literal [array] | SanitizingDoubleDash.go:106:24:106:31 | arrayLit | | SanitizingDoubleDash.go:105:30:105:36 | tainted | SanitizingDoubleDash.go:105:15:105:37 | slice literal [array] | +| SanitizingDoubleDash.go:111:14:111:44 | call to append | SanitizingDoubleDash.go:112:24:112:31 | arrayLit | +| SanitizingDoubleDash.go:111:37:111:43 | tainted | SanitizingDoubleDash.go:111:14:111:44 | call to append | +| SanitizingDoubleDash.go:117:14:117:44 | call to append | SanitizingDoubleDash.go:118:24:118:31 | arrayLit | +| SanitizingDoubleDash.go:117:31:117:37 | tainted | SanitizingDoubleDash.go:117:14:117:44 | call to append | +| SanitizingDoubleDash.go:123:14:123:38 | call to append | SanitizingDoubleDash.go:124:24:124:31 | arrayLit | +| SanitizingDoubleDash.go:123:31:123:37 | tainted | SanitizingDoubleDash.go:123:14:123:38 | call to append | +| SanitizingDoubleDash.go:129:14:129:35 | call to append | SanitizingDoubleDash.go:130:24:130:31 | arrayLit | +| SanitizingDoubleDash.go:129:21:129:28 | arrayLit | SanitizingDoubleDash.go:129:14:129:35 | call to append | +| SanitizingDoubleDash.go:136:14:136:38 | call to append | SanitizingDoubleDash.go:137:24:137:31 | arrayLit | +| SanitizingDoubleDash.go:136:31:136:37 | tainted | SanitizingDoubleDash.go:136:14:136:38 | call to append | +| SanitizingDoubleDash.go:142:14:142:38 | call to append | SanitizingDoubleDash.go:143:21:143:28 | arrayLit | +| SanitizingDoubleDash.go:142:31:142:37 | tainted | SanitizingDoubleDash.go:142:14:142:38 | call to append | +| SanitizingDoubleDash.go:143:14:143:35 | call to append | SanitizingDoubleDash.go:144:24:144:31 | arrayLit | +| SanitizingDoubleDash.go:143:21:143:28 | arrayLit | SanitizingDoubleDash.go:143:14:143:35 | call to append | nodes | ArgumentInjection.go:9:10:9:16 | selection of URL | semmle.label | selection of URL | | ArgumentInjection.go:9:10:9:24 | call to Query | semmle.label | call to Query | @@ -47,8 +69,16 @@ nodes | SanitizingDoubleDash.go:9:13:9:19 | selection of URL | semmle.label | selection of URL | | SanitizingDoubleDash.go:9:13:9:27 | call to Query | semmle.label | call to Query | | SanitizingDoubleDash.go:14:23:14:33 | slice expression | semmle.label | slice expression | +| SanitizingDoubleDash.go:39:14:39:44 | call to append | semmle.label | call to append | +| SanitizingDoubleDash.go:39:31:39:37 | tainted | semmle.label | tainted | | SanitizingDoubleDash.go:40:23:40:30 | arrayLit | semmle.label | arrayLit | +| SanitizingDoubleDash.go:53:14:53:35 | call to append | semmle.label | call to append | +| SanitizingDoubleDash.go:53:21:53:28 | arrayLit | semmle.label | arrayLit | | SanitizingDoubleDash.go:54:23:54:30 | arrayLit | semmle.label | arrayLit | +| SanitizingDoubleDash.go:68:14:68:38 | call to append | semmle.label | call to append | +| SanitizingDoubleDash.go:68:31:68:37 | tainted | semmle.label | tainted | +| SanitizingDoubleDash.go:69:14:69:35 | call to append | semmle.label | call to append | +| SanitizingDoubleDash.go:69:21:69:28 | arrayLit | semmle.label | arrayLit | | SanitizingDoubleDash.go:70:23:70:30 | arrayLit | semmle.label | arrayLit | | SanitizingDoubleDash.go:80:23:80:29 | tainted | semmle.label | tainted | | SanitizingDoubleDash.go:92:13:92:19 | selection of URL | semmle.label | selection of URL | @@ -58,11 +88,25 @@ nodes | SanitizingDoubleDash.go:105:15:105:37 | slice literal [array] | semmle.label | slice literal [array] | | SanitizingDoubleDash.go:105:30:105:36 | tainted | semmle.label | tainted | | SanitizingDoubleDash.go:106:24:106:31 | arrayLit | semmle.label | arrayLit | +| SanitizingDoubleDash.go:111:14:111:44 | call to append | semmle.label | call to append | +| SanitizingDoubleDash.go:111:37:111:43 | tainted | semmle.label | tainted | | SanitizingDoubleDash.go:112:24:112:31 | arrayLit | semmle.label | arrayLit | +| SanitizingDoubleDash.go:117:14:117:44 | call to append | semmle.label | call to append | +| SanitizingDoubleDash.go:117:31:117:37 | tainted | semmle.label | tainted | | SanitizingDoubleDash.go:118:24:118:31 | arrayLit | semmle.label | arrayLit | +| SanitizingDoubleDash.go:123:14:123:38 | call to append | semmle.label | call to append | +| SanitizingDoubleDash.go:123:31:123:37 | tainted | semmle.label | tainted | | SanitizingDoubleDash.go:124:24:124:31 | arrayLit | semmle.label | arrayLit | +| SanitizingDoubleDash.go:129:14:129:35 | call to append | semmle.label | call to append | +| SanitizingDoubleDash.go:129:21:129:28 | arrayLit | semmle.label | arrayLit | | SanitizingDoubleDash.go:130:24:130:31 | arrayLit | semmle.label | arrayLit | +| SanitizingDoubleDash.go:136:14:136:38 | call to append | semmle.label | call to append | +| SanitizingDoubleDash.go:136:31:136:37 | tainted | semmle.label | tainted | | SanitizingDoubleDash.go:137:24:137:31 | arrayLit | semmle.label | arrayLit | +| SanitizingDoubleDash.go:142:14:142:38 | call to append | semmle.label | call to append | +| SanitizingDoubleDash.go:142:31:142:37 | tainted | semmle.label | tainted | +| SanitizingDoubleDash.go:143:14:143:35 | call to append | semmle.label | call to append | +| SanitizingDoubleDash.go:143:21:143:28 | arrayLit | semmle.label | arrayLit | | SanitizingDoubleDash.go:144:24:144:31 | arrayLit | semmle.label | arrayLit | | SanitizingDoubleDash.go:148:30:148:36 | tainted | semmle.label | tainted | | SanitizingDoubleDash.go:152:24:152:30 | tainted | semmle.label | tainted | diff --git a/go/ql/test/query-tests/Security/CWE-078/StoredCommand.expected b/go/ql/test/query-tests/Security/CWE-078/StoredCommand.expected index ea667480966..e0e028fff91 100644 --- a/go/ql/test/query-tests/Security/CWE-078/StoredCommand.expected +++ b/go/ql/test/query-tests/Security/CWE-078/StoredCommand.expected @@ -1,7 +1,12 @@ edges -| StoredCommand.go:11:2:11:27 | ... := ...[0] | StoredCommand.go:14:22:14:28 | cmdName | +| StoredCommand.go:11:2:11:27 | ... := ...[0] | StoredCommand.go:13:2:13:5 | rows | +| StoredCommand.go:13:2:13:5 | rows | StoredCommand.go:13:12:13:19 | &... | +| StoredCommand.go:13:12:13:19 | &... | StoredCommand.go:13:12:13:19 | &... | +| StoredCommand.go:13:12:13:19 | &... | StoredCommand.go:14:22:14:28 | cmdName | nodes | StoredCommand.go:11:2:11:27 | ... := ...[0] | semmle.label | ... := ...[0] | +| StoredCommand.go:13:2:13:5 | rows | semmle.label | rows | +| StoredCommand.go:13:12:13:19 | &... | semmle.label | &... | | StoredCommand.go:14:22:14:28 | cmdName | semmle.label | cmdName | subpaths #select diff --git a/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected b/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected index 4f3ee95ffe8..31a8d097158 100644 --- a/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected +++ b/go/ql/test/query-tests/Security/CWE-079/ReflectedXss.expected @@ -9,19 +9,27 @@ edges | contenttype.go:73:10:73:28 | call to FormValue | contenttype.go:79:11:79:14 | data | | contenttype.go:88:10:88:28 | call to FormValue | contenttype.go:91:4:91:7 | data | | contenttype.go:113:10:113:28 | call to FormValue | contenttype.go:114:50:114:53 | data | -| reflectedxsstest.go:27:2:27:38 | ... := ...[0] | reflectedxsstest.go:28:10:28:57 | type conversion | +| reflectedxsstest.go:27:2:27:38 | ... := ...[0] | reflectedxsstest.go:28:50:28:55 | cookie | +| reflectedxsstest.go:28:17:28:56 | call to Sprintf | reflectedxsstest.go:28:10:28:57 | type conversion | +| reflectedxsstest.go:28:50:28:55 | cookie | reflectedxsstest.go:28:17:28:56 | call to Sprintf | | reflectedxsstest.go:31:2:31:44 | ... := ...[0] | reflectedxsstest.go:32:34:32:37 | file | -| reflectedxsstest.go:31:2:31:44 | ... := ...[1] | reflectedxsstest.go:34:10:34:62 | type conversion | -| reflectedxsstest.go:32:2:32:38 | ... := ...[0] | reflectedxsstest.go:33:10:33:57 | type conversion | +| reflectedxsstest.go:31:2:31:44 | ... := ...[1] | reflectedxsstest.go:34:46:34:60 | selection of Filename | +| reflectedxsstest.go:32:2:32:38 | ... := ...[0] | reflectedxsstest.go:33:49:33:55 | content | | reflectedxsstest.go:32:34:32:37 | file | reflectedxsstest.go:32:2:32:38 | ... := ...[0] | +| reflectedxsstest.go:33:17:33:56 | call to Sprintf | reflectedxsstest.go:33:10:33:57 | type conversion | +| reflectedxsstest.go:33:49:33:55 | content | reflectedxsstest.go:33:17:33:56 | call to Sprintf | +| reflectedxsstest.go:34:17:34:61 | call to Sprintf | reflectedxsstest.go:34:10:34:62 | type conversion | +| reflectedxsstest.go:34:46:34:60 | selection of Filename | reflectedxsstest.go:34:17:34:61 | call to Sprintf | | reflectedxsstest.go:38:2:38:35 | ... := ...[0] | reflectedxsstest.go:39:16:39:21 | reader | | reflectedxsstest.go:39:2:39:32 | ... := ...[0] | reflectedxsstest.go:40:14:40:17 | part | | reflectedxsstest.go:39:2:39:32 | ... := ...[0] | reflectedxsstest.go:42:2:42:5 | part | | reflectedxsstest.go:39:16:39:21 | reader | reflectedxsstest.go:39:2:39:32 | ... := ...[0] | | reflectedxsstest.go:40:14:40:17 | part | reflectedxsstest.go:40:14:40:28 | call to FileName | -| reflectedxsstest.go:40:14:40:28 | call to FileName | reflectedxsstest.go:44:10:44:55 | type conversion | +| reflectedxsstest.go:40:14:40:28 | call to FileName | reflectedxsstest.go:44:46:44:53 | partName | | reflectedxsstest.go:41:2:41:10 | definition of byteSlice | reflectedxsstest.go:45:10:45:18 | byteSlice | | reflectedxsstest.go:42:2:42:5 | part | reflectedxsstest.go:41:2:41:10 | definition of byteSlice | +| reflectedxsstest.go:44:17:44:54 | call to Sprintf | reflectedxsstest.go:44:10:44:55 | type conversion | +| reflectedxsstest.go:44:46:44:53 | partName | reflectedxsstest.go:44:17:44:54 | call to Sprintf | | reflectedxsstest.go:51:14:51:18 | selection of URL | reflectedxsstest.go:51:14:51:26 | call to Query | | reflectedxsstest.go:51:14:51:26 | call to Query | reflectedxsstest.go:54:11:54:21 | type conversion | | tst.go:14:15:14:20 | selection of Form | tst.go:14:15:14:36 | call to Get | @@ -56,12 +64,18 @@ nodes | contenttype.go:114:50:114:53 | data | semmle.label | data | | reflectedxsstest.go:27:2:27:38 | ... := ...[0] | semmle.label | ... := ...[0] | | reflectedxsstest.go:28:10:28:57 | type conversion | semmle.label | type conversion | +| reflectedxsstest.go:28:17:28:56 | call to Sprintf | semmle.label | call to Sprintf | +| reflectedxsstest.go:28:50:28:55 | cookie | semmle.label | cookie | | reflectedxsstest.go:31:2:31:44 | ... := ...[0] | semmle.label | ... := ...[0] | | reflectedxsstest.go:31:2:31:44 | ... := ...[1] | semmle.label | ... := ...[1] | | reflectedxsstest.go:32:2:32:38 | ... := ...[0] | semmle.label | ... := ...[0] | | reflectedxsstest.go:32:34:32:37 | file | semmle.label | file | | reflectedxsstest.go:33:10:33:57 | type conversion | semmle.label | type conversion | +| reflectedxsstest.go:33:17:33:56 | call to Sprintf | semmle.label | call to Sprintf | +| reflectedxsstest.go:33:49:33:55 | content | semmle.label | content | | reflectedxsstest.go:34:10:34:62 | type conversion | semmle.label | type conversion | +| reflectedxsstest.go:34:17:34:61 | call to Sprintf | semmle.label | call to Sprintf | +| reflectedxsstest.go:34:46:34:60 | selection of Filename | semmle.label | selection of Filename | | reflectedxsstest.go:38:2:38:35 | ... := ...[0] | semmle.label | ... := ...[0] | | reflectedxsstest.go:39:2:39:32 | ... := ...[0] | semmle.label | ... := ...[0] | | reflectedxsstest.go:39:16:39:21 | reader | semmle.label | reader | @@ -70,6 +84,8 @@ nodes | reflectedxsstest.go:41:2:41:10 | definition of byteSlice | semmle.label | definition of byteSlice | | reflectedxsstest.go:42:2:42:5 | part | semmle.label | part | | reflectedxsstest.go:44:10:44:55 | type conversion | semmle.label | type conversion | +| reflectedxsstest.go:44:17:44:54 | call to Sprintf | semmle.label | call to Sprintf | +| reflectedxsstest.go:44:46:44:53 | partName | semmle.label | partName | | reflectedxsstest.go:45:10:45:18 | byteSlice | semmle.label | byteSlice | | reflectedxsstest.go:51:14:51:18 | selection of URL | semmle.label | selection of URL | | reflectedxsstest.go:51:14:51:26 | call to Query | semmle.label | call to Query | diff --git a/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected b/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected index 1e513a5d4a9..f51eda4c93c 100644 --- a/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected +++ b/go/ql/test/query-tests/Security/CWE-079/StoredXss.expected @@ -1,11 +1,16 @@ edges | StoredXss.go:13:21:13:31 | call to Name | StoredXss.go:13:21:13:36 | ...+... | -| stored.go:18:3:18:28 | ... := ...[0] | stored.go:30:22:30:25 | name | +| stored.go:18:3:18:28 | ... := ...[0] | stored.go:25:14:25:17 | rows | +| stored.go:25:14:25:17 | rows | stored.go:25:29:25:33 | &... | +| stored.go:25:29:25:33 | &... | stored.go:25:29:25:33 | &... | +| stored.go:25:29:25:33 | &... | stored.go:30:22:30:25 | name | | stored.go:59:30:59:33 | definition of path | stored.go:61:22:61:25 | path | nodes | StoredXss.go:13:21:13:31 | call to Name | semmle.label | call to Name | | StoredXss.go:13:21:13:36 | ...+... | semmle.label | ...+... | | stored.go:18:3:18:28 | ... := ...[0] | semmle.label | ... := ...[0] | +| stored.go:25:14:25:17 | rows | semmle.label | rows | +| stored.go:25:29:25:33 | &... | semmle.label | &... | | stored.go:30:22:30:25 | name | semmle.label | name | | stored.go:59:30:59:33 | definition of path | semmle.label | definition of path | | stored.go:61:22:61:25 | path | semmle.label | path | diff --git a/go/ql/test/query-tests/Security/CWE-089/SqlInjection.expected b/go/ql/test/query-tests/Security/CWE-089/SqlInjection.expected index 93d447e40ab..c1ded7d69f8 100644 --- a/go/ql/test/query-tests/Security/CWE-089/SqlInjection.expected +++ b/go/ql/test/query-tests/Security/CWE-089/SqlInjection.expected @@ -1,21 +1,30 @@ edges +| SqlInjection.go:10:7:11:30 | call to Sprintf | SqlInjection.go:12:11:12:11 | q | | SqlInjection.go:11:3:11:9 | selection of URL | SqlInjection.go:11:3:11:17 | call to Query | -| SqlInjection.go:11:3:11:17 | call to Query | SqlInjection.go:12:11:12:11 | q | +| SqlInjection.go:11:3:11:17 | call to Query | SqlInjection.go:11:3:11:29 | index expression | +| SqlInjection.go:11:3:11:29 | index expression | SqlInjection.go:10:7:11:30 | call to Sprintf | | issue48.go:17:2:17:33 | ... := ...[0] | issue48.go:18:17:18:17 | b | | issue48.go:17:25:17:32 | selection of Body | issue48.go:17:2:17:33 | ... := ...[0] | | issue48.go:18:17:18:17 | b | issue48.go:18:20:18:39 | &... | -| issue48.go:18:20:18:39 | &... | issue48.go:22:11:22:12 | q3 | +| issue48.go:18:20:18:39 | &... | issue48.go:21:3:21:33 | index expression | +| issue48.go:20:8:21:34 | call to Sprintf | issue48.go:22:11:22:12 | q3 | +| issue48.go:21:3:21:33 | index expression | issue48.go:20:8:21:34 | call to Sprintf | | issue48.go:27:2:27:34 | ... := ...[0] | issue48.go:28:17:28:18 | b2 | | issue48.go:27:26:27:33 | selection of Body | issue48.go:27:2:27:34 | ... := ...[0] | | issue48.go:28:17:28:18 | b2 | issue48.go:28:21:28:41 | &... | -| issue48.go:28:21:28:41 | &... | issue48.go:32:11:32:12 | q4 | +| issue48.go:28:21:28:41 | &... | issue48.go:31:3:31:31 | selection of Category | +| issue48.go:30:8:31:32 | call to Sprintf | issue48.go:32:11:32:12 | q4 | +| issue48.go:31:3:31:31 | selection of Category | issue48.go:30:8:31:32 | call to Sprintf | | issue48.go:37:17:37:50 | type conversion | issue48.go:37:53:37:73 | &... | | issue48.go:37:24:37:30 | selection of URL | issue48.go:37:24:37:38 | call to Query | | issue48.go:37:24:37:38 | call to Query | issue48.go:37:17:37:50 | type conversion | -| issue48.go:37:53:37:73 | &... | issue48.go:41:11:41:12 | q5 | +| issue48.go:37:53:37:73 | &... | issue48.go:40:3:40:31 | selection of Category | +| issue48.go:39:8:40:32 | call to Sprintf | issue48.go:41:11:41:12 | q5 | +| issue48.go:40:3:40:31 | selection of Category | issue48.go:39:8:40:32 | call to Sprintf | | main.go:10:11:10:16 | selection of Form | main.go:10:11:10:28 | index expression | | main.go:14:63:14:67 | selection of URL | main.go:14:63:14:75 | call to Query | -| main.go:14:63:14:75 | call to Query | main.go:14:11:14:84 | call to Sprintf | +| main.go:14:63:14:75 | call to Query | main.go:14:63:14:83 | index expression | +| main.go:14:63:14:83 | index expression | main.go:14:11:14:84 | call to Sprintf | | main.go:15:63:15:70 | selection of Header | main.go:15:63:15:84 | call to Get | | main.go:15:63:15:84 | call to Get | main.go:15:11:15:85 | call to Sprintf | | main.go:27:17:30:2 | &... [pointer, Category] | main.go:33:3:33:13 | RequestData [pointer, Category] | @@ -23,9 +32,10 @@ edges | main.go:29:13:29:19 | selection of URL | main.go:29:13:29:27 | call to Query | | main.go:29:13:29:27 | call to Query | main.go:29:13:29:39 | index expression | | main.go:29:13:29:39 | index expression | main.go:27:18:30:2 | struct literal [Category] | +| main.go:32:7:33:23 | call to Sprintf | main.go:34:11:34:11 | q | | main.go:33:3:33:13 | RequestData [pointer, Category] | main.go:33:3:33:13 | implicit dereference [Category] | | main.go:33:3:33:13 | implicit dereference [Category] | main.go:33:3:33:22 | selection of Category | -| main.go:33:3:33:22 | selection of Category | main.go:34:11:34:11 | q | +| main.go:33:3:33:22 | selection of Category | main.go:32:7:33:23 | call to Sprintf | | main.go:38:2:38:12 | definition of RequestData [pointer, Category] | main.go:39:2:39:12 | RequestData [pointer, Category] | | main.go:38:2:38:12 | definition of RequestData [pointer, Category] | main.go:42:3:42:13 | RequestData [pointer, Category] | | main.go:39:2:39:12 | RequestData [pointer, Category] | main.go:39:2:39:12 | implicit dereference [Category] | @@ -33,9 +43,10 @@ edges | main.go:39:25:39:31 | selection of URL | main.go:39:25:39:39 | call to Query | | main.go:39:25:39:39 | call to Query | main.go:39:25:39:51 | index expression | | main.go:39:25:39:51 | index expression | main.go:39:2:39:12 | implicit dereference [Category] | +| main.go:41:7:42:23 | call to Sprintf | main.go:43:11:43:11 | q | | main.go:42:3:42:13 | RequestData [pointer, Category] | main.go:42:3:42:13 | implicit dereference [Category] | | main.go:42:3:42:13 | implicit dereference [Category] | main.go:42:3:42:22 | selection of Category | -| main.go:42:3:42:22 | selection of Category | main.go:43:11:43:11 | q | +| main.go:42:3:42:22 | selection of Category | main.go:41:7:42:23 | call to Sprintf | | main.go:47:2:47:12 | definition of RequestData [pointer, Category] | main.go:48:4:48:14 | RequestData [pointer, Category] | | main.go:47:2:47:12 | definition of RequestData [pointer, Category] | main.go:51:3:51:13 | RequestData [pointer, Category] | | main.go:48:3:48:14 | star expression [Category] | main.go:47:2:47:12 | definition of RequestData [pointer, Category] | @@ -43,9 +54,10 @@ edges | main.go:48:28:48:34 | selection of URL | main.go:48:28:48:42 | call to Query | | main.go:48:28:48:42 | call to Query | main.go:48:28:48:54 | index expression | | main.go:48:28:48:54 | index expression | main.go:48:3:48:14 | star expression [Category] | +| main.go:50:7:51:23 | call to Sprintf | main.go:52:11:52:11 | q | | main.go:51:3:51:13 | RequestData [pointer, Category] | main.go:51:3:51:13 | implicit dereference [Category] | | main.go:51:3:51:13 | implicit dereference [Category] | main.go:51:3:51:22 | selection of Category | -| main.go:51:3:51:22 | selection of Category | main.go:52:11:52:11 | q | +| main.go:51:3:51:22 | selection of Category | main.go:50:7:51:23 | call to Sprintf | | main.go:56:2:56:12 | definition of RequestData [pointer, Category] | main.go:57:4:57:14 | RequestData [pointer, Category] | | main.go:56:2:56:12 | definition of RequestData [pointer, Category] | main.go:60:5:60:15 | RequestData [pointer, Category] | | main.go:57:3:57:14 | star expression [Category] | main.go:56:2:56:12 | definition of RequestData [pointer, Category] | @@ -53,7 +65,8 @@ edges | main.go:57:28:57:34 | selection of URL | main.go:57:28:57:42 | call to Query | | main.go:57:28:57:42 | call to Query | main.go:57:28:57:54 | index expression | | main.go:57:28:57:54 | index expression | main.go:57:3:57:14 | star expression [Category] | -| main.go:60:3:60:25 | selection of Category | main.go:61:11:61:11 | q | +| main.go:59:7:60:26 | call to Sprintf | main.go:61:11:61:11 | q | +| main.go:60:3:60:25 | selection of Category | main.go:59:7:60:26 | call to Sprintf | | main.go:60:4:60:15 | star expression [Category] | main.go:60:3:60:25 | selection of Category | | main.go:60:5:60:15 | RequestData [pointer, Category] | main.go:60:4:60:15 | star expression [Category] | | mongoDB.go:40:20:40:30 | call to Referer | mongoDB.go:57:22:57:29 | pipeline | @@ -71,29 +84,38 @@ edges | mongoDB.go:40:20:40:30 | call to Referer | mongoDB.go:80:22:80:27 | filter | | mongoDB.go:40:20:40:30 | call to Referer | mongoDB.go:81:18:81:25 | pipeline | nodes +| SqlInjection.go:10:7:11:30 | call to Sprintf | semmle.label | call to Sprintf | | SqlInjection.go:11:3:11:9 | selection of URL | semmle.label | selection of URL | | SqlInjection.go:11:3:11:17 | call to Query | semmle.label | call to Query | +| SqlInjection.go:11:3:11:29 | index expression | semmle.label | index expression | | SqlInjection.go:12:11:12:11 | q | semmle.label | q | | issue48.go:17:2:17:33 | ... := ...[0] | semmle.label | ... := ...[0] | | issue48.go:17:25:17:32 | selection of Body | semmle.label | selection of Body | | issue48.go:18:17:18:17 | b | semmle.label | b | | issue48.go:18:20:18:39 | &... | semmle.label | &... | +| issue48.go:20:8:21:34 | call to Sprintf | semmle.label | call to Sprintf | +| issue48.go:21:3:21:33 | index expression | semmle.label | index expression | | issue48.go:22:11:22:12 | q3 | semmle.label | q3 | | issue48.go:27:2:27:34 | ... := ...[0] | semmle.label | ... := ...[0] | | issue48.go:27:26:27:33 | selection of Body | semmle.label | selection of Body | | issue48.go:28:17:28:18 | b2 | semmle.label | b2 | | issue48.go:28:21:28:41 | &... | semmle.label | &... | +| issue48.go:30:8:31:32 | call to Sprintf | semmle.label | call to Sprintf | +| issue48.go:31:3:31:31 | selection of Category | semmle.label | selection of Category | | issue48.go:32:11:32:12 | q4 | semmle.label | q4 | | issue48.go:37:17:37:50 | type conversion | semmle.label | type conversion | | issue48.go:37:24:37:30 | selection of URL | semmle.label | selection of URL | | issue48.go:37:24:37:38 | call to Query | semmle.label | call to Query | | issue48.go:37:53:37:73 | &... | semmle.label | &... | +| issue48.go:39:8:40:32 | call to Sprintf | semmle.label | call to Sprintf | +| issue48.go:40:3:40:31 | selection of Category | semmle.label | selection of Category | | issue48.go:41:11:41:12 | q5 | semmle.label | q5 | | main.go:10:11:10:16 | selection of Form | semmle.label | selection of Form | | main.go:10:11:10:28 | index expression | semmle.label | index expression | | main.go:14:11:14:84 | call to Sprintf | semmle.label | call to Sprintf | | main.go:14:63:14:67 | selection of URL | semmle.label | selection of URL | | main.go:14:63:14:75 | call to Query | semmle.label | call to Query | +| main.go:14:63:14:83 | index expression | semmle.label | index expression | | main.go:15:11:15:85 | call to Sprintf | semmle.label | call to Sprintf | | main.go:15:63:15:70 | selection of Header | semmle.label | selection of Header | | main.go:15:63:15:84 | call to Get | semmle.label | call to Get | @@ -102,6 +124,7 @@ nodes | main.go:29:13:29:19 | selection of URL | semmle.label | selection of URL | | main.go:29:13:29:27 | call to Query | semmle.label | call to Query | | main.go:29:13:29:39 | index expression | semmle.label | index expression | +| main.go:32:7:33:23 | call to Sprintf | semmle.label | call to Sprintf | | main.go:33:3:33:13 | RequestData [pointer, Category] | semmle.label | RequestData [pointer, Category] | | main.go:33:3:33:13 | implicit dereference [Category] | semmle.label | implicit dereference [Category] | | main.go:33:3:33:22 | selection of Category | semmle.label | selection of Category | @@ -112,6 +135,7 @@ nodes | main.go:39:25:39:31 | selection of URL | semmle.label | selection of URL | | main.go:39:25:39:39 | call to Query | semmle.label | call to Query | | main.go:39:25:39:51 | index expression | semmle.label | index expression | +| main.go:41:7:42:23 | call to Sprintf | semmle.label | call to Sprintf | | main.go:42:3:42:13 | RequestData [pointer, Category] | semmle.label | RequestData [pointer, Category] | | main.go:42:3:42:13 | implicit dereference [Category] | semmle.label | implicit dereference [Category] | | main.go:42:3:42:22 | selection of Category | semmle.label | selection of Category | @@ -122,6 +146,7 @@ nodes | main.go:48:28:48:34 | selection of URL | semmle.label | selection of URL | | main.go:48:28:48:42 | call to Query | semmle.label | call to Query | | main.go:48:28:48:54 | index expression | semmle.label | index expression | +| main.go:50:7:51:23 | call to Sprintf | semmle.label | call to Sprintf | | main.go:51:3:51:13 | RequestData [pointer, Category] | semmle.label | RequestData [pointer, Category] | | main.go:51:3:51:13 | implicit dereference [Category] | semmle.label | implicit dereference [Category] | | main.go:51:3:51:22 | selection of Category | semmle.label | selection of Category | @@ -132,6 +157,7 @@ nodes | main.go:57:28:57:34 | selection of URL | semmle.label | selection of URL | | main.go:57:28:57:42 | call to Query | semmle.label | call to Query | | main.go:57:28:57:54 | index expression | semmle.label | index expression | +| main.go:59:7:60:26 | call to Sprintf | semmle.label | call to Sprintf | | main.go:60:3:60:25 | selection of Category | semmle.label | selection of Category | | main.go:60:4:60:15 | star expression [Category] | semmle.label | star expression [Category] | | main.go:60:5:60:15 | RequestData [pointer, Category] | semmle.label | RequestData [pointer, Category] | diff --git a/go/ql/test/query-tests/Security/CWE-117/LogInjectionTest.expected b/go/ql/test/query-tests/Security/CWE-117/LogInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/query-tests/Security/CWE-117/LogInjectionTest.expected +++ b/go/ql/test/query-tests/Security/CWE-117/LogInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/query-tests/Security/CWE-117/LogInjectionTest.ql b/go/ql/test/query-tests/Security/CWE-117/LogInjectionTest.ql index 576ce9ba342..298287ec4aa 100644 --- a/go/ql/test/query-tests/Security/CWE-117/LogInjectionTest.ql +++ b/go/ql/test/query-tests/Security/CWE-117/LogInjectionTest.ql @@ -1,11 +1,4 @@ import go import TestUtilities.InlineFlowTest import semmle.go.security.LogInjection - -class LogInjectionTest extends InlineFlowTest { - override DataFlow::Configuration getTaintFlowConfig() { - result = any(LogInjection::Configuration config) - } - - override DataFlow::Configuration getValueFlowConfig() { none() } -} +import TaintFlowTest diff --git a/go/ql/test/query-tests/Security/CWE-327/UnsafeTLS.expected b/go/ql/test/query-tests/Security/CWE-327/UnsafeTLS.expected index ba37534511a..e47a4768465 100644 --- a/go/ql/test/query-tests/Security/CWE-327/UnsafeTLS.expected +++ b/go/ql/test/query-tests/Security/CWE-327/UnsafeTLS.expected @@ -14,9 +14,18 @@ edges | UnsafeTLS.go:305:5:305:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:304:18:306:4 | slice literal | | UnsafeTLS.go:313:5:313:45 | selection of TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:312:18:314:4 | slice literal | | UnsafeTLS.go:329:53:329:93 | selection of TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:329:25:329:94 | call to append | -| UnsafeTLS.go:334:13:334:38 | call to InsecureCipherSuites | UnsafeTLS.go:336:26:336:58 | call to append | -| UnsafeTLS.go:342:13:342:38 | call to InsecureCipherSuites | UnsafeTLS.go:346:25:346:36 | cipherSuites | -| UnsafeTLS.go:351:13:351:38 | call to InsecureCipherSuites | UnsafeTLS.go:355:25:355:36 | cipherSuites | +| UnsafeTLS.go:334:13:334:38 | call to InsecureCipherSuites | UnsafeTLS.go:336:54:336:57 | selection of ID | +| UnsafeTLS.go:336:54:336:57 | selection of ID | UnsafeTLS.go:336:26:336:58 | call to append | +| UnsafeTLS.go:342:13:342:38 | call to InsecureCipherSuites | UnsafeTLS.go:344:40:344:43 | selection of ID | +| UnsafeTLS.go:344:19:344:44 | call to append | UnsafeTLS.go:344:26:344:37 | cipherSuites | +| UnsafeTLS.go:344:19:344:44 | call to append | UnsafeTLS.go:346:25:346:36 | cipherSuites | +| UnsafeTLS.go:344:26:344:37 | cipherSuites | UnsafeTLS.go:344:19:344:44 | call to append | +| UnsafeTLS.go:344:40:344:43 | selection of ID | UnsafeTLS.go:344:19:344:44 | call to append | +| UnsafeTLS.go:351:13:351:38 | call to InsecureCipherSuites | UnsafeTLS.go:353:40:353:51 | selection of ID | +| UnsafeTLS.go:353:19:353:52 | call to append | UnsafeTLS.go:353:26:353:37 | cipherSuites | +| UnsafeTLS.go:353:19:353:52 | call to append | UnsafeTLS.go:355:25:355:36 | cipherSuites | +| UnsafeTLS.go:353:26:353:37 | cipherSuites | UnsafeTLS.go:353:19:353:52 | call to append | +| UnsafeTLS.go:353:40:353:51 | selection of ID | UnsafeTLS.go:353:19:353:52 | call to append | | UnsafeTLS.go:363:5:363:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:362:18:364:4 | slice literal | | UnsafeTLS.go:371:5:371:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:370:18:372:4 | slice literal | | UnsafeTLS.go:379:5:379:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | UnsafeTLS.go:378:18:380:4 | slice literal | @@ -94,9 +103,16 @@ nodes | UnsafeTLS.go:329:53:329:93 | selection of TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | semmle.label | selection of TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | | UnsafeTLS.go:334:13:334:38 | call to InsecureCipherSuites | semmle.label | call to InsecureCipherSuites | | UnsafeTLS.go:336:26:336:58 | call to append | semmle.label | call to append | +| UnsafeTLS.go:336:54:336:57 | selection of ID | semmle.label | selection of ID | | UnsafeTLS.go:342:13:342:38 | call to InsecureCipherSuites | semmle.label | call to InsecureCipherSuites | +| UnsafeTLS.go:344:19:344:44 | call to append | semmle.label | call to append | +| UnsafeTLS.go:344:26:344:37 | cipherSuites | semmle.label | cipherSuites | +| UnsafeTLS.go:344:40:344:43 | selection of ID | semmle.label | selection of ID | | UnsafeTLS.go:346:25:346:36 | cipherSuites | semmle.label | cipherSuites | | UnsafeTLS.go:351:13:351:38 | call to InsecureCipherSuites | semmle.label | call to InsecureCipherSuites | +| UnsafeTLS.go:353:19:353:52 | call to append | semmle.label | call to append | +| UnsafeTLS.go:353:26:353:37 | cipherSuites | semmle.label | cipherSuites | +| UnsafeTLS.go:353:40:353:51 | selection of ID | semmle.label | selection of ID | | UnsafeTLS.go:355:25:355:36 | cipherSuites | semmle.label | cipherSuites | | UnsafeTLS.go:362:18:364:4 | slice literal | semmle.label | slice literal | | UnsafeTLS.go:363:5:363:47 | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | semmle.label | selection of TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | diff --git a/go/ql/test/query-tests/Security/CWE-338/InsecureRandomness/InsecureRandomness.expected b/go/ql/test/query-tests/Security/CWE-338/InsecureRandomness/InsecureRandomness.expected index 59af6f28787..e1e037af120 100644 --- a/go/ql/test/query-tests/Security/CWE-338/InsecureRandomness/InsecureRandomness.expected +++ b/go/ql/test/query-tests/Security/CWE-338/InsecureRandomness/InsecureRandomness.expected @@ -1,6 +1,8 @@ edges -| sample.go:15:24:15:63 | type conversion | sample.go:16:9:16:15 | slice expression | -| sample.go:15:49:15:61 | call to Uint32 | sample.go:15:24:15:63 | type conversion | +| sample.go:15:10:15:64 | call to Sum256 | sample.go:16:9:16:15 | slice expression | +| sample.go:15:24:15:63 | type conversion | sample.go:15:10:15:64 | call to Sum256 | +| sample.go:15:31:15:62 | call to Sprintf | sample.go:15:24:15:63 | type conversion | +| sample.go:15:49:15:61 | call to Uint32 | sample.go:15:31:15:62 | call to Sprintf | | sample.go:16:9:16:15 | slice expression | sample.go:26:25:26:30 | call to Guid | | sample.go:33:2:33:6 | definition of nonce | sample.go:37:25:37:29 | nonce | | sample.go:33:2:33:6 | definition of nonce | sample.go:37:32:37:36 | nonce | @@ -8,7 +10,9 @@ edges | sample.go:35:14:35:19 | random | sample.go:33:2:33:6 | definition of nonce | nodes | InsecureRandomness.go:12:18:12:40 | call to Intn | semmle.label | call to Intn | +| sample.go:15:10:15:64 | call to Sum256 | semmle.label | call to Sum256 | | sample.go:15:24:15:63 | type conversion | semmle.label | type conversion | +| sample.go:15:31:15:62 | call to Sprintf | semmle.label | call to Sprintf | | sample.go:15:49:15:61 | call to Uint32 | semmle.label | call to Uint32 | | sample.go:16:9:16:15 | slice expression | semmle.label | slice expression | | sample.go:26:25:26:30 | call to Guid | semmle.label | call to Guid | diff --git a/go/ql/test/query-tests/Security/CWE-352/ConstantOauth2State.expected b/go/ql/test/query-tests/Security/CWE-352/ConstantOauth2State.expected index c21e28717c7..35b84bf249a 100644 --- a/go/ql/test/query-tests/Security/CWE-352/ConstantOauth2State.expected +++ b/go/ql/test/query-tests/Security/CWE-352/ConstantOauth2State.expected @@ -17,7 +17,8 @@ edges | ConstantOauth2State.go:210:9:210:42 | call to AuthCodeURL | ConstantOauth2State.go:211:54:211:56 | url | | ConstantOauth2State.go:232:9:232:42 | call to AuthCodeURL | ConstantOauth2State.go:233:28:233:30 | url | | ConstantOauth2State.go:239:17:239:39 | "http://localhost:8080" | ConstantOauth2State.go:249:9:249:12 | conf | -| ConstantOauth2State.go:256:38:256:60 | "http://localhost:8080" | ConstantOauth2State.go:266:9:266:12 | conf | +| ConstantOauth2State.go:256:17:256:67 | call to Sprintf | ConstantOauth2State.go:266:9:266:12 | conf | +| ConstantOauth2State.go:256:38:256:60 | "http://localhost:8080" | ConstantOauth2State.go:256:17:256:67 | call to Sprintf | | ConstantOauth2State.go:272:17:272:21 | "oob" | ConstantOauth2State.go:282:9:282:12 | conf | nodes | ConstantOauth2State.go:20:26:20:32 | "state" | semmle.label | "state" | @@ -46,6 +47,7 @@ nodes | ConstantOauth2State.go:239:17:239:39 | "http://localhost:8080" | semmle.label | "http://localhost:8080" | | ConstantOauth2State.go:249:9:249:12 | conf | semmle.label | conf | | ConstantOauth2State.go:249:26:249:41 | stateStringConst | semmle.label | stateStringConst | +| ConstantOauth2State.go:256:17:256:67 | call to Sprintf | semmle.label | call to Sprintf | | ConstantOauth2State.go:256:38:256:60 | "http://localhost:8080" | semmle.label | "http://localhost:8080" | | ConstantOauth2State.go:266:9:266:12 | conf | semmle.label | conf | | ConstantOauth2State.go:266:26:266:41 | stateStringConst | semmle.label | stateStringConst | diff --git a/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.expected b/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.expected index e69de29bb2d..48de9172b36 100644 --- a/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.expected +++ b/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.ql b/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.ql index e4eb088abd8..3e7ccd8d8c1 100644 --- a/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.ql +++ b/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.ql @@ -2,12 +2,10 @@ import go import TestUtilities.InlineExpectationsTest import semmle.go.security.IncorrectIntegerConversionLib -class TestIncorrectIntegerConversion extends InlineExpectationsTest { - TestIncorrectIntegerConversion() { this = "TestIncorrectIntegerConversion" } +module TestIncorrectIntegerConversion implements TestSig { + string getARelevantTag() { result = "hasValueFlow" } - override string getARelevantTag() { result = "hasValueFlow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasValueFlow" and exists(DataFlow::Node sink, DataFlow::Node sinkConverted | any(ConversionWithoutBoundsCheckConfig config).hasFlowTo(sink) and @@ -21,3 +19,5 @@ class TestIncorrectIntegerConversion extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/documentation/library-coverage/coverage.csv b/java/documentation/library-coverage/coverage.csv index 48f5dd8ae41..540f282f7c5 100644 --- a/java/documentation/library-coverage/coverage.csv +++ b/java/documentation/library-coverage/coverage.csv @@ -1,165 +1,180 @@ -package,sink,source,summary,sink:bean-validation,sink:create-file,sink:fragment-injection,sink:groovy,sink:header-splitting,sink:information-leak,sink:intent-start,sink:jdbc-url,sink:jexl,sink:jndi-injection,sink:ldap,sink:logging,sink:mvel,sink:ognl-injection,sink:open-url,sink:pending-intent-sent,sink:read-file,sink:regex-use,sink:regex-use[-1],sink:regex-use[0],sink:regex-use[],sink:regex-use[f-1],sink:regex-use[f1],sink:regex-use[f],sink:set-hostname-verifier,sink:sql,sink:ssti,sink:url-redirect,sink:write-file,sink:xpath,sink:xslt,sink:xss,source:android-external-storage-dir,source:android-widget,source:contentprovider,source:remote,summary:taint,summary:value -android.app,35,,103,,,11,,,,7,,,,,,,,,17,,,,,,,,,,,,,,,,,,,,,18,85 -android.content,24,31,154,,,,,,,16,,,,,,,,,,,,,,,,,,,8,,,,,,,4,,27,,63,91 -android.database,59,,41,,,,,,,,,,,,,,,,,,,,,,,,,,59,,,,,,,,,,,41, -android.net,,,60,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,45,15 -android.os,,2,122,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,41,81 -android.support.v4.app,11,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -android.util,6,16,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,16,, -android.webkit,3,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,2,, -android.widget,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1, -androidx.core.app,6,,95,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,12,83 -androidx.fragment.app,11,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -androidx.slice,2,5,88,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,5,,27,61 -cn.hutool.core.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.esotericsoftware.kryo.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.esotericsoftware.kryo5.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.fasterxml.jackson.core,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.fasterxml.jackson.databind,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6, -com.google.common.base,4,,87,,,,,,,,,,,,,,,,,,,,3,1,,,,,,,,,,,,,,,,63,24 -com.google.common.cache,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17 -com.google.common.collect,,,553,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,551 -com.google.common.flogger,29,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,,,,,, -com.google.common.io,8,,73,,2,,,,,,,,,,,,,,,5,,,,,,,,,,,,1,,,,,,,,72,1 -com.hubspot.jinjava,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, -com.mitchellbosecke.pebble,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, -com.opensymphony.xwork2.ognl,3,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,, -com.rabbitmq.client,,21,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,7, -com.thoughtworks.xstream,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,, -com.unboundid.ldap.sdk,17,,,,,,,,,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.zaxxer.hikari,2,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -flexjson,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 -freemarker.cache,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, -freemarker.template,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,,,, -groovy.lang,26,,,,,,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -groovy.text,1,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -groovy.util,5,,,,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -hudson,44,,16,,19,,,,,,,,,,,,,6,,17,,,,,,,,,,,,2,,,,,,,,16, -io.jsonwebtoken,,2,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4, -io.netty.bootstrap,3,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,, -io.netty.buffer,,,207,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,130,77 -io.netty.channel,9,2,,,,,,,,,,,,,,,,9,,,,,,,,,,,,,,,,,,,,,2,, -io.netty.handler.codec,4,13,259,,,,,,,,,,,,,,,3,,1,,,,,,,,,,,,,,,,,,,13,143,116 -io.netty.handler.ssl,2,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,, -io.netty.handler.stream,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,, -io.netty.resolver,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -io.netty.util,2,,23,,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,21,2 -jakarta.faces.context,2,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,7,, -jakarta.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 -jakarta.ws.rs.client,1,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,, -jakarta.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,, -jakarta.ws.rs.core,2,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,94,55 -java.awt,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3 -java.beans,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -java.io,44,,45,,18,,,,,,,,,,,,,,,4,,,,,,,,,,,,22,,,,,,,,43,2 -java.lang,18,,92,,,,,,,,,,,,8,,,,,5,,4,,,1,,,,,,,,,,,,,,,56,36 -java.net,13,3,20,,,,,,,,,,,,,,,13,,,,,,,,,,,,,,,,,,,,,3,20, -java.nio,38,,31,,22,,,,,,,,,,,,,,,13,,,,,,,,,,,,3,,,,,,,,31, -java.sql,13,,3,,,,,,,,4,,,,,,,,,,,,,,,,,,9,,,,,,,,,,,2,1 -java.util,44,,484,,,,,,,,,,,,34,,,,,,,,5,2,,1,2,,,,,,,,,,,,,44,440 -javafx.scene.web,1,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,, -javax.faces.context,2,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,7,, -javax.imageio.stream,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -javax.jms,,9,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,57, -javax.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 -javax.management.remote,2,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,, -javax.naming,7,,1,,,,,,,,,,6,1,,,,,,,,,,,,,,,,,,,,,,,,,,1, -javax.net.ssl,2,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,, -javax.script,1,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,, -javax.servlet,5,21,2,,,,,3,1,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,21,2, -javax.validation,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,, -javax.ws.rs.client,1,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,, -javax.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,, -javax.ws.rs.core,3,,149,,,,,1,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,94,55 -javax.xml.transform,2,,6,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,6, -javax.xml.xpath,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,, -jodd.json,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10 -kotlin,16,,1843,,11,,,,,,,,,,,,,2,,3,,,,,,,,,,,,,,,,,,,,1836,7 -net.sf.saxon.s9api,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,, -ognl,6,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,, -okhttp3,2,,47,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,22,25 -org.apache.commons.codec,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6, -org.apache.commons.collections,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783 -org.apache.commons.collections4,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783 -org.apache.commons.compress.archivers.tar,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, -org.apache.commons.httpclient.util,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.commons.io,111,,560,,93,,,,,,,,,,,,,15,,1,,,,,,,,,,,,2,,,,,,,,546,14 -org.apache.commons.jelly,6,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.jexl2,15,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.jexl3,15,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.lang3,6,,424,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,293,131 -org.apache.commons.logging,6,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.net,9,12,,,,,,,,,,,,,,,,6,,3,,,,,,,,,,,,,,,,,,,12,, -org.apache.commons.ognl,6,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.text,,,272,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,220,52 -org.apache.directory.ldap.client.api,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.hadoop.fs,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10, -org.apache.hadoop.hive.metastore,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,, -org.apache.hc.client5.http.async.methods,84,,,,,,,,,,,,,,,,,84,,,,,,,,,,,,,,,,,,,,,,, -org.apache.hc.client5.http.classic.methods,37,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,,,,,,,, -org.apache.hc.client5.http.fluent,19,,,,,,,,,,,,,,,,,19,,,,,,,,,,,,,,,,,,,,,,, -org.apache.hc.core5.benchmark,1,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,, -org.apache.hc.core5.function,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.hc.core5.http,73,2,45,,,,,,,,,,,,,,,72,,,,,,,,,,,,,,,,,1,,,,2,45, -org.apache.hc.core5.net,,,18,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18, -org.apache.hc.core5.util,,,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18,6 -org.apache.hive.hcatalog.templeton,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,, -org.apache.http,48,3,94,,,,,,,,,,,,,,,46,,,,,,,,,,,,,,,,,2,,,,3,86,8 -org.apache.ibatis.jdbc,6,,57,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,57, -org.apache.log4j,11,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.logging.log4j,359,,8,,,,,,,,,,,,359,,,,,,,,,,,,,,,,,,,,,,,,,4,4 -org.apache.shiro.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.shiro.jndi,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.tools.ant,11,,,,3,,,,,,,,,,,,,,,8,,,,,,,,,,,,,,,,,,,,, -org.apache.tools.zip,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.velocity.app,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,, -org.apache.velocity.runtime,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,, -org.codehaus.cargo.container.installer,3,,,,2,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,, -org.codehaus.groovy.control,1,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.dom4j,20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,, -org.eclipse.jetty.client,1,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,, -org.geogebra.web.full.main,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,, -org.hibernate,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,,,,, -org.jboss.logging,324,,,,,,,,,,,,,,324,,,,,,,,,,,,,,,,,,,,,,,,,, -org.jdbi.v3.core,6,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.jooq,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,, -org.json,,,236,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,198,38 -org.kohsuke.stapler,3,,1,,,,,,,,,,,,,,,1,,1,,,,,,,,,,,1,,,,,,,,,1, -org.mvel2,16,,,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,,,,,, -org.openjdk.jmh.runner.options,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.scijava.log,13,,,,,,,,,,,,,,13,,,,,,,,,,,,,,,,,,,,,,,,,, -org.slf4j,55,,6,,,,,,,,,,,,55,,,,,,,,,,,,,,,,,,,,,,,,,2,4 -org.springframework.beans,,,30,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,30 -org.springframework.boot.jdbc,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.springframework.cache,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13 -org.springframework.context,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, -org.springframework.data.repository,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 -org.springframework.http,14,,71,,,,,,,,,,,,,,,14,,,,,,,,,,,,,,,,,,,,,,61,10 -org.springframework.jdbc.core,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,,,,, -org.springframework.jdbc.datasource,4,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.springframework.jdbc.object,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,,,,, -org.springframework.jndi,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.springframework.ldap,47,,,,,,,,,,,,33,14,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.springframework.security.web.savedrequest,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,, -org.springframework.ui,,,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,32 -org.springframework.util,3,,142,,2,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,90,52 -org.springframework.validation,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13, -org.springframework.web.client,13,3,,,,,,,,,,,,,,,,13,,,,,,,,,,,,,,,,,,,,,3,, -org.springframework.web.context.request,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,, -org.springframework.web.multipart,,12,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12,13, -org.springframework.web.reactive.function.client,2,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,, -org.springframework.web.util,,,165,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,140,25 -org.thymeleaf,2,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,2, -org.xml.sax,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.xmlpull.v1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,, -play.mvc,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,, -ratpack.core.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, -ratpack.core.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4, -ratpack.core.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10, -ratpack.exec,,,48,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,48 -ratpack.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, -ratpack.func,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35 -ratpack.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4, -ratpack.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10, -ratpack.util,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35 -retrofit2,1,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,, +package,sink,source,summary,sink:bean-validation,sink:command-injection,sink:file-content-store,sink:fragment-injection,sink:groovy-injection,sink:hostname-verification,sink:html-injection,sink:information-leak,sink:intent-redirection,sink:jexl-injection,sink:jndi-injection,sink:js-injection,sink:ldap-injection,sink:log-injection,sink:mvel-injection,sink:ognl-injection,sink:path-injection,sink:pending-intents,sink:regex-use,sink:regex-use[-1],sink:regex-use[0],sink:regex-use[],sink:regex-use[f-1],sink:regex-use[f1],sink:regex-use[f],sink:request-forgery,sink:response-splitting,sink:sql-injection,sink:template-injection,sink:url-redirection,sink:xpath-injection,sink:xslt-injection,source:android-external-storage-dir,source:contentprovider,source:remote,summary:taint,summary:value +android.app,35,,103,,,,11,,,,,7,,,,,,,,,17,,,,,,,,,,,,,,,,,,18,85 +android.content,24,31,154,,,,,,,,,16,,,,,,,,,,,,,,,,,,,8,,,,,4,27,,63,91 +android.database,59,,41,,,,,,,,,,,,,,,,,,,,,,,,,,,,59,,,,,,,,41, +android.net,,,60,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,45,15 +android.os,,2,122,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,41,81 +android.support.v4.app,11,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +android.util,6,16,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,16,, +android.webkit,3,2,,,,,,,,2,,,,,1,,,,,,,,,,,,,,,,,,,,,,,2,, +android.widget,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1, +androidx.core.app,6,,95,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,12,83 +androidx.fragment.app,11,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +androidx.slice,2,5,88,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,5,,27,61 +antlr,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +cn.hutool.core.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.alibaba.druid.sql,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.esotericsoftware.kryo.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.esotericsoftware.kryo5.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.fasterxml.jackson.core,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.fasterxml.jackson.databind,2,,6,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,6, +com.google.common.base,4,,87,,,,,,,,,,,,,,,,,,,,,3,1,,,,,,,,,,,,,,63,24 +com.google.common.cache,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17 +com.google.common.collect,,,553,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,551 +com.google.common.flogger,29,,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,,, +com.google.common.io,8,,73,,,1,,,,,,,,,,,,,,7,,,,,,,,,,,,,,,,,,,72,1 +com.google.gson,,,44,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,30,14 +com.hubspot.jinjava,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,, +com.jcraft.jsch,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1, +com.mitchellbosecke.pebble,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,, +com.opensymphony.xwork2.ognl,3,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,, +com.rabbitmq.client,,21,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,7, +com.thoughtworks.xstream,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,, +com.unboundid.ldap.sdk,17,,,,,,,,,,,,,,,17,,,,,,,,,,,,,,,,,,,,,,,, +com.zaxxer.hikari,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, +flexjson,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 +freemarker.cache,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,, +freemarker.template,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,, +groovy.lang,26,,,,,,,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +groovy.text,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +groovy.util,5,,,,,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +hudson,68,4,2334,,4,3,,,,4,,,,,,,,,,51,,,,,,,,,6,,,,,,,,,4,2258,76 +io.jsonwebtoken,,2,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4, +io.netty.bootstrap,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,, +io.netty.buffer,,,207,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,130,77 +io.netty.channel,9,2,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,,2,, +io.netty.handler.codec,4,13,259,,,,,,,,,,,,,,,,,1,,,,,,,,,3,,,,,,,,,13,143,116 +io.netty.handler.ssl,4,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,, +io.netty.handler.stream,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,, +io.netty.resolver,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +io.netty.util,2,,23,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,21,2 +jakarta.faces.context,2,7,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,, +jakarta.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 +jakarta.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +jakarta.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,, +jakarta.ws.rs.core,2,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,94,55 +java.awt,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3 +java.beans,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +java.io,49,,45,,,22,,,,,,,,,,,,,,27,,,,,,,,,,,,,,,,,,,43,2 +java.lang,18,,92,,,,,,,,,,,,,,8,,,5,,,4,,,1,,,,,,,,,,,,,56,36 +java.net,13,3,20,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,3,20, +java.nio,47,,35,,,3,,,,,,,,,,,,,,44,,,,,,,,,,,,,,,,,,,35, +java.sql,13,,2,,,,,,,,,,,,,,,,,,,,,,,,,,4,,9,,,,,,,,2, +java.util,44,,484,,,,,,,,,,,,,,34,,,,,,,5,2,,1,2,,,,,,,,,,,44,440 +javafx.scene.web,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +javax.faces.context,2,7,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,, +javax.imageio.stream,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +javax.jms,,9,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,57, +javax.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 +javax.management.remote,2,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,, +javax.naming,7,,1,,,,,,,,,,,6,,1,,,,,,,,,,,,,,,,,,,,,,,1, +javax.net.ssl,2,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +javax.script,1,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,, +javax.servlet,5,21,2,,,,,,,,1,,,,,,,,,1,,,,,,,,,,3,,,,,,,,21,2, +javax.validation,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,, +javax.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +javax.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,, +javax.ws.rs.core,3,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,2,,,,,,94,55 +javax.xml.transform,2,,6,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,1,,,,6, +javax.xml.xpath,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,, +jenkins,,,446,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,423,23 +jodd.json,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10 +kotlin,16,,1847,,,,,,,,,,,,,,,,,14,,,,,,,,,2,,,,,,,,,,1836,11 +net.sf.json,2,,338,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,321,17 +net.sf.saxon.s9api,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,, +ognl,6,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,, +okhttp3,4,,48,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,23,25 +org.acegisecurity,,,49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,49, +org.antlr.runtime,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,, +org.apache.commons.codec,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6, +org.apache.commons.collections,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783 +org.apache.commons.collections4,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783 +org.apache.commons.compress.archivers.tar,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, +org.apache.commons.httpclient.util,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.commons.io,111,,560,,,2,,,,,,,,,,,,,,94,,,,,,,,,15,,,,,,,,,,546,14 +org.apache.commons.jelly,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,, +org.apache.commons.jexl2,15,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.jexl3,15,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.lang3,6,,424,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,293,131 +org.apache.commons.logging,6,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.net,9,12,,,,,,,,,,,,,,,,,,3,,,,,,,,,6,,,,,,,,,12,, +org.apache.commons.ognl,6,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.text,,,272,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,220,52 +org.apache.directory.ldap.client.api,1,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.hadoop.fs,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10, +org.apache.hadoop.hive.metastore,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,, +org.apache.hc.client5.http.async.methods,84,,,,,,,,,,,,,,,,,,,,,,,,,,,,84,,,,,,,,,,, +org.apache.hc.client5.http.classic.methods,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,, +org.apache.hc.client5.http.fluent,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,,,, +org.apache.hc.core5.benchmark,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +org.apache.hc.core5.function,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.hc.core5.http,73,2,45,,,,,,,1,,,,,,,,,,,,,,,,,,,72,,,,,,,,,2,45, +org.apache.hc.core5.net,,,18,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18, +org.apache.hc.core5.util,,,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18,6 +org.apache.hive.hcatalog.templeton,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,, +org.apache.http,48,3,94,,,,,,,2,,,,,,,,,,,,,,,,,,,46,,,,,,,,,3,86,8 +org.apache.ibatis.jdbc,6,,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,57, +org.apache.log4j,11,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,, +org.apache.logging.log4j,359,,8,,,,,,,,,,,,,,359,,,,,,,,,,,,,,,,,,,,,,4,4 +org.apache.shiro.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.shiro.jndi,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.tools.ant,11,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,, +org.apache.tools.zip,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.velocity.app,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,, +org.apache.velocity.runtime,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,, +org.codehaus.cargo.container.installer,3,,,,,,,,,,,,,,,,,,,2,,,,,,,,,1,,,,,,,,,,, +org.codehaus.groovy.control,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.dom4j,20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,20,,,,,, +org.eclipse.jetty.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +org.fusesource.leveldbjni,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,, +org.geogebra.web.full.main,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,, +org.hibernate,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,, +org.influxdb,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +org.jboss.logging,324,,,,,,,,,,,,,,,,324,,,,,,,,,,,,,,,,,,,,,,, +org.jdbi.v3.core,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,, +org.jenkins.ui.icon,,,42,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,41,1 +org.jenkins.ui.symbol,,,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,24,8 +org.jooq,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,, +org.json,,,236,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,198,38 +org.kohsuke.stapler,20,24,343,,,,,,,2,,,,,,,,,,9,,,,,,,,,4,,,,5,,,,,24,332,11 +org.mvel2,16,,,,,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,,, +org.openjdk.jmh.runner.options,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,, +org.scijava.log,13,,,,,,,,,,,,,,,,13,,,,,,,,,,,,,,,,,,,,,,, +org.slf4j,55,,6,,,,,,,,,,,,,,55,,,,,,,,,,,,,,,,,,,,,,2,4 +org.springframework.beans,,,30,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,30 +org.springframework.boot.jdbc,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +org.springframework.cache,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13 +org.springframework.context,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, +org.springframework.core.io,2,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,, +org.springframework.data.repository,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 +org.springframework.http,14,,71,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,,,,,61,10 +org.springframework.jdbc.core,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,, +org.springframework.jdbc.datasource,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,, +org.springframework.jdbc.object,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,, +org.springframework.jndi,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, +org.springframework.ldap,47,,,,,,,,,,,,,33,,14,,,,,,,,,,,,,,,,,,,,,,,, +org.springframework.security.web.savedrequest,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,, +org.springframework.ui,,,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,32 +org.springframework.util,3,,142,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,90,52 +org.springframework.validation,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13, +org.springframework.web.client,13,3,,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,3,, +org.springframework.web.context.request,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,, +org.springframework.web.multipart,,12,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12,13, +org.springframework.web.reactive.function.client,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, +org.springframework.web.util,,,165,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,140,25 +org.thymeleaf,2,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,2, +org.xml.sax,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.xmlpull.v1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,, +org.yaml.snakeyaml,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +play.libs.ws,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, +play.mvc,,13,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13,24, +ratpack.core.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, +ratpack.core.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4, +ratpack.core.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10, +ratpack.exec,,,48,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,48 +ratpack.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, +ratpack.func,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35 +ratpack.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4, +ratpack.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10, +ratpack.util,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35 +retrofit2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, diff --git a/java/documentation/library-coverage/coverage.rst b/java/documentation/library-coverage/coverage.rst index d89fce45524..dcf4eb2704d 100644 --- a/java/documentation/library-coverage/coverage.rst +++ b/java/documentation/library-coverage/coverage.rst @@ -6,22 +6,22 @@ Java framework & library support :class: fullWidthTable :widths: auto - Framework / library,Package,Flow sources,Taint & value steps,Sinks (total),`CWE‑022` :sub:`Path injection`,`CWE‑079` :sub:`Cross-site scripting`,`CWE‑089` :sub:`SQL injection`,`CWE‑090` :sub:`LDAP injection`,`CWE‑094` :sub:`Code injection`,`CWE‑319` :sub:`Cleartext transmission` + Framework / library,Package,Flow sources,Taint & value steps,Sinks (total),`CWE‑022` :sub:`Path injection`,`CWE‑079` :sub:`Cross-site scripting`,`CWE‑089` :sub:`SQL injection`,`CWE‑090` :sub:`LDAP injection`,`CWE‑094` :sub:`Code injection`,`CWE‑918` :sub:`Request Forgery` Android,``android.*``,52,481,138,,3,67,,, Android extensions,``androidx.*``,5,183,19,,,,,, `Apache Commons Collections `_,"``org.apache.commons.collections``, ``org.apache.commons.collections4``",,1600,,,,,,, - `Apache Commons IO `_,``org.apache.commons.io``,,560,111,93,,,,,15 + `Apache Commons IO `_,``org.apache.commons.io``,,560,111,94,,,,,15 `Apache Commons Lang `_,``org.apache.commons.lang3``,,424,6,,,,,, `Apache Commons Text `_,``org.apache.commons.text``,,272,,,,,,, `Apache HttpComponents `_,"``org.apache.hc.core5.*``, ``org.apache.http``",5,182,122,,3,,,,119 `Apache Log4j 2 `_,``org.apache.logging.log4j``,,8,359,,,,,, - `Google Guava `_,``com.google.common.*``,,730,41,2,,,,, + `Google Guava `_,``com.google.common.*``,,730,41,7,,,,, JBoss Logging,``org.jboss.logging``,,,324,,,,,, `JSON-java `_,``org.json``,,236,,,,,,, - Java Standard Library,``java.*``,3,679,170,40,,9,,,13 - Java extensions,"``javax.*``, ``jakarta.*``",63,611,34,1,4,,1,1,2 - Kotlin Standard Library,``kotlin*``,,1843,16,11,,,,,2 - `Spring `_,``org.springframework.*``,29,483,113,2,,28,14,,29 - Others,"``cn.hutool.core.codec``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.hubspot.jinjava``, ``com.mitchellbosecke.pebble``, ``com.opensymphony.xwork2.ognl``, ``com.rabbitmq.client``, ``com.thoughtworks.xstream``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``javafx.scene.web``, ``jodd.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.log4j``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.geogebra.web.full.main``, ``org.hibernate``, ``org.jdbi.v3.core``, ``org.jooq``, ``org.kohsuke.stapler``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.xml.sax``, ``org.xmlpull.v1``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``",89,827,516,26,,18,18,,181 - Totals,,246,9119,1969,175,10,122,33,1,361 + Java Standard Library,``java.*``,3,682,184,76,,9,,,17 + Java extensions,"``javax.*``, ``jakarta.*``",63,611,34,2,4,,1,1,2 + Kotlin Standard Library,``kotlin*``,,1847,16,14,,,,,2 + `Spring `_,``org.springframework.*``,29,483,115,4,,28,14,,35 + Others,"``antlr``, ``cn.hutool.core.codec``, ``com.alibaba.druid.sql``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.mitchellbosecke.pebble``, ``com.opensymphony.xwork2.ognl``, ``com.rabbitmq.client``, ``com.thoughtworks.xstream``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.log4j``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.hibernate``, ``org.influxdb``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.jooq``, ``org.kohsuke.stapler``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.xml.sax``, ``org.xmlpull.v1``, ``org.yaml.snakeyaml``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``",126,4467,571,89,6,18,18,,200 + Totals,,283,12766,2040,286,16,122,33,1,390 diff --git a/java/documentation/library-coverage/cwe-sink.csv b/java/documentation/library-coverage/cwe-sink.csv index a4e2f5b9af9..16fff1e653b 100644 --- a/java/documentation/library-coverage/cwe-sink.csv +++ b/java/documentation/library-coverage/cwe-sink.csv @@ -1,7 +1,7 @@ CWE,Sink identifier,Label -CWE‑089,sql,SQL injection -CWE‑022,create-file,Path injection +CWE‑089,sql-injection,SQL injection +CWE‑022,path-injection,Path injection CWE‑094,bean-validation,Code injection -CWE‑319,open-url,Cleartext transmission -CWE‑079,xss,Cross-site scripting -CWE‑090,ldap,LDAP injection +CWE‑918,request-forgery,Request Forgery +CWE‑079,html-injection js-injection,Cross-site scripting +CWE‑090,ldap-injection,LDAP injection diff --git a/java/downgrades/ecfcf050952e54b1155fc89525db84af6ad34aaf/old.dbscheme b/java/downgrades/ecfcf050952e54b1155fc89525db84af6ad34aaf/old.dbscheme new file mode 100644 index 00000000000..ecfcf050952 --- /dev/null +++ b/java/downgrades/ecfcf050952e54b1155fc89525db84af6ad34aaf/old.dbscheme @@ -0,0 +1,1256 @@ +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * javac A.java B.java C.java + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * javac A.java B.java C.java + */ + unique int id : @compilation, + int kind: int ref, + string cwd : string ref, + string name : string ref +); + +case @compilation.kind of + 1 = @javacompilation +| 2 = @kotlincompilation +; + +compilation_started( + int id : @compilation ref +) + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--javac-args` + * 2 | A.java + * 3 | B.java + * 4 | C.java + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@@@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | A.java + * 1 | B.java + * 2 | C.java + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * For each file recorded in `compilation_compiling_files`, + * there will be a corresponding row in + * `compilation_compiling_files_completed` once extraction + * of that file is complete. The `result` will indicate the + * extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +#keyset[id, num] +compilation_compiling_files_completed( + int id : @compilation ref, + int num : int ref, + int result : int ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * The `cpu_seconds` and `elapsed_seconds` are the CPU time and elapsed + * time (respectively) that the original compilation (not the extraction) + * took for compiler invocation `id`. + */ +compilation_compiler_times( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + * The `result` will indicate the extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref, + int result : int ref +); + +diagnostics( + unique int id: @diagnostic, + string generated_by: string ref, // TODO: Sync this with the other languages? + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/* + * External artifacts + */ + +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +snapshotDate( + unique date snapshotDate : date ref +); + +sourceLocationPrefix( + string prefix : string ref +); + +/* + * Duplicate code + */ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string relativePath : string ref, + int equivClass : int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref +); + +/* + * SMAP + */ + +smap_header( + int outputFileId: @file ref, + string outputFilename: string ref, + string defaultStratum: string ref +); + +smap_files( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + string inputFileName: string ref, + int inputFileId: @file ref +); + +smap_lines( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + int inputStartLine: int ref, + int inputLineCount: int ref, + int outputStartLine: int ref, + int outputLineIncrement: int ref +); + +/* + * Locations and files + */ + +@location = @location_default ; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +hasLocation( + int locatableid: @locatable ref, + int id: @location ref +); + +@sourceline = @locatable ; + +#keyset[element_id] +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/* + * Java + */ + +cupackage( + unique int id: @file ref, + int packageid: @package ref +); + +#keyset[fileid,keyName] +jarManifestMain( + int fileid: @file ref, + string keyName: string ref, + string value: string ref +); + +#keyset[fileid,entryName,keyName] +jarManifestEntries( + int fileid: @file ref, + string entryName: string ref, + string keyName: string ref, + string value: string ref +); + +packages( + unique int id: @package, + string nodeName: string ref +); + +primitives( + unique int id: @primitive, + string nodeName: string ref +); + +modifiers( + unique int id: @modifier, + string nodeName: string ref +); + +/** + * An errortype is used when the extractor is unable to extract a type + * correctly for some reason. + */ +error_type( + unique int id: @errortype +); + +classes_or_interfaces( + unique int id: @classorinterface, + string nodeName: string ref, + int parentid: @package ref, + int sourceid: @classorinterface ref +); + +file_class( + int id: @classorinterface ref +); + +class_object( + unique int id: @classorinterface ref, + unique int instance: @field ref +); + +type_companion_object( + unique int id: @classorinterface ref, + unique int instance: @field ref, + unique int companion_object: @classorinterface ref +); + +kt_nullable_types( + unique int id: @kt_nullable_type, + int classid: @reftype ref +) + +kt_notnull_types( + unique int id: @kt_notnull_type, + int classid: @reftype ref +) + +kt_type_alias( + unique int id: @kt_type_alias, + string name: string ref, + int kttypeid: @kt_type ref +) + +@kt_type = @kt_nullable_type | @kt_notnull_type + +isInterface( + unique int id: @classorinterface ref +); + +isRecord( + unique int id: @classorinterface ref +); + +fielddecls( + unique int id: @fielddecl, + int parentid: @reftype ref +); + +#keyset[fieldId] #keyset[fieldDeclId,pos] +fieldDeclaredIn( + int fieldId: @field ref, + int fieldDeclId: @fielddecl ref, + int pos: int ref +); + +fields( + unique int id: @field, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @field ref +); + +fieldsKotlinType( + unique int id: @field ref, + int kttypeid: @kt_type ref +); + +constrs( + unique int id: @constructor, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @constructor ref +); + +constrsKotlinType( + unique int id: @constructor ref, + int kttypeid: @kt_type ref +); + +methods( + unique int id: @method, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @method ref +); + +methodsKotlinType( + unique int id: @method ref, + int kttypeid: @kt_type ref +); + +#keyset[parentid,pos] +params( + unique int id: @param, + int typeid: @type ref, + int pos: int ref, + int parentid: @callable ref, + int sourceid: @param ref +); + +paramsKotlinType( + unique int id: @param ref, + int kttypeid: @kt_type ref +); + +paramName( + unique int id: @param ref, + string nodeName: string ref +); + +isVarargsParam( + int param: @param ref +); + +exceptions( + unique int id: @exception, + int typeid: @type ref, + int parentid: @callable ref +); + +isAnnotType( + int interfaceid: @classorinterface ref +); + +isAnnotElem( + int methodid: @method ref +); + +annotValue( + int parentid: @annotation ref, + int id2: @method ref, + unique int value: @expr ref +); + +isEnumType( + int classid: @classorinterface ref +); + +isEnumConst( + int fieldid: @field ref +); + +#keyset[parentid,pos] +typeVars( + unique int id: @typevariable, + string nodeName: string ref, + int pos: int ref, + int kind: int ref, // deprecated + int parentid: @classorinterfaceorcallable ref +); + +wildcards( + unique int id: @wildcard, + string nodeName: string ref, + int kind: int ref +); + +#keyset[parentid,pos] +typeBounds( + unique int id: @typebound, + int typeid: @reftype ref, + int pos: int ref, + int parentid: @boundedtype ref +); + +#keyset[parentid,pos] +typeArgs( + int argumentid: @reftype ref, + int pos: int ref, + int parentid: @classorinterfaceorcallable ref +); + +isParameterized( + int memberid: @member ref +); + +isRaw( + int memberid: @member ref +); + +erasure( + unique int memberid: @member ref, + int erasureid: @member ref +); + +#keyset[classid] #keyset[parent] +isAnonymClass( + int classid: @classorinterface ref, + int parent: @classinstancexpr ref +); + +#keyset[typeid] #keyset[parent] +isLocalClassOrInterface( + int typeid: @classorinterface ref, + int parent: @localtypedeclstmt ref +); + +isDefConstr( + int constructorid: @constructor ref +); + +#keyset[exprId] +lambdaKind( + int exprId: @lambdaexpr ref, + int bodyKind: int ref +); + +arrays( + unique int id: @array, + string nodeName: string ref, + int elementtypeid: @type ref, + int dimension: int ref, + int componenttypeid: @type ref +); + +enclInReftype( + unique int child: @reftype ref, + int parent: @reftype ref +); + +extendsReftype( + int id1: @reftype ref, + int id2: @classorinterface ref +); + +implInterface( + int id1: @classorarray ref, + int id2: @classorinterface ref +); + +permits( + int id1: @classorinterface ref, + int id2: @classorinterface ref +); + +hasModifier( + int id1: @modifiable ref, + int id2: @modifier ref +); + +imports( + unique int id: @import, + int holder: @classorinterfaceorpackage ref, + string name: string ref, + int kind: int ref +); + +#keyset[parent,idx] +stmts( + unique int id: @stmt, + int kind: int ref, + int parent: @stmtparent ref, + int idx: int ref, + int bodydecl: @callable ref +); + +@stmtparent = @callable | @stmt | @switchexpr | @whenexpr| @stmtexpr; + +case @stmt.kind of + 0 = @block +| 1 = @ifstmt +| 2 = @forstmt +| 3 = @enhancedforstmt +| 4 = @whilestmt +| 5 = @dostmt +| 6 = @trystmt +| 7 = @switchstmt +| 8 = @synchronizedstmt +| 9 = @returnstmt +| 10 = @throwstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @emptystmt +| 14 = @exprstmt +| 15 = @labeledstmt +| 16 = @assertstmt +| 17 = @localvariabledeclstmt +| 18 = @localtypedeclstmt +| 19 = @constructorinvocationstmt +| 20 = @superconstructorinvocationstmt +| 21 = @case +| 22 = @catchclause +| 23 = @yieldstmt +| 24 = @errorstmt +| 25 = @whenbranch +; + +#keyset[parent,idx] +exprs( + unique int id: @expr, + int kind: int ref, + int typeid: @type ref, + int parent: @exprparent ref, + int idx: int ref +); + +exprsKotlinType( + unique int id: @expr ref, + int kttypeid: @kt_type ref +); + +callableEnclosingExpr( + unique int id: @expr ref, + int callable_id: @callable ref +); + +statementEnclosingExpr( + unique int id: @expr ref, + int statement_id: @stmt ref +); + +isParenthesized( + unique int id: @expr ref, + int parentheses: int ref +); + +case @expr.kind of + 1 = @arrayaccess +| 2 = @arraycreationexpr +| 3 = @arrayinit +| 4 = @assignexpr +| 5 = @assignaddexpr +| 6 = @assignsubexpr +| 7 = @assignmulexpr +| 8 = @assigndivexpr +| 9 = @assignremexpr +| 10 = @assignandexpr +| 11 = @assignorexpr +| 12 = @assignxorexpr +| 13 = @assignlshiftexpr +| 14 = @assignrshiftexpr +| 15 = @assignurshiftexpr +| 16 = @booleanliteral +| 17 = @integerliteral +| 18 = @longliteral +| 19 = @floatingpointliteral +| 20 = @doubleliteral +| 21 = @characterliteral +| 22 = @stringliteral +| 23 = @nullliteral +| 24 = @mulexpr +| 25 = @divexpr +| 26 = @remexpr +| 27 = @addexpr +| 28 = @subexpr +| 29 = @lshiftexpr +| 30 = @rshiftexpr +| 31 = @urshiftexpr +| 32 = @andbitexpr +| 33 = @orbitexpr +| 34 = @xorbitexpr +| 35 = @andlogicalexpr +| 36 = @orlogicalexpr +| 37 = @ltexpr +| 38 = @gtexpr +| 39 = @leexpr +| 40 = @geexpr +| 41 = @eqexpr +| 42 = @neexpr +| 43 = @postincexpr +| 44 = @postdecexpr +| 45 = @preincexpr +| 46 = @predecexpr +| 47 = @minusexpr +| 48 = @plusexpr +| 49 = @bitnotexpr +| 50 = @lognotexpr +| 51 = @castexpr +| 52 = @newexpr +| 53 = @conditionalexpr +| 54 = @parexpr // deprecated +| 55 = @instanceofexpr +| 56 = @localvariabledeclexpr +| 57 = @typeliteral +| 58 = @thisaccess +| 59 = @superaccess +| 60 = @varaccess +| 61 = @methodaccess +| 62 = @unannotatedtypeaccess +| 63 = @arraytypeaccess +| 64 = @packageaccess +| 65 = @wildcardtypeaccess +| 66 = @declannotation +| 67 = @uniontypeaccess +| 68 = @lambdaexpr +| 69 = @memberref +| 70 = @annotatedtypeaccess +| 71 = @typeannotation +| 72 = @intersectiontypeaccess +| 73 = @switchexpr +| 74 = @errorexpr +| 75 = @whenexpr +| 76 = @getclassexpr +| 77 = @safecastexpr +| 78 = @implicitcastexpr +| 79 = @implicitnotnullexpr +| 80 = @implicitcoerciontounitexpr +| 81 = @notinstanceofexpr +| 82 = @stmtexpr +| 83 = @stringtemplateexpr +| 84 = @notnullexpr +| 85 = @unsafecoerceexpr +| 86 = @valueeqexpr +| 87 = @valueneexpr +| 88 = @propertyref +; + +/** Holds if this `when` expression was written as an `if` expression. */ +when_if(unique int id: @whenexpr ref); + +/** Holds if this `when` branch was written as an `else` branch. */ +when_branch_else(unique int id: @whenbranch ref); + +@classinstancexpr = @newexpr | @lambdaexpr | @memberref | @propertyref + +@annotation = @declannotation | @typeannotation +@typeaccess = @unannotatedtypeaccess | @annotatedtypeaccess + +@assignment = @assignexpr + | @assignop; + +@unaryassignment = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr; + +@assignop = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + | @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignurshiftexpr; + +@literal = @booleanliteral + | @integerliteral + | @longliteral + | @floatingpointliteral + | @doubleliteral + | @characterliteral + | @stringliteral + | @nullliteral; + +@binaryexpr = @mulexpr + | @divexpr + | @remexpr + | @addexpr + | @subexpr + | @lshiftexpr + | @rshiftexpr + | @urshiftexpr + | @andbitexpr + | @orbitexpr + | @xorbitexpr + | @andlogicalexpr + | @orlogicalexpr + | @ltexpr + | @gtexpr + | @leexpr + | @geexpr + | @eqexpr + | @neexpr + | @valueeqexpr + | @valueneexpr; + +@unaryexpr = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr + | @minusexpr + | @plusexpr + | @bitnotexpr + | @lognotexpr + | @notnullexpr; + +@caller = @classinstancexpr + | @methodaccess + | @constructorinvocationstmt + | @superconstructorinvocationstmt; + +callableBinding( + unique int callerid: @caller ref, + int callee: @callable ref +); + +memberRefBinding( + unique int id: @expr ref, + int callable: @callable ref +); + +propertyRefGetBinding( + unique int id: @expr ref, + int getter: @callable ref +); + +propertyRefFieldBinding( + unique int id: @expr ref, + int field: @field ref +); + +propertyRefSetBinding( + unique int id: @expr ref, + int setter: @callable ref +); + +@exprparent = @stmt | @expr | @whenbranch | @callable | @field | @fielddecl | @classorinterface | @param | @localvar | @typevariable; + +variableBinding( + unique int expr: @varaccess ref, + int variable: @variable ref +); + +@variable = @localscopevariable | @field; + +@localscopevariable = @localvar | @param; + +localvars( + unique int id: @localvar, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @localvariabledeclexpr ref +); + +localvarsKotlinType( + unique int id: @localvar ref, + int kttypeid: @kt_type ref +); + +@namedexprorstmt = @breakstmt + | @continuestmt + | @labeledstmt + | @literal; + +namestrings( + string name: string ref, + string value: string ref, + unique int parent: @namedexprorstmt ref +); + +/* + * Modules + */ + +#keyset[name] +modules( + unique int id: @module, + string name: string ref +); + +isOpen( + int id: @module ref +); + +#keyset[fileId] +cumodule( + int fileId: @file ref, + int moduleId: @module ref +); + +@directive = @requires + | @exports + | @opens + | @uses + | @provides + +#keyset[directive] +directives( + int id: @module ref, + int directive: @directive ref +); + +requires( + unique int id: @requires, + int target: @module ref +); + +isTransitive( + int id: @requires ref +); + +isStatic( + int id: @requires ref +); + +exports( + unique int id: @exports, + int target: @package ref +); + +exportsTo( + int id: @exports ref, + int target: @module ref +); + +opens( + unique int id: @opens, + int target: @package ref +); + +opensTo( + int id: @opens ref, + int target: @module ref +); + +uses( + unique int id: @uses, + string serviceInterface: string ref +); + +provides( + unique int id: @provides, + string serviceInterface: string ref +); + +providesWith( + int id: @provides ref, + string serviceImpl: string ref +); + +/* + * Javadoc + */ + +javadoc( + unique int id: @javadoc +); + +isNormalComment( + int commentid : @javadoc ref +); + +isEolComment( + int commentid : @javadoc ref +); + +hasJavadoc( + int documentableid: @member ref, + int javadocid: @javadoc ref +); + +#keyset[parentid,idx] +javadocTag( + unique int id: @javadocTag, + string name: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +#keyset[parentid,idx] +javadocText( + unique int id: @javadocText, + string text: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +@javadocParent = @javadoc | @javadocTag; +@javadocElement = @javadocTag | @javadocText; + +@classorinterfaceorpackage = @classorinterface | @package; +@classorinterfaceorcallable = @classorinterface | @callable; +@boundedtype = @typevariable | @wildcard; +@reftype = @classorinterface | @array | @boundedtype | @errortype; +@classorarray = @classorinterface | @array; +@type = @primitive | @reftype; +@callable = @method | @constructor; + +/** A program element that has a name. */ +@element = @package | @modifier | @annotation | @errortype | + @locatableElement; + +@locatableElement = @file | @primitive | @classorinterface | @method | @constructor | @param | @exception | @field | + @boundedtype | @array | @localvar | @expr | @stmt | @import | @fielddecl | @kt_type | @kt_type_alias | + @kt_property; + +@modifiable = @member_modifiable| @param | @localvar | @typevariable; + +@member_modifiable = @classorinterface | @method | @constructor | @field | @kt_property; + +@member = @method | @constructor | @field | @reftype ; + +/** A program element that has a location. */ +@locatable = @typebound | @javadoc | @javadocTag | @javadocText | @xmllocatable | @ktcomment | + @locatableElement; + +@top = @element | @locatable | @folder; + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* + * configuration files with key value pairs + */ + +configs( + unique int id: @config +); + +configNames( + unique int id: @configName, + int config: @config ref, + string name: string ref +); + +configValues( + unique int id: @configValue, + int config: @config ref, + string value: string ref +); + +configLocations( + int locatable: @configLocatable ref, + int location: @location_default ref +); + +@configLocatable = @config | @configName | @configValue; + +ktComments( + unique int id: @ktcomment, + int kind: int ref, + string text : string ref +) + +ktCommentSections( + unique int id: @ktcommentsection, + int comment: @ktcomment ref, + string content : string ref +) + +ktCommentSectionNames( + unique int id: @ktcommentsection ref, + string name : string ref +) + +ktCommentSectionSubjectNames( + unique int id: @ktcommentsection ref, + string subjectname : string ref +) + +#keyset[id, owner] +ktCommentOwners( + int id: @ktcomment ref, + int owner: @top ref +) + +ktExtensionFunctions( + unique int id: @method ref, + int typeid: @type ref, + int kttypeid: @kt_type ref +) + +ktProperties( + unique int id: @kt_property, + string nodeName: string ref +) + +ktPropertyGetters( + unique int id: @kt_property ref, + int getter: @method ref +) + +ktPropertySetters( + unique int id: @kt_property ref, + int setter: @method ref +) + +ktPropertyBackingFields( + unique int id: @kt_property ref, + int backingField: @field ref +) + +ktSyntheticBody( + unique int id: @callable ref, + int kind: int ref + // 1: ENUM_VALUES + // 2: ENUM_VALUEOF + // 3: ENUM_ENTRIES +) + +ktLocalFunction( + unique int id: @method ref +) + +ktInitializerAssignment( + unique int id: @assignexpr ref +) + +ktPropertyDelegates( + unique int id: @kt_property ref, + unique int variableId: @variable ref +) + +/** + * If `id` is a compiler generated element, then the kind indicates the + * reason that the compiler generated it. + * See `Element.compilerGeneratedReason()` for an explanation of what + * each `kind` means. + */ +compiler_generated( + unique int id: @element ref, + int kind: int ref +) + +ktFunctionOriginalNames( + unique int id: @method ref, + string name: string ref +) + +ktDataClasses( + unique int id: @classorinterface ref +) diff --git a/java/downgrades/ecfcf050952e54b1155fc89525db84af6ad34aaf/semmlecode.dbscheme b/java/downgrades/ecfcf050952e54b1155fc89525db84af6ad34aaf/semmlecode.dbscheme new file mode 100644 index 00000000000..7cbc85b1f3e --- /dev/null +++ b/java/downgrades/ecfcf050952e54b1155fc89525db84af6ad34aaf/semmlecode.dbscheme @@ -0,0 +1,1255 @@ +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * javac A.java B.java C.java + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * javac A.java B.java C.java + */ + unique int id : @compilation, + int kind: int ref, + string cwd : string ref, + string name : string ref +); + +case @compilation.kind of + 1 = @javacompilation +| 2 = @kotlincompilation +; + +compilation_started( + int id : @compilation ref +) + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--javac-args` + * 2 | A.java + * 3 | B.java + * 4 | C.java + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@@@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | A.java + * 1 | B.java + * 2 | C.java + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * For each file recorded in `compilation_compiling_files`, + * there will be a corresponding row in + * `compilation_compiling_files_completed` once extraction + * of that file is complete. The `result` will indicate the + * extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +#keyset[id, num] +compilation_compiling_files_completed( + int id : @compilation ref, + int num : int ref, + int result : int ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * The `cpu_seconds` and `elapsed_seconds` are the CPU time and elapsed + * time (respectively) that the original compilation (not the extraction) + * took for compiler invocation `id`. + */ +compilation_compiler_times( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + * The `result` will indicate the extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref, + int result : int ref +); + +diagnostics( + unique int id: @diagnostic, + string generated_by: string ref, // TODO: Sync this with the other languages? + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/* + * External artifacts + */ + +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +snapshotDate( + unique date snapshotDate : date ref +); + +sourceLocationPrefix( + string prefix : string ref +); + +/* + * Duplicate code + */ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string relativePath : string ref, + int equivClass : int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref +); + +/* + * SMAP + */ + +smap_header( + int outputFileId: @file ref, + string outputFilename: string ref, + string defaultStratum: string ref +); + +smap_files( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + string inputFileName: string ref, + int inputFileId: @file ref +); + +smap_lines( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + int inputStartLine: int ref, + int inputLineCount: int ref, + int outputStartLine: int ref, + int outputLineIncrement: int ref +); + +/* + * Locations and files + */ + +@location = @location_default ; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +hasLocation( + int locatableid: @locatable ref, + int id: @location ref +); + +@sourceline = @locatable ; + +#keyset[element_id] +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/* + * Java + */ + +cupackage( + unique int id: @file ref, + int packageid: @package ref +); + +#keyset[fileid,keyName] +jarManifestMain( + int fileid: @file ref, + string keyName: string ref, + string value: string ref +); + +#keyset[fileid,entryName,keyName] +jarManifestEntries( + int fileid: @file ref, + string entryName: string ref, + string keyName: string ref, + string value: string ref +); + +packages( + unique int id: @package, + string nodeName: string ref +); + +primitives( + unique int id: @primitive, + string nodeName: string ref +); + +modifiers( + unique int id: @modifier, + string nodeName: string ref +); + +/** + * An errortype is used when the extractor is unable to extract a type + * correctly for some reason. + */ +error_type( + unique int id: @errortype +); + +classes_or_interfaces( + unique int id: @classorinterface, + string nodeName: string ref, + int parentid: @package ref, + int sourceid: @classorinterface ref +); + +file_class( + int id: @classorinterface ref +); + +class_object( + unique int id: @classorinterface ref, + unique int instance: @field ref +); + +type_companion_object( + unique int id: @classorinterface ref, + unique int instance: @field ref, + unique int companion_object: @classorinterface ref +); + +kt_nullable_types( + unique int id: @kt_nullable_type, + int classid: @reftype ref +) + +kt_notnull_types( + unique int id: @kt_notnull_type, + int classid: @reftype ref +) + +kt_type_alias( + unique int id: @kt_type_alias, + string name: string ref, + int kttypeid: @kt_type ref +) + +@kt_type = @kt_nullable_type | @kt_notnull_type + +isInterface( + unique int id: @classorinterface ref +); + +isRecord( + unique int id: @classorinterface ref +); + +fielddecls( + unique int id: @fielddecl, + int parentid: @reftype ref +); + +#keyset[fieldId] #keyset[fieldDeclId,pos] +fieldDeclaredIn( + int fieldId: @field ref, + int fieldDeclId: @fielddecl ref, + int pos: int ref +); + +fields( + unique int id: @field, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @field ref +); + +fieldsKotlinType( + unique int id: @field ref, + int kttypeid: @kt_type ref +); + +constrs( + unique int id: @constructor, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @constructor ref +); + +constrsKotlinType( + unique int id: @constructor ref, + int kttypeid: @kt_type ref +); + +methods( + unique int id: @method, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @method ref +); + +methodsKotlinType( + unique int id: @method ref, + int kttypeid: @kt_type ref +); + +#keyset[parentid,pos] +params( + unique int id: @param, + int typeid: @type ref, + int pos: int ref, + int parentid: @callable ref, + int sourceid: @param ref +); + +paramsKotlinType( + unique int id: @param ref, + int kttypeid: @kt_type ref +); + +paramName( + unique int id: @param ref, + string nodeName: string ref +); + +isVarargsParam( + int param: @param ref +); + +exceptions( + unique int id: @exception, + int typeid: @type ref, + int parentid: @callable ref +); + +isAnnotType( + int interfaceid: @classorinterface ref +); + +isAnnotElem( + int methodid: @method ref +); + +annotValue( + int parentid: @annotation ref, + int id2: @method ref, + unique int value: @expr ref +); + +isEnumType( + int classid: @classorinterface ref +); + +isEnumConst( + int fieldid: @field ref +); + +#keyset[parentid,pos] +typeVars( + unique int id: @typevariable, + string nodeName: string ref, + int pos: int ref, + int kind: int ref, // deprecated + int parentid: @classorinterfaceorcallable ref +); + +wildcards( + unique int id: @wildcard, + string nodeName: string ref, + int kind: int ref +); + +#keyset[parentid,pos] +typeBounds( + unique int id: @typebound, + int typeid: @reftype ref, + int pos: int ref, + int parentid: @boundedtype ref +); + +#keyset[parentid,pos] +typeArgs( + int argumentid: @reftype ref, + int pos: int ref, + int parentid: @classorinterfaceorcallable ref +); + +isParameterized( + int memberid: @member ref +); + +isRaw( + int memberid: @member ref +); + +erasure( + unique int memberid: @member ref, + int erasureid: @member ref +); + +#keyset[classid] #keyset[parent] +isAnonymClass( + int classid: @classorinterface ref, + int parent: @classinstancexpr ref +); + +#keyset[typeid] #keyset[parent] +isLocalClassOrInterface( + int typeid: @classorinterface ref, + int parent: @localtypedeclstmt ref +); + +isDefConstr( + int constructorid: @constructor ref +); + +#keyset[exprId] +lambdaKind( + int exprId: @lambdaexpr ref, + int bodyKind: int ref +); + +arrays( + unique int id: @array, + string nodeName: string ref, + int elementtypeid: @type ref, + int dimension: int ref, + int componenttypeid: @type ref +); + +enclInReftype( + unique int child: @reftype ref, + int parent: @reftype ref +); + +extendsReftype( + int id1: @reftype ref, + int id2: @classorinterface ref +); + +implInterface( + int id1: @classorarray ref, + int id2: @classorinterface ref +); + +permits( + int id1: @classorinterface ref, + int id2: @classorinterface ref +); + +hasModifier( + int id1: @modifiable ref, + int id2: @modifier ref +); + +imports( + unique int id: @import, + int holder: @classorinterfaceorpackage ref, + string name: string ref, + int kind: int ref +); + +#keyset[parent,idx] +stmts( + unique int id: @stmt, + int kind: int ref, + int parent: @stmtparent ref, + int idx: int ref, + int bodydecl: @callable ref +); + +@stmtparent = @callable | @stmt | @switchexpr | @whenexpr| @stmtexpr; + +case @stmt.kind of + 0 = @block +| 1 = @ifstmt +| 2 = @forstmt +| 3 = @enhancedforstmt +| 4 = @whilestmt +| 5 = @dostmt +| 6 = @trystmt +| 7 = @switchstmt +| 8 = @synchronizedstmt +| 9 = @returnstmt +| 10 = @throwstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @emptystmt +| 14 = @exprstmt +| 15 = @labeledstmt +| 16 = @assertstmt +| 17 = @localvariabledeclstmt +| 18 = @localtypedeclstmt +| 19 = @constructorinvocationstmt +| 20 = @superconstructorinvocationstmt +| 21 = @case +| 22 = @catchclause +| 23 = @yieldstmt +| 24 = @errorstmt +| 25 = @whenbranch +; + +#keyset[parent,idx] +exprs( + unique int id: @expr, + int kind: int ref, + int typeid: @type ref, + int parent: @exprparent ref, + int idx: int ref +); + +exprsKotlinType( + unique int id: @expr ref, + int kttypeid: @kt_type ref +); + +callableEnclosingExpr( + unique int id: @expr ref, + int callable_id: @callable ref +); + +statementEnclosingExpr( + unique int id: @expr ref, + int statement_id: @stmt ref +); + +isParenthesized( + unique int id: @expr ref, + int parentheses: int ref +); + +case @expr.kind of + 1 = @arrayaccess +| 2 = @arraycreationexpr +| 3 = @arrayinit +| 4 = @assignexpr +| 5 = @assignaddexpr +| 6 = @assignsubexpr +| 7 = @assignmulexpr +| 8 = @assigndivexpr +| 9 = @assignremexpr +| 10 = @assignandexpr +| 11 = @assignorexpr +| 12 = @assignxorexpr +| 13 = @assignlshiftexpr +| 14 = @assignrshiftexpr +| 15 = @assignurshiftexpr +| 16 = @booleanliteral +| 17 = @integerliteral +| 18 = @longliteral +| 19 = @floatingpointliteral +| 20 = @doubleliteral +| 21 = @characterliteral +| 22 = @stringliteral +| 23 = @nullliteral +| 24 = @mulexpr +| 25 = @divexpr +| 26 = @remexpr +| 27 = @addexpr +| 28 = @subexpr +| 29 = @lshiftexpr +| 30 = @rshiftexpr +| 31 = @urshiftexpr +| 32 = @andbitexpr +| 33 = @orbitexpr +| 34 = @xorbitexpr +| 35 = @andlogicalexpr +| 36 = @orlogicalexpr +| 37 = @ltexpr +| 38 = @gtexpr +| 39 = @leexpr +| 40 = @geexpr +| 41 = @eqexpr +| 42 = @neexpr +| 43 = @postincexpr +| 44 = @postdecexpr +| 45 = @preincexpr +| 46 = @predecexpr +| 47 = @minusexpr +| 48 = @plusexpr +| 49 = @bitnotexpr +| 50 = @lognotexpr +| 51 = @castexpr +| 52 = @newexpr +| 53 = @conditionalexpr +| 54 = @parexpr // deprecated +| 55 = @instanceofexpr +| 56 = @localvariabledeclexpr +| 57 = @typeliteral +| 58 = @thisaccess +| 59 = @superaccess +| 60 = @varaccess +| 61 = @methodaccess +| 62 = @unannotatedtypeaccess +| 63 = @arraytypeaccess +| 64 = @packageaccess +| 65 = @wildcardtypeaccess +| 66 = @declannotation +| 67 = @uniontypeaccess +| 68 = @lambdaexpr +| 69 = @memberref +| 70 = @annotatedtypeaccess +| 71 = @typeannotation +| 72 = @intersectiontypeaccess +| 73 = @switchexpr +| 74 = @errorexpr +| 75 = @whenexpr +| 76 = @getclassexpr +| 77 = @safecastexpr +| 78 = @implicitcastexpr +| 79 = @implicitnotnullexpr +| 80 = @implicitcoerciontounitexpr +| 81 = @notinstanceofexpr +| 82 = @stmtexpr +| 83 = @stringtemplateexpr +| 84 = @notnullexpr +| 85 = @unsafecoerceexpr +| 86 = @valueeqexpr +| 87 = @valueneexpr +| 88 = @propertyref +; + +/** Holds if this `when` expression was written as an `if` expression. */ +when_if(unique int id: @whenexpr ref); + +/** Holds if this `when` branch was written as an `else` branch. */ +when_branch_else(unique int id: @whenbranch ref); + +@classinstancexpr = @newexpr | @lambdaexpr | @memberref | @propertyref + +@annotation = @declannotation | @typeannotation +@typeaccess = @unannotatedtypeaccess | @annotatedtypeaccess + +@assignment = @assignexpr + | @assignop; + +@unaryassignment = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr; + +@assignop = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + | @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignurshiftexpr; + +@literal = @booleanliteral + | @integerliteral + | @longliteral + | @floatingpointliteral + | @doubleliteral + | @characterliteral + | @stringliteral + | @nullliteral; + +@binaryexpr = @mulexpr + | @divexpr + | @remexpr + | @addexpr + | @subexpr + | @lshiftexpr + | @rshiftexpr + | @urshiftexpr + | @andbitexpr + | @orbitexpr + | @xorbitexpr + | @andlogicalexpr + | @orlogicalexpr + | @ltexpr + | @gtexpr + | @leexpr + | @geexpr + | @eqexpr + | @neexpr + | @valueeqexpr + | @valueneexpr; + +@unaryexpr = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr + | @minusexpr + | @plusexpr + | @bitnotexpr + | @lognotexpr + | @notnullexpr; + +@caller = @classinstancexpr + | @methodaccess + | @constructorinvocationstmt + | @superconstructorinvocationstmt; + +callableBinding( + unique int callerid: @caller ref, + int callee: @callable ref +); + +memberRefBinding( + unique int id: @expr ref, + int callable: @callable ref +); + +propertyRefGetBinding( + unique int id: @expr ref, + int getter: @callable ref +); + +propertyRefFieldBinding( + unique int id: @expr ref, + int field: @field ref +); + +propertyRefSetBinding( + unique int id: @expr ref, + int setter: @callable ref +); + +@exprparent = @stmt | @expr | @whenbranch | @callable | @field | @fielddecl | @classorinterface | @param | @localvar | @typevariable; + +variableBinding( + unique int expr: @varaccess ref, + int variable: @variable ref +); + +@variable = @localscopevariable | @field; + +@localscopevariable = @localvar | @param; + +localvars( + unique int id: @localvar, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @localvariabledeclexpr ref +); + +localvarsKotlinType( + unique int id: @localvar ref, + int kttypeid: @kt_type ref +); + +@namedexprorstmt = @breakstmt + | @continuestmt + | @labeledstmt + | @literal; + +namestrings( + string name: string ref, + string value: string ref, + unique int parent: @namedexprorstmt ref +); + +/* + * Modules + */ + +#keyset[name] +modules( + unique int id: @module, + string name: string ref +); + +isOpen( + int id: @module ref +); + +#keyset[fileId] +cumodule( + int fileId: @file ref, + int moduleId: @module ref +); + +@directive = @requires + | @exports + | @opens + | @uses + | @provides + +#keyset[directive] +directives( + int id: @module ref, + int directive: @directive ref +); + +requires( + unique int id: @requires, + int target: @module ref +); + +isTransitive( + int id: @requires ref +); + +isStatic( + int id: @requires ref +); + +exports( + unique int id: @exports, + int target: @package ref +); + +exportsTo( + int id: @exports ref, + int target: @module ref +); + +opens( + unique int id: @opens, + int target: @package ref +); + +opensTo( + int id: @opens ref, + int target: @module ref +); + +uses( + unique int id: @uses, + string serviceInterface: string ref +); + +provides( + unique int id: @provides, + string serviceInterface: string ref +); + +providesWith( + int id: @provides ref, + string serviceImpl: string ref +); + +/* + * Javadoc + */ + +javadoc( + unique int id: @javadoc +); + +isNormalComment( + int commentid : @javadoc ref +); + +isEolComment( + int commentid : @javadoc ref +); + +hasJavadoc( + int documentableid: @member ref, + int javadocid: @javadoc ref +); + +#keyset[parentid,idx] +javadocTag( + unique int id: @javadocTag, + string name: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +#keyset[parentid,idx] +javadocText( + unique int id: @javadocText, + string text: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +@javadocParent = @javadoc | @javadocTag; +@javadocElement = @javadocTag | @javadocText; + +@classorinterfaceorpackage = @classorinterface | @package; +@classorinterfaceorcallable = @classorinterface | @callable; +@boundedtype = @typevariable | @wildcard; +@reftype = @classorinterface | @array | @boundedtype | @errortype; +@classorarray = @classorinterface | @array; +@type = @primitive | @reftype; +@callable = @method | @constructor; + +/** A program element that has a name. */ +@element = @package | @modifier | @annotation | @errortype | + @locatableElement; + +@locatableElement = @file | @primitive | @classorinterface | @method | @constructor | @param | @exception | @field | + @boundedtype | @array | @localvar | @expr | @stmt | @import | @fielddecl | @kt_type | @kt_type_alias | + @kt_property; + +@modifiable = @member_modifiable| @param | @localvar | @typevariable; + +@member_modifiable = @classorinterface | @method | @constructor | @field | @kt_property; + +@member = @method | @constructor | @field | @reftype ; + +/** A program element that has a location. */ +@locatable = @typebound | @javadoc | @javadocTag | @javadocText | @xmllocatable | @ktcomment | + @locatableElement; + +@top = @element | @locatable | @folder; + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* + * configuration files with key value pairs + */ + +configs( + unique int id: @config +); + +configNames( + unique int id: @configName, + int config: @config ref, + string name: string ref +); + +configValues( + unique int id: @configValue, + int config: @config ref, + string value: string ref +); + +configLocations( + int locatable: @configLocatable ref, + int location: @location_default ref +); + +@configLocatable = @config | @configName | @configValue; + +ktComments( + unique int id: @ktcomment, + int kind: int ref, + string text : string ref +) + +ktCommentSections( + unique int id: @ktcommentsection, + int comment: @ktcomment ref, + string content : string ref +) + +ktCommentSectionNames( + unique int id: @ktcommentsection ref, + string name : string ref +) + +ktCommentSectionSubjectNames( + unique int id: @ktcommentsection ref, + string subjectname : string ref +) + +#keyset[id, owner] +ktCommentOwners( + int id: @ktcomment ref, + int owner: @top ref +) + +ktExtensionFunctions( + unique int id: @method ref, + int typeid: @type ref, + int kttypeid: @kt_type ref +) + +ktProperties( + unique int id: @kt_property, + string nodeName: string ref +) + +ktPropertyGetters( + unique int id: @kt_property ref, + int getter: @method ref +) + +ktPropertySetters( + unique int id: @kt_property ref, + int setter: @method ref +) + +ktPropertyBackingFields( + unique int id: @kt_property ref, + int backingField: @field ref +) + +ktSyntheticBody( + unique int id: @callable ref, + int kind: int ref + // 1: ENUM_VALUES + // 2: ENUM_VALUEOF +) + +ktLocalFunction( + unique int id: @method ref +) + +ktInitializerAssignment( + unique int id: @assignexpr ref +) + +ktPropertyDelegates( + unique int id: @kt_property ref, + unique int variableId: @variable ref +) + +/** + * If `id` is a compiler generated element, then the kind indicates the + * reason that the compiler generated it. + * See `Element.compilerGeneratedReason()` for an explanation of what + * each `kind` means. + */ +compiler_generated( + unique int id: @element ref, + int kind: int ref +) + +ktFunctionOriginalNames( + unique int id: @method ref, + string name: string ref +) + +ktDataClasses( + unique int id: @classorinterface ref +) diff --git a/java/downgrades/ecfcf050952e54b1155fc89525db84af6ad34aaf/upgrade.properties b/java/downgrades/ecfcf050952e54b1155fc89525db84af6ad34aaf/upgrade.properties new file mode 100644 index 00000000000..5ba64f71d70 --- /dev/null +++ b/java/downgrades/ecfcf050952e54b1155fc89525db84af6ad34aaf/upgrade.properties @@ -0,0 +1,2 @@ +description: Remove ENUM_ENTRIES +compatibility: full diff --git a/java/kotlin-explorer/.gitignore b/java/kotlin-explorer/.gitignore deleted file mode 100644 index 9c076360bbb..00000000000 --- a/java/kotlin-explorer/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -.classpath -.gradle -.idea -.project -.settings -bin/ -build/ -gradle/ -gradlew -gradlew.bat diff --git a/java/kotlin-explorer/README b/java/kotlin-explorer/README deleted file mode 100644 index 0f500d7c25b..00000000000 --- a/java/kotlin-explorer/README +++ /dev/null @@ -1,9 +0,0 @@ - -This shows what is encoded in the kotlin.Metadata section shown in the -output of `javap -v SomeKotlinClass`. - -It is not currently able to extract the information from .class files -itself; the values are hard coded in src/main/kotlin/Explorer.kt - -Run `gradle run` in this directory to run it. - diff --git a/java/kotlin-explorer/build.gradle b/java/kotlin-explorer/build.gradle deleted file mode 100644 index b122d811d4f..00000000000 --- a/java/kotlin-explorer/build.gradle +++ /dev/null @@ -1,28 +0,0 @@ -plugins { - id 'org.jetbrains.kotlin.jvm' version "${kotlinVersion}" - id 'org.jetbrains.dokka' version '1.4.32' - id "com.vanniktech.maven.publish" version '0.15.1' - id 'application' -} - -group 'com.github.codeql' -version '0.0.1' - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib" - implementation "org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.3.0" -} - -repositories { - mavenCentral() -} - -tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { - kotlinOptions { - jvmTarget = "1.8" - } -} - -application { - mainClass = 'com.github.codeql.ExplorerKt' -} diff --git a/java/kotlin-explorer/gradle.properties b/java/kotlin-explorer/gradle.properties deleted file mode 100644 index 0854241bcda..00000000000 --- a/java/kotlin-explorer/gradle.properties +++ /dev/null @@ -1,7 +0,0 @@ -kotlin.code.style=official -kotlinVersion=1.5.21 - -GROUP=com.github.codeql -VERSION_NAME=0.0.1 -POM_DESCRIPTION=CodeQL Kotlin explorer - diff --git a/java/kotlin-explorer/settings.gradle b/java/kotlin-explorer/settings.gradle deleted file mode 100644 index 18f679f7b75..00000000000 --- a/java/kotlin-explorer/settings.gradle +++ /dev/null @@ -1,8 +0,0 @@ -pluginManagement { - repositories { - mavenCentral() - gradlePluginPortal() - } -} - -rootProject.name = 'codeql-kotlin-explorer' diff --git a/java/kotlin-explorer/src/main/kotlin/Explorer.kt b/java/kotlin-explorer/src/main/kotlin/Explorer.kt deleted file mode 100644 index 31c3eb18dcb..00000000000 --- a/java/kotlin-explorer/src/main/kotlin/Explorer.kt +++ /dev/null @@ -1,217 +0,0 @@ -package com.github.codeql -import kotlinx.metadata.internal.metadata.jvm.deserialization.JvmMetadataVersion -import kotlinx.metadata.jvm.* -import kotlinx.metadata.* - -fun main(args : Array) { - /* - Values from `javap -v` on TestKt.class from: - - class MyClass {} - - class MyParamClass {} - - fun f(x: MyClass, y: MyClass?, - l1: MyParamClass, - l2: MyParamClass, - l3: MyParamClass?, - l4: MyParamClass?) { - } - */ - val kind = 2 - val metadataVersion = intArrayOf(1, 5, 1) - val data1 = arrayOf("\u0000\u0018\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0003\u001aX\u0010\u0000\u001a\u00020\u00012\u0006\u0010\u0002\u001a\u00020\u00032\b\u0010\u0004\u001a\u0004\u0018\u00010\u00032\u000c\u0010\u0005\u001a\b\u0012\u0004\u0012\u00020\u00030\u00062\u000e\u0010\u0007\u001a\n\u0012\u0006\u0012\u0004\u0018\u00010\u00030\u00062\u000e\u0010\b\u001a\n\u0012\u0004\u0012\u00020\u0003\u0018\u00010\u00062\u0010\u0010\t\u001a\u000c\u0012\u0006\u0012\u0004\u0018\u00010\u0003\u0018\u00010\u0006") - val data2 = arrayOf("f","","x","LMyClass;","y","l1","LMyParamClass;","l2","l3","l4") - val extraString = null - val packageName = null - val extraInt = 48 - val kch = KotlinClassHeader(kind, metadataVersion, data1, data2, extraString, packageName, extraInt) - - val md = KotlinClassMetadata.read(kch) - when (md) { - is KotlinClassMetadata.Class -> println("Metadata for Class not yet supported") - is KotlinClassMetadata.FileFacade -> { - println("Metadata for FileFacade:") - val kmp = md.toKmPackage() - kmp.accept(MyPackageVisitor(0)) - } - is KotlinClassMetadata.SyntheticClass -> println("Metadata for SyntheticClass not yet supported") - is KotlinClassMetadata.MultiFileClassFacade -> println("Metadata for MultiFileClassFacade not yet supported") - is KotlinClassMetadata.MultiFileClassPart -> println("Metadata for MultiFileClassPart not yet supported") - is KotlinClassMetadata.Unknown -> println("Unknown kind") - else -> println("Unexpected kind") - } -} - -fun pr(indent: Int, s: String) { - println(" ".repeat(indent) + s) -} - -class MyPackageVisitor(val indent: Int): KmPackageVisitor() { - override fun visitFunction(flags: Flags, name: String): KmFunctionVisitor? { - pr(indent, "=> Function; flags:$flags, name:$name") - return MyFunctionVisitor(indent + 1) - } - - override fun visitProperty(flags: Flags, name: String, getterFlags: Flags, setterFlags: Flags): KmPropertyVisitor? { - pr(indent, "=> Properties not yet handled") - return null - } - - override fun visitTypeAlias(flags: Flags, name: String): KmTypeAliasVisitor? { - pr(indent, "=> Type aliases not yet handled") - return null - } - - override fun visitExtensions(type: KmExtensionType): KmPackageExtensionVisitor? { - pr(indent, "=> Package extensions; type:$type") - when (type) { - JvmPackageExtensionVisitor.TYPE -> return MyJvmPackageExtensionVisitor(indent + 1) - else -> { - pr(indent, "- Not yet handled") - return null - } - } - } -} - -class MyFunctionVisitor(val indent: Int): KmFunctionVisitor() { - override fun visitTypeParameter(flags: Flags, name: String, id: Int, variance: KmVariance): KmTypeParameterVisitor? { - pr(indent, "=> Type parameter; flags:$flags, name:$name, id:$id, variance:$variance") - pr(indent, " -> Not yet handled") - return null - } - override fun visitReceiverParameterType(flags: Flags): KmTypeVisitor? { - pr(indent, "=> Receiver parameter type; flags:$flags") - pr(indent, " -> Not yet handled") - return null - } - - override fun visitValueParameter(flags: Flags, name: String): KmValueParameterVisitor? { - pr(indent, "=> Value parameter; flags:$flags, name:$name") - return MyValueParameterVisitor(indent + 1) - } - - override fun visitReturnType(flags: Flags): KmTypeVisitor? { - pr(indent, "=> Return type; flags:$flags") - return MyTypeVisitor(indent + 1) - } - - override fun visitVersionRequirement(): KmVersionRequirementVisitor? { - pr(indent, "=> VersionRequirement not yet handled") - return null - } - - override fun visitContract(): KmContractVisitor? { - pr(indent, "=> Contract not yet handled") - return null - } - - override fun visitExtensions(type: KmExtensionType): KmFunctionExtensionVisitor? { - pr(indent, "=> Function extensions; type:$type") - when (type) { - JvmFunctionExtensionVisitor.TYPE -> return MyJvmFunctionExtensionVisitor(indent + 1) - else -> { - pr(indent, "- Not yet handled") - return null - } - } - } -} - -class MyValueParameterVisitor(val indent: Int): KmValueParameterVisitor() { - override fun visitType(flags: Flags): KmTypeVisitor? { - pr(indent, "=> Type; flags:$flags") - return MyTypeVisitor(indent + 1) - } - - override fun visitVarargElementType(flags: Flags): KmTypeVisitor? { - pr(indent, "=> VarargElementType not yet handled") - return null - } - - override fun visitExtensions(type: KmExtensionType): KmValueParameterExtensionVisitor? { - pr(indent, "=> Value parameter extensions; type:$type; not yet handled") - return null - } -} - -class MyTypeVisitor(val indent: Int): KmTypeVisitor() { - override fun visitClass(name: ClassName) { - pr(indent, "=> Class; name:$name") - } - - override fun visitTypeAlias(name: ClassName) { - pr(indent, "=> Type alias; name:$name") - } - - override fun visitTypeParameter(id: Int) { - pr(indent, "=> Type parameter; id:$id") - } - - override fun visitArgument(flags: Flags, variance: KmVariance): KmTypeVisitor? { - pr(indent, "=> Argument; flags:$flags, variance:$variance") - return MyTypeVisitor(indent + 1) - } - - override fun visitStarProjection() { - pr(indent, "=> Star projection") - } - - override fun visitAbbreviatedType(flags: Flags): KmTypeVisitor? { - pr(indent, "=> AbbreviatedType not yet handled") - return null - } - - override fun visitOuterType(flags: Flags): KmTypeVisitor? { - pr(indent, "=> OuterType not yet handled") - return null - } - - override fun visitFlexibleTypeUpperBound(flags: Flags, typeFlexibilityId: String?): KmTypeVisitor? { - pr(indent, "=> FlexibleTypeUpperBound not yet handled") - return null - } - - override fun visitExtensions(type: KmExtensionType): KmTypeExtensionVisitor? { - pr(indent, "=> Type extensions; type:$type") - when (type) { - JvmTypeExtensionVisitor.TYPE -> return MyJvmTypeExtensionVisitor(indent + 1) - else -> { - pr(indent, "- Not yet handled") - return null - } - } - } -} - -class MyJvmTypeExtensionVisitor(val indent: Int): JvmTypeExtensionVisitor() { - override fun visit(isRaw: Boolean) { - pr(indent, "=> isRaw:$isRaw") - } - - override fun visitAnnotation(annotation: KmAnnotation) { - pr(indent, "=> Annotation; annotation:$annotation") - } -} - -class MyJvmPackageExtensionVisitor(val indent: Int): JvmPackageExtensionVisitor() { - override fun visitLocalDelegatedProperty(flags: Flags, name: String, getterFlags: Flags, setterFlags: Flags): KmPropertyVisitor? { - pr(indent, "=> Local delegate not yet handled") - return null - } - - override fun visitModuleName(name: String) { - pr(indent, "=> Module name; name:$name") - } -} - -class MyJvmFunctionExtensionVisitor(val indent: Int): JvmFunctionExtensionVisitor() { - override fun visit(signature: JvmMethodSignature?) { - pr(indent, "=> signature:$signature") - } - - override fun visitLambdaClassOriginName(internalName: String) { - pr(indent, "=> LambdaClassOriginName; internalName:$internalName") - } -} diff --git a/java/kotlin-extractor/build.py b/java/kotlin-extractor/build.py index b52ff05b00e..009017b0073 100755 --- a/java/kotlin-extractor/build.py +++ b/java/kotlin-extractor/build.py @@ -80,25 +80,37 @@ def run_process(cmd, capture_output=False): errors='replace'), file=sys.stderr) raise e +def write_arg_file(arg_file, args): + with open(arg_file, 'w') as f: + for arg in args: + if "'" in arg: + raise Exception('Single quote in argument: ' + arg) + f.write("'" + arg.replace('\\', '/') + "'\n") -def compile_to_dir(srcs, classpath, java_classpath, output): +def compile_to_dir(build_dir, srcs, classpath, java_classpath, output): # Use kotlinc to compile .kt files: + kotlin_arg_file = build_dir + '/kotlin.args' + kotlin_args = ['-Werror', + '-opt-in=kotlin.RequiresOptIn', + '-d', output, + '-module-name', 'codeql-kotlin-extractor', + '-no-reflect', '-no-stdlib', + '-jvm-target', '1.8', + '-classpath', classpath] + srcs + write_arg_file(kotlin_arg_file, kotlin_args) run_process([kotlinc, - # kotlinc can default to 256M, which isn't enough when we are extracting the build - '-J-Xmx2G', - '-Werror', - '-opt-in=kotlin.RequiresOptIn', - '-d', output, - '-module-name', 'codeql-kotlin-extractor', - '-no-reflect', '-no-stdlib', - '-jvm-target', '1.8', - '-classpath', classpath] + srcs) + # kotlinc can default to 256M, which isn't enough when we are extracting the build + '-J-Xmx2G', + '@' + kotlin_arg_file]) # Use javac to compile .java files, referencing the Kotlin class files: - run_process([javac, - '-d', output, + java_arg_file = build_dir + '/java.args' + java_args = ['-d', output, '-source', '8', '-target', '8', - '-classpath', os.path.pathsep.join([output, classpath, java_classpath])] + [s for s in srcs if s.endswith(".java")]) + '-classpath', os.path.pathsep.join([output, classpath, java_classpath])] \ + + [s for s in srcs if s.endswith(".java")] + write_arg_file(java_arg_file, java_args) + run_process([javac, '@' + java_arg_file]) def compile_to_jar(build_dir, tmp_src_dir, srcs, classpath, java_classpath, output): @@ -108,7 +120,7 @@ def compile_to_jar(build_dir, tmp_src_dir, srcs, classpath, java_classpath, outp shutil.rmtree(class_dir) os.makedirs(class_dir) - compile_to_dir(srcs, classpath, java_classpath, class_dir) + compile_to_dir(build_dir, srcs, classpath, java_classpath, class_dir) run_process(['jar', 'cf', output, '-C', class_dir, '.', @@ -121,30 +133,6 @@ def find_sources(path): return glob.glob(path + '/**/*.kt', recursive=True) + glob.glob(path + '/**/*.java', recursive=True) -def get_kotlin_lib_folder(): - x = run_process([kotlinc, '-version', '-verbose'], capture_output=True) - output = x.stderr.decode(encoding='UTF-8', errors='strict') - m = re.match( - r'.*\nlogging: using Kotlin home directory ([^\n]+)\n.*', output) - if m is None: - raise Exception('Cannot determine kotlinc home directory') - kotlin_home = m.group(1) - print("Kotlin home directory: " + kotlin_home) - return kotlin_home + '/lib' - - -def get_gradle_lib_folder(): - x = run_process(['gradle', 'getHomeDir'], capture_output=True) - output = x.stdout.decode(encoding='UTF-8', errors='strict') - m = re.search(r'(?m)^> Task :getHomeDir\n([^\n]+)$', output) - if m is None: - print("gradle getHomeDir output:\n" + output, file=sys.stderr) - raise Exception('Cannot determine gradle home directory') - gradle_home = m.group(1) - print("Gradle home directory: " + gradle_home) - return gradle_home + '/lib' - - def find_jar(path, base): fn = path + '/' + base + '.jar' if not os.path.isfile(fn): diff --git a/java/kotlin-extractor/kotlin_plugin_versions.py b/java/kotlin-extractor/kotlin_plugin_versions.py index 4583551e12d..bf1c211073a 100755 --- a/java/kotlin-extractor/kotlin_plugin_versions.py +++ b/java/kotlin-extractor/kotlin_plugin_versions.py @@ -24,8 +24,7 @@ def version_string_to_tuple(version): # Version number used by CI. ci_version = '1.8.10' -# Version numbers in the list need to be in semantically increasing order -many_versions = [ '1.4.32', '1.5.0', '1.5.10', '1.5.20', '1.5.30', '1.6.0', '1.6.20', '1.7.0', '1.7.20', '1.8.0' ] +many_versions = [ '1.4.32', '1.5.0', '1.5.10', '1.5.20', '1.5.30', '1.6.0', '1.6.20', '1.7.0', '1.7.20', '1.8.0', '1.9.0-Beta' ] many_versions_tuples = [version_string_to_tuple(v) for v in many_versions] @@ -42,18 +41,13 @@ def get_single_version(fakeVersionOutput = None): if m is None: raise Exception('Cannot detect version of kotlinc (got ' + str(versionOutput) + ')') current_version = version_string_to_tuple(m.group(1)) - matching_minor_versions = [ version for version in many_versions_tuples if version[0:2] == current_version[0:2] ] - if len(matching_minor_versions) == 0: - raise Exception(f'Cannot find a matching minor version for kotlinc version {current_version} (got {versionOutput}; know about {str(many_versions)})') - matching_minor_versions.sort(reverse = True) + many_versions_tuples.sort(reverse = True) - for version in matching_minor_versions: + for version in many_versions_tuples: if version[0:3] <= current_version[0:3]: return version_tuple_to_string(version) - return version_tuple_to_string(matching_minor_versions[-1]) - raise Exception(f'No suitable kotlinc version found for {current_version} (got {versionOutput}; know about {str(many_versions)})') def get_latest_url(): diff --git a/java/kotlin-extractor/src/main/java/com/semmle/util/files/FileUtil.java b/java/kotlin-extractor/src/main/java/com/semmle/util/files/FileUtil.java index 81a9f46a71f..79ce2d8d8d3 100644 --- a/java/kotlin-extractor/src/main/java/com/semmle/util/files/FileUtil.java +++ b/java/kotlin-extractor/src/main/java/com/semmle/util/files/FileUtil.java @@ -27,7 +27,6 @@ import java.nio.file.CopyOption; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.security.AccessControlException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; @@ -279,47 +278,6 @@ public class FileUtil || path.charAt(2) == '\\')); } - /** - * Copies a file - * - * @return false if failed to copy. - */ - public static boolean copy (File from, File to) - { - boolean targetFileExisted = to.exists(); - try { - copyFile(from, to, false); - return true; - } - catch (IOException e) { - // If the target did not exist before, make sure - // we delete it if there was any error - if (!targetFileExisted) - to.delete(); - - logger.error("Cannot copy " + from + " to " + to, e); - return false; - } - } - - /** - * Append all of sourceFile to the end of targetFile - like - * copy, but just adds to the end of the file. - * - * @return true iff the append succeeded - */ - public static boolean append (File sourceFile, File targetFile) - { - try { - copyFile(sourceFile, targetFile, true); - return true; - } - catch (IOException e) { - logger.error("Cannot append contents of " + sourceFile + " to " + targetFile, e); - return false; - } - } - /** * Write the contents of the given string to the file, creating it if it does not exist and overwriting it if it does. * @@ -443,82 +401,6 @@ public class FileUtil } } - /** - * Copies a folder recursively, by overwriting files if necessary. Copies all folders but filters - * files. - *

    - * IMPORTANT:The contents of from are copied to to, but a - * subdirectory is not created for them. This behaves like rsync -a from/ to. - *

    - * If {@code from} is a file rather than a directory, it is copied (assuming the filter matches - * it) to the file named by {@code to} -- this must not already exist as a directory. - * - * @deprecated Use FileUtil8.recursiveCopy instead. - * @param from Directory whose contents should be copied, or a file. - * @param to Directory to which files and subdirectories of from should be copied, or - * a file path (if {@code from} is a file). - * @param filter the filter to use for selecting which files to copy, or null - * @return false if failed to copy. - */ - @Deprecated - public static boolean recursiveCopy (File from, File to, final FileFilter filter) - { - // Make sure we include all subfolders - FileFilter realFilter = new FileFilter() { - @Override - public boolean accept (File pathname) - { - if (filter == null || pathname.isDirectory()) - return true; - else - return filter == null || filter.accept(pathname); - } - }; - return strictRecursiveCopy(from, to, realFilter); - } - - /** - * Copies a folder recursively, by overwriting files if necessary. Unlike - * {@link #recursiveCopy(File, File, FileFilter)}, this version applies the filter to directories - * as well, and only recurses into directories that are accepted by the filter. - *

    - * IMPORTANT:The contents of from are copied to to, but a - * subdirectory is not created for them. This behaves like rsync -a from/ to. - *

    - * If {@code from} is a file rather than a directory, it is copied (assuming the filter matches - * it) to the file named by {@code to} -- this must not already exist as a directory. - * - * @deprecated Use FileUtil8.recursiveCopy instead. - * @param from Directory whose contents should be copied, or a file. - * @param to Directory to which files and subdirectories of from should be copied, or - * a file path (if {@code from} is a file). - * @param filter the filter to use for selecting which files to copy, or null - * @return false if failed to copy. - */ - @Deprecated - public static boolean strictRecursiveCopy (File from, File to, FileFilter filter) - { - if (!from.exists()) { - return false; - } - if (from.isFile()) { - return copy(from, to); - } - else { - if (!to.exists()) { - if (!to.mkdir()) { - return false; - } - } - boolean success = true; - for (File childFrom : list(from, filter)) { - File childTo = new File(to, childFrom.getName()); - success &= strictRecursiveCopy(childFrom, childTo, filter); - } - return success; - } - } - /** * Writes the entire contents of a stream to a file. Closes input stream when writing is done * @@ -589,62 +471,6 @@ public class FileUtil } } - private static void copyFile (File from, File to, boolean append) throws IOException - { - // Try to exclude the case where the files are the same. If that happens, - // succeed except in 'append' mode since that is probably not the intention - // The logic below works if from and to both exist - and if one of them - // doesn't they can't be the same file! - from = tryMakeCanonical(from); - to = tryMakeCanonical(to); - if (from.equals(to)) { - if (append) - throw new IOException("Trying to append the contents of file " + from + " onto itself"); - else - return; // Nothing to do. - } - - try (FileInputStream fis = new FileInputStream(from); - InputStream in = new BufferedInputStream(fis)) - { - if (!to.exists()) - to.createNewFile(); - try (FileOutputStream fos = new FileOutputStream(to, append); - OutputStream out = new BufferedOutputStream(fos)) - { - byte[] buf = new byte[16 * 1024]; - int count; - while ((count = in.read(buf)) > 0) - out.write(buf, 0, count); - } - } - to.setExecutable(canExecute(from)); - } - - /** - * In the current Java security model, calling {@link File#canExecute()} requires the same - * permission as calling {@link Runtime#exec(String)}. This makes it impossible to run under a - * restrictive security manager if we blindly check for a file's execute bit. - *

    - * To work around, if an {@link AccessControlException} arises, and it seems to refer to a lack of - * {@link SecurityConstants#FILE_EXECUTE_ACTION} permission, we suppress the exception and return - * false. Other {@link AccessControlException}s are re-thrown, and otherwise the - * return value coincides with {@link File#canExecute()} on the argument. - */ - private static boolean canExecute (File file) - { - try { - return file.canExecute(); - } - catch (AccessControlException e) { - if (e.getPermission() instanceof FilePermission - && ((FilePermission) e.getPermission()).getActions().contains("execute")) - return false; // deliberately ignoring security failure - throw e; - } - } - - private static final BitSet allowedCharacters = new BitSet(256); static { for (int i = 'a'; i <= 'z'; i++) @@ -1633,22 +1459,6 @@ public class FileUtil } } - /** - * Copy the source properties file to the target, appending the given variable definitions as - * properties (with proper escaping). An optional marker string is printed as a comment before the - * extra variables, if any. - */ - public static void copyPropertiesFile ( - File source, - File target, - Set> extraVariables, - String extraComment) - { - if (source.isFile()) - copy(source, target); - appendProperties(target, extraVariables, extraComment); - } - /** * Append the given set of properties to a specified file, taking care of proper escaping of * special characters. @@ -1904,31 +1714,6 @@ public class FileUtil + "'."); } - /** - * Copy a file, creating any directories as needed. If the destination file (or directory) - * exists, it is overwritten. - * - * @param src The file to be renamed. Must be non-null and must exist. - * @param dest The path to copy the file to. Must be non-null. Will be overwritten if it already exists. - */ - public static void forceCopy(File src, File dest) - { - final String errorPrefix = "FileUtil.forceCopy: "; - if (src == null) - throw new CatastrophicError(errorPrefix + "source File is null."); - if (dest == null) - throw new CatastrophicError(errorPrefix + "destination File is null."); - if (!src.exists()) - throw new ResourceError(errorPrefix + "source File '" + src.toString() + "' does not exist.", new FileNotFoundException(src.toString())); - - mkdirs(dest.getAbsoluteFile().getParentFile()); - if (dest.exists() && !recursiveDelete(dest)) - throw new ResourceError(errorPrefix + "Couldn't overwrite destination file '" + dest.toString() + "'."); - if (!copy(src, dest)) - throw new ResourceError(errorPrefix + "Couldn't copy file '" + src.toString() + "' to '" + dest.toString() - + "'."); - } - /** * Query whether a {@link File} is non-null, and represents an existing file that can be * read. diff --git a/java/kotlin-extractor/src/main/kotlin/ExternalDeclExtractor.kt b/java/kotlin-extractor/src/main/kotlin/ExternalDeclExtractor.kt index c45e0a454b7..a426c7bd622 100644 --- a/java/kotlin-extractor/src/main/kotlin/ExternalDeclExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/ExternalDeclExtractor.kt @@ -14,7 +14,7 @@ import java.util.ArrayList import java.util.HashSet import java.util.zip.GZIPOutputStream -class ExternalDeclExtractor(val logger: FileLogger, val invocationTrapFile: String, val sourceFilePath: String, val primitiveTypeMapping: PrimitiveTypeMapping, val pluginContext: IrPluginContext, val globalExtensionState: KotlinExtractorGlobalState, val diagnosticTrapWriter: TrapWriter) { +class ExternalDeclExtractor(val logger: FileLogger, val invocationTrapFile: String, val sourceFilePath: String, val primitiveTypeMapping: PrimitiveTypeMapping, val pluginContext: IrPluginContext, val globalExtensionState: KotlinExtractorGlobalState, val diagnosticTrapWriter: DiagnosticTrapWriter) { val declBinaryNames = HashMap() val externalDeclsDone = HashSet>() @@ -95,8 +95,8 @@ class ExternalDeclExtractor(val logger: FileLogger, val invocationTrapFile: Stri val binaryPath = getIrClassBinaryPath(containingClass) // We want our comments to be the first thing in the file, - // so start off with a mere TrapWriter - val tw = TrapWriter(logger.loggerBase, TrapLabelManager(), trapFileBW, diagnosticTrapWriter) + // so start off with a PlainTrapWriter + val tw = PlainTrapWriter(logger.loggerBase, TrapLabelManager(), trapFileBW, diagnosticTrapWriter) tw.writeComment("Generated by the CodeQL Kotlin extractor for external dependencies") tw.writeComment("Part of invocation $invocationTrapFile") if (signature != possiblyLongSignature) { diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinExtractorExtension.kt b/java/kotlin-extractor/src/main/kotlin/KotlinExtractorExtension.kt index 9bfcabd20fb..c766d70df33 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinExtractorExtension.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinExtractorExtension.kt @@ -127,7 +127,7 @@ class KotlinExtractorExtension( val lm = TrapLabelManager() val logCounter = LogCounter() val loggerBase = LoggerBase(logCounter) - val tw = TrapWriter(loggerBase, lm, invocationTrapFileBW, null) + val tw = DiagnosticTrapWriter(loggerBase, lm, invocationTrapFileBW) // The interceptor has already defined #compilation = * val compilation: Label = StringLabel("compilation") tw.writeCompilation_started(compilation) @@ -324,13 +324,13 @@ private fun doFile( trapFileWriter.getTempWriter().use { trapFileBW -> // We want our comments to be the first thing in the file, // so start off with a mere TrapWriter - val tw = TrapWriter(loggerBase, TrapLabelManager(), trapFileBW, fileTrapWriter) + val tw = PlainTrapWriter(loggerBase, TrapLabelManager(), trapFileBW, fileTrapWriter.getDiagnosticTrapWriter()) tw.writeComment("Generated by the CodeQL Kotlin extractor for kotlin source code") tw.writeComment("Part of invocation $invocationTrapFile") // Now elevate to a SourceFileTrapWriter, and populate the // file information val sftw = tw.makeSourceFileTrapWriter(srcFile, true) - val externalDeclExtractor = ExternalDeclExtractor(logger, invocationTrapFile, srcFilePath, primitiveTypeMapping, pluginContext, globalExtensionState, fileTrapWriter) + val externalDeclExtractor = ExternalDeclExtractor(logger, invocationTrapFile, srcFilePath, primitiveTypeMapping, pluginContext, globalExtensionState, fileTrapWriter.getDiagnosticTrapWriter()) val linesOfCode = LinesOfCode(logger, sftw, srcFile) val fileExtractor = KotlinFileExtractor(logger, sftw, linesOfCode, srcFilePath, null, externalDeclExtractor, primitiveTypeMapping, pluginContext, KotlinFileExtractor.DeclarationStack(), globalExtensionState) diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt index b93bfa369f5..b37d46080a6 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt @@ -366,7 +366,10 @@ open class KotlinFileExtractor( val typeArgs = removeOuterClassTypeArgs(c, argsIncludingOuterClasses) if (typeArgs != null) { - for ((idx, arg) in typeArgs.withIndex()) { + // From 1.9, the list might change when we call erase, + // so we make a copy that it is safe to iterate over. + val typeArgsCopy = typeArgs.toList() + for ((idx, arg) in typeArgsCopy.withIndex()) { val argId = getTypeArgumentLabel(arg).id tw.writeTypeArgs(argId, idx, id) } @@ -1698,12 +1701,13 @@ open class KotlinFileExtractor( private fun extractSyntheticBody(b: IrSyntheticBody, callable: Label) { with("synthetic body", b) { - when (b.kind) { - IrSyntheticBodyKind.ENUM_VALUES -> tw.writeKtSyntheticBody(callable, 1) - IrSyntheticBodyKind.ENUM_VALUEOF -> tw.writeKtSyntheticBody(callable, 2) + val kind = b.kind + when { + kind == IrSyntheticBodyKind.ENUM_VALUES -> tw.writeKtSyntheticBody(callable, 1) + kind == IrSyntheticBodyKind.ENUM_VALUEOF -> tw.writeKtSyntheticBody(callable, 2) + kind == kind_ENUM_ENTRIES -> tw.writeKtSyntheticBody(callable, 3) else -> { - // TODO: Support IrSyntheticBodyKind.ENUM_ENTRIES - logger.errorElement("Unhandled synthetic body kind " + b.kind.javaClass, b) + logger.errorElement("Unhandled synthetic body kind " + kind, b) } } } @@ -2394,9 +2398,9 @@ open class KotlinFileExtractor( return result } - private fun findTopLevelFunctionOrWarn(functionFilter: String, type: String, parameterTypes: Array, warnAgainstElement: IrElement): IrFunction? { + private fun findTopLevelFunctionOrWarn(functionPkg: String, functionName: String, type: String, parameterTypes: Array, warnAgainstElement: IrElement): IrFunction? { - val fn = getFunctionsByFqName(pluginContext, functionFilter) + val fn = getFunctionsByFqName(pluginContext, functionPkg, functionName) .firstOrNull { fnSymbol -> fnSymbol.owner.parentClassOrNull?.fqNameWhenAvailable?.asString() == type && fnSymbol.owner.valueParameters.map { it.type.classFqName?.asString() }.toTypedArray() contentEquals parameterTypes @@ -2407,15 +2411,15 @@ open class KotlinFileExtractor( extractExternalClassLater(fn.parentAsClass) } } else { - logger.errorElement("Couldn't find JVM intrinsic function $functionFilter in $type", warnAgainstElement) + logger.errorElement("Couldn't find JVM intrinsic function $functionPkg $functionName in $type", warnAgainstElement) } return fn } - private fun findTopLevelPropertyOrWarn(propertyFilter: String, type: String, warnAgainstElement: IrElement): IrProperty? { + private fun findTopLevelPropertyOrWarn(propertyPkg: String, propertyName: String, type: String, warnAgainstElement: IrElement): IrProperty? { - val prop = getPropertiesByFqName(pluginContext, propertyFilter) + val prop = getPropertiesByFqName(pluginContext, propertyPkg, propertyName) .firstOrNull { it.owner.parentClassOrNull?.fqNameWhenAvailable?.asString() == type } ?.owner @@ -2424,7 +2428,7 @@ open class KotlinFileExtractor( extractExternalClassLater(prop.parentAsClass) } } else { - logger.errorElement("Couldn't find JVM intrinsic property $propertyFilter in $type", warnAgainstElement) + logger.errorElement("Couldn't find JVM intrinsic property $propertyPkg $propertyName in $type", warnAgainstElement) } return prop @@ -3016,7 +3020,7 @@ open class KotlinFileExtractor( } isBuiltinCall(c, "", "kotlin.jvm") -> { // Special case for KClass<*>.java, which is used in the Parcelize plugin. In normal cases, this is already rewritten to the property referenced below: - findTopLevelPropertyOrWarn("kotlin.jvm.java", "kotlin.jvm.JvmClassMappingKt", c)?.let { javaProp -> + findTopLevelPropertyOrWarn("kotlin.jvm", "java", "kotlin.jvm.JvmClassMappingKt", c)?.let { javaProp -> val getter = javaProp.getter if (getter == null) { logger.error("Couldn't find getter of `kotlin.jvm.JvmClassMappingKt::java`") @@ -3048,7 +3052,7 @@ open class KotlinFileExtractor( "kotlin.jvm.internal.ArrayIteratorsKt" } - findTopLevelFunctionOrWarn("kotlin.jvm.internal.iterator", typeFilter, arrayOf(parentClass.kotlinFqName.asString()), c)?.let { iteratorFn -> + findTopLevelFunctionOrWarn("kotlin.jvm.internal", "iterator", typeFilter, arrayOf(parentClass.kotlinFqName.asString()), c)?.let { iteratorFn -> val dispatchReceiver = c.dispatchReceiver if (dispatchReceiver == null) { logger.errorElement("No dispatch receiver found for array iterator call", c) @@ -5313,7 +5317,10 @@ open class KotlinFileExtractor( private fun extractTypeAccessRecursive(t: IrType, location: Label, parent: Label, idx: Int, typeContext: TypeContext = TypeContext.OTHER): Label { val typeAccessId = extractTypeAccess(useType(t, typeContext), location, parent, idx) if (t is IrSimpleType) { - t.arguments.forEachIndexed { argIdx, arg -> + // From 1.9, the list might change when we call erase, + // so we make a copy that it is safe to iterate over. + val argumentsCopy = t.arguments.toList() + argumentsCopy.forEachIndexed { argIdx, arg -> extractWildcardTypeAccessRecursive(arg, location, typeAccessId, argIdx) } } @@ -5531,7 +5538,7 @@ open class KotlinFileExtractor( return } - val typeOwner = e.typeOperandClassifier.owner + val typeOwner = e.typeOperand.classifierOrFail.owner if (typeOwner !is IrClass) { logger.errorElement("Expected to find SAM conversion to IrClass. Found '${typeOwner.javaClass}' instead. Can't implement SAM interface.", e) return diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt index 9c552233158..fdaebe5f1c8 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt @@ -139,13 +139,13 @@ open class KotlinUsesExtractor( if (clsFile == null || isExternalDeclaration(cls)) { val filePath = getIrClassBinaryPath(cls) val newTrapWriter = tw.makeFileTrapWriter(filePath, true) - val newLoggerTrapWriter = logger.tw.makeFileTrapWriter(filePath, false) + val newLoggerTrapWriter = logger.dtw.makeFileTrapWriter(filePath, false) val newLogger = FileLogger(logger.loggerBase, newLoggerTrapWriter) return KotlinFileExtractor(newLogger, newTrapWriter, null, filePath, dependencyCollector, externalClassExtractor, primitiveTypeMapping, pluginContext, newDeclarationStack, globalExtensionState) } val newTrapWriter = tw.makeSourceFileTrapWriter(clsFile, true) - val newLoggerTrapWriter = logger.tw.makeSourceFileTrapWriter(clsFile, false) + val newLoggerTrapWriter = logger.dtw.makeSourceFileTrapWriter(clsFile, false) val newLogger = FileLogger(logger.loggerBase, newLoggerTrapWriter) return KotlinFileExtractor(newLogger, newTrapWriter, null, clsFile.path, dependencyCollector, externalClassExtractor, primitiveTypeMapping, pluginContext, newDeclarationStack, globalExtensionState) } diff --git a/java/kotlin-extractor/src/main/kotlin/TrapWriter.kt b/java/kotlin-extractor/src/main/kotlin/TrapWriter.kt index eb9feeb4559..b27aec9cc52 100644 --- a/java/kotlin-extractor/src/main/kotlin/TrapWriter.kt +++ b/java/kotlin-extractor/src/main/kotlin/TrapWriter.kt @@ -57,7 +57,9 @@ class TrapLabelManager { * share the same `TrapLabelManager` and `BufferedWriter`. */ // TODO lm was `protected` before anonymousTypeMapping and locallyVisibleFunctionLabelMapping moved into it. Should we re-protect it and provide accessors? -open class TrapWriter (protected val loggerBase: LoggerBase, val lm: TrapLabelManager, private val bw: BufferedWriter, val diagnosticTrapWriter: TrapWriter?) { +abstract class TrapWriter (protected val loggerBase: LoggerBase, val lm: TrapLabelManager, private val bw: BufferedWriter) { + abstract fun getDiagnosticTrapWriter(): DiagnosticTrapWriter + /** * Returns the label that is defined to be the given key, if such * a label exists, and `null` otherwise. Most users will want to use @@ -223,7 +225,7 @@ open class TrapWriter (protected val loggerBase: LoggerBase, val lm: TrapLabelMa val len = str.length val newLen = UTF8Util.encodablePrefixLength(str, MAX_STRLEN) if (newLen < len) { - loggerBase.warn(diagnosticTrapWriter ?: this, + loggerBase.warn(this.getDiagnosticTrapWriter(), "Truncated string of length $len", "Truncated string of length $len, starting '${str.take(100)}', ending '${str.takeLast(100)}'") return str.take(newLen) @@ -237,14 +239,43 @@ open class TrapWriter (protected val loggerBase: LoggerBase, val lm: TrapLabelMa * writer etc), but using the given `filePath` for locations. */ fun makeFileTrapWriter(filePath: String, populateFileTables: Boolean) = - FileTrapWriter(loggerBase, lm, bw, diagnosticTrapWriter, filePath, populateFileTables) + FileTrapWriter(loggerBase, lm, bw, this.getDiagnosticTrapWriter(), filePath, populateFileTables) /** * Gets a FileTrapWriter like this one (using the same label manager, * writer etc), but using the given `IrFile` for locations. */ fun makeSourceFileTrapWriter(file: IrFile, populateFileTables: Boolean) = - SourceFileTrapWriter(loggerBase, lm, bw, diagnosticTrapWriter, file, populateFileTables) + SourceFileTrapWriter(loggerBase, lm, bw, this.getDiagnosticTrapWriter(), file, populateFileTables) +} + +/** + * A `PlainTrapWriter` has no additional context of its own. + */ +class PlainTrapWriter ( + loggerBase: LoggerBase, + lm: TrapLabelManager, + bw: BufferedWriter, + val dtw: DiagnosticTrapWriter +): TrapWriter (loggerBase, lm, bw) { + override fun getDiagnosticTrapWriter(): DiagnosticTrapWriter { + return dtw + } +} + +/** + * A `DiagnosticTrapWriter` is a TrapWriter that diagnostics can be + * written to; i.e. it has the #compilation label defined. In practice, + * this means that it is a TrapWriter for the invocation TRAP file. + */ +class DiagnosticTrapWriter ( + loggerBase: LoggerBase, + lm: TrapLabelManager, + bw: BufferedWriter +): TrapWriter (loggerBase, lm, bw) { + override fun getDiagnosticTrapWriter(): DiagnosticTrapWriter { + return this + } } /** @@ -259,16 +290,20 @@ open class FileTrapWriter ( loggerBase: LoggerBase, lm: TrapLabelManager, bw: BufferedWriter, - diagnosticTrapWriter: TrapWriter?, + val dtw: DiagnosticTrapWriter, val filePath: String, populateFileTables: Boolean -): TrapWriter (loggerBase, lm, bw, diagnosticTrapWriter) { +): TrapWriter (loggerBase, lm, bw) { /** * The ID for the file that we are extracting from. */ val fileId = mkFileId(filePath, populateFileTables) + override fun getDiagnosticTrapWriter(): DiagnosticTrapWriter { + return dtw + } + private fun offsetMinOf(default: Int, vararg options: Int?): Int { if (default == UNDEFINED_OFFSET || default == SYNTHETIC_OFFSET) { return default @@ -349,10 +384,10 @@ class SourceFileTrapWriter ( loggerBase: LoggerBase, lm: TrapLabelManager, bw: BufferedWriter, - diagnosticTrapWriter: TrapWriter?, + dtw: DiagnosticTrapWriter, val irFile: IrFile, populateFileTables: Boolean) : - FileTrapWriter(loggerBase, lm, bw, diagnosticTrapWriter, irFile.path, populateFileTables) { + FileTrapWriter(loggerBase, lm, bw, dtw, irFile.path, populateFileTables) { /** * The file entry for the file that we are extracting from. @@ -363,14 +398,14 @@ class SourceFileTrapWriter ( override fun getLocation(startOffset: Int, endOffset: Int): Label { if (startOffset == UNDEFINED_OFFSET || endOffset == UNDEFINED_OFFSET) { if (startOffset != endOffset) { - loggerBase.warn(this, "Location with inconsistent offsets (start $startOffset, end $endOffset)", null) + loggerBase.warn(dtw, "Location with inconsistent offsets (start $startOffset, end $endOffset)", null) } return getWholeFileLocation() } if (startOffset == SYNTHETIC_OFFSET || endOffset == SYNTHETIC_OFFSET) { if (startOffset != endOffset) { - loggerBase.warn(this, "Location with inconsistent offsets (start $startOffset, end $endOffset)", null) + loggerBase.warn(dtw, "Location with inconsistent offsets (start $startOffset, end $endOffset)", null) } return getWholeFileLocation() } @@ -390,14 +425,14 @@ class SourceFileTrapWriter ( override fun getLocationString(e: IrElement): String { if (e.startOffset == UNDEFINED_OFFSET || e.endOffset == UNDEFINED_OFFSET) { if (e.startOffset != e.endOffset) { - loggerBase.warn(this, "Location with inconsistent offsets (start ${e.startOffset}, end ${e.endOffset})", null) + loggerBase.warn(dtw, "Location with inconsistent offsets (start ${e.startOffset}, end ${e.endOffset})", null) } return "" } if (e.startOffset == SYNTHETIC_OFFSET || e.endOffset == SYNTHETIC_OFFSET) { if (e.startOffset != e.endOffset) { - loggerBase.warn(this, "Location with inconsistent offsets (start ${e.startOffset}, end ${e.endOffset})", null) + loggerBase.warn(dtw, "Location with inconsistent offsets (start ${e.startOffset}, end ${e.endOffset})", null) } return "" } diff --git a/java/kotlin-extractor/src/main/kotlin/utils/GetByFqName.kt b/java/kotlin-extractor/src/main/kotlin/utils/GetByFqName.kt index 57815fc4409..b429224bc71 100644 --- a/java/kotlin-extractor/src/main/kotlin/utils/GetByFqName.kt +++ b/java/kotlin-extractor/src/main/kotlin/utils/GetByFqName.kt @@ -1,33 +1,18 @@ package com.github.codeql.utils -import org.jetbrains.kotlin.backend.common.extensions.FirIncompatiblePluginAPI import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext import org.jetbrains.kotlin.ir.symbols.* import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.Name fun getClassByFqName(pluginContext: IrPluginContext, fqName: String): IrClassSymbol? { return getClassByFqName(pluginContext, FqName(fqName)) } -fun getClassByFqName(pluginContext: IrPluginContext, fqName: FqName): IrClassSymbol? { - @OptIn(FirIncompatiblePluginAPI::class) - return pluginContext.referenceClass(fqName) +fun getFunctionsByFqName(pluginContext: IrPluginContext, pkgName: String, name: String): Collection { + return getFunctionsByFqName(pluginContext, FqName(pkgName), Name.identifier(name)) } -fun getFunctionsByFqName(pluginContext: IrPluginContext, fqName: String): Collection { - return getFunctionsByFqName(pluginContext, FqName(fqName)) -} - -private fun getFunctionsByFqName(pluginContext: IrPluginContext, fqName: FqName): Collection { - @OptIn(FirIncompatiblePluginAPI::class) - return pluginContext.referenceFunctions(fqName) -} - -fun getPropertiesByFqName(pluginContext: IrPluginContext, fqName: String): Collection { - return getPropertiesByFqName(pluginContext, FqName(fqName)) -} - -private fun getPropertiesByFqName(pluginContext: IrPluginContext, fqName: FqName): Collection { - @OptIn(FirIncompatiblePluginAPI::class) - return pluginContext.referenceProperties(fqName) +fun getPropertiesByFqName(pluginContext: IrPluginContext, pkgName: String, name: String): Collection { + return getPropertiesByFqName(pluginContext, FqName(pkgName), Name.identifier(name)) } diff --git a/java/kotlin-extractor/src/main/kotlin/utils/Logger.kt b/java/kotlin-extractor/src/main/kotlin/utils/Logger.kt index 3b66e527429..6c9e6f5d64d 100644 --- a/java/kotlin-extractor/src/main/kotlin/utils/Logger.kt +++ b/java/kotlin-extractor/src/main/kotlin/utils/Logger.kt @@ -107,7 +107,7 @@ open class LoggerBase(val logCounter: LogCounter) { file_number_diagnostic_number = 0 } - fun diagnostic(tw: TrapWriter, severity: Severity, msg: String, extraInfo: String?, locationString: String? = null, mkLocationId: () -> Label = { tw.unknownLocation }) { + fun diagnostic(dtw: DiagnosticTrapWriter, severity: Severity, msg: String, extraInfo: String?, locationString: String? = null, mkLocationId: () -> Label = { dtw.unknownLocation }) { val diagnosticLoc = getDiagnosticLocation() val diagnosticLocStr = if(diagnosticLoc == null) "" else diagnosticLoc val suffix = @@ -121,7 +121,7 @@ open class LoggerBase(val logCounter: LogCounter) { // counting machinery if (verbosity >= 1) { val message = "Severity mismatch ($severity vs ${oldInfo.first}) at $diagnosticLoc" - emitDiagnostic(tw, Severity.Error, "Inconsistency", message, message) + emitDiagnostic(dtw, Severity.Error, "Inconsistency", message, message) } } val newCount = oldInfo.second + 1 @@ -149,18 +149,18 @@ open class LoggerBase(val logCounter: LogCounter) { fullMsgBuilder.append(suffix) val fullMsg = fullMsgBuilder.toString() - emitDiagnostic(tw, severity, diagnosticLocStr, msg, fullMsg, locationString, mkLocationId) + emitDiagnostic(dtw, severity, diagnosticLocStr, msg, fullMsg, locationString, mkLocationId) } - private fun emitDiagnostic(tw: TrapWriter, severity: Severity, diagnosticLocStr: String, msg: String, fullMsg: String, locationString: String? = null, mkLocationId: () -> Label = { tw.unknownLocation }) { + private fun emitDiagnostic(dtw: DiagnosticTrapWriter, severity: Severity, diagnosticLocStr: String, msg: String, fullMsg: String, locationString: String? = null, mkLocationId: () -> Label = { dtw.unknownLocation }) { val locStr = if (locationString == null) "" else "At " + locationString + ": " val kind = if (severity <= Severity.WarnHigh) "WARN" else "ERROR" val logMessage = LogMessage(kind, "Diagnostic($diagnosticLocStr): $locStr$fullMsg") // We don't actually make the location until after the `return` above val locationId = mkLocationId() - val diagLabel = tw.getFreshIdLabel() - tw.writeDiagnostics(diagLabel, "CodeQL Kotlin extractor", severity.sev, "", msg, "${logMessage.timestamp} $fullMsg", locationId) - tw.writeDiagnostic_for(diagLabel, StringLabel("compilation"), file_number, file_number_diagnostic_number++) + val diagLabel = dtw.getFreshIdLabel() + dtw.writeDiagnostics(diagLabel, "CodeQL Kotlin extractor", severity.sev, "", msg, "${logMessage.timestamp} $fullMsg", locationId) + dtw.writeDiagnostic_for(diagLabel, StringLabel("compilation"), file_number, file_number_diagnostic_number++) logStream.write(logMessage.toJsonLine()) } @@ -188,18 +188,18 @@ open class LoggerBase(val logCounter: LogCounter) { } } - fun warn(tw: TrapWriter, msg: String, extraInfo: String?) { + fun warn(dtw: DiagnosticTrapWriter, msg: String, extraInfo: String?) { if (verbosity >= 2) { - diagnostic(tw, Severity.Warn, msg, extraInfo) + diagnostic(dtw, Severity.Warn, msg, extraInfo) } } - fun error(tw: TrapWriter, msg: String, extraInfo: String?) { + fun error(dtw: DiagnosticTrapWriter, msg: String, extraInfo: String?) { if (verbosity >= 1) { - diagnostic(tw, Severity.Error, msg, extraInfo) + diagnostic(dtw, Severity.Error, msg, extraInfo) } } - fun printLimitedDiagnosticCounts(tw: TrapWriter) { + fun printLimitedDiagnosticCounts(dtw: DiagnosticTrapWriter) { for((caller, info) in logCounter.diagnosticInfo) { val severity = info.first val count = info.second @@ -209,7 +209,7 @@ open class LoggerBase(val logCounter: LogCounter) { // to be an error regardless. val message = "Total of $count diagnostics (reached limit of ${logCounter.diagnosticLimit}) from $caller." if (verbosity >= 1) { - emitDiagnostic(tw, severity, "Limit", message, message) + emitDiagnostic(dtw, severity, "Limit", message, message) } } } @@ -224,28 +224,28 @@ open class LoggerBase(val logCounter: LogCounter) { } } -open class Logger(val loggerBase: LoggerBase, open val tw: TrapWriter) { +open class Logger(val loggerBase: LoggerBase, open val dtw: DiagnosticTrapWriter) { fun flush() { - tw.flush() + dtw.flush() loggerBase.flush() } fun trace(msg: String) { - loggerBase.trace(tw, msg) + loggerBase.trace(dtw, msg) } fun trace(msg: String, exn: Throwable) { trace(msg + "\n" + exn.stackTraceToString()) } fun debug(msg: String) { - loggerBase.debug(tw, msg) + loggerBase.debug(dtw, msg) } fun info(msg: String) { - loggerBase.info(tw, msg) + loggerBase.info(dtw, msg) } private fun warn(msg: String, extraInfo: String?) { - loggerBase.warn(tw, msg, extraInfo) + loggerBase.warn(dtw, msg, extraInfo) } fun warn(msg: String, exn: Throwable) { warn(msg, exn.stackTraceToString()) @@ -255,7 +255,7 @@ open class Logger(val loggerBase: LoggerBase, open val tw: TrapWriter) { } private fun error(msg: String, extraInfo: String?) { - loggerBase.error(tw, msg, extraInfo) + loggerBase.error(dtw, msg, extraInfo) } fun error(msg: String) { error(msg, null) @@ -265,16 +265,16 @@ open class Logger(val loggerBase: LoggerBase, open val tw: TrapWriter) { } } -class FileLogger(loggerBase: LoggerBase, override val tw: FileTrapWriter): Logger(loggerBase, tw) { +class FileLogger(loggerBase: LoggerBase, val ftw: FileTrapWriter): Logger(loggerBase, ftw.getDiagnosticTrapWriter()) { fun warnElement(msg: String, element: IrElement, exn: Throwable? = null) { - val locationString = tw.getLocationString(element) - val mkLocationId = { tw.getLocation(element) } - loggerBase.diagnostic(tw, Severity.Warn, msg, exn?.stackTraceToString(), locationString, mkLocationId) + val locationString = ftw.getLocationString(element) + val mkLocationId = { ftw.getLocation(element) } + loggerBase.diagnostic(ftw.getDiagnosticTrapWriter(), Severity.Warn, msg, exn?.stackTraceToString(), locationString, mkLocationId) } fun errorElement(msg: String, element: IrElement, exn: Throwable? = null) { - val locationString = tw.getLocationString(element) - val mkLocationId = { tw.getLocation(element) } - loggerBase.diagnostic(tw, Severity.Error, msg, exn?.stackTraceToString(), locationString, mkLocationId) + val locationString = ftw.getLocationString(element) + val mkLocationId = { ftw.getLocation(element) } + loggerBase.diagnostic(ftw.getDiagnosticTrapWriter(), Severity.Error, msg, exn?.stackTraceToString(), locationString, mkLocationId) } } diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/FirIncompatiblePluginAPI.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/FirIncompatiblePluginAPI.kt deleted file mode 100644 index 45d573da9c7..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/FirIncompatiblePluginAPI.kt +++ /dev/null @@ -1,5 +0,0 @@ -package org.jetbrains.kotlin.backend.common.extensions - -@RequiresOptIn("This API is not available after FIR") -annotation class FirIncompatiblePluginAPI - diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/ReferenceEntity.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/ReferenceEntity.kt new file mode 100644 index 00000000000..755772d90c6 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/ReferenceEntity.kt @@ -0,0 +1,20 @@ +package com.github.codeql.utils + +import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext +import org.jetbrains.kotlin.ir.symbols.* +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.Name + +fun getClassByFqName(pluginContext: IrPluginContext, fqName: FqName): IrClassSymbol? { + return pluginContext.referenceClass(fqName) +} + +fun getFunctionsByFqName(pluginContext: IrPluginContext, pkgName: FqName, name: Name): Collection { + val fqName = pkgName.child(name) + return pluginContext.referenceFunctions(fqName) +} + +fun getPropertiesByFqName(pluginContext: IrPluginContext, pkgName: FqName, name: Name): Collection { + val fqName = pkgName.child(name) + return pluginContext.referenceProperties(fqName) +} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/SyntheticBodyKind.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/SyntheticBodyKind.kt new file mode 100644 index 00000000000..fd3fc1f8e20 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/SyntheticBodyKind.kt @@ -0,0 +1,6 @@ +package com.github.codeql.utils.versions + +import org.jetbrains.kotlin.ir.expressions.IrSyntheticBodyKind + +val kind_ENUM_ENTRIES: IrSyntheticBodyKind? = null + diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/FirIncompatiblePluginAPI.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/FirIncompatiblePluginAPI.kt deleted file mode 100644 index 48829cc30c5..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/FirIncompatiblePluginAPI.kt +++ /dev/null @@ -1,4 +0,0 @@ -package com.github.codeql - -// The compiler provides the annotation class, so we don't need to do -// anything diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/ReferenceEntity.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/ReferenceEntity.kt new file mode 100644 index 00000000000..8d70b66cf27 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/ReferenceEntity.kt @@ -0,0 +1,24 @@ +package com.github.codeql.utils + +import org.jetbrains.kotlin.backend.common.extensions.FirIncompatiblePluginAPI +import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext +import org.jetbrains.kotlin.ir.symbols.* +import org.jetbrains.kotlin.name.ClassId +import org.jetbrains.kotlin.name.CallableId +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.Name + +fun getClassByFqName(pluginContext: IrPluginContext, fqName: FqName): IrClassSymbol? { + val id = ClassId.topLevel(fqName) + return pluginContext.referenceClass(id) +} + +fun getFunctionsByFqName(pluginContext: IrPluginContext, pkgName: FqName, name: Name): Collection { + val id = CallableId(pkgName, name) + return pluginContext.referenceFunctions(id) +} + +fun getPropertiesByFqName(pluginContext: IrPluginContext, pkgName: FqName, name: Name): Collection { + val id = CallableId(pkgName, name) + return pluginContext.referenceProperties(id) +} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/SyntheticBodyKind.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/SyntheticBodyKind.kt new file mode 100644 index 00000000000..d0dbb5b1247 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/SyntheticBodyKind.kt @@ -0,0 +1,6 @@ +package com.github.codeql.utils.versions + +import org.jetbrains.kotlin.ir.expressions.IrSyntheticBodyKind + +val kind_ENUM_ENTRIES: IrSyntheticBodyKind? = IrSyntheticBodyKind.ENUM_ENTRIES + diff --git a/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.expected b/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.expected +++ b/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.ql b/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.ql index 78afdd7bb66..65f44797116 100644 --- a/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.ql +++ b/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.ql @@ -19,12 +19,10 @@ module Config implements DataFlow::ConfigSig { module Flow = TaintTracking::Global; -class InlineFlowTest extends InlineExpectationsTest { - InlineFlowTest() { this = "HasFlowTest" } +module InlineFlowTest implements TestSig { + string getARelevantTag() { result = "flow" } - override string getARelevantTag() { result = "flow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "flow" and exists(DataFlow::Node sink | Flow::flowTo(sink) | sink.getLocation() = location and @@ -33,3 +31,5 @@ class InlineFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/diagnostics.expected b/java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/diagnostics.expected index 3397ea1bdef..36f7d9d0718 100644 --- a/java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/diagnostics.expected +++ b/java/ql/integration-tests/all-platforms/kotlin/diagnostics/kotlin-version-too-new/diagnostics.expected @@ -1,5 +1,5 @@ { - "markdownMessage": "The Kotlin version installed (`999.999.999`) is too recent for this version of CodeQL. Install a version lower than 1.8.30.", + "markdownMessage": "The Kotlin version installed (`999.999.999`) is too recent for this version of CodeQL. Install a version lower than 1.9.10.", "severity": "error", "source": { "extractorName": "java", diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 03907f74b89..1056cefb86a 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,102 @@ +## 0.6.3 + +### New Features + +* Kotlin versions up to 1.9.0 are now supported. + +### Minor Analysis Improvements + +* Added flow through the block arguments of `kotlin.io.use` and `kotlin.with`. +* Added models for the following packages: + + * com.alibaba.druid.sql + * com.fasterxml.jackson.databind + * com.jcraft.jsch + * io.netty.handler.ssl + * okhttp3 + * org.antlr.runtime + * org.fusesource.leveldbjni + * org.influxdb + * org.springframework.core.io + * org.yaml.snakeyaml +* Deleted the deprecated `getRHS` predicate from the `LValue` class, use `getRhs` instead. +* Deleted the deprecated `getCFGNode` predicate from the `SsaVariable` class, use `getCfgNode` instead. +* Deleted many deprecated predicates and classes with uppercase `XML`, `JSON`, `URL`, `API`, etc. in their names. Use the PascalCased versions instead. +* Added models for the following packages: + + * java.lang + * java.nio.file +* Added dataflow models for the Gson deserialization library. +* Added models for the following packages: + + * okhttp3 +* Added more dataflow models for the Play Framework. +* Modified the models related to `java.nio.file.Files.copy` so that generic `[Input|Output]Stream` arguments are not considered file-related sinks. +* Dataflow analysis has a new flow step through constructors of transitive subtypes of `java.io.InputStream` that wrap an underlying data source. Previously, the step only existed for direct subtypes of `java.io.InputStream`. +* Path creation sinks modeled in `PathCreation.qll` have been added to the models-as-data sink kind `path-injection`. +* Updated the regular expression in the `HostnameSanitizer` sanitizer in the `semmle.code.java.security.RequestForgery` library to better detect strings prefixed with a hostname. +* Changed the `android-widget` Java source kind to `remote`. Any custom data extensions that use the `android-widget` source kind will need to be updated accordingly in order to continue working. +* Updated the following Java sink kind names. Any custom data extensions will need to be updated accordingly in order to continue working. + * `sql` to `sql-injection` + * `url-redirect` to `url-redirection` + * `xpath` to `xpath-injection` + * `ssti` to `template-injection` + * `logging` to `log-injection` + * `groovy` to `groovy-injection` + * `jexl` to `jexl-injection` + * `mvel` to `mvel-injection` + * `xslt` to `xslt-injection` + * `ldap` to `ldap-injection` + * `pending-intent-sent` to `pending-intents` + * `intent-start` to `intent-redirection` + * `set-hostname-verifier` to `hostname-verification` + * `header-splitting` to `response-splitting` + * `xss` to `html-injection` and `js-injection` + * `write-file` to `file-system-store` + * `create-file` and `read-file` to `path-injection` + * `open-url` and `jdbc-url` to `request-forgery` + +## 0.6.2 + +### Minor Analysis Improvements + +* Added SQL injection sinks for Spring JDBC's `NamedParameterJdbcOperations`. +* Added models for the following packages: + + * org.apache.hadoop.fs +* Added the `ArithmeticCommon.qll` library to provide predicates for reasoning about arithmetic operations. +* Added the `ArithmeticTaintedLocalQuery.qll` library to provide the `ArithmeticTaintedLocalOverflowFlow` and `ArithmeticTaintedLocalUnderflowFlow` taint-tracking modules to reason about arithmetic with unvalidated user input. +* Added the `ArithmeticTaintedQuery.qll` library to provide the `RemoteUserInputOverflow` and `RemoteUserInputUnderflow` taint-tracking modules to reason about arithmetic with unvalidated user input. +* Added the `ArithmeticUncontrolledQuery.qll` library to provide the `ArithmeticUncontrolledOverflowFlow` and `ArithmeticUncontrolledUnderflowFlow` taint-tracking modules to reason about arithmetic with uncontrolled user input. +* Added the `ArithmeticWithExtremeValuesQuery.qll` library to provide the `MaxValueFlow` and `MinValueFlow` dataflow modules to reason about arithmetic with extreme values. +* Added the `BrokenCryptoAlgorithmQuery.qll` library to provide the `InsecureCryptoFlow` taint-tracking module to reason about broken cryptographic algorithm vulnerabilities. +* Added the `ExecTaintedLocalQuery.qll` library to provide the `LocalUserInputToArgumentToExecFlow` taint-tracking module to reason about command injection vulnerabilities caused by local data flow. +* Added the `ExternallyControlledFormatStringLocalQuery.qll` library to provide the `ExternallyControlledFormatStringLocalFlow` taint-tracking module to reason about format string vulnerabilities caused by local data flow. +* Added the `ImproperValidationOfArrayConstructionCodeSpecifiedQuery.qll` library to provide the `BoundedFlowSourceFlow` dataflow module to reason about improper validation of code-specified sizes used for array construction. +* Added the `ImproperValidationOfArrayConstructionLocalQuery.qll` library to provide the `ImproperValidationOfArrayConstructionLocalFlow` taint-tracking module to reason about improper validation of local user-provided sizes used for array construction caused by local data flow. +* Added the `ImproperValidationOfArrayConstructionQuery.qll` library to provide the `ImproperValidationOfArrayConstructionFlow` taint-tracking module to reason about improper validation of user-provided size used for array construction. +* Added the `ImproperValidationOfArrayIndexCodeSpecifiedQuery.qll` library to provide the `BoundedFlowSourceFlow` data flow module to reason about about improper validation of code-specified array index. +* Added the `ImproperValidationOfArrayIndexLocalQuery.qll` library to provide the `ImproperValidationOfArrayIndexLocalFlow` taint-tracking module to reason about improper validation of a local user-provided array index. +* Added the `ImproperValidationOfArrayIndexQuery.qll` library to provide the `ImproperValidationOfArrayIndexFlow` taint-tracking module to reason about improper validation of user-provided array index. +* Added the `InsecureCookieQuery.qll` library to provide the `SecureCookieFlow` taint-tracking module to reason about insecure cookie vulnerabilities. +* Added the `MaybeBrokenCryptoAlgorithmQuery.qll` library to provide the `InsecureCryptoFlow` taint-tracking module to reason about broken cryptographic algorithm vulnerabilities. +* Added the `NumericCastTaintedQuery.qll` library to provide the `NumericCastTaintedFlow` taint-tracking module to reason about numeric cast vulnerabilities. +* Added the `ResponseSplittingLocalQuery.qll` library to provide the `ResponseSplittingLocalFlow` taint-tracking module to reason about response splitting vulnerabilities caused by local data flow. +* Added the `SqlConcatenatedQuery.qll` library to provide the `UncontrolledStringBuilderSourceFlow` taint-tracking module to reason about SQL injection vulnerabilities caused by concatenating untrusted strings. +* Added the `SqlTaintedLocalQuery.qll` library to provide the `LocalUserInputToArgumentToSqlFlow` taint-tracking module to reason about SQL injection vulnerabilities caused by local data flow. +* Added the `StackTraceExposureQuery.qll` library to provide the `printsStackExternally`, `stringifiedStackFlowsExternally`, and `getMessageFlowsExternally` predicates to reason about stack trace exposure vulnerabilities. +* Added the `TaintedPermissionQuery.qll` library to provide the `TaintedPermissionFlow` taint-tracking module to reason about tainted permission vulnerabilities. +* Added the `TempDirLocalInformationDisclosureQuery.qll` library to provide the `TempDirSystemGetPropertyToCreate` taint-tracking module to reason about local information disclosure vulnerabilities caused by local data flow. +* Added the `UnsafeHostnameVerificationQuery.qll` library to provide the `TrustAllHostnameVerifierFlow` taint-tracking module to reason about insecure hostname verification vulnerabilities. +* Added the `UrlRedirectLocalQuery.qll` library to provide the `UrlRedirectLocalFlow` taint-tracking module to reason about URL redirection vulnerabilities caused by local data flow. +* Added the `UrlRedirectQuery.qll` library to provide the `UrlRedirectFlow` taint-tracking module to reason about URL redirection vulnerabilities. +* Added the `XPathInjectionQuery.qll` library to provide the `XPathInjectionFlow` taint-tracking module to reason about XPath injection vulnerabilities. +* Added the `XssLocalQuery.qll` library to provide the `XssLocalFlow` taint-tracking module to reason about XSS vulnerabilities caused by local data flow. +* Moved the `url-open-stream` sink models to experimental and removed `url-open-stream` as a sink option from the [Customizing Library Models for Java](https://github.com/github/codeql/blob/733a00039efdb39c3dd76ddffad5e6d6c85e6774/docs/codeql/codeql-language-guides/customizing-library-models-for-java.rst#customizing-library-models-for-java) documentation. +* Added models for the Apache Commons Net library. +* Updated the `neutralModel` extensible predicate to include a `kind` column. +* Added models for the `io.jsonwebtoken` library. + ## 0.6.1 ### Deprecated APIs diff --git a/java/ql/lib/change-notes/2023-04-20-create-model-for-io-jsonwebtoken.md b/java/ql/lib/change-notes/2023-04-20-create-model-for-io-jsonwebtoken.md deleted file mode 100644 index 3a037075967..00000000000 --- a/java/ql/lib/change-notes/2023-04-20-create-model-for-io-jsonwebtoken.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- -* Added models for the `io.jsonwebtoken` library. - diff --git a/java/ql/lib/change-notes/2023-04-26-neutral-model-kinds.md b/java/ql/lib/change-notes/2023-04-26-neutral-model-kinds.md deleted file mode 100644 index ab19597224b..00000000000 --- a/java/ql/lib/change-notes/2023-04-26-neutral-model-kinds.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Updated the `neutralModel` extensible predicate to include a `kind` column. \ No newline at end of file diff --git a/java/ql/lib/change-notes/2023-05-02-apache-commons-net-models.md b/java/ql/lib/change-notes/2023-05-02-apache-commons-net-models.md deleted file mode 100644 index a669c74d3e8..00000000000 --- a/java/ql/lib/change-notes/2023-05-02-apache-commons-net-models.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added models for the Apache Commons Net library. diff --git a/java/ql/lib/change-notes/2023-05-03-url-open-stream-as-experimental.md b/java/ql/lib/change-notes/2023-05-03-url-open-stream-as-experimental.md deleted file mode 100644 index 1d57d64973c..00000000000 --- a/java/ql/lib/change-notes/2023-05-03-url-open-stream-as-experimental.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Moved the `url-open-stream` sink models to experimental and removed `url-open-stream` as a sink option from the [Customizing Library Models for Java](https://github.com/github/codeql/blob/733a00039efdb39c3dd76ddffad5e6d6c85e6774/docs/codeql/codeql-language-guides/customizing-library-models-for-java.rst#customizing-library-models-for-java) documentation. diff --git a/java/ql/lib/change-notes/2023-05-11-new-models.md b/java/ql/lib/change-notes/2023-05-11-new-models.md deleted file mode 100644 index 067105b4aca..00000000000 --- a/java/ql/lib/change-notes/2023-05-11-new-models.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -category: minorAnalysis ---- -* Added models for the following packages: - - * org.apache.hadoop.fs diff --git a/java/ql/lib/change-notes/2023-05-12-spring-jdbc-sql-sinks.md b/java/ql/lib/change-notes/2023-05-12-spring-jdbc-sql-sinks.md deleted file mode 100644 index 68d6c2b45fe..00000000000 --- a/java/ql/lib/change-notes/2023-05-12-spring-jdbc-sql-sinks.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added SQL injection sinks for Spring JDBC's `NamedParameterJdbcOperations`. \ No newline at end of file diff --git a/java/ql/lib/change-notes/2023-05-17-change-hostnamesanitizingprefix-regex.md b/java/ql/lib/change-notes/2023-05-17-change-hostnamesanitizingprefix-regex.md deleted file mode 100644 index 8d81c97d9e3..00000000000 --- a/java/ql/lib/change-notes/2023-05-17-change-hostnamesanitizingprefix-regex.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- -* Updated the regular expression in the `HostnameSanitizer` sanitizer in the `semmle.code.java.security.RequestForgery` library to better detect strings prefixed with a hostname. - diff --git a/java/ql/lib/change-notes/2023-05-22-hudson-models.md b/java/ql/lib/change-notes/2023-05-22-hudson-models.md new file mode 100644 index 00000000000..55e2acae00e --- /dev/null +++ b/java/ql/lib/change-notes/2023-05-22-hudson-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added more models for the Hudson framework. \ No newline at end of file diff --git a/java/ql/lib/change-notes/2023-05-22-inputstreamwrapper-transitive.md b/java/ql/lib/change-notes/2023-05-22-inputstreamwrapper-transitive.md deleted file mode 100644 index bba77d98d89..00000000000 --- a/java/ql/lib/change-notes/2023-05-22-inputstreamwrapper-transitive.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Dataflow analysis has a new flow step through constructors of transitive subtypes of `java.io.InputStream` that wrap an underlying data source. Previously, the step only existed for direct subtypes of `java.io.InputStream`. diff --git a/java/ql/lib/change-notes/2023-05-22-stapler-models.md b/java/ql/lib/change-notes/2023-05-22-stapler-models.md new file mode 100644 index 00000000000..37c7250b953 --- /dev/null +++ b/java/ql/lib/change-notes/2023-05-22-stapler-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added more models for the Stapler framework. diff --git a/java/ql/lib/change-notes/2023-05-23-java-nio-file-files-copy-models-tweak.md b/java/ql/lib/change-notes/2023-05-23-java-nio-file-files-copy-models-tweak.md deleted file mode 100644 index 85fc9b89197..00000000000 --- a/java/ql/lib/change-notes/2023-05-23-java-nio-file-files-copy-models-tweak.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -Modified the models related to `java.nio.file.Files.copy` so that generic `[Input|Output]Stream` arguments are not considered file-related sinks. diff --git a/java/ql/lib/change-notes/2023-06-08-type-strengthening.md b/java/ql/lib/change-notes/2023-06-08-type-strengthening.md new file mode 100644 index 00000000000..60daaa53058 --- /dev/null +++ b/java/ql/lib/change-notes/2023-06-08-type-strengthening.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* The data flow library now performs type strengthening. This increases precision for all data flow queries by excluding paths that can be inferred to be impossible due to incompatible types. diff --git a/java/ql/lib/change-notes/2023-06-14-jenkins-autogenerated-models.md b/java/ql/lib/change-notes/2023-06-14-jenkins-autogenerated-models.md new file mode 100644 index 00000000000..da2f90c2326 --- /dev/null +++ b/java/ql/lib/change-notes/2023-06-14-jenkins-autogenerated-models.md @@ -0,0 +1,8 @@ +--- +category: minorAnalysis +--- +* Added automatically-generated dataflow models for the following frameworks and libraries: + * `hudson` + * `jenkins` + * `net.sf.json` + * `stapler` diff --git a/java/ql/lib/change-notes/2023-05-04-add-libraries-for-query-configurations.md b/java/ql/lib/change-notes/released/0.6.2.md similarity index 87% rename from java/ql/lib/change-notes/2023-05-04-add-libraries-for-query-configurations.md rename to java/ql/lib/change-notes/released/0.6.2.md index ead324ee5fb..f0bf9441a47 100644 --- a/java/ql/lib/change-notes/2023-05-04-add-libraries-for-query-configurations.md +++ b/java/ql/lib/change-notes/released/0.6.2.md @@ -1,6 +1,11 @@ ---- -category: minorAnalysis ---- +## 0.6.2 + +### Minor Analysis Improvements + +* Added SQL injection sinks for Spring JDBC's `NamedParameterJdbcOperations`. +* Added models for the following packages: + + * org.apache.hadoop.fs * Added the `ArithmeticCommon.qll` library to provide predicates for reasoning about arithmetic operations. * Added the `ArithmeticTaintedLocalQuery.qll` library to provide the `ArithmeticTaintedLocalOverflowFlow` and `ArithmeticTaintedLocalUnderflowFlow` taint-tracking modules to reason about arithmetic with unvalidated user input. * Added the `ArithmeticTaintedQuery.qll` library to provide the `RemoteUserInputOverflow` and `RemoteUserInputUnderflow` taint-tracking modules to reason about arithmetic with unvalidated user input. @@ -28,4 +33,8 @@ category: minorAnalysis * Added the `UrlRedirectLocalQuery.qll` library to provide the `UrlRedirectLocalFlow` taint-tracking module to reason about URL redirection vulnerabilities caused by local data flow. * Added the `UrlRedirectQuery.qll` library to provide the `UrlRedirectFlow` taint-tracking module to reason about URL redirection vulnerabilities. * Added the `XPathInjectionQuery.qll` library to provide the `XPathInjectionFlow` taint-tracking module to reason about XPath injection vulnerabilities. -* Added the `XssLocalQuery.qll` library to provide the `XssLocalFlow` taint-tracking module to reason about XSS vulnerabilities caused by local data flow. \ No newline at end of file +* Added the `XssLocalQuery.qll` library to provide the `XssLocalFlow` taint-tracking module to reason about XSS vulnerabilities caused by local data flow. +* Moved the `url-open-stream` sink models to experimental and removed `url-open-stream` as a sink option from the [Customizing Library Models for Java](https://github.com/github/codeql/blob/733a00039efdb39c3dd76ddffad5e6d6c85e6774/docs/codeql/codeql-language-guides/customizing-library-models-for-java.rst#customizing-library-models-for-java) documentation. +* Added models for the Apache Commons Net library. +* Updated the `neutralModel` extensible predicate to include a `kind` column. +* Added models for the `io.jsonwebtoken` library. diff --git a/java/ql/lib/change-notes/released/0.6.3.md b/java/ql/lib/change-notes/released/0.6.3.md new file mode 100644 index 00000000000..05c95272941 --- /dev/null +++ b/java/ql/lib/change-notes/released/0.6.3.md @@ -0,0 +1,57 @@ +## 0.6.3 + +### New Features + +* Kotlin versions up to 1.9.0 are now supported. + +### Minor Analysis Improvements + +* Added flow through the block arguments of `kotlin.io.use` and `kotlin.with`. +* Added models for the following packages: + + * com.alibaba.druid.sql + * com.fasterxml.jackson.databind + * com.jcraft.jsch + * io.netty.handler.ssl + * okhttp3 + * org.antlr.runtime + * org.fusesource.leveldbjni + * org.influxdb + * org.springframework.core.io + * org.yaml.snakeyaml +* Deleted the deprecated `getRHS` predicate from the `LValue` class, use `getRhs` instead. +* Deleted the deprecated `getCFGNode` predicate from the `SsaVariable` class, use `getCfgNode` instead. +* Deleted many deprecated predicates and classes with uppercase `XML`, `JSON`, `URL`, `API`, etc. in their names. Use the PascalCased versions instead. +* Added models for the following packages: + + * java.lang + * java.nio.file +* Added dataflow models for the Gson deserialization library. +* Added models for the following packages: + + * okhttp3 +* Added more dataflow models for the Play Framework. +* Modified the models related to `java.nio.file.Files.copy` so that generic `[Input|Output]Stream` arguments are not considered file-related sinks. +* Dataflow analysis has a new flow step through constructors of transitive subtypes of `java.io.InputStream` that wrap an underlying data source. Previously, the step only existed for direct subtypes of `java.io.InputStream`. +* Path creation sinks modeled in `PathCreation.qll` have been added to the models-as-data sink kind `path-injection`. +* Updated the regular expression in the `HostnameSanitizer` sanitizer in the `semmle.code.java.security.RequestForgery` library to better detect strings prefixed with a hostname. +* Changed the `android-widget` Java source kind to `remote`. Any custom data extensions that use the `android-widget` source kind will need to be updated accordingly in order to continue working. +* Updated the following Java sink kind names. Any custom data extensions will need to be updated accordingly in order to continue working. + * `sql` to `sql-injection` + * `url-redirect` to `url-redirection` + * `xpath` to `xpath-injection` + * `ssti` to `template-injection` + * `logging` to `log-injection` + * `groovy` to `groovy-injection` + * `jexl` to `jexl-injection` + * `mvel` to `mvel-injection` + * `xslt` to `xslt-injection` + * `ldap` to `ldap-injection` + * `pending-intent-sent` to `pending-intents` + * `intent-start` to `intent-redirection` + * `set-hostname-verifier` to `hostname-verification` + * `header-splitting` to `response-splitting` + * `xss` to `html-injection` and `js-injection` + * `write-file` to `file-system-store` + * `create-file` and `read-file` to `path-injection` + * `open-url` and `jdbc-url` to `request-forgery` diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 80fb0899f64..b7dafe32c5d 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.1 +lastReleaseVersion: 0.6.3 diff --git a/java/ql/lib/config/semmlecode.dbscheme b/java/ql/lib/config/semmlecode.dbscheme index 7cbc85b1f3e..ecfcf050952 100644 --- a/java/ql/lib/config/semmlecode.dbscheme +++ b/java/ql/lib/config/semmlecode.dbscheme @@ -1219,6 +1219,7 @@ ktSyntheticBody( int kind: int ref // 1: ENUM_VALUES // 2: ENUM_VALUEOF + // 3: ENUM_ENTRIES ) ktLocalFunction( diff --git a/java/ql/lib/ext/android.app.model.yml b/java/ql/lib/ext/android.app.model.yml index 861867d344c..72591773436 100644 --- a/java/ql/lib/ext/android.app.model.yml +++ b/java/ql/lib/ext/android.app.model.yml @@ -3,22 +3,22 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["android.app", "Activity", True, "bindService", "", "", "Argument[0]", "intent-start", "manual"] - - ["android.app", "Activity", True, "bindServiceAsUser", "", "", "Argument[0]", "intent-start", "manual"] - - ["android.app", "Activity", True, "setResult", "(int,Intent)", "", "Argument[1]", "pending-intent-sent", "manual"] - - ["android.app", "Activity", True, "startActivityAsCaller", "", "", "Argument[0]", "intent-start", "manual"] - - ["android.app", "Activity", True, "startActivityForResult", "(Intent,int)", "", "Argument[0]", "intent-start", "manual"] - - ["android.app", "Activity", True, "startActivityForResult", "(Intent,int,Bundle)", "", "Argument[0]", "intent-start", "manual"] - - ["android.app", "Activity", True, "startActivityForResult", "(String,Intent,int,Bundle)", "", "Argument[1]", "intent-start", "manual"] - - ["android.app", "Activity", True, "startActivityForResultAsUser", "", "", "Argument[0]", "intent-start", "manual"] - - ["android.app", "AlarmManager", True, "set", "(int,long,PendingIntent)", "", "Argument[2]", "pending-intent-sent", "manual"] - - ["android.app", "AlarmManager", True, "setAlarmClock", "", "", "Argument[1]", "pending-intent-sent", "manual"] - - ["android.app", "AlarmManager", True, "setAndAllowWhileIdle", "", "", "Argument[2]", "pending-intent-sent", "manual"] - - ["android.app", "AlarmManager", True, "setExact", "(int,long,PendingIntent)", "", "Argument[2]", "pending-intent-sent", "manual"] - - ["android.app", "AlarmManager", True, "setExactAndAllowWhileIdle", "", "", "Argument[2]", "pending-intent-sent", "manual"] - - ["android.app", "AlarmManager", True, "setInexactRepeating", "", "", "Argument[3]", "pending-intent-sent", "manual"] - - ["android.app", "AlarmManager", True, "setRepeating", "", "", "Argument[3]", "pending-intent-sent", "manual"] - - ["android.app", "AlarmManager", True, "setWindow", "(int,long,long,PendingIntent)", "", "Argument[3]", "pending-intent-sent", "manual"] + - ["android.app", "Activity", True, "bindService", "", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.app", "Activity", True, "bindServiceAsUser", "", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.app", "Activity", True, "setResult", "(int,Intent)", "", "Argument[1]", "pending-intents", "manual"] + - ["android.app", "Activity", True, "startActivityAsCaller", "", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.app", "Activity", True, "startActivityForResult", "(Intent,int)", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.app", "Activity", True, "startActivityForResult", "(Intent,int,Bundle)", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.app", "Activity", True, "startActivityForResult", "(String,Intent,int,Bundle)", "", "Argument[1]", "intent-redirection", "manual"] + - ["android.app", "Activity", True, "startActivityForResultAsUser", "", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.app", "AlarmManager", True, "set", "(int,long,PendingIntent)", "", "Argument[2]", "pending-intents", "manual"] + - ["android.app", "AlarmManager", True, "setAlarmClock", "", "", "Argument[1]", "pending-intents", "manual"] + - ["android.app", "AlarmManager", True, "setAndAllowWhileIdle", "", "", "Argument[2]", "pending-intents", "manual"] + - ["android.app", "AlarmManager", True, "setExact", "(int,long,PendingIntent)", "", "Argument[2]", "pending-intents", "manual"] + - ["android.app", "AlarmManager", True, "setExactAndAllowWhileIdle", "", "", "Argument[2]", "pending-intents", "manual"] + - ["android.app", "AlarmManager", True, "setInexactRepeating", "", "", "Argument[3]", "pending-intents", "manual"] + - ["android.app", "AlarmManager", True, "setRepeating", "", "", "Argument[3]", "pending-intents", "manual"] + - ["android.app", "AlarmManager", True, "setWindow", "(int,long,long,PendingIntent)", "", "Argument[3]", "pending-intents", "manual"] - ["android.app", "FragmentTransaction", True, "add", "(Class,Bundle,String)", "", "Argument[0]", "fragment-injection", "manual"] - ["android.app", "FragmentTransaction", True, "add", "(Fragment,String)", "", "Argument[0]", "fragment-injection", "manual"] - ["android.app", "FragmentTransaction", True, "add", "(int,Class,Bundle)", "", "Argument[1]", "fragment-injection", "manual"] @@ -30,14 +30,14 @@ extensions: - ["android.app", "FragmentTransaction", True, "replace", "(int,Class,Bundle,String)", "", "Argument[1]", "fragment-injection", "manual"] - ["android.app", "FragmentTransaction", True, "replace", "(int,Fragment)", "", "Argument[1]", "fragment-injection", "manual"] - ["android.app", "FragmentTransaction", True, "replace", "(int,Fragment,String)", "", "Argument[1]", "fragment-injection", "manual"] - - ["android.app", "NotificationManager", True, "notify", "(String,int,Notification)", "", "Argument[2]", "pending-intent-sent", "manual"] - - ["android.app", "NotificationManager", True, "notify", "(int,Notification)", "", "Argument[1]", "pending-intent-sent", "manual"] - - ["android.app", "NotificationManager", True, "notifyAsPackage", "(String,String,int,Notification)", "", "Argument[3]", "pending-intent-sent", "manual"] - - ["android.app", "NotificationManager", True, "notifyAsUser", "(String,int,Notification,UserHandle)", "", "Argument[2]", "pending-intent-sent", "manual"] - - ["android.app", "PendingIntent", False, "send", "(Context,int,Intent)", "", "Argument[2]", "pending-intent-sent", "manual"] - - ["android.app", "PendingIntent", False, "send", "(Context,int,Intent,OnFinished,Handler)", "", "Argument[2]", "pending-intent-sent", "manual"] - - ["android.app", "PendingIntent", False, "send", "(Context,int,Intent,OnFinished,Handler,String)", "", "Argument[2]", "pending-intent-sent", "manual"] - - ["android.app", "PendingIntent", False, "send", "(Context,int,Intent,OnFinished,Handler,String,Bundle)", "", "Argument[2]", "pending-intent-sent", "manual"] + - ["android.app", "NotificationManager", True, "notify", "(String,int,Notification)", "", "Argument[2]", "pending-intents", "manual"] + - ["android.app", "NotificationManager", True, "notify", "(int,Notification)", "", "Argument[1]", "pending-intents", "manual"] + - ["android.app", "NotificationManager", True, "notifyAsPackage", "(String,String,int,Notification)", "", "Argument[3]", "pending-intents", "manual"] + - ["android.app", "NotificationManager", True, "notifyAsUser", "(String,int,Notification,UserHandle)", "", "Argument[2]", "pending-intents", "manual"] + - ["android.app", "PendingIntent", False, "send", "(Context,int,Intent)", "", "Argument[2]", "pending-intents", "manual"] + - ["android.app", "PendingIntent", False, "send", "(Context,int,Intent,OnFinished,Handler)", "", "Argument[2]", "pending-intents", "manual"] + - ["android.app", "PendingIntent", False, "send", "(Context,int,Intent,OnFinished,Handler,String)", "", "Argument[2]", "pending-intents", "manual"] + - ["android.app", "PendingIntent", False, "send", "(Context,int,Intent,OnFinished,Handler,String,Bundle)", "", "Argument[2]", "pending-intents", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/android.content.model.yml b/java/ql/lib/ext/android.content.model.yml index 89368acc04e..c42578c08cd 100644 --- a/java/ql/lib/ext/android.content.model.yml +++ b/java/ql/lib/ext/android.content.model.yml @@ -39,30 +39,30 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["android.content", "ContentProvider", True, "delete", "(Uri,String,String[])", "", "Argument[1]", "sql", "manual"] - - ["android.content", "ContentProvider", True, "query", "(Uri,String[],String,String[],String)", "", "Argument[2]", "sql", "manual"] - - ["android.content", "ContentProvider", True, "query", "(Uri,String[],String,String[],String,CancellationSignal)", "", "Argument[2]", "sql", "manual"] - - ["android.content", "ContentProvider", True, "update", "(Uri,ContentValues,String,String[])", "", "Argument[2]", "sql", "manual"] - - ["android.content", "ContentResolver", True, "delete", "(Uri,String,String[])", "", "Argument[1]", "sql", "manual"] - - ["android.content", "ContentResolver", True, "query", "(Uri,String[],String,String[],String)", "", "Argument[2]", "sql", "manual"] - - ["android.content", "ContentResolver", True, "query", "(Uri,String[],String,String[],String,CancellationSignal)", "", "Argument[2]", "sql", "manual"] - - ["android.content", "ContentResolver", True, "update", "(Uri,ContentValues,String,String[])", "", "Argument[2]", "sql", "manual"] - - ["android.content", "Context", True, "sendBroadcast", "", "", "Argument[0]", "intent-start", "manual"] - - ["android.content", "Context", True, "sendBroadcastAsUser", "", "", "Argument[0]", "intent-start", "manual"] - - ["android.content", "Context", True, "sendBroadcastWithMultiplePermissions", "", "", "Argument[0]", "intent-start", "manual"] - - ["android.content", "Context", True, "sendStickyBroadcast", "", "", "Argument[0]", "intent-start", "manual"] - - ["android.content", "Context", True, "sendStickyBroadcastAsUser", "", "", "Argument[0]", "intent-start", "manual"] - - ["android.content", "Context", True, "sendStickyOrderedBroadcast", "", "", "Argument[0]", "intent-start", "manual"] - - ["android.content", "Context", True, "sendStickyOrderedBroadcastAsUser", "", "", "Argument[0]", "intent-start", "manual"] - - ["android.content", "Context", True, "startActivities", "", "", "Argument[0]", "intent-start", "manual"] - - ["android.content", "Context", True, "startActivity", "", "", "Argument[0]", "intent-start", "manual"] - - ["android.content", "Context", True, "startActivityAsUser", "", "", "Argument[0]", "intent-start", "manual"] - - ["android.content", "Context", True, "startActivityFromChild", "", "", "Argument[1]", "intent-start", "manual"] - - ["android.content", "Context", True, "startActivityFromFragment", "", "", "Argument[1]", "intent-start", "manual"] - - ["android.content", "Context", True, "startActivityIfNeeded", "", "", "Argument[0]", "intent-start", "manual"] - - ["android.content", "Context", True, "startForegroundService", "", "", "Argument[0]", "intent-start", "manual"] - - ["android.content", "Context", True, "startService", "", "", "Argument[0]", "intent-start", "manual"] - - ["android.content", "Context", True, "startServiceAsUser", "", "", "Argument[0]", "intent-start", "manual"] + - ["android.content", "ContentProvider", True, "delete", "(Uri,String,String[])", "", "Argument[1]", "sql-injection", "manual"] + - ["android.content", "ContentProvider", True, "query", "(Uri,String[],String,String[],String)", "", "Argument[2]", "sql-injection", "manual"] + - ["android.content", "ContentProvider", True, "query", "(Uri,String[],String,String[],String,CancellationSignal)", "", "Argument[2]", "sql-injection", "manual"] + - ["android.content", "ContentProvider", True, "update", "(Uri,ContentValues,String,String[])", "", "Argument[2]", "sql-injection", "manual"] + - ["android.content", "ContentResolver", True, "delete", "(Uri,String,String[])", "", "Argument[1]", "sql-injection", "manual"] + - ["android.content", "ContentResolver", True, "query", "(Uri,String[],String,String[],String)", "", "Argument[2]", "sql-injection", "manual"] + - ["android.content", "ContentResolver", True, "query", "(Uri,String[],String,String[],String,CancellationSignal)", "", "Argument[2]", "sql-injection", "manual"] + - ["android.content", "ContentResolver", True, "update", "(Uri,ContentValues,String,String[])", "", "Argument[2]", "sql-injection", "manual"] + - ["android.content", "Context", True, "sendBroadcast", "", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.content", "Context", True, "sendBroadcastAsUser", "", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.content", "Context", True, "sendBroadcastWithMultiplePermissions", "", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.content", "Context", True, "sendStickyBroadcast", "", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.content", "Context", True, "sendStickyBroadcastAsUser", "", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.content", "Context", True, "sendStickyOrderedBroadcast", "", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.content", "Context", True, "sendStickyOrderedBroadcastAsUser", "", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.content", "Context", True, "startActivities", "", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.content", "Context", True, "startActivity", "", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.content", "Context", True, "startActivityAsUser", "", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.content", "Context", True, "startActivityFromChild", "", "", "Argument[1]", "intent-redirection", "manual"] + - ["android.content", "Context", True, "startActivityFromFragment", "", "", "Argument[1]", "intent-redirection", "manual"] + - ["android.content", "Context", True, "startActivityIfNeeded", "", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.content", "Context", True, "startForegroundService", "", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.content", "Context", True, "startService", "", "", "Argument[0]", "intent-redirection", "manual"] + - ["android.content", "Context", True, "startServiceAsUser", "", "", "Argument[0]", "intent-redirection", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/android.database.model.yml b/java/ql/lib/ext/android.database.model.yml index 22157da6755..c0ff4dd5f39 100644 --- a/java/ql/lib/ext/android.database.model.yml +++ b/java/ql/lib/ext/android.database.model.yml @@ -3,13 +3,13 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["android.database", "DatabaseUtils", False, "blobFileDescriptorForQuery", "(SQLiteDatabase,String,String[])", "", "Argument[1]", "sql", "manual"] - - ["android.database", "DatabaseUtils", False, "createDbFromSqlStatements", "(Context,String,int,String)", "", "Argument[3]", "sql", "manual"] - - ["android.database", "DatabaseUtils", False, "longForQuery", "(SQLiteDatabase,String,String[])", "", "Argument[1]", "sql", "manual"] - - ["android.database", "DatabaseUtils", False, "queryNumEntries", "(SQLiteDatabase,String)", "", "Argument[1]", "sql", "manual"] - - ["android.database", "DatabaseUtils", False, "queryNumEntries", "(SQLiteDatabase,String,String)", "", "Argument[1..2]", "sql", "manual"] - - ["android.database", "DatabaseUtils", False, "queryNumEntries", "(SQLiteDatabase,String,String,String[])", "", "Argument[1..2]", "sql", "manual"] - - ["android.database", "DatabaseUtils", False, "stringForQuery", "(SQLiteDatabase,String,String[])", "", "Argument[1]", "sql", "manual"] + - ["android.database", "DatabaseUtils", False, "blobFileDescriptorForQuery", "(SQLiteDatabase,String,String[])", "", "Argument[1]", "sql-injection", "manual"] + - ["android.database", "DatabaseUtils", False, "createDbFromSqlStatements", "(Context,String,int,String)", "", "Argument[3]", "sql-injection", "manual"] + - ["android.database", "DatabaseUtils", False, "longForQuery", "(SQLiteDatabase,String,String[])", "", "Argument[1]", "sql-injection", "manual"] + - ["android.database", "DatabaseUtils", False, "queryNumEntries", "(SQLiteDatabase,String)", "", "Argument[1]", "sql-injection", "manual"] + - ["android.database", "DatabaseUtils", False, "queryNumEntries", "(SQLiteDatabase,String,String)", "", "Argument[1..2]", "sql-injection", "manual"] + - ["android.database", "DatabaseUtils", False, "queryNumEntries", "(SQLiteDatabase,String,String,String[])", "", "Argument[1..2]", "sql-injection", "manual"] + - ["android.database", "DatabaseUtils", False, "stringForQuery", "(SQLiteDatabase,String,String[])", "", "Argument[1]", "sql-injection", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/android.database.sqlite.model.yml b/java/ql/lib/ext/android.database.sqlite.model.yml index 169c7870da4..d40ae8c1ee3 100644 --- a/java/ql/lib/ext/android.database.sqlite.model.yml +++ b/java/ql/lib/ext/android.database.sqlite.model.yml @@ -3,58 +3,58 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["android.database.sqlite", "SQLiteDatabase", False, "compileStatement", "(String)", "", "Argument[0]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "delete", "(String,String,String[])", "", "Argument[0..1]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "execPerConnectionSQL", "(String,Object[])", "", "Argument[0]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "execSQL", "(String)", "", "Argument[0]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "execSQL", "(String,Object[])", "", "Argument[0]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(String,String[],String,String[],String,String,String)", "", "Argument[0..2]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(String,String[],String,String[],String,String,String)", "", "Argument[4..6]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(String,String[],String,String[],String,String,String,String)", "", "Argument[0]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(String,String[],String,String[],String,String,String,String)", "", "Argument[1]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(String,String[],String,String[],String,String,String,String)", "", "Argument[2]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(String,String[],String,String[],String,String,String,String)", "", "Argument[4..7]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(boolean,String,String[],String,String[],String,String,String,String)", "", "Argument[1]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(boolean,String,String[],String,String[],String,String,String,String)", "", "Argument[2]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(boolean,String,String[],String,String[],String,String,String,String)", "", "Argument[3]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(boolean,String,String[],String,String[],String,String,String,String)", "", "Argument[5..8]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(boolean,String,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[1]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(boolean,String,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[2]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(boolean,String,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[3]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(boolean,String,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[5..8]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "queryWithFactory", "(CursorFactory,boolean,String,String[],String,String[],String,String,String,String)", "", "Argument[2]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "queryWithFactory", "(CursorFactory,boolean,String,String[],String,String[],String,String,String,String)", "", "Argument[3]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "queryWithFactory", "(CursorFactory,boolean,String,String[],String,String[],String,String,String,String)", "", "Argument[4]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "queryWithFactory", "(CursorFactory,boolean,String,String[],String,String[],String,String,String,String)", "", "Argument[6..9]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "queryWithFactory", "(CursorFactory,boolean,String,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[2]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "queryWithFactory", "(CursorFactory,boolean,String,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[3]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "queryWithFactory", "(CursorFactory,boolean,String,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[4]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "queryWithFactory", "(CursorFactory,boolean,String,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[6..9]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "rawQuery", "(String,String[])", "", "Argument[0]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "rawQuery", "(String,String[],CancellationSignal)", "", "Argument[0]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "rawQueryWithFactory", "(CursorFactory,String,String[],String)", "", "Argument[1]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "rawQueryWithFactory", "(CursorFactory,String,String[],String,CancellationSignal)", "", "Argument[1]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "update", "(String,ContentValues,String,String[])", "", "Argument[0]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "update", "(String,ContentValues,String,String[])", "", "Argument[2]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "updateWithOnConflict", "(String,ContentValues,String,String[],int)", "", "Argument[0]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteDatabase", False, "updateWithOnConflict", "(String,ContentValues,String,String[],int)", "", "Argument[2]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteQueryBuilder", True, "delete", "(SQLiteDatabase,String,String[])", "", "Argument[this]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteQueryBuilder", True, "delete", "(SQLiteDatabase,String,String[])", "", "Argument[1]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteQueryBuilder", True, "insert", "(SQLiteDatabase,ContentValues)", "", "Argument[this]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String)", "", "Argument[this]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String)", "", "Argument[1]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String)", "", "Argument[2]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String)", "", "Argument[4..6]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String,String)", "", "Argument[this]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String,String)", "", "Argument[1]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String,String)", "", "Argument[2]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String,String)", "", "Argument[4..7]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[this]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[1]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[2]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[4..7]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteQueryBuilder", True, "update", "(SQLiteDatabase,ContentValues,String,String[])", "", "Argument[this]", "sql", "manual"] - - ["android.database.sqlite", "SQLiteQueryBuilder", True, "update", "(SQLiteDatabase,ContentValues,String,String[])", "", "Argument[2]", "sql", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "compileStatement", "(String)", "", "Argument[0]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "delete", "(String,String,String[])", "", "Argument[0..1]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "execPerConnectionSQL", "(String,Object[])", "", "Argument[0]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "execSQL", "(String)", "", "Argument[0]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "execSQL", "(String,Object[])", "", "Argument[0]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(String,String[],String,String[],String,String,String)", "", "Argument[0..2]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(String,String[],String,String[],String,String,String)", "", "Argument[4..6]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(String,String[],String,String[],String,String,String,String)", "", "Argument[0]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(String,String[],String,String[],String,String,String,String)", "", "Argument[1]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(String,String[],String,String[],String,String,String,String)", "", "Argument[2]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(String,String[],String,String[],String,String,String,String)", "", "Argument[4..7]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(boolean,String,String[],String,String[],String,String,String,String)", "", "Argument[1]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(boolean,String,String[],String,String[],String,String,String,String)", "", "Argument[2]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(boolean,String,String[],String,String[],String,String,String,String)", "", "Argument[3]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(boolean,String,String[],String,String[],String,String,String,String)", "", "Argument[5..8]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(boolean,String,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[1]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(boolean,String,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[2]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(boolean,String,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[3]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "query", "(boolean,String,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[5..8]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "queryWithFactory", "(CursorFactory,boolean,String,String[],String,String[],String,String,String,String)", "", "Argument[2]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "queryWithFactory", "(CursorFactory,boolean,String,String[],String,String[],String,String,String,String)", "", "Argument[3]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "queryWithFactory", "(CursorFactory,boolean,String,String[],String,String[],String,String,String,String)", "", "Argument[4]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "queryWithFactory", "(CursorFactory,boolean,String,String[],String,String[],String,String,String,String)", "", "Argument[6..9]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "queryWithFactory", "(CursorFactory,boolean,String,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[2]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "queryWithFactory", "(CursorFactory,boolean,String,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[3]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "queryWithFactory", "(CursorFactory,boolean,String,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[4]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "queryWithFactory", "(CursorFactory,boolean,String,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[6..9]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "rawQuery", "(String,String[])", "", "Argument[0]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "rawQuery", "(String,String[],CancellationSignal)", "", "Argument[0]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "rawQueryWithFactory", "(CursorFactory,String,String[],String)", "", "Argument[1]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "rawQueryWithFactory", "(CursorFactory,String,String[],String,CancellationSignal)", "", "Argument[1]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "update", "(String,ContentValues,String,String[])", "", "Argument[0]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "update", "(String,ContentValues,String,String[])", "", "Argument[2]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "updateWithOnConflict", "(String,ContentValues,String,String[],int)", "", "Argument[0]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteDatabase", False, "updateWithOnConflict", "(String,ContentValues,String,String[],int)", "", "Argument[2]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteQueryBuilder", True, "delete", "(SQLiteDatabase,String,String[])", "", "Argument[this]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteQueryBuilder", True, "delete", "(SQLiteDatabase,String,String[])", "", "Argument[1]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteQueryBuilder", True, "insert", "(SQLiteDatabase,ContentValues)", "", "Argument[this]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String)", "", "Argument[this]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String)", "", "Argument[1]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String)", "", "Argument[2]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String)", "", "Argument[4..6]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String,String)", "", "Argument[this]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String,String)", "", "Argument[1]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String,String)", "", "Argument[2]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String,String)", "", "Argument[4..7]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[this]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[1]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[2]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteQueryBuilder", True, "query", "(SQLiteDatabase,String[],String,String[],String,String,String,String,CancellationSignal)", "", "Argument[4..7]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteQueryBuilder", True, "update", "(SQLiteDatabase,ContentValues,String,String[])", "", "Argument[this]", "sql-injection", "manual"] + - ["android.database.sqlite", "SQLiteQueryBuilder", True, "update", "(SQLiteDatabase,ContentValues,String,String[])", "", "Argument[2]", "sql-injection", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/android.util.model.yml b/java/ql/lib/ext/android.util.model.yml index b57ff4819a7..eaf9d142f54 100644 --- a/java/ql/lib/ext/android.util.model.yml +++ b/java/ql/lib/ext/android.util.model.yml @@ -23,9 +23,9 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["android.util", "Log", True, "d", "", "", "Argument[1]", "logging", "manual"] - - ["android.util", "Log", True, "e", "", "", "Argument[1]", "logging", "manual"] - - ["android.util", "Log", True, "i", "", "", "Argument[1]", "logging", "manual"] - - ["android.util", "Log", True, "v", "", "", "Argument[1]", "logging", "manual"] - - ["android.util", "Log", True, "w", "", "", "Argument[1]", "logging", "manual"] - - ["android.util", "Log", True, "wtf", "", "", "Argument[1]", "logging", "manual"] + - ["android.util", "Log", True, "d", "", "", "Argument[1]", "log-injection", "manual"] + - ["android.util", "Log", True, "e", "", "", "Argument[1]", "log-injection", "manual"] + - ["android.util", "Log", True, "i", "", "", "Argument[1]", "log-injection", "manual"] + - ["android.util", "Log", True, "v", "", "", "Argument[1]", "log-injection", "manual"] + - ["android.util", "Log", True, "w", "", "", "Argument[1]", "log-injection", "manual"] + - ["android.util", "Log", True, "wtf", "", "", "Argument[1]", "log-injection", "manual"] diff --git a/java/ql/lib/ext/android.webkit.model.yml b/java/ql/lib/ext/android.webkit.model.yml index 05058493fe1..d88199c04cb 100644 --- a/java/ql/lib/ext/android.webkit.model.yml +++ b/java/ql/lib/ext/android.webkit.model.yml @@ -10,6 +10,6 @@ extensions: extensible: sinkModel data: # Models representing methods susceptible to XSS attacks. - - ["android.webkit", "WebView", False, "evaluateJavascript", "", "", "Argument[0]", "xss", "manual"] - - ["android.webkit", "WebView", False, "loadData", "", "", "Argument[0]", "xss", "manual"] - - ["android.webkit", "WebView", False, "loadDataWithBaseURL", "", "", "Argument[1]", "xss", "manual"] + - ["android.webkit", "WebView", False, "evaluateJavascript", "", "", "Argument[0]", "js-injection", "manual"] + - ["android.webkit", "WebView", False, "loadData", "", "", "Argument[0]", "html-injection", "manual"] + - ["android.webkit", "WebView", False, "loadDataWithBaseURL", "", "", "Argument[1]", "html-injection", "manual"] diff --git a/java/ql/lib/ext/android.widget.model.yml b/java/ql/lib/ext/android.widget.model.yml index ef4b015700a..aa6222c77d2 100644 --- a/java/ql/lib/ext/android.widget.model.yml +++ b/java/ql/lib/ext/android.widget.model.yml @@ -3,7 +3,7 @@ extensions: pack: codeql/java-all extensible: sourceModel data: - - ["android.widget", "EditText", True, "getText", "", "", "ReturnValue", "android-widget", "manual"] + - ["android.widget", "EditText", True, "getText", "", "", "ReturnValue", "remote", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/androidx.core.app.model.yml b/java/ql/lib/ext/androidx.core.app.model.yml index 2bb58605436..f24a67dbbe6 100644 --- a/java/ql/lib/ext/androidx.core.app.model.yml +++ b/java/ql/lib/ext/androidx.core.app.model.yml @@ -3,12 +3,12 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["androidx.core.app", "AlarmManagerCompat", True, "setAlarmClock", "", "", "Argument[2..3]", "pending-intent-sent", "manual"] - - ["androidx.core.app", "AlarmManagerCompat", True, "setAndAllowWhileIdle", "", "", "Argument[3]", "pending-intent-sent", "manual"] - - ["androidx.core.app", "AlarmManagerCompat", True, "setExact", "", "", "Argument[3]", "pending-intent-sent", "manual"] - - ["androidx.core.app", "AlarmManagerCompat", True, "setExactAndAllowWhileIdle", "", "", "Argument[3]", "pending-intent-sent", "manual"] - - ["androidx.core.app", "NotificationManagerCompat", True, "notify", "(String,int,Notification)", "", "Argument[2]", "pending-intent-sent", "manual"] - - ["androidx.core.app", "NotificationManagerCompat", True, "notify", "(int,Notification)", "", "Argument[1]", "pending-intent-sent", "manual"] + - ["androidx.core.app", "AlarmManagerCompat", True, "setAlarmClock", "", "", "Argument[2..3]", "pending-intents", "manual"] + - ["androidx.core.app", "AlarmManagerCompat", True, "setAndAllowWhileIdle", "", "", "Argument[3]", "pending-intents", "manual"] + - ["androidx.core.app", "AlarmManagerCompat", True, "setExact", "", "", "Argument[3]", "pending-intents", "manual"] + - ["androidx.core.app", "AlarmManagerCompat", True, "setExactAndAllowWhileIdle", "", "", "Argument[3]", "pending-intents", "manual"] + - ["androidx.core.app", "NotificationManagerCompat", True, "notify", "(String,int,Notification)", "", "Argument[2]", "pending-intents", "manual"] + - ["androidx.core.app", "NotificationManagerCompat", True, "notify", "(int,Notification)", "", "Argument[1]", "pending-intents", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/androidx.slice.model.yml b/java/ql/lib/ext/androidx.slice.model.yml index 97481e886e5..1e4176e5d9a 100644 --- a/java/ql/lib/ext/androidx.slice.model.yml +++ b/java/ql/lib/ext/androidx.slice.model.yml @@ -12,5 +12,5 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["androidx.slice", "SliceProvider", True, "onBindSlice", "", "", "ReturnValue", "pending-intent-sent", "manual"] - - ["androidx.slice", "SliceProvider", True, "onCreatePermissionRequest", "", "", "ReturnValue", "pending-intent-sent", "manual"] + - ["androidx.slice", "SliceProvider", True, "onBindSlice", "", "", "ReturnValue", "pending-intents", "manual"] + - ["androidx.slice", "SliceProvider", True, "onCreatePermissionRequest", "", "", "ReturnValue", "pending-intents", "manual"] diff --git a/java/ql/lib/ext/com.alibaba.druid.sql.model.yml b/java/ql/lib/ext/com.alibaba.druid.sql.model.yml new file mode 100644 index 00000000000..952cd6e8f1b --- /dev/null +++ b/java/ql/lib/ext/com.alibaba.druid.sql.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["com.alibaba.druid.sql", "SQLUtils", False, "toMySqlString", "(SQLObject)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] diff --git a/java/ql/lib/ext/com.fasterxml.jackson.databind.model.yml b/java/ql/lib/ext/com.fasterxml.jackson.databind.model.yml index 3768007ebe7..988820e84dd 100644 --- a/java/ql/lib/ext/com.fasterxml.jackson.databind.model.yml +++ b/java/ql/lib/ext/com.fasterxml.jackson.databind.model.yml @@ -9,3 +9,9 @@ extensions: - ["com.fasterxml.jackson.databind", "ObjectMapper", True, "valueToTree", "", "", "Argument[0].MapValue", "ReturnValue", "taint", "manual"] - ["com.fasterxml.jackson.databind", "ObjectMapper", True, "valueToTree", "", "", "Argument[0].MapValue.Element", "ReturnValue", "taint", "manual"] - ["com.fasterxml.jackson.databind", "ObjectReader", False, "createParser", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["com.fasterxml.jackson.databind", "ObjectMapper", True, "readValue", "(File,Class)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["com.fasterxml.jackson.databind", "ObjectMapper", True, "writeValue", "(File,Object)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/com.google.common.flogger.model.yml b/java/ql/lib/ext/com.google.common.flogger.model.yml index b9a800b6210..23ae9236fd7 100644 --- a/java/ql/lib/ext/com.google.common.flogger.model.yml +++ b/java/ql/lib/ext/com.google.common.flogger.model.yml @@ -3,32 +3,32 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["com.google.common.flogger", "LoggingApi", True, "log", "", "", "Argument[0]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object)", "", "Argument[1]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object,Object,Object)", "", "Argument[1..4]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object,Object,Object,Object)", "", "Argument[1..5]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object,Object,Object,Object,Object)", "", "Argument[1..6]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..7]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..8]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..9]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..10]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object[])", "", "Argument[1..11]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,boolean)", "", "Argument[1]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,byte)", "", "Argument[1]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,char)", "", "Argument[1]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,double)", "", "Argument[1]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,float)", "", "Argument[1]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,int)", "", "Argument[1]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,long)", "", "Argument[1]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,short)", "", "Argument[1]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,boolean,Object)", "", "Argument[2]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,byte,Object)", "", "Argument[2]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,char,Object)", "", "Argument[2]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,double,Object)", "", "Argument[2]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,float,Object)", "", "Argument[2]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,int,Object)", "", "Argument[2]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,long,Object)", "", "Argument[2]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,short,Object)", "", "Argument[2]", "logging", "manual"] - - ["com.google.common.flogger", "LoggingApi", True, "logVarargs", "", "", "Argument[0..1]", "logging", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "", "", "Argument[0]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object)", "", "Argument[1]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object,Object,Object)", "", "Argument[1..4]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object,Object,Object,Object)", "", "Argument[1..5]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object,Object,Object,Object,Object)", "", "Argument[1..6]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..7]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..8]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..9]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..10]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object[])", "", "Argument[1..11]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,boolean)", "", "Argument[1]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,byte)", "", "Argument[1]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,char)", "", "Argument[1]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,double)", "", "Argument[1]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,float)", "", "Argument[1]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,int)", "", "Argument[1]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,long)", "", "Argument[1]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,Object,short)", "", "Argument[1]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,boolean,Object)", "", "Argument[2]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,byte,Object)", "", "Argument[2]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,char,Object)", "", "Argument[2]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,double,Object)", "", "Argument[2]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,float,Object)", "", "Argument[2]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,int,Object)", "", "Argument[2]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,long,Object)", "", "Argument[2]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "log", "(String,short,Object)", "", "Argument[2]", "log-injection", "manual"] + - ["com.google.common.flogger", "LoggingApi", True, "logVarargs", "", "", "Argument[0..1]", "log-injection", "manual"] diff --git a/java/ql/lib/ext/com.google.common.io.model.yml b/java/ql/lib/ext/com.google.common.io.model.yml index 230b596ad29..9f3f3307462 100644 --- a/java/ql/lib/ext/com.google.common.io.model.yml +++ b/java/ql/lib/ext/com.google.common.io.model.yml @@ -3,14 +3,14 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["com.google.common.io", "Files", False, "asCharSink", "(File,Charset,FileWriteMode[])", "", "Argument[0]", "create-file", "ai-manual"] - - ["com.google.common.io", "Files", False, "asCharSource", "(File,Charset)", "", "Argument[0]", "read-file", "ai-manual"] - - ["com.google.common.io", "Files", False, "copy", "(File,OutputStream)", "", "Argument[0]", "read-file", "ai-manual"] - - ["com.google.common.io", "Files", False, "readLines", "(File,Charset)", "", "Argument[0]", "read-file", "ai-manual"] - - ["com.google.common.io", "Files", False, "toByteArray", "(File)", "", "Argument[0]", "read-file", "ai-manual"] - - ["com.google.common.io", "Files", False, "toString", "(File,Charset)", "", "Argument[0]", "read-file", "ai-manual"] - - ["com.google.common.io", "Files", False, "write", "(byte[],File)", "", "Argument[0]", "write-file", "ai-manual"] - - ["com.google.common.io", "Files", False, "write", "(byte[],File)", "", "Argument[1]", "create-file", "manual"] + - ["com.google.common.io", "Files", False, "asCharSink", "(File,Charset,FileWriteMode[])", "", "Argument[0]", "path-injection", "ai-manual"] + - ["com.google.common.io", "Files", False, "asCharSource", "(File,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["com.google.common.io", "Files", False, "copy", "(File,OutputStream)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["com.google.common.io", "Files", False, "readLines", "(File,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["com.google.common.io", "Files", False, "toByteArray", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["com.google.common.io", "Files", False, "toString", "(File,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["com.google.common.io", "Files", False, "write", "(byte[],File)", "", "Argument[0]", "file-content-store", "ai-manual"] + - ["com.google.common.io", "Files", False, "write", "(byte[],File)", "", "Argument[1]", "path-injection", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/com.google.gson.model.yml b/java/ql/lib/ext/com.google.gson.model.yml new file mode 100644 index 00000000000..abc3693ae00 --- /dev/null +++ b/java/ql/lib/ext/com.google.gson.model.yml @@ -0,0 +1,49 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["com.google.gson", "Gson", False, "fromJson", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["com.google.gson", "Gson", False, "toJson", "(JsonElement)", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["com.google.gson", "Gson", False, "toJson", "(JsonElement,JsonWriter)", "", "Argument[0]", "Argument[1]", "taint", "manual"] + - ["com.google.gson", "Gson", False, "toJson", "(JsonElement,Appendable)", "", "Argument[0]", "Argument[1]", "taint", "manual"] + - ["com.google.gson", "Gson", False, "toJson", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["com.google.gson", "Gson", False, "toJson", "(Object,Appendable)", "", "Argument[0]", "Argument[1]", "taint", "manual"] + - ["com.google.gson", "Gson", False, "toJson", "(Object,Type)", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["com.google.gson", "Gson", False, "toJson", "(Object,Type,Appendable)", "", "Argument[0]", "Argument[2]", "taint", "manual"] + - ["com.google.gson", "Gson", False, "toJson", "(Object,Type,JsonWriter)", "", "Argument[0]", "Argument[2]", "taint", "manual"] + - ["com.google.gson", "Gson", False, "toJsonTree", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["com.google.gson", "Gson", False, "toJsonTree", "(Object,Type)", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["com.google.gson", "Gson", False, "toString", "()", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["com.google.gson", "Gson", False, "newJsonReader", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["com.google.gson", "Gson", False, "newJsonWriter", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["com.google.gson.stream", "JsonReader", False, "nextName", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["com.google.gson.stream", "JsonReader", False, "nextString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["com.google.gson", "JsonElement", True, "getAsByte", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["com.google.gson", "JsonElement", True, "getAsCharacter", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["com.google.gson", "JsonElement", True, "getAsJsonArray", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["com.google.gson", "JsonElement", True, "getAsJsonObject", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["com.google.gson", "JsonElement", True, "getAsJsonPrimitive", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["com.google.gson", "JsonElement", True, "getAsString", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["com.google.gson", "JsonElement", True, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["com.google.gson", "JsonArray", True, "add", "(Boolean)", "", "Argument[0]", "Argument[this].Element", "taint", "manual"] + - ["com.google.gson", "JsonArray", True, "add", "(Character)", "", "Argument[0]", "Argument[this].Element", "taint", "manual"] + - ["com.google.gson", "JsonArray", True, "add", "(JsonElement)", "", "Argument[0]", "Argument[this].Element", "value", "manual"] + - ["com.google.gson", "JsonArray", True, "add", "(Number)", "", "Argument[0]", "Argument[this].Element", "taint", "manual"] + - ["com.google.gson", "JsonArray", True, "add", "(String)", "", "Argument[0]", "Argument[this].Element", "taint", "manual"] + - ["com.google.gson", "JsonArray", True, "addAll", "(JsonArray)", "", "Argument[0].Element", "Argument[this].Element", "value", "manual"] + - ["com.google.gson", "JsonArray", True, "asList", "", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] + - ["com.google.gson", "JsonArray", True, "get", "", "", "Argument[this].Element", "ReturnValue", "value", "manual"] + - ["com.google.gson", "JsonArray", True, "set", "", "", "Argument[1]", "Argument[this].Element", "value", "manual"] + - ["com.google.gson", "JsonObject", True, "add", "", "", "Argument[0]", "Argument[this].MapKey", "value", "manual"] + - ["com.google.gson", "JsonObject", True, "add", "", "", "Argument[1]", "Argument[this].MapValue", "value", "manual"] + - ["com.google.gson", "JsonObject", True, "addProperty", "(String,String)", "", "Argument[0]", "Argument[this].MapKey", "value", "manual"] + - ["com.google.gson", "JsonObject", True, "addProperty", "(String,String)", "", "Argument[1]", "Argument[this].MapValue", "taint", "manual"] + - ["com.google.gson", "JsonObject", True, "asMap", "", "", "Argument[this].MapKey", "ReturnValue.MapKey", "value", "manual"] + - ["com.google.gson", "JsonObject", True, "asMap", "", "", "Argument[this].MapValue", "ReturnValue.MapValue", "value", "manual"] + - ["com.google.gson", "JsonObject", True, "entrySet", "", "", "Argument[this].MapKey", "ReturnValue.Element.MapKey", "value", "manual"] + - ["com.google.gson", "JsonObject", True, "entrySet", "", "", "Argument[this].MapValue", "ReturnValue.Element.MapValue", "value", "manual"] + - ["com.google.gson", "JsonObject", True, "get", "", "", "Argument[this].MapValue", "ReturnValue", "value", "manual"] + - ["com.google.gson", "JsonObject", True, "keySet", "", "", "Argument[this].MapKey", "ReturnValue.Element", "value", "manual"] + - ["com.google.gson", "JsonPrimitive", True, "JsonPrimitive", "(Character)", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - ["com.google.gson", "JsonPrimitive", True, "JsonPrimitive", "(String)", "", "Argument[0]", "Argument[this]", "taint", "manual"] diff --git a/java/ql/lib/ext/com.hubspot.jinjava.model.yml b/java/ql/lib/ext/com.hubspot.jinjava.model.yml index 2172da483f8..9c8866c9c14 100644 --- a/java/ql/lib/ext/com.hubspot.jinjava.model.yml +++ b/java/ql/lib/ext/com.hubspot.jinjava.model.yml @@ -3,5 +3,5 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["com.hubspot.jinjava", "Jinjava", True, "render", "", "", "Argument[0]", "ssti", "manual"] - - ["com.hubspot.jinjava", "Jinjava", True, "renderForResult", "", "", "Argument[0]", "ssti", "manual"] + - ["com.hubspot.jinjava", "Jinjava", True, "render", "", "", "Argument[0]", "template-injection", "manual"] + - ["com.hubspot.jinjava", "Jinjava", True, "renderForResult", "", "", "Argument[0]", "template-injection", "manual"] diff --git a/java/ql/lib/ext/com.jcraft.jsch.model.yml b/java/ql/lib/ext/com.jcraft.jsch.model.yml new file mode 100644 index 00000000000..3d658630d56 --- /dev/null +++ b/java/ql/lib/ext/com.jcraft.jsch.model.yml @@ -0,0 +1,11 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["com.jcraft.jsch", "JSch", True, "getSession", "(String,String,int)", "", "Argument[1]", "request-forgery", "ai-manual"] + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["com.jcraft.jsch", "ChannelSftp", True, "realpath", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] diff --git a/java/ql/lib/ext/com.mitchellbosecke.pebble.model.yml b/java/ql/lib/ext/com.mitchellbosecke.pebble.model.yml index 74b227da1dd..72c466af08c 100644 --- a/java/ql/lib/ext/com.mitchellbosecke.pebble.model.yml +++ b/java/ql/lib/ext/com.mitchellbosecke.pebble.model.yml @@ -3,5 +3,5 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["com.mitchellbosecke.pebble", "PebbleEngine", True, "getLiteralTemplate", "", "", "Argument[0]", "ssti", "manual"] - - ["com.mitchellbosecke.pebble", "PebbleEngine", True, "getTemplate", "", "", "Argument[0]", "ssti", "manual"] + - ["com.mitchellbosecke.pebble", "PebbleEngine", True, "getLiteralTemplate", "", "", "Argument[0]", "template-injection", "manual"] + - ["com.mitchellbosecke.pebble", "PebbleEngine", True, "getTemplate", "", "", "Argument[0]", "template-injection", "manual"] diff --git a/java/ql/lib/ext/com.thoughtworks.xstream.model.yml b/java/ql/lib/ext/com.thoughtworks.xstream.model.yml index d73cc27e729..c34bb91d42c 100644 --- a/java/ql/lib/ext/com.thoughtworks.xstream.model.yml +++ b/java/ql/lib/ext/com.thoughtworks.xstream.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["com.thoughtworks.xstream", "XStream", True, "fromXML", "(File)", "", "Argument[0]", "read-file", "ai-manual"] + - ["com.thoughtworks.xstream", "XStream", True, "fromXML", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/com.unboundid.ldap.sdk.model.yml b/java/ql/lib/ext/com.unboundid.ldap.sdk.model.yml index 57753bc31d0..d483d6d97e4 100644 --- a/java/ql/lib/ext/com.unboundid.ldap.sdk.model.yml +++ b/java/ql/lib/ext/com.unboundid.ldap.sdk.model.yml @@ -3,20 +3,20 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "asyncSearch", "", "", "Argument[0]", "ldap", "manual"] - - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(ReadOnlySearchRequest)", "", "Argument[0]", "ldap", "manual"] - - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(SearchRequest)", "", "Argument[0]", "ldap", "manual"] - - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(SearchResultListener,String,SearchScope,DereferencePolicy,int,int,boolean,Filter,String[])", "", "Argument[0..7]", "ldap", "manual"] - - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(SearchResultListener,String,SearchScope,DereferencePolicy,int,int,boolean,String,String[])", "", "Argument[0..7]", "ldap", "manual"] - - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(SearchResultListener,String,SearchScope,Filter,String[])", "", "Argument[0..3]", "ldap", "manual"] - - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(SearchResultListener,String,SearchScope,String,String[])", "", "Argument[0..3]", "ldap", "manual"] - - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(String,SearchScope,DereferencePolicy,int,int,boolean,Filter,String[])", "", "Argument[0..6]", "ldap", "manual"] - - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(String,SearchScope,DereferencePolicy,int,int,boolean,String,String[])", "", "Argument[0..6]", "ldap", "manual"] - - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(String,SearchScope,Filter,String[])", "", "Argument[0..2]", "ldap", "manual"] - - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(String,SearchScope,String,String[])", "", "Argument[0..2]", "ldap", "manual"] - - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "searchForEntry", "(ReadOnlySearchRequest)", "", "Argument[0]", "ldap", "manual"] - - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "searchForEntry", "(SearchRequest)", "", "Argument[0]", "ldap", "manual"] - - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "searchForEntry", "(String,SearchScope,DereferencePolicy,int,boolean,Filter,String[])", "", "Argument[0..5]", "ldap", "manual"] - - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "searchForEntry", "(String,SearchScope,DereferencePolicy,int,boolean,String,String[])", "", "Argument[0..5]", "ldap", "manual"] - - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "searchForEntry", "(String,SearchScope,Filter,String[])", "", "Argument[0..2]", "ldap", "manual"] - - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "searchForEntry", "(String,SearchScope,String,String[])", "", "Argument[0..2]", "ldap", "manual"] + - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "asyncSearch", "", "", "Argument[0]", "ldap-injection", "manual"] + - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(ReadOnlySearchRequest)", "", "Argument[0]", "ldap-injection", "manual"] + - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(SearchRequest)", "", "Argument[0]", "ldap-injection", "manual"] + - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(SearchResultListener,String,SearchScope,DereferencePolicy,int,int,boolean,Filter,String[])", "", "Argument[0..7]", "ldap-injection", "manual"] + - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(SearchResultListener,String,SearchScope,DereferencePolicy,int,int,boolean,String,String[])", "", "Argument[0..7]", "ldap-injection", "manual"] + - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(SearchResultListener,String,SearchScope,Filter,String[])", "", "Argument[0..3]", "ldap-injection", "manual"] + - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(SearchResultListener,String,SearchScope,String,String[])", "", "Argument[0..3]", "ldap-injection", "manual"] + - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(String,SearchScope,DereferencePolicy,int,int,boolean,Filter,String[])", "", "Argument[0..6]", "ldap-injection", "manual"] + - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(String,SearchScope,DereferencePolicy,int,int,boolean,String,String[])", "", "Argument[0..6]", "ldap-injection", "manual"] + - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(String,SearchScope,Filter,String[])", "", "Argument[0..2]", "ldap-injection", "manual"] + - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "search", "(String,SearchScope,String,String[])", "", "Argument[0..2]", "ldap-injection", "manual"] + - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "searchForEntry", "(ReadOnlySearchRequest)", "", "Argument[0]", "ldap-injection", "manual"] + - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "searchForEntry", "(SearchRequest)", "", "Argument[0]", "ldap-injection", "manual"] + - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "searchForEntry", "(String,SearchScope,DereferencePolicy,int,boolean,Filter,String[])", "", "Argument[0..5]", "ldap-injection", "manual"] + - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "searchForEntry", "(String,SearchScope,DereferencePolicy,int,boolean,String,String[])", "", "Argument[0..5]", "ldap-injection", "manual"] + - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "searchForEntry", "(String,SearchScope,Filter,String[])", "", "Argument[0..2]", "ldap-injection", "manual"] + - ["com.unboundid.ldap.sdk", "LDAPConnection", False, "searchForEntry", "(String,SearchScope,String,String[])", "", "Argument[0..2]", "ldap-injection", "manual"] diff --git a/java/ql/lib/ext/com.zaxxer.hikari.model.yml b/java/ql/lib/ext/com.zaxxer.hikari.model.yml index 5fcab32cc7e..5c048e7c3c0 100644 --- a/java/ql/lib/ext/com.zaxxer.hikari.model.yml +++ b/java/ql/lib/ext/com.zaxxer.hikari.model.yml @@ -3,5 +3,5 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["com.zaxxer.hikari", "HikariConfig", False, "HikariConfig", "(Properties)", "", "Argument[0]", "jdbc-url", "manual"] - - ["com.zaxxer.hikari", "HikariConfig", False, "setJdbcUrl", "(String)", "", "Argument[0]", "jdbc-url", "manual"] + - ["com.zaxxer.hikari", "HikariConfig", False, "HikariConfig", "(Properties)", "", "Argument[0]", "request-forgery", "manual"] + - ["com.zaxxer.hikari", "HikariConfig", False, "setJdbcUrl", "(String)", "", "Argument[0]", "request-forgery", "manual"] diff --git a/java/ql/lib/ext/freemarker.cache.model.yml b/java/ql/lib/ext/freemarker.cache.model.yml index b65e6386ad6..b09961f0686 100644 --- a/java/ql/lib/ext/freemarker.cache.model.yml +++ b/java/ql/lib/ext/freemarker.cache.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["freemarker.cache", "StringTemplateLoader", True, "putTemplate", "", "", "Argument[1]", "ssti", "manual"] + - ["freemarker.cache", "StringTemplateLoader", True, "putTemplate", "", "", "Argument[1]", "template-injection", "manual"] diff --git a/java/ql/lib/ext/freemarker.template.model.yml b/java/ql/lib/ext/freemarker.template.model.yml index 96087a2b9ba..afc9579719d 100644 --- a/java/ql/lib/ext/freemarker.template.model.yml +++ b/java/ql/lib/ext/freemarker.template.model.yml @@ -3,10 +3,10 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["freemarker.template", "Template", True, "Template", "(String,Reader)", "", "Argument[1]", "ssti", "manual"] - - ["freemarker.template", "Template", True, "Template", "(String,Reader,Configuration)", "", "Argument[1]", "ssti", "manual"] - - ["freemarker.template", "Template", True, "Template", "(String,Reader,Configuration,String)", "", "Argument[1]", "ssti", "manual"] - - ["freemarker.template", "Template", True, "Template", "(String,String,Configuration)", "", "Argument[1]", "ssti", "manual"] - - ["freemarker.template", "Template", True, "Template", "(String,String,Reader,Configuration)", "", "Argument[2]", "ssti", "manual"] - - ["freemarker.template", "Template", True, "Template", "(String,String,Reader,Configuration,ParserConfiguration,String)", "", "Argument[2]", "ssti", "manual"] - - ["freemarker.template", "Template", True, "Template", "(String,String,Reader,Configuration,String)", "", "Argument[2]", "ssti", "manual"] + - ["freemarker.template", "Template", True, "Template", "(String,Reader)", "", "Argument[1]", "template-injection", "manual"] + - ["freemarker.template", "Template", True, "Template", "(String,Reader,Configuration)", "", "Argument[1]", "template-injection", "manual"] + - ["freemarker.template", "Template", True, "Template", "(String,Reader,Configuration,String)", "", "Argument[1]", "template-injection", "manual"] + - ["freemarker.template", "Template", True, "Template", "(String,String,Configuration)", "", "Argument[1]", "template-injection", "manual"] + - ["freemarker.template", "Template", True, "Template", "(String,String,Reader,Configuration)", "", "Argument[2]", "template-injection", "manual"] + - ["freemarker.template", "Template", True, "Template", "(String,String,Reader,Configuration,ParserConfiguration,String)", "", "Argument[2]", "template-injection", "manual"] + - ["freemarker.template", "Template", True, "Template", "(String,String,Reader,Configuration,String)", "", "Argument[2]", "template-injection", "manual"] diff --git a/java/ql/lib/ext/generated/jenkins-json-lib.model.yml b/java/ql/lib/ext/generated/jenkins-json-lib.model.yml new file mode 100644 index 00000000000..b028104472f --- /dev/null +++ b/java/ql/lib/ext/generated/jenkins-json-lib.model.yml @@ -0,0 +1,598 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +# Definitions of models for the Jenkins JSON Lib framework. +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["net.sf.json.groovy", "JsonSlurper", true, "parse", "(String)", "", "Argument[0]", "request-forgery", "df-generated"] + - ["net.sf.json.groovy", "JsonSlurper", true, "parse", "(URL)", "", "Argument[0]", "request-forgery", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["net.sf.json.filters", "AndPropertyFilter", true, "AndPropertyFilter", "(PropertyFilter,PropertyFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.filters", "AndPropertyFilter", true, "AndPropertyFilter", "(PropertyFilter,PropertyFilter)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.filters", "CompositePropertyFilter", true, "CompositePropertyFilter", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.filters", "CompositePropertyFilter", true, "addPropertyFilter", "(PropertyFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.filters", "MappingPropertyFilter", true, "MappingPropertyFilter", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.filters", "MappingPropertyFilter", true, "addPropertyFilter", "(Object,PropertyFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.filters", "MappingPropertyFilter", true, "addPropertyFilter", "(Object,PropertyFilter)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.filters", "NotPropertyFilter", true, "NotPropertyFilter", "(PropertyFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.filters", "OrPropertyFilter", true, "OrPropertyFilter", "(PropertyFilter,PropertyFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.filters", "OrPropertyFilter", true, "OrPropertyFilter", "(PropertyFilter,PropertyFilter)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.groovy", "JsonGroovyBuilder", true, "getJsonConfig", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.groovy", "JsonGroovyBuilder", true, "setJsonConfig", "(JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.groovy", "JsonSlurper", true, "JsonSlurper", "(JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.groovy", "JsonSlurper", true, "parse", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.groovy", "JsonSlurper", true, "parse", "(Reader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.groovy", "JsonSlurper", true, "parseText", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.regexp", "RegexpMatcher", true, "getGroupIfMatches", "(String,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "JSONBuilder", "(Writer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "array", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "endArray", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "endObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "key", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "object", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "value", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "value", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "value", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "value", "(boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "value", "(double)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONBuilder", true, "value", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONTokener", true, "JSONTokener", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.util", "JSONTokener", true, "next", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONTokener", true, "nextValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONTokener", true, "nextValue", "(JsonConfig)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONTokener", true, "nextValue", "(JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONTokener", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONUtils", false, "convertToJavaIdentifier", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONUtils", false, "convertToJavaIdentifier", "(String,JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONUtils", false, "getFunctionBody", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONUtils", false, "getFunctionParams", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONUtils", false, "getProperties", "(JSONObject)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONUtils", false, "stripQuotes", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONUtils", false, "valueToCanonicalString", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONUtils", false, "valueToString", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JSONUtils", false, "valueToString", "(Object,int,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "JavaIdentifierTransformer", true, "transformToJavaIdentifier", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "PropertySetStrategy", true, "setProperty", "(Object,String,Object)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["net.sf.json.util", "PropertySetStrategy", true, "setProperty", "(Object,String,Object)", "", "Argument[2]", "Argument[0]", "taint", "df-generated"] + - ["net.sf.json.util", "PropertySetStrategy", true, "setProperty", "(Object,String,Object,JsonConfig)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["net.sf.json.util", "PropertySetStrategy", true, "setProperty", "(Object,String,Object,JsonConfig)", "", "Argument[2]", "Argument[0]", "taint", "df-generated"] + - ["net.sf.json.util", "WebHijackPreventionStrategy", true, "protect", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "WebUtils", true, "protect", "(JSON)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "WebUtils", true, "protect", "(JSON,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.util", "WebUtils", true, "toString", "(JSON)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "addNamespace", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "addNamespace", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "addNamespace", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "addNamespace", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "addNamespace", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "getArrayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "getElementName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "getExpandableProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "getObjectName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "getRootName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setArrayName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setElementName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setExpandableProperties", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setNamespace", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setNamespace", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setNamespace", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setNamespace", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setNamespace", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setObjectName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", true, "setRootName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSON", true, "toString", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSON", true, "toString", "(int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSON", true, "write", "(Writer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSON", true, "writeCanonical", "(Writer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "add", "(Object,JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "add", "(int,Object,JsonConfig)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "addAll", "(Collection,JsonConfig)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "addAll", "(int,Collection,JsonConfig)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "discard", "(Object)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "discard", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Collection)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Collection,JsonConfig)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Collection,JsonConfig)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(JSONNull)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(JSONNull)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(JSONObject)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(JSONObject)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Map)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Map)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Map,JsonConfig)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Map,JsonConfig)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Object,JsonConfig)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Object,JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(Object,JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(String,JsonConfig)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(String,JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(double)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Collection)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Collection)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Collection)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Collection,JsonConfig)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Collection,JsonConfig)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Map)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Map)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Map)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Map,JsonConfig)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Map,JsonConfig)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Object,JsonConfig)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,Object,JsonConfig)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,String,JsonConfig)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,String,JsonConfig)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,double)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(int,long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "element", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "fromObject", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "fromObject", "(Object,JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "getJSONArray", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "getJSONObject", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "getString", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "join", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "join", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "join", "(String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "join", "(String,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "opt", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "optJSONArray", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "optJSONObject", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "optString", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "optString", "(int,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "optString", "(int,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "set", "(int,Object,JsonConfig)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "set", "(int,Object,JsonConfig)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toCollection", "(JSONArray)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toCollection", "(JSONArray,Class)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toCollection", "(JSONArray,JsonConfig)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toCollection", "(JSONArray,JsonConfig)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toJSONObject", "(JSONArray)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toJSONObject", "(JSONArray)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toList", "(JSONArray)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toList", "(JSONArray,Class)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toList", "(JSONArray,Class,Map)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toList", "(JSONArray,JsonConfig)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toList", "(JSONArray,JsonConfig)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toList", "(JSONArray,Object,JsonConfig)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toList", "(JSONArray,Object,JsonConfig)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONArray", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONFunction", true, "JSONFunction", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONFunction", true, "JSONFunction", "(String[],String)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONFunction", true, "JSONFunction", "(String[],String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONFunction", true, "getParams", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONFunction", true, "getText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONFunction", true, "parse", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONFunction", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object,JsonConfig)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object,JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object,JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object,JsonConfig)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,Object,JsonConfig)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,double)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,double)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,double)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulate", "(String,long)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulateAll", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "accumulateAll", "(Map,JsonConfig)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "discard", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection,JsonConfig)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection,JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection,JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection,JsonConfig)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Collection,JsonConfig)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map,JsonConfig)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map,JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map,JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map,JsonConfig)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Map,JsonConfig)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Object,JsonConfig)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Object,JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,Object,JsonConfig)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,double)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,double)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,double)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "element", "(String,long)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "elementOpt", "(String,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "elementOpt", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "elementOpt", "(String,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "elementOpt", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "elementOpt", "(String,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "elementOpt", "(String,Object,JsonConfig)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["net.sf.json", "JSONObject", false, "elementOpt", "(String,Object,JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "elementOpt", "(String,Object,JsonConfig)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "fromObject", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "fromObject", "(Object,JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "fromObject", "(Object,JsonConfig)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "get", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "getJSONArray", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "getJSONObject", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "getString", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "keys", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "names", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "names", "(JsonConfig)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "opt", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "optJSONArray", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "optJSONObject", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "optString", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "optString", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "optString", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "putAll", "(Map,JsonConfig)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "remove", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(JSONObject,Class)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(JSONObject,Class,Map)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(JSONObject,JsonConfig)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(JSONObject,JsonConfig)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(JSONObject,Object,JsonConfig)", "", "Argument[0].Element", "Argument[1]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(JSONObject,Object,JsonConfig)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(JSONObject,Object,JsonConfig)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(JSONObject,Object,JsonConfig)", "", "Argument[2]", "Argument[1]", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toBean", "(JSONObject,Object,JsonConfig)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toJSONArray", "(JSONArray)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONObject", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONSerializer", true, "toJSON", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONSerializer", true, "toJSON", "(Object,JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONSerializer", true, "toJSON", "(Object,JsonConfig)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONSerializer", true, "toJava", "(JSON)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONSerializer", true, "toJava", "(JSON,JsonConfig)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JSONSerializer", true, "toJava", "(JSON,JsonConfig)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "addIgnoreFieldAnnotation", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "addJsonEventListener", "(JsonEventListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "copy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "findDefaultValueProcessor", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "findJavaPropertyNameProcessor", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "findJsonBeanProcessor", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "findJsonPropertyNameProcessor", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "findJsonValueProcessor", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "findJsonValueProcessor", "(Class,Class,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "findJsonValueProcessor", "(Class,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "findPropertyNameProcessor", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getClassMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getCycleDetectionStrategy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getDefaultValueProcessorMatcher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getExcludes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getIgnoreFieldAnnotations", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getJavaIdentifierTransformer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getJavaPropertyFilter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getJavaPropertyNameProcessorMatcher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getJsonBeanProcessorMatcher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getJsonEventListeners", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getJsonPropertyFilter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getJsonPropertyNameProcessorMatcher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getJsonValueProcessorMatcher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getMergedExcludes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getMergedExcludes", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getNewBeanInstanceStrategy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getPropertyExclusionClassMatcher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getPropertyNameProcessorMatcher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "getPropertySetStrategy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerDefaultValueProcessor", "(Class,DefaultValueProcessor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerJavaPropertyNameProcessor", "(Class,PropertyNameProcessor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerJsonBeanProcessor", "(Class,JsonBeanProcessor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerJsonPropertyNameProcessor", "(Class,PropertyNameProcessor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerJsonValueProcessor", "(Class,Class,JsonValueProcessor)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerJsonValueProcessor", "(Class,JsonValueProcessor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerJsonValueProcessor", "(Class,String,JsonValueProcessor)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerJsonValueProcessor", "(String,JsonValueProcessor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerJsonValueProcessor", "(String,JsonValueProcessor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "registerPropertyNameProcessor", "(Class,PropertyNameProcessor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setClassMap", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setCycleDetectionStrategy", "(CycleDetectionStrategy)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setDefaultValueProcessorMatcher", "(DefaultValueProcessorMatcher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setExcludes", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setJavaIdentifierTransformer", "(JavaIdentifierTransformer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setJavaPropertyFilter", "(PropertyFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setJavaPropertyNameProcessorMatcher", "(PropertyNameProcessorMatcher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setJsonBeanProcessorMatcher", "(JsonBeanProcessorMatcher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setJsonPropertyFilter", "(PropertyFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setJsonPropertyNameProcessorMatcher", "(PropertyNameProcessorMatcher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setJsonValueProcessorMatcher", "(JsonValueProcessorMatcher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setNewBeanInstanceStrategy", "(NewBeanInstanceStrategy)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setPropertyExclusionClassMatcher", "(PropertyExclusionClassMatcher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setPropertyNameProcessorMatcher", "(PropertyNameProcessorMatcher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["net.sf.json", "JsonConfig", true, "setPropertySetStrategy", "(PropertySetStrategy)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["net.sf.json.filters", "CompositePropertyFilter", "removePropertyFilter", "(PropertyFilter)", "summary", "df-generated"] + - ["net.sf.json.filters", "MappingPropertyFilter", "removePropertyFilter", "(Object)", "summary", "df-generated"] + - ["net.sf.json.groovy", "JsonSlurper", "parse", "(File)", "summary", "df-generated"] + - ["net.sf.json.groovy", "JsonSlurper", "parse", "(String)", "summary", "df-generated"] + - ["net.sf.json.groovy", "JsonSlurper", "parse", "(URL)", "summary", "df-generated"] + - ["net.sf.json.processors", "DefaultValueProcessor", "getDefaultValue", "(Class)", "summary", "df-generated"] + - ["net.sf.json.processors", "DefaultValueProcessorMatcher", "getMatch", "(Class,Set)", "summary", "df-generated"] + - ["net.sf.json.processors", "JsonBeanProcessor", "processBean", "(Object,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json.processors", "JsonBeanProcessorMatcher", "getMatch", "(Class,Set)", "summary", "df-generated"] + - ["net.sf.json.processors", "JsonValueProcessor", "processArrayValue", "(Object,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json.processors", "JsonValueProcessor", "processObjectValue", "(String,Object,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json.processors", "JsonValueProcessorMatcher", "getMatch", "(Class,Set)", "summary", "df-generated"] + - ["net.sf.json.processors", "JsonVerifier", "isValidJsonValue", "(Object)", "summary", "df-generated"] + - ["net.sf.json.processors", "PropertyNameProcessorMatcher", "getMatch", "(Class,Set)", "summary", "df-generated"] + - ["net.sf.json.regexp", "JdkRegexpMatcher", "JdkRegexpMatcher", "(String)", "summary", "df-generated"] + - ["net.sf.json.regexp", "JdkRegexpMatcher", "JdkRegexpMatcher", "(String,boolean)", "summary", "df-generated"] + - ["net.sf.json.regexp", "Perl5RegexpMatcher", "Perl5RegexpMatcher", "(String)", "summary", "df-generated"] + - ["net.sf.json.regexp", "Perl5RegexpMatcher", "Perl5RegexpMatcher", "(String,boolean)", "summary", "df-generated"] + - ["net.sf.json.regexp", "RegexpMatcher", "getGroupIfMatches", "(String,int)", "summary", "df-generated"] + - ["net.sf.json.regexp", "RegexpMatcher", "matches", "(String)", "summary", "df-generated"] + - ["net.sf.json.regexp", "RegexpUtils", "getMatcher", "(String)", "summary", "df-generated"] + - ["net.sf.json.regexp", "RegexpUtils", "getMatcher", "(String,boolean)", "summary", "df-generated"] + - ["net.sf.json.regexp", "RegexpUtils", "isJDK13", "()", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(JSON,JSON)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(JSONArray,JSONArray)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(JSONArray,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(JSONFunction,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(JSONNull,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(JSONObject,JSONObject)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(JSONObject,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSON,JSON)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONArray)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONArray,JSONArray)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONArray,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONFunction)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONFunction,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONNull)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONNull,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONObject)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONObject,JSONObject)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,JSONObject,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,String,JSONArray)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,String,JSONFunction)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,String,JSONNull)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertEquals", "(String,String,JSONObject)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertJsonEquals", "(String,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertJsonEquals", "(String,String,String)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertNotNull", "(JSON)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertNotNull", "(String,JSON)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertNull", "(JSON)", "summary", "df-generated"] + - ["net.sf.json.test", "JSONAssert", "assertNull", "(String,JSON)", "summary", "df-generated"] + - ["net.sf.json.util", "CycleDetectionStrategy", "handleRepeatedReferenceAsArray", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "CycleDetectionStrategy", "handleRepeatedReferenceAsObject", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "EnumMorpher", "EnumMorpher", "(Class)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONStringer", "toString", "()", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "back", "()", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "dehexchar", "(char)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "length", "()", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "matches", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "more", "()", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "next", "()", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "next", "(char)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "nextClean", "()", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "nextString", "(char)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "nextTo", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "nextTo", "(char)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "peek", "()", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "reset", "()", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "skipPast", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "skipTo", "(char)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONTokener", "syntaxError", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "doubleToString", "(double)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "getInnerComponentType", "(Class)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "getMorpherRegistry", "()", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "getTypeClass", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "hasQuotes", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "hashCode", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isArray", "(Class)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isArray", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isBoolean", "(Class)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isBoolean", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isDouble", "(Class)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isFunction", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isFunctionHeader", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isJavaIdentifier", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isJsonKeyword", "(String,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isNull", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isNumber", "(Class)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isNumber", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isObject", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isString", "(Class)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "isString", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "mayBeJSON", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "newDynaBean", "(JSONObject)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "newDynaBean", "(JSONObject,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "numberToString", "(Number)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "quote", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "quoteCanonical", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "testValidity", "(Object)", "summary", "df-generated"] + - ["net.sf.json.util", "JSONUtils", "transformNumber", "(Number)", "summary", "df-generated"] + - ["net.sf.json.util", "JavaIdentifierTransformer", "transformToJavaIdentifier", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "NewBeanInstanceStrategy", "newInstance", "(Class,JSONObject)", "summary", "df-generated"] + - ["net.sf.json.util", "PropertyExclusionClassMatcher", "getMatch", "(Class,Set)", "summary", "df-generated"] + - ["net.sf.json.util", "PropertyFilter", "apply", "(Object,String,Object)", "summary", "df-generated"] + - ["net.sf.json.util", "PropertySetStrategy", "setProperty", "(Object,String,Object)", "summary", "df-generated"] + - ["net.sf.json.util", "WebHijackPreventionStrategy", "protect", "(String)", "summary", "df-generated"] + - ["net.sf.json.util", "WebUtils", "getWebHijackPreventionStrategy", "()", "summary", "df-generated"] + - ["net.sf.json.util", "WebUtils", "setWebHijackPreventionStrategy", "(WebHijackPreventionStrategy)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "clearNamespaces", "()", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "clearNamespaces", "(String)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "isForceTopLevelObject", "()", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "isNamespaceLenient", "()", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "isRemoveNamespacePrefixFromElements", "()", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "isSkipNamespaces", "()", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "isSkipWhitespace", "()", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "isTrimSpaces", "()", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "isTypeHintsCompatibility", "()", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "isTypeHintsEnabled", "()", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "read", "(String)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "readFromFile", "(File)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "readFromFile", "(String)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "readFromStream", "(InputStream)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "removeNamespace", "(String)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "removeNamespace", "(String,String)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "setForceTopLevelObject", "(boolean)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "setNamespaceLenient", "(boolean)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "setRemoveNamespacePrefixFromElements", "(boolean)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "setSkipNamespaces", "(boolean)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "setSkipWhitespace", "(boolean)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "setTrimSpaces", "(boolean)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "setTypeHintsCompatibility", "(boolean)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "setTypeHintsEnabled", "(boolean)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "write", "(JSON)", "summary", "df-generated"] + - ["net.sf.json.xml", "XMLSerializer", "write", "(JSON,String)", "summary", "df-generated"] + - ["net.sf.json", "JSON", "isArray", "()", "summary", "df-generated"] + - ["net.sf.json", "JSON", "isEmpty", "()", "summary", "df-generated"] + - ["net.sf.json", "JSON", "size", "()", "summary", "df-generated"] + - ["net.sf.json", "JSON", "toString", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JSON", "toString", "(int,int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "contains", "(Object,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "containsAll", "(Collection,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "getBoolean", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "getCollectionType", "(PropertyDescriptor,boolean)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "getDimensions", "(JSONArray)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "getDouble", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "getInt", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "getLong", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "isExpandElements", "()", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "optBoolean", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "optBoolean", "(int,boolean)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "optDouble", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "optDouble", "(int,double)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "optInt", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "optInt", "(int,int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "optLong", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "optLong", "(int,long)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "removeAll", "(Collection,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "retainAll", "(Collection,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "setExpandElements", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "toArray", "(JSONArray)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "toArray", "(JSONArray,Class)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "toArray", "(JSONArray,Class,Map)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "toArray", "(JSONArray,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json", "JSONArray", "toArray", "(JSONArray,Object,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json", "JSONException", "JSONException", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONException", "JSONException", "(String,Throwable)", "summary", "df-generated"] + - ["net.sf.json", "JSONException", "JSONException", "(Throwable)", "summary", "df-generated"] + - ["net.sf.json", "JSONNull", "getInstance", "()", "summary", "df-generated"] + - ["net.sf.json", "JSONNull", "toString", "()", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "JSONObject", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "containsValue", "(Object,JsonConfig)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "getBoolean", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "getDouble", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "getInt", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "getLong", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "has", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "isNullObject", "()", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "optBoolean", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "optBoolean", "(String,boolean)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "optDouble", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "optDouble", "(String,double)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "optInt", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "optInt", "(String,int)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "optLong", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "optLong", "(String,long)", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "toBean", "()", "summary", "df-generated"] + - ["net.sf.json", "JSONObject", "toBean", "(JSONObject)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "addIgnoreFieldAnnotation", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "clearJavaPropertyNameProcessors", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "clearJsonBeanProcessors", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "clearJsonEventListeners", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "clearJsonPropertyNameProcessors", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "clearJsonValueProcessors", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "clearPropertyExclusions", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "clearPropertyNameProcessors", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "disableEventTriggering", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "enableEventTriggering", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "getArrayMode", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "getCollectionType", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "getEnclosedType", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "getRootClass", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isAllowNonStringKeys", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isEventTriggeringEnabled", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isHandleJettisonEmptyElement", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isHandleJettisonSingleElementArray", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isIgnoreDefaultExcludes", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isIgnoreJPATransient", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isIgnorePublicFields", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isIgnoreTransientFields", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isIgnoreUnreadableProperty", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isJavascriptCompliant", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "isSkipJavaIdentifierTransformationInMapKeys", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "registerPropertyExclusion", "(Class,String)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "registerPropertyExclusions", "(Class,String[])", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "removeIgnoreFieldAnnotation", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "removeIgnoreFieldAnnotation", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "removeJsonEventListener", "(JsonEventListener)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "reset", "()", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setAllowNonStringKeys", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setArrayMode", "(int)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setCollectionType", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setEnclosedType", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setHandleJettisonEmptyElement", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setHandleJettisonSingleElementArray", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setIgnoreDefaultExcludes", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setIgnoreJPATransient", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setIgnorePublicFields", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setIgnoreTransientFields", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setIgnoreUnreadableProperty", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setJavascriptCompliant", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setRootClass", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "setSkipJavaIdentifierTransformationInMapKeys", "(boolean)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterDefaultValueProcessor", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterJavaPropertyNameProcessor", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterJsonBeanProcessor", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterJsonPropertyNameProcessor", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterJsonValueProcessor", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterJsonValueProcessor", "(Class,Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterJsonValueProcessor", "(Class,String)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterJsonValueProcessor", "(String)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterPropertyExclusion", "(Class,String)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterPropertyExclusions", "(Class)", "summary", "df-generated"] + - ["net.sf.json", "JsonConfig", "unregisterPropertyNameProcessor", "(Class)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/jenkins.model.yml b/java/ql/lib/ext/generated/jenkins.model.yml new file mode 100644 index 00000000000..82202559350 --- /dev/null +++ b/java/ql/lib/ext/generated/jenkins.model.yml @@ -0,0 +1,8330 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +# Definitions of models for the Jenkins framework. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["antlr", "ANTLRException", true, "ANTLRException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "BuildCommand$CLICause", true, "CLICause", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLICommand", true, "getTransportAuthentication2", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "CLICommand", true, "getTransportAuthentication", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "CLICommand", true, "main", "(List,Locale,InputStream,PrintStream,PrintStream)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLICommand", true, "main", "(List,Locale,InputStream,PrintStream,PrintStream)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLICommand", true, "main", "(List,Locale,InputStream,PrintStream,PrintStream)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLICommand", true, "main", "(List,Locale,InputStream,PrintStream,PrintStream)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLICommand", true, "setTransportAuth2", "(Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLICommand", true, "setTransportAuth", "(Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "authorization", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "authorization", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "basicAuth", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "basicAuth", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "basicAuth", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "basicAuth", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "basicAuth", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "basicAuth", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "basicAuth", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "basicAuth", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "bearerAuth", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "bearerAuth", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "CLIConnectionFactory", true, "bearerAuth", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "Connection", true, "Connection", "(InputStream,OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "Connection", true, "Connection", "(InputStream,OutputStream)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "Connection", true, "readByteArray", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "Connection", true, "readUTF", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "Connection", true, "writeByteArray", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "FullDuplexHttpStream", true, "FullDuplexHttpStream", "(URL,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.cli", "FullDuplexHttpStream", true, "getInputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "FullDuplexHttpStream", true, "getOutputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.cli", "PrivateKeyProvider", true, "getKeys", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "AnnotatedLargeText", true, "AnnotatedLargeText", "(ByteBuffer,Charset,boolean,Object)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.console", "AnnotatedLargeText", true, "AnnotatedLargeText", "(File,Charset,boolean,Object)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.console", "ConsoleAnnotationOutputStream", true, "ConsoleAnnotationOutputStream", "(Writer,ConsoleAnnotator,Object,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.console", "ConsoleAnnotationOutputStream", true, "ConsoleAnnotationOutputStream", "(Writer,ConsoleAnnotator,Object,Charset)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.console", "ConsoleAnnotationOutputStream", true, "ConsoleAnnotationOutputStream", "(Writer,ConsoleAnnotator,Object,Charset)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.console", "ConsoleAnnotationOutputStream", true, "getConsoleAnnotator", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ConsoleAnnotator", true, "cast", "(ConsoleAnnotator)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ConsoleAnnotator", true, "combine", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ConsoleLogFilter", true, "decorateLogger", "(AbstractBuild,OutputStream)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ConsoleLogFilter", true, "decorateLogger", "(Computer,OutputStream)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ConsoleLogFilter", true, "decorateLogger", "(Run,OutputStream)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ConsoleNote", true, "removeNotes", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ConsoleNote", true, "removeNotes", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ExpandableDetailsNote", true, "ExpandableDetailsNote", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.console", "ExpandableDetailsNote", true, "ExpandableDetailsNote", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.console", "HyperlinkNote", true, "HyperlinkNote", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.console", "HyperlinkNote", true, "encodeTo", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ModelHyperlinkNote", true, "ModelHyperlinkNote", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.console", "ModelHyperlinkNote", true, "encodeTo", "(Item)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ModelHyperlinkNote", true, "encodeTo", "(Item,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ModelHyperlinkNote", true, "encodeTo", "(Label)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ModelHyperlinkNote", true, "encodeTo", "(Node)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ModelHyperlinkNote", true, "encodeTo", "(Run)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ModelHyperlinkNote", true, "encodeTo", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ModelHyperlinkNote", true, "encodeTo", "(User)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "ModelHyperlinkNote", true, "encodeTo", "(User,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.console", "PlainTextConsoleOutputStream", true, "PlainTextConsoleOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.diagnosis", "HudsonHomeDiskUsageMonitor$Solution", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.diagnosis", "MemoryUsageMonitor$MemoryGroup", false, "doGraph", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.diagnosis", "NullIdDescriptorMonitor", true, "getProblems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor$VersionRange", true, "VersionRange", "(VersionRange,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor$VersionRange", true, "VersionRange", "(VersionRange,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor$VersionRange", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor", true, "getData", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor", true, "getVersionList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.diagnosis", "ReverseProxySetupMonitor", true, "doTest", "(StaplerRequest,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.init", "InitializerFinder", true, "InitializerFinder", "(ClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.init", "TaskMethodFinder$TaskImpl", true, "getAnnotation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.init", "TaskMethodFinder$TaskImpl", true, "getMethod", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.init", "TerminatorFinder", true, "TerminatorFinder", "(ClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.lifecycle", "RestartNotSupportedException", true, "RestartNotSupportedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.lifecycle", "WindowsInstallerLink", true, "doDoInstall", "(StaplerRequest,StaplerResponse,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", false, "Target", "(String,Level)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", false, "Target", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", false, "Target", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", false, "getLogger", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder", true, "LogRecorder", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder", true, "getAutoCompletionCandidates", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder", true, "getLoggers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.logging", "LogRecorder", true, "setLoggers", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.logging", "LogRecorderManager", true, "getDynamic", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.logging", "LogRecorderManager", true, "getLogRecorder", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.logging", "LogRecorderManager", true, "getRecorders", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.logging", "LogRecorderManager", true, "setRecorders", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.logging", "WeakLogHandler", false, "WeakLogHandler", "(Handler,Logger)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelAtom", true, "LabelAtom", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelAtom", true, "get", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.labels", "LabelAtom", true, "getProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.labels", "LabelAtom", true, "setDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$And", false, "And", "(Label,Label)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$And", false, "And", "(Label,Label)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$Iff", false, "Iff", "(Label,Label)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$Iff", false, "Iff", "(Label,Label)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$Implies", false, "Implies", "(Label,Label)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$Implies", false, "Implies", "(Label,Label)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$Not", true, "Not", "(Label)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$Or", false, "Or", "(Label,Label)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$Or", false, "Or", "(Label,Label)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.labels", "LabelExpression$Paren", true, "Paren", "(Label)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage$BecauseLabelIsBusy", false, "BecauseLabelIsBusy", "(Label)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage$BecauseLabelIsOffline", false, "BecauseLabelIsOffline", "(Label)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage$BecauseNodeIsBusy", false, "BecauseNodeIsBusy", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage$BecauseNodeIsNotAcceptingTasks", false, "BecauseNodeIsNotAcceptingTasks", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage$BecauseNodeIsOffline", false, "BecauseNodeIsOffline", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage", true, "createNeedsMoreExecutor", "(Localizable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage", true, "getShortDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "Executables", true, "getParentOf", "(Executable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "FutureImpl", false, "FutureImpl", "(Task)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$ExecutorChunk", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$ExecutorSlot", true, "getExecutor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$Mapping", false, "assign", "(int,ExecutorChunk)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$Mapping", false, "assign", "(int,ExecutorChunk)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$Mapping", false, "assigned", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$Mapping", false, "toMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet", true, "MappingWorksheet", "(BuildableItem,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet", true, "MappingWorksheet", "(BuildableItem,List,Collection)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet", true, "executors", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet", true, "works", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", true, "created", "(WaitingItem)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", true, "existing", "(Item)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", true, "getCreateItem", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", true, "getItem", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "SubTask", true, "getAssignedLabel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "SubTask", true, "getOwnerTask", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "SubTask", true, "getSameNodeConstraint", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "SubTask", true, "getSameNodeConstraint", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model.queue", "Tasks", true, "getItemOf", "(SubTask)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "Tasks", true, "getOwnerTaskOf", "(SubTask)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "Tasks", true, "getSameNodeConstraintOf", "(SubTask)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "Tasks", true, "getSubTasksOf", "(Task)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnit", false, "getExecutable", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnit", false, "getExecutor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnit", false, "setExecutable", "(Executable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnit", false, "setExecutor", "(Executor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnit", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnitContext", false, "WorkUnitContext", "(BuildableItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnitContext", false, "abort", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnitContext", false, "createWorkUnit", "(SubTask)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnitContext", false, "createWorkUnit", "(SubTask)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnitContext", false, "getPrimaryWorkUnit", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model.queue", "WorkUnitContext", false, "getWorkUnits", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild$AbstractBuildExecution", true, "getLauncher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild$AbstractBuildExecution", true, "getListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild$DependencyChange", false, "DependencyChange", "(AbstractProject,int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getBuiltOnStr", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getChangeSet", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getEnvironments", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getHudsonVersion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getModuleRoot", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getModuleRoots", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getPersistentActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getProject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getRootBuild", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "AbstractBuild", true, "getWorkspace", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractCIBase", true, "getDisabledAdministrativeMonitors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractCIBase", true, "getNodes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractCIBase", true, "getQueue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractCIBase", true, "setDisabledAdministrativeMonitors", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "doConfirmRename", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "doConfirmRename", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "getConfigFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "getDisplayNameOrNull", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "getRelativeDisplayNameFrom", "(ItemGroup)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "getRelativeNameFromGroup", "(ItemGroup)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "movedTo", "(DirectlyModifiableTopLevelItemGroup,AbstractItem,File)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "movedTo", "(DirectlyModifiableTopLevelItemGroup,AbstractItem,File)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "renameTo", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "setDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "setDisplayName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "setDisplayNameOrNull", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractItem", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractProject$BecauseOfBuildInProgress", true, "BecauseOfBuildInProgress", "(AbstractBuild)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractProject$BecauseOfDownstreamBuildInProgress", true, "BecauseOfDownstreamBuildInProgress", "(AbstractProject)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractProject$BecauseOfUpstreamBuildInProgress", true, "BecauseOfUpstreamBuildInProgress", "(AbstractProject)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "addTrigger", "(Trigger)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "doWs", "(StaplerRequest,StaplerResponse)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "getAssignedLabelString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "getCustomWorkspace", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "getRelevantLabels", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "getRootProject", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "AbstractProject", true, "getScm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "getScmCheckoutStrategy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "getWorkspaceResource", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "setCustomWorkspace", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "setJDK", "(JDK)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "setScm", "(SCM)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AbstractProject", true, "setScmCheckoutStrategy", "(SCMCheckoutStrategy)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "addAction", "(Action)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "addAction", "(Action)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "addOrReplaceAction", "(Action)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "addOrReplaceAction", "(Action)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "getAction", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "getActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "getAllActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "getDynamic", "(String,StaplerRequest,StaplerResponse)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "replaceAction", "(Action)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.model", "Actionable", true, "replaceAction", "(Action)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AdministrativeMonitor", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "AllView", true, "AllView", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AllView", true, "AllView", "(String,ViewGroup)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AllView", true, "AllView", "(String,ViewGroup)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AllView", true, "migrateLegacyPrimaryAllViewLocalizedName", "(List,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Api", true, "Api", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AutoCompletionCandidates", true, "add", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "AutoCompletionCandidates", true, "add", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AutoCompletionCandidates", true, "add", "(String[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "AutoCompletionCandidates", true, "add", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "AutoCompletionCandidates", true, "getValues", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "BallColor", false, "anime", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "BallColor", false, "noAnime", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "BooleanParameterDefinition", true, "BooleanParameterDefinition", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "BooleanParameterDefinition", true, "BooleanParameterDefinition", "(String,boolean,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "BooleanParameterDefinition", true, "BooleanParameterDefinition", "(String,boolean,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "BooleanParameterValue", true, "BooleanParameterValue", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "BooleanParameterValue", true, "BooleanParameterValue", "(String,boolean,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "BooleanParameterValue", true, "BooleanParameterValue", "(String,boolean,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "BooleanParameterValue", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "BuildAuthorizationToken", false, "BuildAuthorizationToken", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "BuildAuthorizationToken", false, "getToken", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "BuildTimelineWidget", true, "BuildTimelineWidget", "(RunList)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "BuildTimelineWidget", true, "getFirstBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "BuildTimelineWidget", true, "getLastBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "BuildableItemWithBuildWrappers", true, "asProject", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "BuildableItemWithBuildWrappers", true, "getBuildWrappersList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$RemoteCause", true, "RemoteCause", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Cause$RemoteCause", true, "RemoteCause", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Cause$RemoteCause", true, "getAddr", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$RemoteCause", true, "getNote", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause$ConverterImpl", true, "ConverterImpl", "(XStream2)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", true, "UpstreamCause", "(AbstractBuild)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", true, "UpstreamCause", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", true, "getUpstreamCauses", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", true, "getUpstreamProject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", true, "getUpstreamUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$UserCause", true, "getUserName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$UserIdCause", true, "UserIdCause", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Cause$UserIdCause", true, "getUserId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$UserIdCause", true, "getUserName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause$UserIdCause", true, "getUserUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Cause", true, "onAddedTo", "(AbstractBuild)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Cause", true, "onAddedTo", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Cause", true, "onLoad", "(AbstractBuild)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Cause", true, "onLoad", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "CauseAction$ConverterImpl", true, "ConverterImpl", "(XStream2)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "CauseAction", true, "CauseAction", "(Cause)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "CauseAction", true, "CauseAction", "(CauseAction)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "CauseAction", true, "CauseAction", "(Cause[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "CauseAction", true, "CauseAction", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "CauseAction", true, "getCauseCounts", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "CauseAction", true, "getCauses", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "CheckPoint", false, "CheckPoint", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "CheckPoint", false, "CheckPoint", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "CheckPoint", false, "CheckPoint", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "CheckPoint", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "ChoiceParameterDefinition", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "ChoiceParameterDefinition", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "ChoiceParameterDefinition", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "ChoiceParameterDefinition", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "ChoiceParameterDefinition", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "ChoiceParameterDefinition", "(String,String[],String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "ChoiceParameterDefinition", "(String,String[],String)", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "ChoiceParameterDefinition", "(String,String[],String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "getChoices", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "getChoicesText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", true, "setChoices", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Computer$DisplayExecutor", true, "DisplayExecutor", "(String,String,Executor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Computer$DisplayExecutor", true, "DisplayExecutor", "(String,String,Executor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Computer$DisplayExecutor", true, "DisplayExecutor", "(String,String,Executor)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Computer$DisplayExecutor", true, "getExecutor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer$DisplayExecutor", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer$DisplayExecutor", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer$TerminationRequest", true, "TerminationRequest", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "cliDisconnect", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "cliOffline", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "connect", "(boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "disconnect", "(OfflineCause)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getAllExecutors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getChannel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getComputerPanelBoxs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getDisplayExecutors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getEnvVars", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getEnvironment", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getExecutors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getHeapDump", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getHostName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getLogFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getLogText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getOfflineCause", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getOneOffExecutors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getTerminatedBy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "getWorkspaceList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Computer", true, "setTemporarilyOffline", "(boolean,OfflineCause)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ComputerPanelBox", true, "all", "(Computer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ComputerPanelBox", true, "getComputer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ComputerPanelBox", true, "setComputer", "(Computer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ComputerSet", false, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph$Dependency", true, "Dependency", "(AbstractProject,AbstractProject)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph$Dependency", true, "Dependency", "(AbstractProject,AbstractProject)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph$Dependency", true, "getDownstreamProject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph$Dependency", true, "getUpstreamProject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph$Dependency", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph", true, "getComputationalData", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph", true, "getDownstream", "(AbstractProject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph", true, "getDownstreamDependencies", "(AbstractProject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph", true, "getTopologicallySorted", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph", true, "getTransitiveDownstream", "(AbstractProject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph", true, "getTransitiveUpstream", "(AbstractProject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph", true, "getUpstream", "(AbstractProject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph", true, "getUpstreamDependencies", "(AbstractProject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DependencyGraph", true, "putComputationalData", "(Class,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Descriptor$FormException", false, "FormException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Descriptor$FormException", false, "FormException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Descriptor$FormException", false, "FormException", "(String,Throwable,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Descriptor$FormException", false, "FormException", "(Throwable,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Descriptor$FormException", false, "getFormField", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "find", "(Collection,String)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "findByDescribableClassName", "(Collection,String)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "findById", "(Collection,String)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getCheckMethod", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getCheckMethod", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getCheckUrl", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getCheckUrl", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getGlobalPropertyType", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getHelpFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getHelpFile", "(Klass,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getHelpFile", "(Klass,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getHelpFile", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getHelpFile", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getPropertyType", "(Object,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getPropertyType", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "getPropertyTypeOrDie", "(Object,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "toArray", "(Object[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "toList", "(Object[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Descriptor", true, "toMap", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DescriptorVisibilityFilter", true, "apply", "(Object,Iterable)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DescriptorVisibilityFilter", true, "applyType", "(Class,Iterable)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DirectlyModifiableView", true, "add", "(TopLevelItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", false, "Path", "(String,String,boolean,long,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", false, "Path", "(String,String,boolean,long,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", false, "Path", "(String,String,boolean,long,boolean,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", false, "Path", "(String,String,boolean,long,boolean,long)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", false, "createNotReadableVersionOf", "(Path)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", false, "getHref", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", false, "getTitle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,FilePath,String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,FilePath,String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,FilePath,String,String,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,FilePath,String,String,boolean)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,VirtualFile,String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,VirtualFile,String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,VirtualFile,String,String,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "DirectoryBrowserSupport", "(ModelObject,VirtualFile,String,String,boolean)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", false, "setIndexFileName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "Downloadable", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "Downloadable", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "Downloadable", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "Downloadable", "(String,String,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "Downloadable", "(String,String,long)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "getDataFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "getUrls", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", true, "reduce", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Environment", true, "buildEnvVars", "(Map)", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.model", "EnvironmentContributingAction", true, "buildEnvVars", "(AbstractBuild,EnvVars)", "", "Argument[this]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.model", "EnvironmentContributingAction", true, "buildEnvironment", "(Run,EnvVars)", "", "Argument[this]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.model", "EnvironmentContributor", true, "buildEnvironmentFor", "(Job,EnvVars,TaskListener)", "", "Argument[0]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.model", "EnvironmentContributor", true, "buildEnvironmentFor", "(Run,EnvVars,TaskListener)", "", "Argument[0]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.model", "EnvironmentList", false, "EnvironmentList", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "Executor", "(Computer,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "abortResult", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "getAsynchronousExecution", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "getCausesOfInterruption", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "getCurrentExecutable", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "getCurrentExecutableForApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "getCurrentWorkUnit", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "getCurrentWorkspace", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "getOwner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "interrupt", "(Result)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "interrupt", "(Result,CauseOfInterruption[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Executor", true, "interrupt", "(Result,CauseOfInterruption[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Failure", true, "Failure", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Failure", true, "Failure", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterDefinition", true, "FileParameterDefinition", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterDefinition", true, "FileParameterDefinition", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterDefinition", true, "FileParameterDefinition", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue$FileItemImpl", false, "FileItemImpl", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "FileParameterValue", "(String,File,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "FileParameterValue", "(String,File,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "FileParameterValue", "(String,File,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "FileParameterValue", "(String,FileItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "FileParameterValue", "(String,FileItem)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "doDynamic", "(StaplerRequest,StaplerResponse)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "getFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "getLocation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "getOriginalFileName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FileParameterValue", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", true, "BuildPtr", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", true, "BuildPtr", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$RangeItem", false, "RangeItem", "(String,RangeSet)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$RangeItem", false, "RangeItem", "(String,RangeSet)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet$ConverterImpl", false, "ConverterImpl", "(Converter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", false, "add", "(RangeSet)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", false, "getRanges", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "Fingerprint", "(Run,String,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "Fingerprint", "(Run,String,byte[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "Fingerprint", "(Run,String,byte[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "_getUsages", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "add", "(AbstractBuild)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "add", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "addFor", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getFacetBlockingDeletion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getFileName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getHashString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getJobs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getOriginal", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getPersistedFacets", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getRangeSet", "(Job)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getRangeSet", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getTimestamp", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "getUsages", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "rename", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Fingerprint", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,byte[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,byte[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,byte[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,byte[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(AbstractBuild,String,byte[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(Run,String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(Run,String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(Run,String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(Run,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FingerprintMap", false, "getOrCreate", "(Run,String,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "FreeStyleBuild", true, "FreeStyleBuild", "(FreeStyleProject)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FreeStyleBuild", true, "FreeStyleBuild", "(FreeStyleProject,File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FreeStyleProject", true, "FreeStyleProject", "(ItemGroup,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FreeStyleProject", true, "FreeStyleProject", "(ItemGroup,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FreeStyleProject", true, "FreeStyleProject", "(Jenkins,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FreeStyleProject", true, "FreeStyleProject", "(Jenkins,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "FullDuplexHttpChannel", true, "getChannel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport$ConverterImpl", true, "ConverterImpl", "(XStream2)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "HealthReport", "(int,Localizable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "HealthReport", "(int,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "HealthReport", "(int,String,Localizable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "HealthReport", "(int,String,Localizable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "HealthReport", "(int,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "HealthReport", "(int,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "getIconClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "getIconUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "getIconUrl", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "getIconUrl", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "getLocalizableDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "max", "(HealthReport,HealthReport)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "max", "(HealthReport,HealthReport)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "min", "(HealthReport,HealthReport)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "min", "(HealthReport,HealthReport)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "setDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "setIconUrl", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "HealthReport", true, "setLocalizibleDescription", "(Localizable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Hudson$CloudList", true, "CloudList", "(Jenkins)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "Hudson", "(File,ServletContext)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "Hudson", "(File,ServletContext)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "Hudson", "(File,ServletContext,PluginManager)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "Hudson", "(File,ServletContext,PluginManager)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "Hudson", "(File,ServletContext,PluginManager)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "getComputerListeners", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "getJob", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "getJobCaseInsensitive", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "getJobListeners", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "getSlave", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Hudson", true, "getSlaves", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getAbsoluteUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getAllJobs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getFullDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getFullName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getRelativeNameFrom", "(Item)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getRelativeNameFrom", "(ItemGroup)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getShortUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Item", true, "onLoad", "(ItemGroup,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Item", true, "onLoad", "(ItemGroup,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ItemGroup", true, "allItems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemGroup", true, "allItems", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemGroup", true, "allItems", "(Class,Predicate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemGroup", true, "allItems", "(Class,Predicate)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemGroup", true, "getItems", "(Predicate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemGroup", true, "getItemsStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemGroup", true, "getItemsStream", "(Predicate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemGroupMixIn", true, "createProject", "(TopLevelItemDescriptor,String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemGroupMixIn", true, "createTopLevelItem", "(StaplerRequest,StaplerResponse)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemGroupMixIn", true, "loadChildren", "(ItemGroup,File,Function1)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ItemVisitor", true, "onItem", "(Item)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ItemVisitor", true, "onItemGroup", "(ItemGroup)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems2", "(Authentication,ItemGroup,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems2", "(Authentication,ItemGroup,Class)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems2", "(Authentication,ItemGroup,Class,Predicate)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems2", "(Authentication,ItemGroup,Class,Predicate)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems2", "(Authentication,ItemGroup,Class,Predicate)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems", "(Authentication,ItemGroup,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems", "(Authentication,ItemGroup,Class)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems", "(Authentication,ItemGroup,Class,Predicate)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems", "(Authentication,ItemGroup,Class,Predicate)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems", "(Authentication,ItemGroup,Class,Predicate)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems", "(ItemGroup,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems", "(ItemGroup,Class,Predicate)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "allItems", "(ItemGroup,Class,Predicate)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "computeRelativeNamesAfterRenaming", "(String,String,String,ItemGroup)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "computeRelativeNamesAfterRenaming", "(String,String,String,ItemGroup)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "getCanonicalName", "(ItemGroup,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "getConfigFile", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "getConfigFile", "(Item)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "load", "(ItemGroup,File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "load", "(ItemGroup,File)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "move", "(AbstractItem,DirectlyModifiableTopLevelItemGroup)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.model", "Items", true, "move", "(AbstractItem,DirectlyModifiableTopLevelItemGroup)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "move", "(AbstractItem,DirectlyModifiableTopLevelItemGroup)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["hudson.model", "Items", true, "move", "(AbstractItem,DirectlyModifiableTopLevelItemGroup)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Items", true, "toNameList", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "JDK$ConverterImpl", true, "ConverterImpl", "(XStream2)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "JDK", false, "JDK", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "JDK", false, "JDK", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "JDK", false, "JDK", "(String,String,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "JDK", false, "JDK", "(String,String,List)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "JDK", false, "buildEnvVars", "(Map)", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.model", "JDK", false, "getBinDir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "JDK", false, "getJavaHome", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "addProperty", "(JobProperty)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getAllProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuild", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuildByNumber", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuildDir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuildDiscarder", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuildForCLI", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuildHealth", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuildHealthReports", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuilds", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuilds", "(RangeSet)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuildsAsMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getBuildsByTimestamp", "(long,long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getCharacteristicEnvVars", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getEnvironment", "(Node,TaskListener)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getFirstBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getLastBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getLastBuildsOverThreshold", "(int,Result)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getLastCompletedBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getLastFailedBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getLastStableBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getLastSuccessfulBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getLastUnstableBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getLastUnsuccessfulBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getLogRotator", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getNearestBuild", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getNearestOldBuild", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getNewBuilds", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getProperty", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getTimeline", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Job", true, "getWidgets", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "accept", "(LabelVisitor,Object)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["hudson.model", "Label", true, "and", "(Label)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "and", "(Label)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "get", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "getClouds", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "getExpression", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "getNodes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "getSortedNodes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "iff", "(Label)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "iff", "(Label)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "implies", "(Label)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "implies", "(Label)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "listAtoms", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "not", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "or", "(Label)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "or", "(Label)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "paren", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Label", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ListView", true, "ListView", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ListView", true, "ListView", "(String,ViewGroup)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ListView", true, "ListView", "(String,ViewGroup)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ListView", true, "getIncludeRegex", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ListView", true, "getJobFilters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ListView", true, "getJobNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ListView", true, "setIncludeRegex", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ListView", true, "setJobNames", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot$Builder", true, "with", "(Computer)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot$Builder", true, "with", "(Node)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot$Builder", true, "withQueueLength", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "LoadStatistics", true, "createTrendChart", "(TimeScale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "LoadStatistics", true, "doGraph", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "LoadStatistics", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ModelObject", true, "getDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ModifiableViewGroup", true, "addView", "(View)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries$TrendChart", true, "TrendChart", "(TimeScale,MultiStageTimeSeries[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries", true, "MultiStageTimeSeries", "(Localizable,Color,float,float)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries", true, "MultiStageTimeSeries", "(Localizable,Color,float,float)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries", true, "createTrendChart", "(TimeScale,MultiStageTimeSeries[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries", true, "pick", "(TimeScale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "MyView", true, "MyView", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "MyView", true, "MyView", "(String,ViewGroup)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "MyView", true, "MyView", "(String,ViewGroup)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "MyViewsProperty", true, "MyViewsProperty", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "MyViewsProperty", true, "getPrimaryViewName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "MyViewsProperty", true, "getUser", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "MyViewsProperty", true, "readResolve", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "MyViewsProperty", true, "setPrimaryViewName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "NoFingerprintMatch", true, "NoFingerprintMatch", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Node", true, "canTake", "(BuildableItem)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "createComputer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "createLauncher", "(TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "createPath", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "getAssignedLabels", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "getLabelString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "getNodeDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "getNodeName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "getNodeProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "getNodeProperty", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "getSelfLabel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "getTemporaryOfflineCause", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "getWorkspaceFor", "(TopLevelItem)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Node", true, "setLabelString", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Node", true, "setNodeName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "OneOffExecutor", true, "OneOffExecutor", "(Computer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PaneStatusProperties", true, "toggleCollapsed", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "copyWithDefaultValue", "(ParameterValue)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "createValue", "(CLICommand,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "createValue", "(CLICommand,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "createValue", "(StaplerRequest)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "createValue", "(StaplerRequest)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "createValue", "(StaplerRequest,JSONObject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "getDefaultParameterValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterDefinition", true, "setDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ParameterValue", true, "buildEnvVars", "(AbstractBuild,EnvVars)", "", "Argument[this]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.model", "ParameterValue", true, "buildEnvVars", "(AbstractBuild,Map)", "", "Argument[this]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.model", "ParameterValue", true, "buildEnvironment", "(Run,EnvVars)", "", "Argument[this]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.model", "ParameterValue", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterValue", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterValue", true, "getShortDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterValue", true, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParameterValue", true, "setDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "ParametersAction", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "ParametersAction", "(List,Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "ParametersAction", "(List,Collection)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "ParametersAction", "(ParameterValue[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "createUpdated", "(Collection)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "createUpdated", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "getAllParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "getParameter", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "getParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "merge", "(ParametersAction)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "merge", "(ParametersAction)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersAction", true, "substitute", "(AbstractBuild,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", true, "ParametersDefinitionProperty", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", true, "ParametersDefinitionProperty", "(ParameterDefinition[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", true, "getJob", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", true, "getJobActions", "(AbstractProject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", true, "getOwner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", true, "getParameterDefinition", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", true, "getParameterDefinitionNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", true, "getParameterDefinitions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", true, "getProject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterDefinition", true, "PasswordParameterDefinition", "(String,Secret,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterDefinition", true, "PasswordParameterDefinition", "(String,Secret,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterDefinition", true, "PasswordParameterDefinition", "(String,Secret,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterDefinition", true, "PasswordParameterDefinition", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterDefinition", true, "PasswordParameterDefinition", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterDefinition", true, "PasswordParameterDefinition", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterDefinition", true, "getDefaultValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterDefinition", true, "getDefaultValueAsSecret", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterDefinition", true, "setDefaultValue", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterValue", true, "PasswordParameterValue", "(String,Secret,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterValue", true, "PasswordParameterValue", "(String,Secret,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterValue", true, "PasswordParameterValue", "(String,Secret,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterValue", true, "PasswordParameterValue", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterValue", true, "PasswordParameterValue", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterValue", true, "PasswordParameterValue", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterValue", true, "PasswordParameterValue", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PasswordParameterValue", true, "PasswordParameterValue", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "PermalinkProjectAction$Permalink", true, "resolve", "(Job)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "PersistenceRoot", true, "getRootDir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Project", true, "addPublisher", "(Publisher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Project", true, "getBuildWrappers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Project", true, "getBuildersList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Project", true, "getPublisher", "(Descriptor)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Project", true, "getPublishers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ProxyView", true, "ProxyView", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ProxyView", true, "getProxiedViewName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ProxyView", true, "setProxiedViewName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$BlockedItem", false, "BlockedItem", "(NotWaitingItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$BlockedItem", false, "BlockedItem", "(WaitingItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$BuildableItem", false, "BuildableItem", "(NotWaitingItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$BuildableItem", false, "BuildableItem", "(WaitingItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$Executable", true, "getParentExecutable", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Item", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Item", true, "getAssignedLabel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Item", true, "getAssignedLabelFor", "(SubTask)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Item", true, "getCauseOfBlockage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Item", true, "getFuture", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Item", true, "getWhy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Item", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$LeftItem", false, "LeftItem", "(Item)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$LeftItem", false, "LeftItem", "(WorkUnitContext)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$StubItem", true, "StubItem", "(StubTask)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$StubTask", true, "StubTask", "(Task)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$StubTask", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Task", true, "getAffinityKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Task", true, "getFullDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Task", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Task", true, "getSubTasks", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$Task", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue$WaitingItem", false, "WaitingItem", "(Calendar,Task,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$WaitingItem", false, "WaitingItem", "(Calendar,Task,List)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue$WaitingItem", false, "WaitingItem", "(Calendar,Task,List)", "", "Argument[2].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getBuildableItems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getBuildableItems", "(Computer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getItem", "(Task)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getItem", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getItems", "(Task)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getLeftItems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getLoadBalancer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getPendingItems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getSorter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "getUnblockedItems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule2", "(Task,int,Action[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule2", "(Task,int,Action[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule2", "(Task,int,List)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule2", "(Task,int,List)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule", "(AbstractProject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule", "(Task,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule", "(Task,int,Action[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule", "(Task,int,Action[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule", "(Task,int,List)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "schedule", "(Task,int,List)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "scheduleMaintenance", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "setSorter", "(QueueSorter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "wrapWithLock", "(Callable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Queue", true, "wrapWithLock", "(Runnable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Resource", false, "Resource", "(Resource,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Resource", false, "Resource", "(Resource,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Resource", false, "Resource", "(Resource,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Resource", false, "Resource", "(Resource,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Resource", false, "Resource", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Resource", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ResourceActivity", true, "getDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ResourceController", true, "getBlockingActivity", "(ResourceActivity)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ResourceList", false, "getConflict", "(ResourceList)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ResourceList", false, "getConflict", "(ResourceList)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ResourceList", false, "r", "(Resource)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "ResourceList", false, "r", "(Resource)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "ResourceList", false, "union", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ResourceList", false, "union", "(ResourceList[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ResourceList", false, "w", "(Resource)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "ResourceList", false, "w", "(Resource)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Result", false, "combine", "(Result)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "Result", false, "combine", "(Result,Result)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Result", false, "combine", "(Result,Result)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Result", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$Artifact", true, "getDisplayPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$Artifact", true, "getFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$Artifact", true, "getFileName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$Artifact", true, "getHref", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$Artifact", true, "getLength", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$Artifact", true, "getTreeNodeId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$Artifact", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$ArtifactList", false, "getTree", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$RunExecution", true, "getAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run$Summary", true, "Summary", "(boolean,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Run", true, "doArtifact", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getArtifactManager", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getArtifactsDir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getCharacteristicEnvVars", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getEnvVars", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getEnvironment", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getEnvironment", "(TaskListener)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getExternalizableId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getFullDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getLogFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getLogInputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getLogReader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getLogText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getNextBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getPreviousBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getPreviousBuildInProgress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getPreviousBuildsOverThreshold", "(int,Result)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getPreviousBuiltBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getPreviousCompletedBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getPreviousFailedBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getPreviousNotFailedBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getPreviousSuccessfulBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getResult", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getTruncatedDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "pickArtifactManager", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Run", true, "setDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Run", true, "setDisplayName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Run", true, "setResult", "(Result)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Run", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "RunMap", false, "RunMap", "(File,Constructor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunMap", false, "RunMap", "(File,Constructor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunMap", false, "getView", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "RunMap", false, "load", "(Job,Constructor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunMap", false, "load", "(Job,Constructor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterDefinition", true, "RunParameterDefinition", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterDefinition", true, "RunParameterDefinition", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterDefinition", true, "RunParameterDefinition", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterDefinition", true, "RunParameterDefinition", "(String,String,String,RunParameterFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterDefinition", true, "RunParameterDefinition", "(String,String,String,RunParameterFilter)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterDefinition", true, "RunParameterDefinition", "(String,String,String,RunParameterFilter)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterDefinition", true, "getProjectName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "RunParameterValue", true, "RunParameterValue", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterValue", true, "RunParameterValue", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterValue", true, "RunParameterValue", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterValue", true, "RunParameterValue", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterValue", true, "RunParameterValue", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "RunParameterValue", true, "getJobName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "RunParameterValue", true, "getNumber", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "RunParameterValue", true, "getRunId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "RunParameterValue", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "SimpleParameterDefinition", true, "createValue", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "SimpleParameterDefinition", true, "createValue", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Slave$JnlpJar", false, "JnlpJar", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Slave", true, "getLauncher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Slave", true, "getRemoteFS", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Slave", true, "getRetentionStrategy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Slave", true, "getUserId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "Slave", true, "setLauncher", "(ComputerLauncher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Slave", true, "setNodeDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Slave", true, "setRetentionStrategy", "(RetentionStrategy)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "Slave", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "StatusIcon", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "StatusIcon", true, "getImageOf", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "StatusIcon", true, "getImageOf", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "StockStatusIcon", false, "StockStatusIcon", "(String,Localizable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StockStatusIcon", false, "StockStatusIcon", "(String,Localizable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StreamBuildListener", true, "StreamBuildListener", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StreamBuildListener", true, "StreamBuildListener", "(OutputStream,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StreamBuildListener", true, "StreamBuildListener", "(PrintStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StreamBuildListener", true, "StreamBuildListener", "(PrintStream,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "StringParameterDefinition", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "StringParameterDefinition", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "StringParameterDefinition", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "StringParameterDefinition", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "StringParameterDefinition", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "StringParameterDefinition", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "StringParameterDefinition", "(String,String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "StringParameterDefinition", "(String,String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "StringParameterDefinition", "(String,String,String,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "getDefaultValue4Build", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "getDefaultValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "StringParameterDefinition", true, "setDefaultValue", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterValue", true, "StringParameterValue", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterValue", true, "StringParameterValue", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterValue", true, "StringParameterValue", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterValue", true, "StringParameterValue", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterValue", true, "StringParameterValue", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "StringParameterValue", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TaskAction", true, "getWorkerThread", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TaskListener", true, "getLogger", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TaskThread$ListenerAndText", false, "ListenerAndText", "(TaskListener,AnnotatedLargeText)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TaskThread$ListenerAndText", false, "ListenerAndText", "(TaskListener,AnnotatedLargeText)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TaskThread$ListenerAndText", false, "forFile", "(File,TaskAction)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TaskThread$ListenerAndText", false, "forMemory", "(TaskAction)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TextParameterDefinition", true, "TextParameterDefinition", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TextParameterDefinition", true, "TextParameterDefinition", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TextParameterDefinition", true, "TextParameterDefinition", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TextParameterDefinition", true, "TextParameterDefinition", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TextParameterValue", true, "TextParameterValue", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TextParameterValue", true, "TextParameterValue", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TextParameterValue", true, "TextParameterValue", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TextParameterValue", true, "TextParameterValue", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TextParameterValue", true, "TextParameterValue", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TextParameterValue", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TimeZoneProperty", true, "TimeZoneProperty", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TimeZoneProperty", true, "getTimeZoneName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TimeZoneProperty", true, "setTimeZoneName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", true, "getIconFilePath", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", true, "newInstance", "(ItemGroup,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", true, "newInstance", "(ItemGroup,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", true, "newInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$CompleteBatchJob", false, "CompleteBatchJob", "(List,long,UUID)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$CompleteBatchJob", false, "CompleteBatchJob", "(List,long,UUID)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$ConnectionCheckJob", false, "ConnectionCheckJob", "(UpdateSite)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$ConnectionCheckJob", false, "getStatuses", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob$Failure", true, "Failure", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob$Failure", true, "getProblemStackTrace", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob$SuccessButRequiresRestart", true, "SuccessButRequiresRestart", "(Localizable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob", true, "getDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob", true, "getUser", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$EnableJob", true, "EnableJob", "(UpdateSite,Authentication,Plugin,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$EnableJob", true, "EnableJob", "(UpdateSite,Authentication,Plugin,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$EnableJob", true, "EnableJob", "(UpdateSite,Authentication,Plugin,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$EnableJob", true, "getPlugin", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$HudsonDowngradeJob", false, "HudsonDowngradeJob", "(UpdateSite,Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$HudsonDowngradeJob", false, "HudsonDowngradeJob", "(UpdateSite,Authentication)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$HudsonUpgradeJob", false, "HudsonUpgradeJob", "(UpdateSite,Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$HudsonUpgradeJob", false, "HudsonUpgradeJob", "(UpdateSite,Authentication)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$InstallationJob", true, "InstallationJob", "(Plugin,UpdateSite,Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$InstallationJob", true, "InstallationJob", "(Plugin,UpdateSite,Authentication)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$InstallationJob", true, "InstallationJob", "(Plugin,UpdateSite,Authentication)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$InstallationJob", true, "InstallationJob", "(Plugin,UpdateSite,Authentication,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$InstallationJob", true, "InstallationJob", "(Plugin,UpdateSite,Authentication,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$InstallationJob", true, "InstallationJob", "(Plugin,UpdateSite,Authentication,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$InstallationJob", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$NoOpJob", true, "NoOpJob", "(UpdateSite,Authentication,Plugin)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$NoOpJob", true, "NoOpJob", "(UpdateSite,Authentication,Plugin)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$NoOpJob", true, "NoOpJob", "(UpdateSite,Authentication,Plugin)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$PluginDowngradeJob", false, "PluginDowngradeJob", "(Plugin,UpdateSite,Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$PluginDowngradeJob", false, "PluginDowngradeJob", "(Plugin,UpdateSite,Authentication)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$PluginDowngradeJob", false, "PluginDowngradeJob", "(Plugin,UpdateSite,Authentication)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$PluginDowngradeJob", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$RestartJenkinsJob", true, "RestartJenkinsJob", "(UpdateSite)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterJob", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterJob", true, "getCorrelationId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterJob", true, "getError", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterJob", true, "getErrorMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterJob", true, "setCorrelationId", "(UUID)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$WithComputedChecksums", true, "getComputedSHA1", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$WithComputedChecksums", true, "getComputedSHA256", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter$WithComputedChecksums", true, "getComputedSHA512", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "addJob", "(UpdateCenterJob)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "configure", "(UpdateCenterConfiguration)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "createUpdateCenter", "(UpdateCenterConfiguration)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getById", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getCategoryDisplayName", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getCoreSource", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getHudsonJob", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getJob", "(Plugin)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getJob", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getJobs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getSite", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateCenter", true, "getSites", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Data", false, "getDeprecations", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Data", false, "getWarnings", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Deprecation", false, "Deprecation", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Entry", true, "Entry", "(String,JSONObject)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Entry", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Entry", true, "getSha1", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Entry", true, "getSha256", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Entry", true, "getSha512", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$IssueTracker", false, "IssueTracker", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$IssueTracker", false, "IssueTracker", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$IssueTracker", false, "IssueTracker", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", false, "Plugin", "(String,JSONObject)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", false, "getCategoriesStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", false, "getIncompatibleParentPlugins", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", false, "setIncompatibleParentPlugins", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "UpdateSite", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "UpdateSite", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getAvailables", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getConnectionCheckUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getData", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getDownloadUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getMetadataUrlForDownloadable", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getMetadataUrlForDownloadable", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getPlugin", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UpdateSite", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UsageStatistics$CombinedCipherOutputStream", false, "CombinedCipherOutputStream", "(OutputStream,Cipher,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UsageStatistics$CombinedCipherOutputStream", false, "CombinedCipherOutputStream", "(OutputStream,RSAKey,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "UsageStatistics", true, "UsageStatistics", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "User$CanonicalIdResolver", true, "resolve", "(String,Map)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User$CanonicalIdResolver", true, "resolveCanonicalId", "(String,Map)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "addProperty", "(UserProperty)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.model", "User", true, "addProperty", "(UserProperty)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "User", true, "get", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "get", "(String,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "get", "(String,boolean,Map)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getAbsoluteUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getAllProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getById", "(String,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getDynamic", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getFullName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getOrCreateByIdOrFullName", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getPropertyActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "getUserDetailsForImpersonation2", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "User", true, "setDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "User", true, "setFullName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "User", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "UserIdMapper", true, "init", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View$AsynchPeople$People", false, "getUsers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View$AsynchPeople", false, "AsynchPeople", "(Jenkins)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "View$AsynchPeople", false, "AsynchPeople", "(View)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "View$People", false, "People", "(Jenkins)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "View$People", false, "People", "(View)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "View$People", false, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View$PropertyList", true, "getOwner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View$UserInfo", false, "getJob", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View$UserInfo", false, "getLastChange", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View$UserInfo", false, "getProject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View$UserInfo", false, "getUser", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "create", "(StaplerRequest,StaplerResponse,ViewGroup)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "createViewFromXML", "(String,InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getAbsoluteUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getAsynchPeople", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getColumns", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getDynamic", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getItem", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getItems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getJob", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getOwner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getOwnerItemGroup", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getOwnerViewActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getPeople", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getViewName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "getViewUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "View", true, "setDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.model", "View", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ViewGroup", true, "getItemGroup", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.model", "ViewGroup", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ViewGroup", true, "getViewActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ViewGroup", true, "getViewsTabBar", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.model", "ViewGroupMixIn", true, "addView", "(View)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.node_monitors", "AbstractNodeMonitorDescriptor", true, "get", "(Computer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitor", true, "DiskSpaceMonitor", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitorDescriptor$DiskSpace", false, "DiskSpace", "(String,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitorDescriptor$DiskSpace", false, "getPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.node_monitors", "TemporarySpaceMonitor", true, "TemporarySpaceMonitor", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.os", "PosixException", true, "PosixException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.os", "PosixException", true, "PosixException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.os", "PosixException", true, "PosixException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.os", "WindowsUtil", true, "createJunction", "(File,File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.os", "WindowsUtil", true, "quoteArgument", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.os", "WindowsUtil", true, "quoteArgumentForCmd", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scheduler", "CronTab", false, "CronTab", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scheduler", "CronTab", false, "CronTab", "(String,Hash)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scheduler", "CronTab", false, "CronTab", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scheduler", "CronTab", false, "CronTab", "(String,int,Hash)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scheduler", "CronTab", false, "CronTab", "(String,int,Hash,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scheduler", "CronTab", false, "CronTab", "(String,int,Hash,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scheduler", "CronTab", false, "ceil", "(Calendar)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scheduler", "CronTab", false, "floor", "(Calendar)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scheduler", "CronTab", false, "hashify", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scheduler", "CronTabList", false, "CronTabList", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.scheduler", "CronTabList", false, "getValidTimezone", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", true, "StartRuleContext", "(ParserRuleContext,int,CronTab)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scheduler", "CrontabParser", true, "startRule", "(CronTab)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm.browsers", "QueryBuilder", false, "QueryBuilder", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scm.browsers", "QueryBuilder", false, "add", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.scm.browsers", "QueryBuilder", false, "add", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scm.browsers", "QueryBuilder", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "AbstractScmTagAction", true, "getBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "AbstractScmTagAction", true, "getRun", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "ChangeLogParser", true, "parse", "(AbstractBuild,File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "ChangeLogParser", true, "parse", "(Run,RepositoryBrowser,File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "ChangeLogSet$Entry", true, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "ChangeLogSet", true, "createEmpty", "(AbstractBuild)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "ChangeLogSet", true, "createEmpty", "(Run)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "ChangeLogSet", true, "getBrowser", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "ChangeLogSet", true, "getItems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "ChangeLogSet", true, "getRun", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "EditType", false, "EditType", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scm", "EditType", false, "EditType", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scm", "EditType", false, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "EditType", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "PollingResult", false, "PollingResult", "(SCMRevisionState,SCMRevisionState,Change)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scm", "PollingResult", false, "PollingResult", "(SCMRevisionState,SCMRevisionState,Change)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.scm", "SCM", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "SCM", true, "getEffectiveBrowser", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "SCM", true, "getModuleRoot", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "SCM", true, "getModuleRoot", "(FilePath,AbstractBuild)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "SCM", true, "getModuleRoots", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.scm", "SCM", true, "getModuleRoots", "(FilePath,AbstractBuild)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "FixedSet", true, "FixedSet", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "FixedSet", true, "FixedSet", "(SearchItem[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "Search$Item", true, "Item", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "Search", true, "find", "(SearchIndex,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "Search", true, "find", "(SearchIndex,String,SearchableModelObject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "SearchIndex", true, "find", "(String,List)", "", "Argument[this]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.search", "SearchIndex", true, "find", "(String,List)", "", "Argument[0]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.search", "SearchIndex", true, "suggest", "(String,List)", "", "Argument[this]", "Argument[1].Element", "taint", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(SearchIndex)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(SearchIndex)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(SearchIndexBuilder)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(SearchItem)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(SearchItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(String,SearchableModelObject,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(String,SearchableModelObject,String[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(String,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "add", "(String,String[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "addAllAnnotations", "(SearchableModelObject)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.search", "SearchIndexBuilder", false, "make", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "SearchItem", true, "getSearchName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "SearchItem", true, "getSearchUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "SuggestedItem", true, "SuggestedItem", "(SearchItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "SuggestedItem", true, "SuggestedItem", "(SuggestedItem,SearchItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "SuggestedItem", true, "SuggestedItem", "(SuggestedItem,SearchItem)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "SuggestedItem", true, "build", "(SearchableModelObject,SearchItem)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "SuggestedItem", true, "getPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "SuggestedItem", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.search", "UnionSearchIndex", true, "UnionSearchIndex", "(SearchIndex,SearchIndex)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "UnionSearchIndex", true, "UnionSearchIndex", "(SearchIndex,SearchIndex)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.search", "UnionSearchIndex", true, "combine", "(SearchIndex[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuer", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuerDescriptor", true, "getCrumbRequestField", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuerDescriptor", true, "getCrumbSalt", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuerDescriptor", true, "setCrumbRequestField", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuerDescriptor", true, "setCrumbSalt", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "ACLContext", true, "getPreviousContext2", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "AccessDeniedException2", true, "AccessDeniedException2", "(Authentication,Permission)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "AccessDeniedException2", true, "AccessDeniedException2", "(Authentication,Permission)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "AccessDeniedException2", true, "AccessDeniedException2", "(Throwable,Authentication,Permission)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "AccessDeniedException2", true, "AccessDeniedException2", "(Throwable,Authentication,Permission)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "AccessDeniedException3", true, "AccessDeniedException3", "(Authentication,Permission)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "AccessDeniedException3", true, "AccessDeniedException3", "(Authentication,Permission)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "AccessDeniedException3", true, "AccessDeniedException3", "(Throwable,Authentication,Permission)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "AccessDeniedException3", true, "AccessDeniedException3", "(Throwable,Authentication,Permission)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "AccountCreationFailedException", true, "AccountCreationFailedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "AuthenticationManagerProxy", true, "setDelegate", "(AuthenticationManager)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "ChainedServletFilter", true, "ChainedServletFilter", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "ChainedServletFilter", true, "ChainedServletFilter", "(Filter[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "ChainedServletFilter", true, "setFilters", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "FederatedLoginService$UnclaimedIdentityException", true, "UnclaimedIdentityException", "(FederatedIdentity)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "FederatedLoginServiceUserProperty", true, "addIdentifier", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "FederatedLoginServiceUserProperty", true, "getIdentifiers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "HudsonAuthenticationEntryPoint", true, "HudsonAuthenticationEntryPoint", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details$ConverterImpl", true, "ConverterImpl", "(XStream2)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", false, "getPassword", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", false, "getUsername", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", true, "HudsonPrivateSecurityRealm", "(boolean,boolean,CaptchaSupport)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", true, "createAccount", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", true, "createAccountWithHashedPassword", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", true, "getUser", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission)", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,PermissionScope)", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,PermissionScope)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,PermissionScope)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,PermissionScope)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,PermissionScope)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,PermissionScope)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean)", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean,PermissionScope[])", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean,PermissionScope[])", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean,PermissionScope[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean,PermissionScope[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean,PermissionScope[])", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Localizable,Permission,boolean,PermissionScope[])", "", "Argument[5].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Permission)", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Permission)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Permission)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "Permission", "(PermissionGroup,String,Permission)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "Permission", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "PermissionGroup", false, "PermissionGroup", "(Class,Localizable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "PermissionGroup", false, "PermissionGroup", "(String,Class,Localizable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "PermissionGroup", false, "PermissionGroup", "(String,Class,Localizable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "PermissionGroup", false, "find", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "PermissionGroup", false, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "PermissionGroup", false, "getPermissions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "PermissionScope", false, "PermissionScope", "(Class,PermissionScope[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "RememberMeServicesProxy", true, "setDelegate", "(RememberMeServices)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm$SecurityComponents", false, "SecurityComponents", "(AuthenticationManager)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm$SecurityComponents", false, "SecurityComponents", "(AuthenticationManager,UserDetailsService)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm$SecurityComponents", false, "SecurityComponents", "(AuthenticationManager,UserDetailsService)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm$SecurityComponents", false, "SecurityComponents", "(AuthenticationManager,UserDetailsService,RememberMeServices)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm$SecurityComponents", false, "SecurityComponents", "(AuthenticationManager,UserDetailsService,RememberMeServices)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm$SecurityComponents", false, "SecurityComponents", "(AuthenticationManager,UserDetailsService,RememberMeServices)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm", true, "createSecurityComponents", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm", true, "getCaptchaSupport", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm", true, "getSecurityComponents", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm", true, "loadUserByUsername2", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.security", "SecurityRealm", true, "setCaptchaSupport", "(CaptchaSupport)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SparseACL$Entry", false, "Entry", "(Sid,Permission,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SparseACL$Entry", false, "Entry", "(Sid,Permission,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SparseACL", true, "SparseACL", "(ACL)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "SparseACL", true, "add", "(Entry)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "UserDetailsServiceProxy", true, "setDelegate", "(UserDetailsService)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "UserMayOrMayNotExistException", true, "UserMayOrMayNotExistException", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.security", "WhoAmI", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "AbstractCloudComputer", true, "AbstractCloudComputer", "(AbstractCloudSlave)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.slaves", "AbstractCloudComputer", true, "AbstractCloudComputer", "(AbstractCloudSlave)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "Cloud$CloudState", false, "CloudState", "(Label,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "Cloud$CloudState", false, "getLabel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "Cloud", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "ComputerLauncherFilter", true, "getCore", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "DelegatingComputerLauncher", true, "getLauncher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,ComputerLauncher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,ComputerLauncher)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,ComputerLauncher)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy)", "", "Argument[7]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy,List)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy,List)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy,List)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy,List)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "DumbSlave", false, "DumbSlave", "(String,String,String,String,Mode,String,ComputerLauncher,RetentionStrategy,List)", "", "Argument[7]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "EnvironmentVariablesNodeProperty$Entry", true, "Entry", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "EnvironmentVariablesNodeProperty$Entry", true, "Entry", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "EnvironmentVariablesNodeProperty", true, "EnvironmentVariablesNodeProperty", "(Entry[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "EnvironmentVariablesNodeProperty", true, "EnvironmentVariablesNodeProperty", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "EnvironmentVariablesNodeProperty", true, "getEnv", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "EnvironmentVariablesNodeProperty", true, "getEnvVars", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", true, "JNLPLauncher", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", true, "JNLPLauncher", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", true, "JNLPLauncher", "(String,String,RemotingWorkDirSettings)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", true, "JNLPLauncher", "(String,String,RemotingWorkDirSettings)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", true, "getWorkDirOptions", "(Computer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", true, "getWorkDirSettings", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", true, "setWorkDirSettings", "(RemotingWorkDirSettings)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "NodeList", false, "NodeList", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "NodeList", false, "NodeList", "(Node[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "NodeList", false, "getNode", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$PlannedNode", true, "PlannedNode", "(String,Future,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$PlannedNode", true, "PlannedNode", "(String,Future,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", false, "getLabel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", false, "getSnapshot", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "NodeProvisioner", true, "NodeProvisioner", "(Label,LoadStatistics)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "NodeProvisioner", true, "NodeProvisioner", "(Label,LoadStatistics)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "NodeProvisioner", true, "getPendingLaunches", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "OfflineCause$ByCLI", true, "ByCLI", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "OfflineCause$ChannelTermination", true, "ChannelTermination", "(Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "OfflineCause$SimpleOfflineCause", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "OfflineCause$UserCause", true, "UserCause", "(User,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "OfflineCause$UserCause", true, "getUser", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "OfflineCause", true, "create", "(Localizable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SimpleScheduledRetentionStrategy", true, "SimpleScheduledRetentionStrategy", "(String,int,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "SimpleScheduledRetentionStrategy", true, "getStartTimeSpec", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "SlaveComputer", "(Slave)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "SlaveComputer", "(Slave)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "doJenkinsAgentJnlp", "(StaplerRequest,StaplerResponse)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "doSlaveAgentJnlp", "(StaplerRequest,StaplerResponse)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "getAbsoluteRemoteFs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "getAbsoluteRemotePath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "getDelegatedLauncher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "getJnlpJars", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "getLauncher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "getListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "openLogFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "SlaveComputer", true, "setChannel", "(Channel,OutputStream,Listener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList$Entry", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList$Lease", true, "createDummyLease", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList$Lease", true, "createLinkedDummyLease", "(FilePath,Lease)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "acquire", "(FilePath)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "acquire", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "acquire", "(FilePath,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "acquire", "(FilePath,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "acquire", "(FilePath,boolean,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "acquire", "(FilePath,boolean,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "allocate", "(FilePath)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "allocate", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "allocate", "(FilePath,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "allocate", "(FilePath,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "record", "(FilePath)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "record", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.slaves", "WorkspaceList", false, "tempDir", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks._maven", "MavenConsoleAnnotator", true, "MavenConsoleAnnotator", "(OutputStream,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "ArtifactArchiver", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "ArtifactArchiver", "(String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "ArtifactArchiver", "(String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "ArtifactArchiver", "(String,String,boolean,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "ArtifactArchiver", "(String,String,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "ArtifactArchiver", "(String,String,boolean,boolean,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "ArtifactArchiver", "(String,String,boolean,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "ArtifactArchiver", "(String,String,boolean,boolean,boolean,Boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "ArtifactArchiver", "(String,String,boolean,boolean,boolean,Boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "getArtifacts", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "getExcludes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", true, "setExcludes", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BatchFile", true, "BatchFile", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BatchFile", true, "setConfiguredLocalRules", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildStep$PublisherList", false, "addNotifier", "(Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildStep$PublisherList", false, "addRecorder", "(Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildStep", true, "getProjectActions", "(AbstractProject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "BuildStepDescriptor", true, "filter", "(List,Class)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "BuildTrigger", "(Collection,Result)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "BuildTrigger", "(Collection,Result)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "BuildTrigger", "(List,Result)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "BuildTrigger", "(List,Result)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "BuildTrigger", "(String,Result)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "BuildTrigger", "(String,Result)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "BuildTrigger", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "BuildTrigger", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "getChildProjectsValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "getThreshold", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "BuildTrigger", true, "onJobRenamed", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "BuildWrapper", true, "decorateLauncher", "(AbstractBuild,Launcher,BuildListener)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "BuildWrapper", true, "decorateLogger", "(AbstractBuild,OutputStream)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "BuildWrapper", true, "setUp", "(AbstractBuild,Launcher,BuildListener)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "BuildWrapper", true, "setUp", "(Build,Launcher,BuildListener)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "CommandInterpreter", true, "buildCommandLine", "(FilePath)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "CommandInterpreter", true, "buildCommandLine", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "CommandInterpreter", true, "createScriptFile", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "CommandInterpreter", true, "getCommand", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "CommandInterpreter", true, "getConfiguredLocalRules", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter$FingerprintAction", false, "FingerprintAction", "(AbstractBuild,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter$FingerprintAction", false, "FingerprintAction", "(Run,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter$FingerprintAction", false, "getBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter$FingerprintAction", false, "getFingerprints", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter$FingerprintAction", false, "getRecords", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter$FingerprintAction", false, "getRun", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter", true, "Fingerprinter", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter", true, "Fingerprinter", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter", true, "getExcludes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter", true, "getTargets", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Fingerprinter", true, "setExcludes", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "LogRotator$CollatedLogRotatorException", true, "CollatedLogRotatorException", "(String,Collection)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "LogRotator$CollatedLogRotatorException", true, "CollatedLogRotatorException", "(String,Collection)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "LogRotator$CollatedLogRotatorException", true, "CollatedLogRotatorException", "(String,Exception[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "LogRotator$CollatedLogRotatorException", true, "CollatedLogRotatorException", "(String,Exception[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven$DescriptorImpl", false, "getInstallations", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation$ConverterImpl", true, "ConverterImpl", "(XStream2)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", false, "MavenInstallation", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", false, "MavenInstallation", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", false, "MavenInstallation", "(String,String,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", false, "MavenInstallation", "(String,String,List)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", false, "getHomeDir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", false, "getMavenHome", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstaller", true, "MavenInstaller", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider)", "", "Argument[7]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider,boolean)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider,boolean)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider,boolean)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "Maven", "(String,String,String,String,String,boolean,SettingsProvider,GlobalSettingsProvider,boolean)", "", "Argument[7]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "getGlobalSettings", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "getSettings", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Maven", true, "getTargets", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Publisher$DescriptorExtensionListImpl", false, "DescriptorExtensionListImpl", "(Jenkins)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Shell$DescriptorImpl", true, "getShell", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Shell$DescriptorImpl", true, "getShellOrDefault", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Shell$DescriptorImpl", true, "getShellOrDefault", "(VirtualChannel)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tasks", "Shell$DescriptorImpl", true, "setShell", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Shell", true, "Shell", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tasks", "Shell", true, "setConfiguredLocalRules", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "AbstractCommandInstaller", true, "getCommand", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "AbstractCommandInstaller", true, "getCommandCall", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "AbstractCommandInstaller", true, "getToolHome", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "BatchCommandInstaller", true, "BatchCommandInstaller", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "BatchCommandInstaller", true, "BatchCommandInstaller", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "BatchCommandInstaller", true, "BatchCommandInstaller", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "CommandInstaller", true, "CommandInstaller", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "CommandInstaller", true, "CommandInstaller", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "CommandInstaller", true, "CommandInstaller", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "PropertyDescriptor", true, "for_", "(List,Class)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "PropertyDescriptor", true, "for_", "(List,Object)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolDescriptor", true, "getInstallations", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolDescriptor", true, "setInstallations", "(ToolInstallation[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolInstallation", true, "buildEnvVars", "(EnvVars)", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.tools", "ToolInstallation", true, "getHome", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstallation", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstallation", true, "getProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstallation", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstallation", true, "translate", "(AbstractBuild,TaskListener)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstallation", true, "translate", "(AbstractBuild,TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstallation", true, "translate", "(Node,EnvVars,TaskListener)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstallation", true, "translate", "(Node,EnvVars,TaskListener)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstaller$ToolInstallerEntry", false, "ToolInstallerEntry", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolInstaller$ToolInstallerEntry", false, "ToolInstallerEntry", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolInstaller$ToolInstallerEntry", false, "ToolInstallerEntry", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolInstaller", true, "getLabel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstaller", true, "performInstallation", "(ToolInstallation,Node,TaskListener)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolInstaller", true, "performInstallation", "(ToolInstallation,Node,TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$DescriptorImpl", true, "getKey", "(ToolInstallation)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$ToolLocation", false, "ToolLocation", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$ToolLocation", false, "ToolLocation", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$ToolLocation", false, "ToolLocation", "(ToolDescriptor,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$ToolLocation", false, "ToolLocation", "(ToolDescriptor,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$ToolLocation", false, "ToolLocation", "(ToolDescriptor,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$ToolLocation", false, "getHome", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$ToolLocation", false, "getKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$ToolLocation", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$ToolLocation", false, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty", true, "ToolLocationNodeProperty", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty", true, "ToolLocationNodeProperty", "(ToolLocation[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty", true, "getHome", "(ToolInstallation)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty", true, "getLocations", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty", true, "getToolHome", "(Node,ToolInstallation,TaskListener)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ToolLocationTranslator", true, "getToolHome", "(Node,ToolInstallation,TaskListener)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ZipExtractionInstaller", true, "ZipExtractionInstaller", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ZipExtractionInstaller", true, "ZipExtractionInstaller", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ZipExtractionInstaller", true, "ZipExtractionInstaller", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.tools", "ZipExtractionInstaller", true, "getSubdir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.tools", "ZipExtractionInstaller", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger$BuildAction", true, "BuildAction", "(AbstractBuild)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger$BuildAction", true, "BuildAction", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger$BuildAction", true, "getPollingLogText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger$BuildAction", true, "getRun", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", true, "getExecutor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger$Runner", true, "Runner", "(Action[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger$SCMTriggerCause", true, "SCMTriggerCause", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger$SCMTriggerCause", true, "getRun", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger", true, "SCMTrigger", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger", true, "SCMTrigger", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger", true, "getLogFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "SCMTrigger", true, "getScmpoll_spec", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "SlowTriggerAdminMonitor$Value", true, "getFullJobName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "SlowTriggerAdminMonitor", true, "getErrors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "TimerTrigger", true, "TimerTrigger", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.triggers", "Trigger", true, "getSpec", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.triggers", "Trigger", true, "start", "(Item,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util.io", "ArchiverFactory", true, "create", "(OutputStream)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util.io", "ArchiverFactory", true, "createZipWithoutSymlink", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util.io", "ReopenableFileOutputStream", true, "ReopenableFileOutputStream", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util.io", "ReopenableRotatingFileOutputStream", true, "ReopenableRotatingFileOutputStream", "(File,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util.io", "RewindableFileOutputStream", true, "RewindableFileOutputStream", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util.io", "RewindableRotatingFileOutputStream", true, "RewindableRotatingFileOutputStream", "(File,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util.jna", "RegistryKey", true, "open", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util.jna", "RegistryKey", true, "open", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util.jna", "RegistryKey", true, "open", "(String,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util.jna", "RegistryKey", true, "open", "(String,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util.jna", "RegistryKey", true, "openReadonly", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util.jna", "RegistryKey", true, "openReadonly", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util.jna", "SHELLEXECUTEINFO$DUMMYUNIONNAME_union", true, "DUMMYUNIONNAME_union", "(Pointer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util.jna", "WinIOException", true, "WinIOException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util.jna", "WinIOException", true, "WinIOException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util.xstream", "MapperDelegate", true, "MapperDelegate", "(Mapper)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AWTProblem", true, "AWTProblem", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AdministrativeError", true, "AdministrativeError", "(String,String,String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AdministrativeError", true, "AdministrativeError", "(String,String,String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AdministrativeError", true, "AdministrativeError", "(String,String,String,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AdministrativeError", true, "AdministrativeError", "(String,String,String,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AlternativeUiTextProvider$Message", false, "cast", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "AlternativeUiTextProvider", true, "get", "(Message,Object,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "ArgumentListBuilder", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(File)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(Iterable)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(Iterable)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(Object,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(String,boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(String[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "add", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePair", "(String,String,String,boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePair", "(String,String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePair", "(String,String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePair", "(String,String,String,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairs", "(String,Map)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairs", "(String,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairs", "(String,Map)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairs", "(String,Map,Set)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairs", "(String,Map,Set)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairs", "(String,Map,Set)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairsFromPropertyString", "(String,String,VariableResolver)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairsFromPropertyString", "(String,String,VariableResolver)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairsFromPropertyString", "(String,String,VariableResolver)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairsFromPropertyString", "(String,String,VariableResolver,Set)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addKeyValuePairsFromPropertyString", "(String,String,VariableResolver,Set)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addMasked", "(Secret)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addMasked", "(Secret)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addMasked", "(Secret)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addMasked", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addQuoted", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addQuoted", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addQuoted", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addQuoted", "(String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addQuoted", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addQuoted", "(String,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addTokenized", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "addTokenized", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "prepend", "(String[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "prepend", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "toCommandArray", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "toList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", true, "toStringWithQuote", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "AtomicFileWriter", true, "AtomicFileWriter", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AtomicFileWriter", true, "AtomicFileWriter", "(File,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AtomicFileWriter", true, "AtomicFileWriter", "(Path,Charset)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AtomicFileWriter", true, "AtomicFileWriter", "(Path,Charset,boolean,boolean)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "AtomicFileWriter", true, "getTemporaryFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "AtomicFileWriter", true, "getTemporaryPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "BootFailure", true, "getBootFailureFile", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ByteArrayOutputStream2", true, "getBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ByteArrayOutputStream2", true, "readFrom", "(InputStream)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson.util", "ByteArrayOutputStream2", true, "readFrom", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ChartUtil$NumberOnlyBuildLabel", false, "NumberOnlyBuildLabel", "(AbstractBuild)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ChartUtil$NumberOnlyBuildLabel", false, "NumberOnlyBuildLabel", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ChartUtil$NumberOnlyBuildLabel", false, "getRun", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ChartUtil$NumberOnlyBuildLabel", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ChunkedInputStream", true, "ChunkedInputStream", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ChunkedOutputStream", true, "ChunkedOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ChunkedOutputStream", true, "ChunkedOutputStream", "(OutputStream,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ClassLoaderSanityThreadFactory", true, "ClassLoaderSanityThreadFactory", "(ThreadFactory)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "add", "(File)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "add", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "add", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "add", "(FilePath)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "add", "(FilePath)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "add", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "add", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "add", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "addAll", "(FilePath,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "addJarOf", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ClasspathBuilder", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ComboBoxModel", true, "ComboBoxModel", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ComboBoxModel", true, "ComboBoxModel", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CompoundEnumeration", true, "CompoundEnumeration", "(Enumeration[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CompoundEnumeration", true, "CompoundEnumeration", "(Iterable)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CompressedFile", true, "CompressedFile", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "ConsistentHash", "(Hash)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "ConsistentHash", "(Hash,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "add", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "add", "(Object,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "addAll", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "addAll", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "addAll", "(Object[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "lookup", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "lookup", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ConsistentHash", true, "remove", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "CopyOnWriteList", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "add", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "addAll", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "addAllTo", "(Collection)", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "get", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "getView", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "replaceBy", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "replaceBy", "(CopyOnWriteList)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "replaceBy", "(Object[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "toArray", "(Object[])", "", "Argument[this]", "Argument[0].ArrayElement", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteList", true, "toArray", "(Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteMap$Hash", false, "Hash", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteMap$Tree", false, "Tree", "(Comparator)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteMap$Tree", false, "Tree", "(Map,Comparator)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteMap$Tree", false, "Tree", "(Map,Comparator)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CopyOnWriteMap", true, "replaceBy", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CyclicGraphDetector$CycleDetectedException", false, "CycleDetectedException", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "CyclicGraphDetector", true, "getSorted", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "CyclicGraphDetector", true, "run", "(Iterable)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DaemonThreadFactory", true, "DaemonThreadFactory", "(ThreadFactory)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DataSetBuilder", false, "add", "(Number,Comparable,Comparable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DataSetBuilder", false, "add", "(Number,Comparable,Comparable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DecodingStream", true, "DecodingStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DescribableList", true, "DescribableList", "(Owner)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DescribableList", true, "DescribableList", "(Saveable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DescribableList", true, "DescribableList", "(Saveable,Collection)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DescribableList", true, "get", "(Descriptor)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "DescribableList", true, "getDynamic", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "DescribableList", true, "setOwner", "(Owner)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DescribableList", true, "toArray", "(Describable[])", "", "Argument[this]", "Argument[0].ArrayElement", "taint", "df-generated"] + - ["hudson.util", "DescribableList", true, "toArray", "(Describable[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "DescribableList", true, "toMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "DescriptorList", false, "find", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "DescriptorList", false, "findByName", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "DirScanner$Filter", true, "Filter", "(FileFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DirScanner$Glob", true, "Glob", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DirScanner$Glob", true, "Glob", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DirScanner$Glob", true, "Glob", "(String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DirScanner$Glob", true, "Glob", "(String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DirScanner$Glob", true, "Glob", "(String,String,boolean,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DirScanner$Glob", true, "Glob", "(String,String,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DoubleLaunchChecker", true, "getCollidingId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "DualOutputStream", true, "DualOutputStream", "(OutputStream,OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "DualOutputStream", true, "DualOutputStream", "(OutputStream,OutputStream)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "EditDistance", true, "findNearest", "(String,Collection)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "EditDistance", true, "findNearest", "(String,String[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "EncodingStream", true, "EncodingStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ErrorObject", true, "getStackTraceString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ExceptionCatchingThreadFactory", true, "ExceptionCatchingThreadFactory", "(ThreadFactory)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FileVisitor", true, "with", "(FileFilter)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "FlushProofOutputStream", true, "FlushProofOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ForkOutputStream", true, "ForkOutputStream", "(OutputStream,OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ForkOutputStream", true, "ForkOutputStream", "(OutputStream,OutputStream)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$Base64", true, "Base64", "(StaplerRequest,StaplerResponse,boolean,boolean,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$Base64", true, "Base64", "(StaplerRequest,StaplerResponse,boolean,boolean,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$Base64", true, "Base64", "(StaplerRequest,StaplerResponse,boolean,boolean,String)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$Executable", true, "Executable", "(StaplerRequest,StaplerResponse)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$Executable", true, "Executable", "(StaplerRequest,StaplerResponse)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$HudsonURL", true, "HudsonURL", "(StaplerRequest,StaplerResponse)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$HudsonURL", true, "HudsonURL", "(StaplerRequest,StaplerResponse)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceDirectory", true, "WorkspaceDirectory", "(StaplerRequest,StaplerResponse)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceDirectory", true, "WorkspaceDirectory", "(StaplerRequest,StaplerResponse)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceDirectory", true, "WorkspaceDirectory", "(StaplerRequest,StaplerResponse,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceDirectory", true, "WorkspaceDirectory", "(StaplerRequest,StaplerResponse,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceFileMask", true, "WorkspaceFileMask", "(StaplerRequest,StaplerResponse)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceFileMask", true, "WorkspaceFileMask", "(StaplerRequest,StaplerResponse)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceFileMask", true, "WorkspaceFileMask", "(StaplerRequest,StaplerResponse,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceFileMask", true, "WorkspaceFileMask", "(StaplerRequest,StaplerResponse,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceFilePath", true, "WorkspaceFilePath", "(StaplerRequest,StaplerResponse,boolean,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFieldValidator$WorkspaceFilePath", true, "WorkspaceFilePath", "(StaplerRequest,StaplerResponse,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormFillFailure", true, "errorWithMarkup", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "FormFillFailure", true, "warningWithMarkup", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "FormFillFailure", true, "withSelectionCleared", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "FormValidation$CheckMethod", true, "CheckMethod", "(Descriptor,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "FormValidation$CheckMethod", true, "getDependsOn", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "FormValidation$CheckMethod", true, "toCheckUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "FormValidation$CheckMethod", true, "toStemUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "FormValidation", true, "aggregate", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "FormValidation", true, "errorWithMarkup", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "FormValidation", true, "okWithMarkup", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "FormValidation", true, "warningWithMarkup", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HeadBufferingStream", true, "getSideBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HttpResponses", true, "errorJSON", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HttpResponses", true, "errorJSON", "(String,JSONArray)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HttpResponses", true, "errorJSON", "(String,JSONArray)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HttpResponses", true, "errorJSON", "(String,JSONObject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HttpResponses", true, "errorJSON", "(String,JSONObject)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HttpResponses", true, "errorJSON", "(String,Map)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HttpResponses", true, "okJSON", "(JSONArray)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HttpResponses", true, "okJSON", "(JSONObject)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "HudsonFailedToLoad", true, "HudsonFailedToLoad", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "absolutize", "(File,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "absolutize", "(File,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "copy", "(InputStream,OutputStream)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "copy", "(InputStream,Writer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "copy", "(InputStream,Writer,String)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "copy", "(Reader,Writer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "copyLarge", "(InputStream,OutputStream)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "copyLarge", "(Reader,Writer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "lineIterator", "(InputStream,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "lineIterator", "(Reader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "readFirstLine", "(InputStream,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "readLines", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "readLines", "(InputStream,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "readLines", "(Reader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "skip", "(InputStream,long)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toByteArray", "(Reader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toByteArray", "(Reader,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toByteArray", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toCharArray", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toCharArray", "(InputStream,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toCharArray", "(Reader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toInputStream", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toInputStream", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toString", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toString", "(InputStream,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toString", "(Reader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toString", "(byte[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "toString", "(byte[],String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "write", "(String,Writer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "write", "(StringBuffer,Writer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "write", "(byte[],OutputStream)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "write", "(byte[],Writer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "write", "(byte[],Writer,String)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "write", "(char[],Writer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "writeLines", "(Collection,String,OutputStream)", "", "Argument[1]", "Argument[2]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "writeLines", "(Collection,String,OutputStream,String)", "", "Argument[1]", "Argument[2]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "writeLines", "(Collection,String,Writer)", "", "Argument[0].Element", "Argument[2]", "taint", "df-generated"] + - ["hudson.util", "IOUtils", true, "writeLines", "(Collection,String,Writer)", "", "Argument[1]", "Argument[2]", "taint", "df-generated"] + - ["hudson.util", "InsufficientPermissionDetected", true, "InsufficientPermissionDetected", "(SecurityException)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "Iterators$DuplicateFilterIterator", false, "DuplicateFilterIterator", "(Iterable)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "Iterators$DuplicateFilterIterator", false, "DuplicateFilterIterator", "(Iterator)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "Iterators", true, "cast", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Iterators", true, "cast", "(Iterator)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Iterators", true, "removeDups", "(Iterator)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Iterators", true, "removeNull", "(Iterator)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Iterators", true, "sequence", "(Iterator[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Iterators", true, "subType", "(Iterator,Class)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "args", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "classpath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "debug", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "launch", "(Launcher)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "mainClass", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "mainClass", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "mainClass", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "pwd", "(File)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "pwd", "(FilePath)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "pwd", "(FilePath)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "systemProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "systemProperties", "(Map)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "systemProperties", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "systemProperty", "(String,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "systemProperty", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "systemProperty", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "toFullArguments", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "JVMBuilder", true, "vmopts", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "JenkinsReloadFailed", true, "JenkinsReloadFailed", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "KeyedDataStorage", true, "get", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "KeyedDataStorage", true, "get", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "KeyedDataStorage", true, "get", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "KeyedDataStorage", true, "getOrCreate", "(String,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "KeyedDataStorage", true, "getOrCreate", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "KeyedDataStorage", true, "getOrCreate", "(String,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "KeyedDataStorage", true, "getOrCreate", "(String,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "LineEndingConversion", true, "convertEOL", "(String,EOLType)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel$Option", false, "Option", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel$Option", false, "Option", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel$Option", false, "Option", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel$Option", false, "Option", "(String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel$Option", false, "Option", "(String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel$Option", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel", true, "ListBoxModel", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel", true, "ListBoxModel", "(Option[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel", true, "add", "(ModelObject,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel", true, "add", "(ModelObject,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel", true, "add", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "ListBoxModel", true, "add", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel", true, "add", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel", true, "add", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ListBoxModel", true, "values", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "MaskingClassLoader", true, "MaskingClassLoader", "(ClassLoader,Collection)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "MaskingClassLoader", true, "MaskingClassLoader", "(ClassLoader,String[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "MaskingClassLoader", true, "add", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "MultipartFormDataParser", true, "getFileItem", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "NamingThreadFactory", false, "NamingThreadFactory", "(ThreadFactory,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "NamingThreadFactory", false, "NamingThreadFactory", "(ThreadFactory,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "NoHomeDir", true, "NoHomeDir", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "NoTempDir", true, "NoTempDir", "(IOException)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "OneShotEvent", false, "OneShotEvent", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "PackedMap", false, "of", "(Map)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "PersistedList", true, "PersistedList", "(Saveable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "PersistedList", true, "addAllTo", "(Collection)", "", "Argument[this]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson.util", "PersistedList", true, "setOwner", "(Saveable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "PersistedList", true, "toList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ProcessKillingVeto$VetoCause", true, "VetoCause", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ProcessKillingVeto$VetoCause", true, "getMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ProcessTree", true, "get", "(Process)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ProcessTree", true, "get", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IOSProcess", true, "getArguments", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IOSProcess", true, "getEnvironmentVariables", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "QueryParameterMap", true, "get", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "QueryParameterMap", true, "getAll", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "QuotedStringTokenizer", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "QuotedStringTokenizer", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "QuotedStringTokenizer", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "QuotedStringTokenizer", "(String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "QuotedStringTokenizer", "(String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "QuotedStringTokenizer", "(String,String,boolean,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "QuotedStringTokenizer", "(String,String,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "quote", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "toArray", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", true, "unquote", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ReflectionUtils$Parameter", false, "Parameter", "(MethodInfo,int)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "ReflectionUtils$Parameter", false, "annotations", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ReflectionUtils$Parameter", false, "genericType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ReflectionUtils$Parameter", false, "name", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "ReflectionUtils", true, "getParameters", "(Method)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RemotingDiagnostics$HeapDump", true, "HeapDump", "(AccessControlled,VirtualChannel)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "RemotingDiagnostics$HeapDump", true, "HeapDump", "(AccessControlled,VirtualChannel)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "Builder", "(Callable,BiPredicate,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "Builder", "(Callable,BiPredicate,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "Builder", "(Callable,BiPredicate,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "build", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "withAttempts", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "withDelay", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "withDuringActionExceptionListener", "(BiFunction)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "withDuringActionExceptionListener", "(BiFunction)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "withDuringActionExceptions", "(Class[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "Retrier$Builder", true, "withDuringActionExceptions", "(Class[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "RobustReflectionConverter", true, "RobustReflectionConverter", "(Mapper,ReflectionProvider)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "RobustReflectionConverter", true, "RobustReflectionConverter", "(Mapper,ReflectionProvider)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "RobustReflectionConverter", true, "doUnmarshal", "(Object,HierarchicalStreamReader,UnmarshallingContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "RunList", "(Job)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "byTimestamp", "(long,long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "completedOnly", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "failureOnly", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "filter", "(Predicate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "filter", "(Predicate)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson.util", "RunList", true, "fromRuns", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "getFirstBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "getLastBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "limit", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "newBuilds", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "node", "(Node)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "overThresholdOnly", "(Result)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "RunList", true, "regressionOnly", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Scrambler", true, "descramble", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Scrambler", true, "scramble", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Secret", false, "decrypt", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Secret", false, "fromString", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Secret", false, "getEncryptedValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Secret", false, "getPlainText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Secret", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "Secret", false, "toString", "(Secret)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "SecretRewriter", true, "rewriteRecursive", "(File,TaskListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "SequentialExecutionQueue", true, "SequentialExecutionQueue", "(ExecutorService)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "SequentialExecutionQueue", true, "getExecutors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "SequentialExecutionQueue", true, "getInProgress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "SequentialExecutionQueue", true, "setExecutors", "(ExecutorService)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "StreamCopyThread", true, "StreamCopyThread", "(String,InputStream,OutputStream)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "StreamCopyThread", true, "StreamCopyThread", "(String,InputStream,OutputStream)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "StreamCopyThread", true, "StreamCopyThread", "(String,InputStream,OutputStream,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "StreamCopyThread", true, "StreamCopyThread", "(String,InputStream,OutputStream,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "StreamResource", true, "StreamResource", "(String,InputStream)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "StreamTaskListener", true, "StreamTaskListener", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "StreamTaskListener", true, "StreamTaskListener", "(OutputStream,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "StreamTaskListener", true, "StreamTaskListener", "(PrintStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "TagCloud$Entry", false, "Entry", "(Object,float)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "TextFile", true, "TextFile", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "TextFile", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "VariableResolver$ByMap", false, "ByMap", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "VariableResolver$Union", false, "Union", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "VariableResolver$Union", false, "Union", "(VariableResolver[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "XStream2", true, "addCompatibilityAlias", "(String,Class)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.util", "XStream2", true, "getMapperInjectionPoint", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.util", "XStream2", true, "setMapper", "(Mapper)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.views", "MyViewsTabBar", true, "sort", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.views", "ViewJobFilter", true, "filter", "(List,List,View)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.views", "ViewsTabBar", true, "sort", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson.widgets", "BuildHistoryWidget", true, "BuildHistoryWidget", "(Task,Iterable,Adapter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.widgets", "BuildHistoryWidget", true, "BuildHistoryWidget", "(Task,Iterable,Adapter)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.widgets", "BuildHistoryWidget", true, "BuildHistoryWidget", "(Task,Iterable,Adapter)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.widgets", "HistoryWidget", true, "HistoryWidget", "(ModelObject,Iterable,Adapter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson.widgets", "HistoryWidget", true, "HistoryWidget", "(ModelObject,Iterable,Adapter)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson.widgets", "HistoryWidget", true, "HistoryWidget", "(ModelObject,Iterable,Adapter)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.widgets", "HistoryWidget", true, "doAjax", "(StaplerRequest,StaplerResponse,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson.widgets", "HistoryWidget", true, "getFirstTransientBuildKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.widgets", "HistoryWidget", true, "getHistoryPageFilter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.widgets", "HistoryWidget", true, "getNextBuildNumberToFetch", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.widgets", "HistoryWidget", true, "getRenderList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson.widgets", "HistoryWidget", true, "setNextBuildNumberToFetch", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "AbortException", true, "AbortException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "AbstractMarkupText", true, "getText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "BulkChange", true, "BulkChange", "(Saveable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ClassicPluginStrategy", true, "ClassicPluginStrategy", "(PluginManager)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "CloseProofOutputStream", true, "CloseProofOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "DependencyRunner", true, "DependencyRunner", "(ProjectRunnable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "DescriptorExtensionList", true, "createDescriptorList", "(Hudson,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "DescriptorExtensionList", true, "createDescriptorList", "(Jenkins,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "DescriptorExtensionList", true, "find", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "DescriptorExtensionList", true, "find", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "DescriptorExtensionList", true, "findByName", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "EnvVars", "(EnvVars)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "EnvVars", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "EnvVars", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "addLine", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "expand", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "expand", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "get", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "get", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "override", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "override", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "overrideAll", "(Map)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "EnvVars", true, "overrideAll", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "overrideExpandingAll", "(Map)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "EnvVars", true, "overrideExpandingAll", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "putIfNotNull", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "EnvVars", true, "putIfNotNull", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ExtensionComponent", true, "ExtensionComponent", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ExtensionComponent", true, "ExtensionComponent", "(Object,Extension)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ExtensionComponent", true, "ExtensionComponent", "(Object,double)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ExtensionComponent", true, "getInstance", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ExtensionFinder$GuiceFinder", true, "getContainer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ExtensionList", true, "addListener", "(ExtensionListListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ExtensionList", true, "create", "(Hudson,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ExtensionList", true, "create", "(Jenkins,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ExtensionList", true, "getComponents", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ExtensionList", true, "getDynamic", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath$ExplicitlySpecifiedDirScanner", false, "ExplicitlySpecifiedDirScanner", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "FilePath$TarCompression", true, "extract", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "FilePath", "(FilePath,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "FilePath", false, "FilePath", "(FilePath,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "FilePath", false, "FilePath", "(VirtualChannel,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "FilePath", false, "FilePath", "(VirtualChannel,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "FilePath", false, "absolutize", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "act", "(FileCallable)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "asCallableWith", "(FileCallable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "child", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "child", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "createLauncher", "(TaskListener)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "createLauncher", "(TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "createTempDir", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "createTempFile", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "createTextTempFile", "(String,String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "createTextTempFile", "(String,String,String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "digest", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "getBaseName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "getChannel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "getRemote", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "ignoringSymlinks", "(FileVisitor,String,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "normalize", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "readLink", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "readToString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "sibling", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "sibling", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "toURI", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "toVirtualFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "validateAntFileMask", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "validateAntFileMask", "(String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "validateAntFileMask", "(String,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "validateAntFileMask", "(String,int,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "withSuffix", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "FilePath", false, "withSuffix", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions$RunUrl", false, "RunUrl", "(Run,String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Functions$RunUrl", false, "RunUrl", "(Run,String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Functions$RunUrl", false, "RunUrl", "(Run,String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Functions$RunUrl", false, "RunUrl", "(Run,String,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Functions$RunUrl", false, "getBaseUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions$RunUrl", false, "getNextBuildUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions$RunUrl", false, "getPreviousBuildUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions$ThreadGroupMap", true, "getThreadGroup", "(ThreadInfo)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "addSuffix", "(int,String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "addSuffix", "(int,String,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "appendIfNotNull", "(String,String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "appendIfNotNull", "(String,String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "appendIfNotNull", "(String,String,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "appendSpaceIfNotNull", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "breakableString", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "calcCheckUrl", "(Map,String,Object,String)", "", "Argument[2]", "Argument[0].Element", "taint", "df-generated"] + - ["hudson", "Functions", true, "calcCheckUrl", "(Map,String,Object,String)", "", "Argument[3]", "Argument[2]", "taint", "df-generated"] + - ["hudson", "Functions", true, "capitalize", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "decompose", "(StaplerRequest)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "defaulted", "(Object,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "defaulted", "(Object,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "dumpThreadInfo", "(ThreadInfo,ThreadGroupMap)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "encode", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "extractPluginNameFromIconSrc", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "filter", "(SortedMap,String,String)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "filterDescriptors", "(Object,Iterable)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "filterExcludingFrom", "(SortedMap,String,String)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getActionUrl", "(String,Action)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getCheckUrl", "(String,Object,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getCheckUrl", "(String,Object,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getCheckUrl", "(String,Object,String)", "", "Argument[2]", "Argument[1]", "taint", "df-generated"] + - ["hudson", "Functions", true, "getCookie", "(HttpServletRequest,String,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getDiffString2", "(String,int,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getDiffString2", "(String,int,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getNearestAncestorUrl", "(StaplerRequest,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getPasswordValue", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getProjectListString", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getRelativeDisplayNameFrom", "(Item,ItemGroup)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getRelativeNameFrom", "(Item,ItemGroup)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getRelativeNameFrom", "(Item,ItemGroup,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "getViewResource", "(Object,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "ifThenElse", "(boolean,Object,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "ifThenElse", "(boolean,Object,Object)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "joinPath", "(String[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "prepend", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "prepend", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "printThrowable", "(Throwable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "rawHtml", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "reverse", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "singletonList", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "subList", "(List,int)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "tryGetIconPath", "(String,JellyContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "validateIconSize", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Functions", true, "xmlUnescape", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$DecoratedLauncher", true, "DecoratedLauncher", "(Launcher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$DecoratedLauncher", true, "getInner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$DecoratedLauncher", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$DummyLauncher", true, "DummyLauncher", "(TaskListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$LocalLauncher", true, "LocalLauncher", "(TaskListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$LocalLauncher", true, "LocalLauncher", "(TaskListener,VirtualChannel)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$LocalLauncher", true, "LocalLauncher", "(TaskListener,VirtualChannel)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "buildStep", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "buildStep", "(EnvVarsFilterableBuilder)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "buildStep", "(EnvVarsFilterableBuilder)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmdAsSingleString", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "(ArgumentListBuilder)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "(ArgumentListBuilder)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "(File,String[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "(File,String[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "(List)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "(String[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "cmds", "(String[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "copy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "envs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "envs", "(Map)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "envs", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "envs", "(String[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "envs", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "masks", "(boolean[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "pwd", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "pwd", "(File)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "pwd", "(FilePath)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "pwd", "(FilePath)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "pwd", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "quiet", "(boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "readStderr", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "readStdout", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "start", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stderr", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stderr", "(OutputStream)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stderr", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stdin", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stdin", "(InputStream)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stdin", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stdout", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stdout", "(OutputStream)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stdout", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stdout", "(TaskListener)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "stdout", "(TaskListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$ProcStarter", false, "writeStdin", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["hudson", "Launcher$RemoteLauncher$ProcImpl", false, "ProcImpl", "(RemoteProcess)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$RemoteLauncher", true, "RemoteLauncher", "(TaskListener,VirtualChannel,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$RemoteLauncher", true, "RemoteLauncher", "(TaskListener,VirtualChannel,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Launcher$RemoteLauncher", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "decorateByEnv", "(EnvVars)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "decorateByPrefix", "(String[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "decorateFor", "(Node)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "getChannel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "getListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(ProcStarter)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String,Map,OutputStream,FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String,Map,OutputStream,FilePath)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String,Map,OutputStream,FilePath)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String,String[],OutputStream,FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String,String[],OutputStream,FilePath)", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String,String[],OutputStream,FilePath)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],Map,InputStream,OutputStream)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],Map,InputStream,OutputStream)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],Map,InputStream,OutputStream)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],Map,OutputStream,FilePath)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],Map,OutputStream,FilePath)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],Map,OutputStream,FilePath)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],String[],InputStream,OutputStream)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],String[],InputStream,OutputStream)", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],String[],InputStream,OutputStream)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],String[],InputStream,OutputStream,FilePath)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],String[],InputStream,OutputStream,FilePath)", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],String[],InputStream,OutputStream,FilePath)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],String[],OutputStream,FilePath)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],String[],OutputStream,FilePath)", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],String[],OutputStream,FilePath)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],Map,InputStream,OutputStream)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],Map,InputStream,OutputStream)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],Map,InputStream,OutputStream)", "", "Argument[4]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],Map,OutputStream,FilePath)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],Map,OutputStream,FilePath)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],Map,OutputStream,FilePath)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],String[],InputStream,OutputStream)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],String[],InputStream,OutputStream)", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],String[],InputStream,OutputStream)", "", "Argument[4]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],String[],InputStream,OutputStream,FilePath)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],String[],InputStream,OutputStream,FilePath)", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],String[],InputStream,OutputStream,FilePath)", "", "Argument[4]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],String[],OutputStream,FilePath)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],String[],OutputStream,FilePath)", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Launcher", true, "launch", "(String[],boolean[],String[],OutputStream,FilePath)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "LocalPluginManager", true, "LocalPluginManager", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "LocalPluginManager", true, "LocalPluginManager", "(Jenkins)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "LocalPluginManager", true, "LocalPluginManager", "(ServletContext,File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "LocalPluginManager", true, "LocalPluginManager", "(ServletContext,File)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Lookup", true, "set", "(Class,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Lookup", true, "setIfNull", "(Class,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Lookup", true, "setIfNull", "(Class,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "MarkupText", true, "MarkupText", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "MarkupText", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "MarkupText", true, "toString", "(boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PermalinkList", false, "PermalinkList", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PermalinkList", false, "findNearest", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PermalinkList", false, "get", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Plugin", true, "getWrapper", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginFirstClassLoader", true, "getURLs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager$FailedPlugin", false, "FailedPlugin", "(PluginWrapper,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginManager$FailedPlugin", false, "FailedPlugin", "(PluginWrapper,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginManager$FailedPlugin", false, "FailedPlugin", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginManager$FailedPlugin", false, "FailedPlugin", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginManager$FailedPlugin", false, "getExceptionString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager$PluginCycleDependenciesMonitor", false, "getPluginsWithCycle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager$PluginUpdateMonitor", false, "addPluginToUpdate", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginManager$PluginUpdateMonitor", false, "getPluginsToBeUpdated", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager$PluginUpdateMonitor", false, "ifPluginOlderThenReport", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginManager$UberClassLoader", false, "UberClassLoader", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "createDefault", "(Jenkins)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "disablePlugins", "(PluginDisableStrategy,List)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "disablePlugins", "(PluginDisableStrategy,List)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "dynamicLoad", "(File,boolean,List)", "", "Argument[this]", "Argument[2].Element", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "dynamicLoad", "(File,boolean,List)", "", "Argument[0]", "Argument[2].Element", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "getFailedPlugins", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "getLastErrorCheckUpdateCenters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "getPlugin", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "getPlugin", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "getPluginStrategy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "getPlugins", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "getPlugins", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "getWorkDir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginManager", true, "whichPlugin", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginStrategy", true, "createPluginWrapper", "(File)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginStrategy", true, "createPluginWrapper", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginStrategy", true, "getShortName", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper$Dependency", false, "Dependency", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper$Dependency", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", true, "PluginDisableResult", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", true, "PluginDisableResult", "(String,PluginDisableStatus,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", true, "PluginDisableResult", "(String,PluginDisableStatus,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", true, "addDependentDisableStatus", "(PluginDisableResult)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", true, "getDependentsDisableStatus", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", true, "getMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", true, "getPlugin", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", true, "setMessage", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginWrapperAdministrativeMonitor", false, "getPlugin", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper$PluginWrapperAdministrativeMonitor", false, "getPlugins", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "PluginWrapper", "(PluginManager,File,Manifest,URL,ClassLoader,File,List,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "PluginWrapper", "(PluginManager,File,Manifest,URL,ClassLoader,File,List,List)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "PluginWrapper", "(PluginManager,File,Manifest,URL,ClassLoader,File,List,List)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "PluginWrapper", "(PluginManager,File,Manifest,URL,ClassLoader,File,List,List)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "PluginWrapper", "(PluginManager,File,Manifest,URL,ClassLoader,File,List,List)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "PluginWrapper", "(PluginManager,File,Manifest,URL,ClassLoader,File,List,List)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "PluginWrapper", "(PluginManager,File,Manifest,URL,ClassLoader,File,List,List)", "", "Argument[6].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "PluginWrapper", "(PluginManager,File,Manifest,URL,ClassLoader,File,List,List)", "", "Argument[7].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "disable", "(PluginDisableStrategy)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getBackupFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getDependants", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getDependencies", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getDependencyErrors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getDependents", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getDerivedDependencyErrors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getLongName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getMandatoryDependencies", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getMandatoryDependents", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getManifest", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getOptionalDependants", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getOptionalDependencies", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getOptionalDependents", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getOriginalDependencyErrors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "getShortName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "setDependants", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "setDependents", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "setOptionalDependents", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "setPlugin", "(Plugin)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["hudson", "PluginWrapper", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String,Map,OutputStream,File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String,Map,OutputStream,File)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String,String[],OutputStream,File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String,String[],OutputStream,File)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],Map,InputStream,OutputStream)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],Map,InputStream,OutputStream)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],String[],InputStream,OutputStream)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],String[],InputStream,OutputStream)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],String[],InputStream,OutputStream,File)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],String[],InputStream,OutputStream,File)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],String[],InputStream,OutputStream,OutputStream,File)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],String[],InputStream,OutputStream,OutputStream,File)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],String[],InputStream,OutputStream,OutputStream,File)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],String[],OutputStream,File)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$LocalProc", false, "LocalProc", "(String[],String[],OutputStream,File)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc$RemoteProc", false, "RemoteProc", "(Future)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "Proc", true, "getStderr", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Proc", true, "getStdin", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Proc", true, "getStdout", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String,String)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String,String,String)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "ProxyConfiguration", "(String,int,String,String,String,String)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "getEncryptedPassword", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "getNoProxyHost", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "getPassword", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "getSecretPassword", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "getTestUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "getUserName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "setNoProxyHost", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "setSecretPassword", "(Secret)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "setTestUrl", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "ProxyConfiguration", false, "setUserName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "StructuredForm", true, "get", "(StaplerRequest)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "changeExtension", "(File,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "combine", "(long,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "copyStream", "(InputStream,OutputStream)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson", "Util", true, "copyStream", "(Reader,Writer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson", "Util", true, "copyStreamAndClose", "(InputStream,OutputStream)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson", "Util", true, "copyStreamAndClose", "(Reader,Writer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson", "Util", true, "createDirectories", "(Path,FileAttribute[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "encode", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "encodeRFC2396", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "ensureEndsWith", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "ensureEndsWith", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fileToPath", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fixEmpty", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fixEmptyAndTrim", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fixNull", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fixNull", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fixNull", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fixNull", "(Object,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fixNull", "(Object,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fixNull", "(Set)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fixNull", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "fullEncode", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "getFileName", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "intern", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "join", "(Collection,String)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "join", "(Collection,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "join", "(Collection[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "mapToEnv", "(Map)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "nullify", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "rawEncode", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "removeTrailingSlash", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "replaceMacro", "(String,Map)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "replaceMacro", "(String,Map)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "replaceMacro", "(String,VariableResolver)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["hudson", "Util", true, "replaceMacro", "(String,VariableResolver)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "replaceMacro", "(String,VariableResolver)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "singleQuote", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "toHexString", "(byte[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "tokenize", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "Util", true, "wrapToErrorSpan", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "WebAppMain$FileAndDescription", true, "FileAndDescription", "(File,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "WebAppMain$FileAndDescription", true, "FileAndDescription", "(File,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "XmlFile", false, "XmlFile", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "XmlFile", false, "XmlFile", "(XStream,File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "XmlFile", false, "XmlFile", "(XStream,File)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "XmlFile", false, "XmlFile", "(XStream,File,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "XmlFile", false, "XmlFile", "(XStream,File,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["hudson", "XmlFile", false, "getFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "XmlFile", false, "getXStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "XmlFile", false, "replaceIfNotAtTopLevel", "(Object,Supplier)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["hudson", "XmlFile", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidFile", true, "HsErrPidFile", "(HsErrPidList,File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidFile", true, "HsErrPidFile", "(HsErrPidList,File)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidFile", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidList", true, "getFiles", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.fingerprints", "GlobalFingerprintConfiguration", true, "getStorage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.fingerprints", "GlobalFingerprintConfiguration", true, "setStorage", "(FingerprintStorage)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.install", "InstallState", true, "InstallState", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.install", "InstallState", true, "name", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.install", "InstallState", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.management", "AdministrativeMonitorsApiData", true, "getMonitorsList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.management", "AdministrativeMonitorsDecorator", true, "filterNonSecurityAdministrativeMonitors", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["jenkins.management", "AdministrativeMonitorsDecorator", true, "filterSecurityAdministrativeMonitors", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["jenkins.management", "AsynchronousAdministrativeMonitor", true, "getLogText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.management", "Badge", true, "Badge", "(String,String,Severity)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.management", "Badge", true, "Badge", "(String,String,Severity)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.management", "Badge", true, "getText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.management", "Badge", true, "getTooltip", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.item_category", "Categories", true, "getItem", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.item_category", "Categories", true, "getItems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.item_category", "Category", true, "Category", "(String,String,String,int,int,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.item_category", "Category", true, "Category", "(String,String,String,int,int,List)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.item_category", "Category", true, "Category", "(String,String,String,int,int,List)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.item_category", "Category", true, "Category", "(String,String,String,int,int,List)", "", "Argument[5].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.item_category", "Category", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.item_category", "Category", true, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.item_category", "Category", true, "getItems", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.item_category", "Category", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.labels", "LabelAutoCompleteSeeder", true, "LabelAutoCompleteSeeder", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.labels", "LabelAutoCompleteSeeder", true, "getSeeds", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", true, "getLoadedBuilds", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", true, "put", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", true, "put", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", true, "updateBaseDir", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.lazy", "BuildReference$HolderFactory", true, "make", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "BuildReference", false, "BuildReference", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.lazy", "BuildReference", false, "BuildReference", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.lazy", "BuildReference", false, "get", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "BuildReference", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn$RunMixIn", true, "createReference", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn$RunMixIn", true, "getNextBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn$RunMixIn", true, "getPreviousBuild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", true, "_getRuns", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", true, "createHistoryWidget", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", true, "getRunMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.queue", "AsynchronousExecution", true, "completed", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.queue", "AsynchronousExecution", true, "getExecutor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model.queue", "AsynchronousExecution", true, "setExecutorWithoutCompleting", "(Executor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model.queue", "CompositeCauseOfBlockage", true, "CompositeCauseOfBlockage", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ArtifactManager", true, "onLoad", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ArtifactManagerConfiguration", true, "getArtifactManagerFactories", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "BlockedBecauseOfBuildInProgress", true, "BlockedBecauseOfBuildInProgress", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "BuildDiscarder$ConverterImpl", true, "ConverterImpl", "(Mapper)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "BuildDiscarderProperty", true, "BuildDiscarderProperty", "(BuildDiscarder)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "BuildDiscarderProperty", true, "getStrategy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "CauseOfInterruption$UserInterruption", false, "UserInterruption", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "CauseOfInterruption$UserInterruption", false, "UserInterruption", "(User)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "CauseOfInterruption$UserInterruption", false, "getUser", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "CauseOfInterruption$UserInterruption", false, "getUserId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "CauseOfInterruption$UserInterruption", false, "getUserOrNull", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Configuration", true, "getStringConfigParameter", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "DirectlyModifiableTopLevelItemGroup", true, "add", "(TopLevelItem,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "DirectlyModifiableTopLevelItemGroup", true, "add", "(TopLevelItem,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "DirectlyModifiableTopLevelItemGroup", true, "add", "(TopLevelItem,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "FingerprintFacet", true, "_setOwner", "(Fingerprint)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "FingerprintFacet", true, "getFingerprint", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "GlobalBuildDiscarderConfiguration", true, "getConfiguredBuildDiscarders", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "IdStrategy", true, "idFromFilename", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "IdStrategy", true, "keyFor", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "InterruptedBuildAction", true, "InterruptedBuildAction", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "InterruptedBuildAction", true, "getCauses", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "InvalidBuildsDir", true, "InvalidBuildsDir", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins$CloudList", true, "CloudList", "(Jenkins)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins$CloudList", true, "getByName", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "_getFingerprint", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "createProject", "(TopLevelItemDescriptor,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "doJnlpJars", "(StaplerRequest)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "doQuietDown", "(boolean,int,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "doUserContent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "expandVariablesForDirectory", "(String,String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "expandVariablesForDirectory", "(String,String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "expandVariablesForDirectory", "(String,String,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getActiveAdministrativeMonitors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getAdjuncts", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getAdministrativeMonitor", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getAgentProtocols", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getAllThreadDumps", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getApi", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getAsynchPeople", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getAuthorizationStrategy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getBuildDirFor", "(Job)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getBuildDirFor", "(Job)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getCloud", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getComputer", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getComputers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getCrumbIssuer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getDependencyGraph", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getDescriptor", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getDescriptorList", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getDescriptorOrDie", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getDynamic", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getExtensionList", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getExtensionList", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getFingerprint", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getFingerprintMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getFutureDependencyGraph", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getGlobalNodeProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getHeapDump", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getItem", "(String,Item)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getItem", "(String,Item)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getItem", "(String,ItemGroup)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getItem", "(String,ItemGroup)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getItemMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getJDK", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getJDKs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getJnlpJars", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getLabel", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getLabel", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getLabel", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getLabelAtom", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getLabelAtom", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getLabelAtom", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getLabelAtoms", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getLabels", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getLog", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getMarkupFormatter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getMyViewsTabBar", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getNode", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getNodesObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getPeople", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getPluginManager", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getProjectNamingStrategy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getProxy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getQuietDownReason", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getRawBuildsDir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getRawWorkspaceDir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getSCMListeners", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getSecretKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getSecurityRealm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getSetupWizard", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getSystemMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getTcpSlaveAgentListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getTopLevelItemNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getUpdateCenter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getUser", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "getWidgets", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "putItem", "(TopLevelItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "rebuildDependencyGraphAsync", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setAuthorizationStrategy", "(AuthorizationStrategy)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setCrumbIssuer", "(CrumbIssuer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setInstallState", "(InstallState)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setJDKs", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setLog", "(LogRecorderManager)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setMarkupFormatter", "(MarkupFormatter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setMyViewsTabBar", "(MyViewsTabBar)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setPrimaryView", "(View)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setProjectNamingStrategy", "(ProjectNamingStrategy)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setProxy", "(ProxyConfiguration)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setRawBuildsDir", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setSecurityRealm", "(SecurityRealm)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setSystemMessage", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Jenkins", true, "setViewsTabBar", "(ViewsTabBar)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "JenkinsLocationConfiguration", true, "getAdminAddress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "JenkinsLocationConfiguration", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "JenkinsLocationConfiguration", true, "setAdminAddress", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "JenkinsLocationConfiguration", true, "setUrl", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(Action)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(Computer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(Job)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(MenuItem)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(MenuItem)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(Node)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(String,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(String,String,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(String,String,String,String,boolean,boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(String,String,String,boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "add", "(String,String,String,boolean,boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "addAll", "(Collection)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "addHeader", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "addSeparator", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "from", "(ModelObjectWithContextMenu,StaplerRequest,StaplerResponse)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$ContextMenu", true, "from", "(ModelObjectWithContextMenu,StaplerRequest,StaplerResponse,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "MenuItem", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "getIconXml", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withContextRelativeUrl", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withContextRelativeUrl", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withDisplayName", "(ModelObject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withDisplayName", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withIcon", "(BallColor)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withIcon", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withIcon", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withIconClass", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withStockIcon", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withStockIcon", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu$MenuItem", true, "withUrl", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.model", "ModifiableTopLevelItemGroup", true, "createProject", "(TopLevelItemDescriptor,String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Nodes", true, "addNode", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "Nodes", true, "getNode", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "Nodes", true, "getNodes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", true, "extendSearchIndex", "(SearchIndexBuilder)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", true, "scheduleBuild2", "(Job,int,Action[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy$PatternProjectNamingStrategy", false, "PatternProjectNamingStrategy", "(String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy$PatternProjectNamingStrategy", false, "PatternProjectNamingStrategy", "(String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy$PatternProjectNamingStrategy", false, "PatternProjectNamingStrategy", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy$PatternProjectNamingStrategy", false, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy$PatternProjectNamingStrategy", false, "getNamePattern", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "RunAction2", true, "onAttached", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "RunAction2", true, "onLoad", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "SimpleGlobalBuildDiscarderStrategy", true, "SimpleGlobalBuildDiscarderStrategy", "(BuildDiscarder)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.model", "SimpleGlobalBuildDiscarderStrategy", true, "getDiscarder", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.model", "StandardArtifactManager", true, "StandardArtifactManager", "(Run)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.mvn", "FilePathGlobalSettingsProvider", true, "FilePathGlobalSettingsProvider", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.mvn", "FilePathGlobalSettingsProvider", true, "getPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "FilePathSettingsProvider", true, "FilePathSettingsProvider", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.mvn", "FilePathSettingsProvider", true, "getPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalMavenConfig", true, "getGlobalSettingsProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalMavenConfig", true, "getSettingsProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalMavenConfig", true, "setGlobalSettingsProvider", "(GlobalSettingsProvider)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalMavenConfig", true, "setSettingsProvider", "(SettingsProvider)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalSettingsProvider", true, "getSettingsFilePath", "(GlobalSettingsProvider,AbstractBuild,TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalSettingsProvider", true, "getSettingsFilePath", "(GlobalSettingsProvider,AbstractBuild,TaskListener)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalSettingsProvider", true, "getSettingsRemotePath", "(GlobalSettingsProvider,AbstractBuild,TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalSettingsProvider", true, "getSettingsRemotePath", "(GlobalSettingsProvider,AbstractBuild,TaskListener)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalSettingsProvider", true, "supplySettings", "(AbstractBuild,TaskListener)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "GlobalSettingsProvider", true, "supplySettings", "(AbstractBuild,TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "SettingsProvider", true, "getSettingsFilePath", "(SettingsProvider,AbstractBuild,TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "SettingsProvider", true, "getSettingsFilePath", "(SettingsProvider,AbstractBuild,TaskListener)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "SettingsProvider", true, "getSettingsRemotePath", "(SettingsProvider,AbstractBuild,TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "SettingsProvider", true, "getSettingsRemotePath", "(SettingsProvider,AbstractBuild,TaskListener)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "SettingsProvider", true, "supplySettings", "(AbstractBuild,TaskListener)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.mvn", "SettingsProvider", true, "supplySettings", "(AbstractBuild,TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator$Item", true, "Item", "(ArrayType,String[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", true, "getInstance", "(boolean,List)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", true, "getOverrides", "(ArrayType)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "RegexValidator", true, "match", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "RegexValidator", true, "validate", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", true, "UrlValidator", "(RegexValidator,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", true, "UrlValidator", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", true, "UrlValidator", "(String[],RegexValidator,long)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", true, "UrlValidator", "(String[],RegexValidator,long)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", true, "UrlValidator", "(String[],RegexValidator,long,DomainValidator)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", true, "UrlValidator", "(String[],RegexValidator,long,DomainValidator)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", true, "UrlValidator", "(String[],RegexValidator,long,DomainValidator)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", true, "UrlValidator", "(String[],long)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["jenkins.plugins", "DetachedPluginsUtil$DetachedPlugin", false, "getShortName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.plugins", "DetachedPluginsUtil$DetachedPlugin", false, "getSplitWhen", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.plugins", "DetachedPluginsUtil$DetachedPlugin", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.plugins", "DetachedPluginsUtil", true, "configLines", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats$SingleTokenStats", true, "getLastUseDate", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats$SingleTokenStats", true, "getTokenUuid", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats", true, "findTokenStatsById", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats", true, "findTokenStatsById", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats", true, "load", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats", true, "load", "(User)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats", true, "updateUsageForId", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats", true, "updateUsageForId", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", true, "buildNew", "(String,HashValue)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", true, "buildNew", "(String,HashValue)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", true, "buildNewFromLegacy", "(HashValue,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", true, "getCreationDate", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", true, "getUuid", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", true, "rename", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", true, "setName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", true, "findMatchingToken", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", true, "getLegacyToken", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", true, "getTokenListSortedByName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", true, "revokeToken", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "LegacyApiTokenAdministrativeMonitor", true, "getLegacyStatsOf", "(User,HashedToken)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.apitoken", "TokenUuidAndPlainValue", true, "TokenUuidAndPlainValue", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security.apitoken", "TokenUuidAndPlainValue", true, "TokenUuidAndPlainValue", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security.seed", "UserSeedProperty", true, "getSeed", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security.stapler", "StaticRoutingDecisionProvider", true, "add", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.security.stapler", "StaticRoutingDecisionProvider", true, "add", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security.stapler", "StaticRoutingDecisionProvider", true, "addBlacklistSignature", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.security.stapler", "StaticRoutingDecisionProvider", true, "addBlacklistSignature", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security.stapler", "StaticRoutingDecisionProvider", true, "remove", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.security.stapler", "StaticRoutingDecisionProvider", true, "removeBlacklistSignature", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$TokenInfoAndStats", true, "TokenInfoAndStats", "(HashedToken,SingleTokenStats)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$TokenInfoAndStats", true, "TokenInfoAndStats", "(HashedToken,SingleTokenStats)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", true, "getTokenStats", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", true, "getTokenStore", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "BasicApiTokenHelper", true, "isConnectingUsingApiToken", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "BasicHeaderProcessor", true, "setAuthenticationEntryPoint", "(AuthenticationEntryPoint)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "BasicHeaderProcessor", true, "setRememberMeServices", "(RememberMeServices)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ConfidentialKey", true, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "CryptoConfidentialKey", true, "CryptoConfidentialKey", "(Class,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "CryptoConfidentialKey", true, "CryptoConfidentialKey", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "DefaultConfidentialStore", true, "DefaultConfidentialStore", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "HMACConfidentialKey", true, "HMACConfidentialKey", "(Class,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "HMACConfidentialKey", true, "HMACConfidentialKey", "(Class,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "HMACConfidentialKey", true, "HMACConfidentialKey", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "HMACConfidentialKey", true, "HMACConfidentialKey", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "HexStringConfidentialKey", true, "HexStringConfidentialKey", "(Class,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "HexStringConfidentialKey", true, "HexStringConfidentialKey", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "HexStringConfidentialKey", true, "get", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "ImpersonatingExecutorService", false, "ImpersonatingExecutorService", "(ExecutorService,Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ImpersonatingExecutorService", false, "ImpersonatingExecutorService", "(ExecutorService,Authentication)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ImpersonatingScheduledExecutorService", false, "ImpersonatingScheduledExecutorService", "(ScheduledExecutorService,Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ImpersonatingScheduledExecutorService", false, "ImpersonatingScheduledExecutorService", "(ScheduledExecutorService,Authentication)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ImpersonatingUserDetailsService2", true, "ImpersonatingUserDetailsService2", "(UserDetailsService)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ImpersonatingUserDetailsService", true, "ImpersonatingUserDetailsService", "(UserDetailsService)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "NonSerializableSecurityContext", true, "NonSerializableSecurityContext", "(Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "NonSerializableSecurityContext", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "QueueItemAuthenticatorConfiguration", true, "getAuthenticators", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "RSAConfidentialKey", true, "getPublicKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "RSADigitalSignatureConfidentialKey", true, "RSADigitalSignatureConfidentialKey", "(Class,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "RSADigitalSignatureConfidentialKey", true, "RSADigitalSignatureConfidentialKey", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ResourceDomainConfiguration", false, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "ResourceDomainConfiguration", false, "setUrl", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "ResourceDomainRootAction", true, "getDynamic", "(String,StaplerRequest,StaplerResponse)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "ResourceDomainRootAction", true, "getRedirectUrl", "(Token,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "ResourceDomainRootAction", true, "getToken", "(DirectoryBrowserSupport,StaplerRequest)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "SecurityContextExecutorService", true, "SecurityContextExecutorService", "(ExecutorService)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsConfiguration", true, "getIgnoredWarnings", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsConfiguration", true, "setIgnoredWarnings", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.security", "UserDetailsCache", false, "getCached", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.security", "UserDetailsCache", false, "loadUserByUsername", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.slaves", "EncryptedSlaveAgentJnlpFile", true, "EncryptedSlaveAgentJnlpFile", "(AccessControlled,String,String,Permission)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.slaves", "EncryptedSlaveAgentJnlpFile", true, "EncryptedSlaveAgentJnlpFile", "(AccessControlled,String,String,Permission)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.slaves", "EncryptedSlaveAgentJnlpFile", true, "EncryptedSlaveAgentJnlpFile", "(AccessControlled,String,String,Permission)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.slaves", "EncryptedSlaveAgentJnlpFile", true, "EncryptedSlaveAgentJnlpFile", "(AccessControlled,String,String,Permission)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.slaves", "IOHubProvider", true, "getHub", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.slaves", "NioChannelSelector", true, "getHub", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", true, "RemotingWorkDirSettings", "(boolean,String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", true, "RemotingWorkDirSettings", "(boolean,String,String,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", true, "getInternalDir", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", true, "getWorkDirPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", true, "toCommandLineArgs", "(SlaveComputer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", true, "toCommandLineString", "(SlaveComputer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.tasks.filters.impl", "RetainVariablesLocalRule", true, "getVariables", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.tasks.filters.impl", "RetainVariablesLocalRule", true, "setVariables", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterException", true, "EnvVarsFilterException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterException", true, "getRule", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterException", true, "withRule", "(EnvVarsFilterRule)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterException", true, "withRule", "(EnvVarsFilterRule)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterException", true, "withVariable", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterException", true, "withVariable", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterRuleContext", true, "EnvVarsFilterRuleContext", "(Launcher,TaskListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterRuleContext", true, "EnvVarsFilterRuleContext", "(Launcher,TaskListener)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterRuleContext", true, "getLauncher", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterRuleContext", true, "getTaskListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterRuleWrapper", true, "EnvVarsFilterRuleWrapper", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterRuleWrapper", true, "createRuleWrapper", "(Run,Object,Launcher,List)", "", "Argument[3].Element", "ReturnValue", "taint", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterableBuilder", true, "buildEnvVarsFilterRules", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper$Context", false, "env", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper$Context", false, "env", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper$Context", false, "getDisposer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper$Context", false, "getEnv", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper$Context", false, "setDisposer", "(Disposer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.telemetry", "Correlator", true, "getCorrelationId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.triggers", "ReverseBuildTrigger", false, "ReverseBuildTrigger", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.triggers", "ReverseBuildTrigger", false, "ReverseBuildTrigger", "(String,Result)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.triggers", "ReverseBuildTrigger", false, "ReverseBuildTrigger", "(String,Result)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.triggers", "ReverseBuildTrigger", false, "getThreshold", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.triggers", "ReverseBuildTrigger", false, "getUpstreamProjects", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.triggers", "ReverseBuildTrigger", false, "setThreshold", "(Result)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem$SCMTriggerItems", true, "asSCMTriggerItem", "(Item)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem$SCMTriggerItems", true, "resolveMultiScmIfConfigured", "(SCM)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", true, "asItem", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", true, "getSCMs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.triggers", "TriggeredItem", true, "getTriggers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.antlr", "JenkinsANTLRErrorListener", true, "JenkinsANTLRErrorListener", "(Supplier)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.groovy", "GroovyHookScript", true, "GroovyHookScript", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.groovy", "GroovyHookScript", true, "GroovyHookScript", "(String,ServletContext,File,ClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.groovy", "GroovyHookScript", true, "GroovyHookScript", "(String,ServletContext,File,ClassLoader)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.groovy", "GroovyHookScript", true, "GroovyHookScript", "(String,ServletContext,File,ClassLoader)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.groovy", "GroovyHookScript", true, "GroovyHookScript", "(String,ServletContext,File,ClassLoader)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.groovy", "GroovyHookScript", true, "bind", "(String,Object)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["jenkins.util.groovy", "GroovyHookScript", true, "getBindings", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.io", "CompositeIOException", true, "CompositeIOException", "(String,IOException[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.io", "CompositeIOException", true, "CompositeIOException", "(String,IOException[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.io", "CompositeIOException", true, "CompositeIOException", "(String,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.io", "CompositeIOException", true, "CompositeIOException", "(String,List)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.io", "CompositeIOException", true, "getExceptions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.io", "FileBoolean", true, "FileBoolean", "(Class,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.io", "FileBoolean", true, "FileBoolean", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.io", "PathRemover$RetryStrategy", true, "failureMessage", "(Path,int)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.io", "PathRemover", true, "newFilteredRobustRemover", "(PathChecker,int,boolean,long)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.io", "PathRemover", true, "newRemoverWithStrategy", "(RetryStrategy)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.xml", "FilteredFunctionContext", true, "FilteredFunctionContext", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM$WriterImpl", true, "getOutput", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "XStreamDOM", "(String,Map,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "XStreamDOM", "(String,Map,List)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "XStreamDOM", "(String,Map,List)", "", "Argument[2].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "XStreamDOM", "(String,Map,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "XStreamDOM", "(String,Map,String)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "XStreamDOM", "(String,Map,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "expandMacro", "(VariableResolver)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "expandMacro", "(VariableResolver)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "expandMacro", "(VariableResolver)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "getAttribute", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "getAttribute", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "getAttributeMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "getChildren", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "getTagName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", true, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "AntClassLoader", true, "addPathFiles", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "AtmostOneTaskExecutor", true, "AtmostOneTaskExecutor", "(Callable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "AtmostOneTaskExecutor", true, "AtmostOneTaskExecutor", "(ExecutorService,Callable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "AtmostOneTaskExecutor", true, "AtmostOneTaskExecutor", "(ExecutorService,Callable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "AtmostOneTaskExecutor", true, "submit", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "BuildListenerAdapter", false, "BuildListenerAdapter", "(TaskListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "BuildListenerAdapter", false, "wrap", "(TaskListener)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "ContextResettingExecutorService", true, "ContextResettingExecutorService", "(ExecutorService)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "ErrorLoggingExecutorService", true, "ErrorLoggingExecutorService", "(ExecutorService)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "JSONSignatureValidator", true, "JSONSignatureValidator", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "MemoryReductionUtil", true, "internInPlace", "(String[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "NonLocalizable", true, "NonLocalizable", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "NonLocalizable", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "ServerTcpPort", true, "ServerTcpPort", "(int,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.util", "SystemProperties", true, "getString", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "SystemProperties", true, "getString", "(String,String,Level)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "TreeString", false, "of", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "TreeString", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "TreeString", false, "toString", "(TreeString)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "TreeStringBuilder", true, "intern", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "TreeStringBuilder", true, "intern", "(TreeString)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "child", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "child", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "forFile", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "forFilePath", "(FilePath)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "list", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "list", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "list", "(String,String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "list", "(String,String,boolean,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "list", "(boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "listOnlyDescendants", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "readLink", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.util", "VirtualFile", true, "toURI", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.websocket", "Provider$Listener", true, "getProviderSession", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.websocket", "Provider$Listener", true, "onWebSocketConnect", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.widgets", "HistoryPageEntry", true, "HistoryPageEntry", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.widgets", "HistoryPageEntry", true, "getEntry", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins.widgets", "HistoryPageFilter", true, "setSearchString", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins.widgets", "RunListProgressiveRendering", true, "setBuilds", "(Iterable)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins", "ExtensionRefreshException", true, "ExtensionRefreshException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins", "MissingDependencyException", true, "MissingDependencyException", "(String,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins", "MissingDependencyException", true, "MissingDependencyException", "(String,List)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["jenkins", "MissingDependencyException", true, "getMissingDependencies", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins", "MissingDependencyException", true, "getPluginShortName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jenkins", "RestartRequiredException", true, "RestartRequiredException", "(Localizable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jenkins", "RestartRequiredException", true, "RestartRequiredException", "(Localizable,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.acls.sid", "GrantedAuthoritySid", true, "GrantedAuthoritySid", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.acls.sid", "GrantedAuthoritySid", true, "getGrantedAuthority", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.acls.sid", "GrantedAuthoritySid", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.acls.sid", "PrincipalSid", true, "PrincipalSid", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.acls.sid", "PrincipalSid", true, "getPrincipal", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.acls.sid", "PrincipalSid", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.context", "SecurityContext", true, "getAuthentication", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.context", "SecurityContext", true, "setAuthentication", "(Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.providers.anonymous", "AnonymousAuthenticationToken", true, "AnonymousAuthenticationToken", "(AnonymousAuthenticationToken)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.providers", "AbstractAuthenticationToken", true, "setDetails", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.providers", "UsernamePasswordAuthenticationToken", true, "UsernamePasswordAuthenticationToken", "(UsernamePasswordAuthenticationToken)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.ui.rememberme", "RememberMeServices", true, "fromSpring", "(RememberMeServices)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.ui.rememberme", "RememberMeServices", true, "toSpring", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "User", "(String,String,boolean,GrantedAuthority[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "User", "(String,String,boolean,GrantedAuthority[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "User", "(String,String,boolean,GrantedAuthority[])", "", "Argument[3].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "User", "(String,String,boolean,boolean,boolean,GrantedAuthority[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "User", "(String,String,boolean,boolean,boolean,GrantedAuthority[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "User", "(String,String,boolean,boolean,boolean,GrantedAuthority[])", "", "Argument[5].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "User", "(String,String,boolean,boolean,boolean,boolean,GrantedAuthority[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "User", "(String,String,boolean,boolean,boolean,boolean,GrantedAuthority[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "User", "(String,String,boolean,boolean,boolean,boolean,GrantedAuthority[])", "", "Argument[6].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "User", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", true, "fromSpring", "(UserDetails)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", true, "fromSpringPrincipal", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", true, "getAuthorities", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", true, "getPassword", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", true, "getUsername", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", true, "toSpring", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", true, "toSpringPrincipal", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetailsService", true, "loadUserByUsername", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity.userdetails", "UsernameNotFoundException", true, "UsernameNotFoundException", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity", "AccountExpiredException", true, "AccountExpiredException", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity", "AcegiSecurityException", true, "toSpring", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "Authentication", true, "fromSpring", "(Authentication)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "Authentication", true, "getAuthorities", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "Authentication", true, "getDetails", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "Authentication", true, "toSpring", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "AuthenticationException", true, "fromSpring", "(AuthenticationException)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "AuthenticationException", true, "getAuthentication", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "AuthenticationException", true, "getExtraInformation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "AuthenticationException", true, "setAuthentication", "(Authentication)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity", "BadCredentialsException", true, "BadCredentialsException", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity", "CredentialsExpiredException", true, "CredentialsExpiredException", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity", "DisabledException", true, "DisabledException", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity", "GrantedAuthority", true, "getAuthority", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "GrantedAuthorityImpl", true, "GrantedAuthorityImpl", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.acegisecurity", "GrantedAuthorityImpl", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.acegisecurity", "LockedException", true, "LockedException", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "BuildStatusIcon", true, "BuildStatusIcon", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "BuildStatusIcon", true, "BuildStatusIcon", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "BuildStatusIcon", true, "BuildStatusIcon", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "BuildStatusIcon", true, "BuildStatusIcon", "(String,String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "BuildStatusIcon", true, "BuildStatusIcon", "(String,String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "BuildStatusIcon", true, "BuildStatusIcon", "(String,String,String,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String,IconFormat)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String,IconFormat)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String,IconFormat)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String,IconType)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String,IconType)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String,IconType)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String,IconType,IconFormat)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String,IconType,IconFormat)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "Icon", "(String,String,String,IconType,IconFormat)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "getClassSpec", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "getNormalizedSelector", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "getQualifiedUrl", "(JellyContext)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "getQualifiedUrl", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "getQualifiedUrl", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "getStyle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "toNormalizedCSSSelector", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "toNormalizedIconName", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "toNormalizedIconNameClass", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "toNormalizedIconSizeClass", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", true, "toNormalizedIconUrl", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", true, "addIcon", "(Icon)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", true, "addIcon", "(Icon)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", true, "getCoreIcons", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", true, "getIconByClassSpec", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", true, "getIconByNormalizedCSSSelector", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", true, "getIconByUrl", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "IconType", false, "toQualifiedUrl", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "IconType", false, "toQualifiedUrl", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "WeatherIcon", true, "WeatherIcon", "(String,String,Status)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.icon", "WeatherIcon", true, "WeatherIcon", "(String,String,Status)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "build", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "getClasses", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "getHtmlTooltip", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "getPluginName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "getRaw", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "getTitle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "getTooltip", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withClasses", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withClasses", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withHtmlTooltip", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withHtmlTooltip", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withId", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withId", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withName", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withPluginName", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withPluginName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withRaw", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withRaw", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withTitle", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withTitle", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withTooltip", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest$Builder", true, "withTooltip", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest", false, "getClasses", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest", false, "getHtmlTooltip", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest", false, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest", false, "getPluginName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest", false, "getTitle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.jenkins.ui.symbol", "SymbolRequest", false, "getTooltip", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["antlr", "ANTLRException", "ANTLRException", "(String,Throwable)", "summary", "df-generated"] + - ["antlr", "ANTLRException", "ANTLRException", "(Throwable)", "summary", "df-generated"] + - ["executable", "Main", "whoAmI", "(File)", "summary", "df-generated"] + - ["hudson.cli.client", "Messages", "CLI_BadAuth", "()", "summary", "df-generated"] + - ["hudson.cli.client", "Messages", "CLI_NoSuchFileExists", "(Object)", "summary", "df-generated"] + - ["hudson.cli.client", "Messages", "CLI_NoURL", "()", "summary", "df-generated"] + - ["hudson.cli.client", "Messages", "CLI_Usage", "()", "summary", "df-generated"] + - ["hudson.cli.client", "Messages", "_CLI_BadAuth", "()", "summary", "df-generated"] + - ["hudson.cli.client", "Messages", "_CLI_NoSuchFileExists", "(Object)", "summary", "df-generated"] + - ["hudson.cli.client", "Messages", "_CLI_NoURL", "()", "summary", "df-generated"] + - ["hudson.cli.client", "Messages", "_CLI_Usage", "()", "summary", "df-generated"] + - ["hudson.cli.handlers", "AbstractItemOptionHandler", "AbstractItemOptionHandler", "(CmdLineParser,OptionDef,Setter)", "summary", "df-generated"] + - ["hudson.cli.handlers", "AbstractProjectOptionHandler", "AbstractProjectOptionHandler", "(CmdLineParser,OptionDef,Setter)", "summary", "df-generated"] + - ["hudson.cli.handlers", "JobOptionHandler", "JobOptionHandler", "(CmdLineParser,OptionDef,Setter)", "summary", "df-generated"] + - ["hudson.cli.handlers", "NodeOptionHandler", "NodeOptionHandler", "(CmdLineParser,OptionDef,Setter)", "summary", "df-generated"] + - ["hudson.cli.handlers", "ParameterizedJobOptionHandler", "ParameterizedJobOptionHandler", "(CmdLineParser,OptionDef,Setter)", "summary", "df-generated"] + - ["hudson.cli.handlers", "TopLevelItemOptionHandler", "TopLevelItemOptionHandler", "(CmdLineParser,OptionDef,Setter)", "summary", "df-generated"] + - ["hudson.cli.handlers", "ViewOptionHandler", "ViewOptionHandler", "(CmdLineParser,OptionDef,Setter)", "summary", "df-generated"] + - ["hudson.cli.handlers", "ViewOptionHandler", "getView", "(String)", "summary", "df-generated"] + - ["hudson.cli", "CLI", "_main", "(String[])", "summary", "df-generated"] + - ["hudson.cli", "CLI", "loadKey", "(File)", "summary", "df-generated"] + - ["hudson.cli", "CLI", "loadKey", "(File,String)", "summary", "df-generated"] + - ["hudson.cli", "CLI", "loadKey", "(String)", "summary", "df-generated"] + - ["hudson.cli", "CLI", "loadKey", "(String,String)", "summary", "df-generated"] + - ["hudson.cli", "CLIAction", "doCommand", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.cli", "CLIAction", "doWs", "()", "summary", "df-generated"] + - ["hudson.cli", "CLIAction", "isWebSocketSupported", "()", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "all", "()", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "checkChannel", "()", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "clone", "(String)", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "getCurrent", "()", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "getLongDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "getName", "()", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "getShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "getSingleLineSummary", "()", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "getUsage", "()", "summary", "df-generated"] + - ["hudson.cli", "CLICommand", "setClientCharset", "(Charset)", "summary", "df-generated"] + - ["hudson.cli", "CliTransportAuthenticator", "all", "()", "summary", "df-generated"] + - ["hudson.cli", "CliTransportAuthenticator", "authenticate", "(String,Channel,Connection)", "summary", "df-generated"] + - ["hudson.cli", "CliTransportAuthenticator", "supportsProtocol", "(String)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "Connection", "(Socket)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "close", "()", "summary", "df-generated"] + - ["hudson.cli", "Connection", "diffieHellman", "(boolean)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "diffieHellman", "(boolean,int)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "encryptConnection", "(SecretKey,String)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "fold", "(byte[],int)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "proveIdentity", "(byte[],KeyPair)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "readBoolean", "()", "summary", "df-generated"] + - ["hudson.cli", "Connection", "readKey", "()", "summary", "df-generated"] + - ["hudson.cli", "Connection", "readObject", "()", "summary", "df-generated"] + - ["hudson.cli", "Connection", "verifyIdentity", "(byte[])", "summary", "df-generated"] + - ["hudson.cli", "Connection", "writeBoolean", "(boolean)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "writeKey", "(Key)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "writeObject", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Connection", "writeUTF", "(String)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "AddJobToViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "BuildCommand_CLICause_CannotBuildConfigNotSaved", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "BuildCommand_CLICause_CannotBuildDisabled", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "BuildCommand_CLICause_CannotBuildUnknownReasons", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "BuildCommand_CLICause_ShortDescription", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "BuildCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "CancelQuietDownCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "ClearQueueCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "CliProtocol2_displayName", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "CliProtocol_displayName", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "ConnectNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "ConsoleCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "CopyJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "CreateJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "CreateNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "CreateViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "DeleteBuildsCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "DeleteJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "DeleteNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "DeleteViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "DisablePluginCommand_NoSuchStrategy", "(Object,Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "DisablePluginCommand_PrintUsageSummary", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "DisablePluginCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "DisablePluginCommand_StatusMessage", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "DisconnectNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "EnablePluginCommand_MissingDependencies", "(Object,Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "EnablePluginCommand_NoSuchPlugin", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "EnablePluginCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "GetJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "GetNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "GetViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "GroovyCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "GroovyshCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "HelpCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "InstallPluginCommand_DidYouMean", "(Object,Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "InstallPluginCommand_InstallingFromUpdateCenter", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "InstallPluginCommand_InstallingPluginFromLocalFile", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "InstallPluginCommand_InstallingPluginFromStdin", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "InstallPluginCommand_InstallingPluginFromUrl", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "InstallPluginCommand_NoUpdateCenterDefined", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "InstallPluginCommand_NoUpdateDataRetrieved", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "InstallPluginCommand_NotAValidSourceName", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "InstallPluginCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "ListChangesCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "ListJobsCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "ListPluginsCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "OfflineNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "OnlineNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "QuietDownCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "ReloadConfigurationCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "ReloadJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "RemoveJobFromViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "SessionIdCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "SetBuildDescriptionCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "SetBuildDisplayNameCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "UpdateJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "UpdateNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "UpdateViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "VersionCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "WaitNodeOfflineCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "WaitNodeOnlineCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "WhoAmICommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_AddJobToViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_BuildCommand_CLICause_CannotBuildConfigNotSaved", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_BuildCommand_CLICause_CannotBuildDisabled", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_BuildCommand_CLICause_CannotBuildUnknownReasons", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_BuildCommand_CLICause_ShortDescription", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_BuildCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_CancelQuietDownCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_ClearQueueCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_CliProtocol2_displayName", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_CliProtocol_displayName", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_ConnectNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_ConsoleCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_CopyJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_CreateJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_CreateNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_CreateViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_DeleteBuildsCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_DeleteJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_DeleteNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_DeleteViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_DisablePluginCommand_NoSuchStrategy", "(Object,Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_DisablePluginCommand_PrintUsageSummary", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_DisablePluginCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_DisablePluginCommand_StatusMessage", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_DisconnectNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_EnablePluginCommand_MissingDependencies", "(Object,Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_EnablePluginCommand_NoSuchPlugin", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_EnablePluginCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_GetJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_GetNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_GetViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_GroovyCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_GroovyshCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_HelpCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_InstallPluginCommand_DidYouMean", "(Object,Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_InstallPluginCommand_InstallingFromUpdateCenter", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_InstallPluginCommand_InstallingPluginFromLocalFile", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_InstallPluginCommand_InstallingPluginFromStdin", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_InstallPluginCommand_InstallingPluginFromUrl", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_InstallPluginCommand_NoUpdateCenterDefined", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_InstallPluginCommand_NoUpdateDataRetrieved", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_InstallPluginCommand_NotAValidSourceName", "(Object)", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_InstallPluginCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_ListChangesCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_ListJobsCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_ListPluginsCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_OfflineNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_OnlineNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_QuietDownCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_ReloadConfigurationCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_ReloadJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_RemoveJobFromViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_SessionIdCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_SetBuildDescriptionCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_SetBuildDisplayNameCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_UpdateJobCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_UpdateNodeCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_UpdateViewCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_VersionCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_WaitNodeOfflineCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_WaitNodeOnlineCommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "Messages", "_WhoAmICommand_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.cli", "PrivateKeyProvider", "hasKeys", "()", "summary", "df-generated"] + - ["hudson.cli", "PrivateKeyProvider", "loadKey", "(File,String)", "summary", "df-generated"] + - ["hudson.cli", "PrivateKeyProvider", "loadKey", "(String,String)", "summary", "df-generated"] + - ["hudson.cli", "PrivateKeyProvider", "readFrom", "(File)", "summary", "df-generated"] + - ["hudson.cli", "PrivateKeyProvider", "readFromDefaultLocations", "()", "summary", "df-generated"] + - ["hudson.console", "AnnotatedLargeText", "doProgressiveHtml", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.console", "AnnotatedLargeText", "doProgressiveText", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.console", "AnnotatedLargeText", "writeHtmlTo", "(long,Writer)", "summary", "df-generated"] + - ["hudson.console", "AnnotatedLargeText", "writeRawLogTo", "(long,OutputStream)", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotationDescriptor", "all", "()", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotationDescriptor", "doScriptJs", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotationDescriptor", "doStyleCss", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotationDescriptor", "hasScript", "()", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotationDescriptor", "hasStylesheet", "()", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotator", "_for", "(Object)", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotator", "annotate", "(Object,MarkupText)", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotator", "initial", "(Object)", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotatorFactory", "all", "()", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotatorFactory", "doScriptJs", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotatorFactory", "doStyleCss", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotatorFactory", "hasScript", "()", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotatorFactory", "hasStylesheet", "()", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotatorFactory", "newInstance", "(Object)", "summary", "df-generated"] + - ["hudson.console", "ConsoleAnnotatorFactory", "type", "()", "summary", "df-generated"] + - ["hudson.console", "ConsoleLogFilter", "all", "()", "summary", "df-generated"] + - ["hudson.console", "ConsoleNote", "annotate", "(Object,MarkupText,int)", "summary", "df-generated"] + - ["hudson.console", "ConsoleNote", "encode", "()", "summary", "df-generated"] + - ["hudson.console", "ConsoleNote", "encodeTo", "(OutputStream)", "summary", "df-generated"] + - ["hudson.console", "ConsoleNote", "encodeTo", "(Writer)", "summary", "df-generated"] + - ["hudson.console", "ConsoleNote", "findPreamble", "(byte[],int,int)", "summary", "df-generated"] + - ["hudson.console", "ConsoleNote", "readFrom", "(DataInputStream)", "summary", "df-generated"] + - ["hudson.console", "ConsoleNote", "skip", "(DataInputStream)", "summary", "df-generated"] + - ["hudson.console", "ExpandableDetailsNote", "encodeTo", "(String,String)", "summary", "df-generated"] + - ["hudson.console", "LineTransformationOutputStream", "forceEol", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "HudsonHomeDiskUsageMonitor$Solution", "all", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "HudsonHomeDiskUsageMonitor", "doAct", "(String)", "summary", "df-generated"] + - ["hudson.diagnosis", "HudsonHomeDiskUsageMonitor", "get", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "HudsonHomeDiskUsageMonitor", "getSolution", "(String)", "summary", "df-generated"] + - ["hudson.diagnosis", "HudsonHomeDiskUsageMonitor", "getSolutions", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "HsErrPidList_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "HudsonHomeDiskUsageMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "MemoryUsageMonitor_TOTAL", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "MemoryUsageMonitor_USED", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "NullIdDescriptorMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "OldDataMonitor_Description", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "OldDataMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "OldDataMonitor_OldDataTooltip", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "ReverseProxySetupMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "TooManyJobsButNoView_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_HsErrPidList_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_HudsonHomeDiskUsageMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_MemoryUsageMonitor_TOTAL", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_MemoryUsageMonitor_USED", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_NullIdDescriptorMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_OldDataMonitor_Description", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_OldDataMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_OldDataMonitor_OldDataTooltip", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_ReverseProxySetupMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "Messages", "_TooManyJobsButNoView_DisplayName", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "NullIdDescriptorMonitor", "verify", "()", "summary", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor$VersionRange", "isOld", "(int)", "summary", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor", "doAct", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor", "doDiscard", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor", "doIndex", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor", "doUpgrade", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor", "report", "(Saveable,Collection)", "summary", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor", "report", "(Saveable,String)", "summary", "df-generated"] + - ["hudson.diagnosis", "OldDataMonitor", "report", "(UnmarshallingContext,String)", "summary", "df-generated"] + - ["hudson.diagnosis", "ReverseProxySetupMonitor", "doAct", "(String)", "summary", "df-generated"] + - ["hudson.diagnosis", "ReverseProxySetupMonitor", "getTestForReverseProxySetup", "(String)", "summary", "df-generated"] + - ["hudson.diagnosis", "TooManyJobsButNoView", "doAct", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "WorkspaceSnapshotSCM_IncorrectJobType", "(Object)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "WorkspaceSnapshotSCM_NoBuild", "(Object,Object)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "WorkspaceSnapshotSCM_NoSuchJob", "(Object,Object)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "WorkspaceSnapshotSCM_NoSuchPermalink", "(Object,Object)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "WorkspaceSnapshotSCM_NoWorkspace", "(Object,Object)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "_WorkspaceSnapshotSCM_IncorrectJobType", "(Object)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "_WorkspaceSnapshotSCM_NoBuild", "(Object,Object)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "_WorkspaceSnapshotSCM_NoSuchJob", "(Object,Object)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "_WorkspaceSnapshotSCM_NoSuchPermalink", "(Object,Object)", "summary", "df-generated"] + - ["hudson.fsp", "Messages", "_WorkspaceSnapshotSCM_NoWorkspace", "(Object,Object)", "summary", "df-generated"] + - ["hudson.init.impl", "GroovyInitScript", "init", "(Jenkins)", "summary", "df-generated"] + - ["hudson.init.impl", "InitialUserContent", "init", "(Jenkins)", "summary", "df-generated"] + - ["hudson.init.impl", "InstallUncaughtExceptionHandler", "init", "(Jenkins)", "summary", "df-generated"] + - ["hudson.init.impl", "Messages", "GroovyInitScript_init", "()", "summary", "df-generated"] + - ["hudson.init.impl", "Messages", "InitialUserContent_init", "()", "summary", "df-generated"] + - ["hudson.init.impl", "Messages", "_GroovyInitScript_init", "()", "summary", "df-generated"] + - ["hudson.init.impl", "Messages", "_InitialUserContent_init", "()", "summary", "df-generated"] + - ["hudson.init", "InitMilestone", "ordering", "()", "summary", "df-generated"] + - ["hudson.init", "InitMilestone", "toString", "()", "summary", "df-generated"] + - ["hudson.init", "InitStrategy", "get", "(ClassLoader)", "summary", "df-generated"] + - ["hudson.init", "InitStrategy", "listPluginArchives", "(PluginManager)", "summary", "df-generated"] + - ["hudson.init", "InitStrategy", "skipInitTask", "(Task)", "summary", "df-generated"] + - ["hudson.init", "TaskMethodFinder$TaskImpl", "toString", "()", "summary", "df-generated"] + - ["hudson.init", "TermMilestone", "ordering", "()", "summary", "df-generated"] + - ["hudson.init", "TermMilestone", "toString", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "canRestart", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "canRewriteHudsonWar", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "get", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "getHudsonWar", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "onExtendTimeout", "(long,TimeUnit)", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "onReady", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "onReload", "(String,String)", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "onStatusUpdate", "(String)", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "onStop", "(String,String)", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "restart", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "rewriteHudsonWar", "(File)", "summary", "df-generated"] + - ["hudson.lifecycle", "Lifecycle", "verifyRestartable", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "WindowsInstallerLink_Description", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "WindowsInstallerLink_DisplayName", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "WindowsSlaveInstaller_ConfirmInstallation", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "WindowsSlaveInstaller_DotNetRequired", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "WindowsSlaveInstaller_InstallationSuccessful", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "WindowsSlaveInstaller_RootFsDoesntExist", "(Object)", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "_WindowsInstallerLink_Description", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "_WindowsInstallerLink_DisplayName", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "_WindowsSlaveInstaller_ConfirmInstallation", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "_WindowsSlaveInstaller_DotNetRequired", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "_WindowsSlaveInstaller_InstallationSuccessful", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "Messages", "_WindowsSlaveInstaller_RootFsDoesntExist", "(Object)", "summary", "df-generated"] + - ["hudson.lifecycle", "RestartNotSupportedException", "RestartNotSupportedException", "(String,Throwable)", "summary", "df-generated"] + - ["hudson.lifecycle", "WindowsInstallerLink", "doRestart", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.lifecycle", "WindowsInstallerLink", "isInstalled", "()", "summary", "df-generated"] + - ["hudson.lifecycle", "WindowsInstallerLink", "registerIfApplicable", "()", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", "disable", "()", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", "enable", "()", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", "getLevel", "()", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", "includes", "(LogRecord)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder$Target", "matches", "(LogRecord)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "doAutoCompleteLoggerName", "(String)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "doCheckName", "(String,String)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "doClear", "()", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "doConfigSubmit", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "doDoDelete", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "doRss", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "getLogRecords", "()", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "getParent", "()", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "getSlaveLogRecords", "()", "summary", "df-generated"] + - ["hudson.logging", "LogRecorder", "load", "()", "summary", "df-generated"] + - ["hudson.logging", "LogRecorderManager", "doCheckNewName", "(String)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorderManager", "doConfigLogger", "(String,String)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorderManager", "doNewLogRecorder", "(String)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorderManager", "doRss", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorderManager", "init", "(Jenkins)", "summary", "df-generated"] + - ["hudson.logging", "LogRecorderManager", "load", "()", "summary", "df-generated"] + - ["hudson.logging", "Messages", "LogRecorderManager_DisplayName", "()", "summary", "df-generated"] + - ["hudson.logging", "Messages", "LogRecorderManager_LoggerNotFound", "(Object)", "summary", "df-generated"] + - ["hudson.logging", "Messages", "LogRecorderManager_init", "()", "summary", "df-generated"] + - ["hudson.logging", "Messages", "LogRecorder_Target_Empty_Warning", "()", "summary", "df-generated"] + - ["hudson.logging", "Messages", "_LogRecorderManager_DisplayName", "()", "summary", "df-generated"] + - ["hudson.logging", "Messages", "_LogRecorderManager_LoggerNotFound", "(Object)", "summary", "df-generated"] + - ["hudson.logging", "Messages", "_LogRecorderManager_init", "()", "summary", "df-generated"] + - ["hudson.logging", "Messages", "_LogRecorder_Target_Empty_Warning", "()", "summary", "df-generated"] + - ["hudson.markup", "MarkupFormatter", "doPreviewDescription", "(String)", "summary", "df-generated"] + - ["hudson.markup", "MarkupFormatter", "getHelpUrl", "()", "summary", "df-generated"] + - ["hudson.markup", "MarkupFormatter", "previewsNowNeedPostForSecurity2153", "(String,StaplerRequest)", "summary", "df-generated"] + - ["hudson.markup", "MarkupFormatter", "translate", "(String)", "summary", "df-generated"] + - ["hudson.markup", "MarkupFormatter", "translate", "(String,Writer)", "summary", "df-generated"] + - ["hudson.markup", "MarkupFormatterDescriptor", "all", "()", "summary", "df-generated"] + - ["hudson.markup", "Messages", "EscapedMarkupFormatter_DisplayName", "()", "summary", "df-generated"] + - ["hudson.markup", "Messages", "_EscapedMarkupFormatter_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAssignmentAction", "getAssignedLabel", "(SubTask)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtom", "doConfigSubmit", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtom", "doSubmitDescription", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtom", "escape", "(String)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtom", "findNearest", "(String)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtom", "getApplicablePropertyDescriptors", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtom", "getPropertiesList", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtom", "load", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtom", "needsEscape", "(String)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtomProperty", "all", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelAtomProperty", "getActions", "(LabelAtom)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpression", "autoComplete", "(String)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpression", "validate", "(String)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpression", "validate", "(String,Item)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionLexer", "LabelExpressionLexer", "(CharStream)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$ExprContext", "EOF", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$ExprContext", "ExprContext", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$ExprContext", "term1", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term1Context", "IFF", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term1Context", "IFF", "(int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term1Context", "Term1Context", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term1Context", "term2", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term1Context", "term2", "(int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term2Context", "IMPLIES", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term2Context", "Term2Context", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term2Context", "term3", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term2Context", "term3", "(int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term3Context", "OR", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term3Context", "OR", "(int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term3Context", "Term3Context", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term3Context", "term4", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term3Context", "term4", "(int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term4Context", "AND", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term4Context", "AND", "(int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term4Context", "Term4Context", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term4Context", "term5", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term4Context", "term5", "(int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term5Context", "NOT", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term5Context", "Term5Context", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term5Context", "term6", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term6Context", "ATOM", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term6Context", "LPAREN", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term6Context", "RPAREN", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term6Context", "STRINGLITERAL", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term6Context", "Term6Context", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser$Term6Context", "term1", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser", "LabelExpressionParser", "(TokenStream)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser", "expr", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser", "term1", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser", "term2", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser", "term3", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser", "term4", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser", "term5", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParser", "term6", "()", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "enterExpr", "(ExprContext)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "enterTerm1", "(Term1Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "enterTerm2", "(Term2Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "enterTerm3", "(Term3Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "enterTerm4", "(Term4Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "enterTerm5", "(Term5Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "enterTerm6", "(Term6Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "exitExpr", "(ExprContext)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "exitTerm1", "(Term1Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "exitTerm2", "(Term2Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "exitTerm3", "(Term3Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "exitTerm4", "(Term4Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "exitTerm5", "(Term5Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelExpressionParserListener", "exitTerm6", "(Term6Context)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelVisitor", "onAnd", "(And,Object)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelVisitor", "onAtom", "(LabelAtom,Object)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelVisitor", "onIff", "(Iff,Object)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelVisitor", "onImplies", "(Implies,Object)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelVisitor", "onNot", "(Not,Object)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelVisitor", "onOr", "(Or,Object)", "summary", "df-generated"] + - ["hudson.model.labels", "LabelVisitor", "onParen", "(Paren,Object)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "all", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "checkBeforeCopy", "(Item,ItemGroup)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "fireLocationChange", "(Item,String)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "fireOnCopied", "(Item,Item)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "fireOnCreated", "(Item)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "fireOnDeleted", "(Item)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "fireOnUpdated", "(Item)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "onBeforeShutdown", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "onCheckCopy", "(Item,ItemGroup)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "onCopied", "(Item,Item)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "onCreated", "(Item)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "onDeleted", "(Item)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "onLoaded", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "onLocationChanged", "(Item,String,String)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "onRenamed", "(Item,String,String)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "onUpdated", "(Item)", "summary", "df-generated"] + - ["hudson.model.listeners", "ItemListener", "register", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "all", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "fireCompleted", "(Run,TaskListener)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "fireDeleted", "(Run)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "fireFinalized", "(Run)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "fireInitialize", "(Run)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "fireStarted", "(Run,TaskListener)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "onCompleted", "(Run,TaskListener)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "onDeleted", "(Run)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "onFinalized", "(Run)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "onInitialize", "(Run)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "onStarted", "(Run,TaskListener)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "register", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "setUpEnvironment", "(AbstractBuild,Launcher,BuildListener)", "summary", "df-generated"] + - ["hudson.model.listeners", "RunListener", "unregister", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMListener", "all", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMListener", "onChangeLogParsed", "(AbstractBuild,BuildListener,ChangeLogSet)", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMListener", "onChangeLogParsed", "(Run,SCM,TaskListener,ChangeLogSet)", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMListener", "onCheckout", "(Run,SCM,FilePath,TaskListener,File,SCMRevisionState)", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMListener", "register", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMListener", "unregister", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMPollListener", "all", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMPollListener", "fireBeforePolling", "(AbstractProject,TaskListener)", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMPollListener", "firePollingFailed", "(AbstractProject,TaskListener,Throwable)", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMPollListener", "firePollingSuccess", "(AbstractProject,TaskListener,PollingResult)", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMPollListener", "onBeforePolling", "(AbstractProject,TaskListener)", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMPollListener", "onPollingFailed", "(AbstractProject,TaskListener,Throwable)", "summary", "df-generated"] + - ["hudson.model.listeners", "SCMPollListener", "onPollingSuccess", "(AbstractProject,TaskListener,PollingResult)", "summary", "df-generated"] + - ["hudson.model.listeners", "SaveableListener", "all", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "SaveableListener", "fireOnChange", "(Saveable,XmlFile)", "summary", "df-generated"] + - ["hudson.model.listeners", "SaveableListener", "onChange", "(Saveable,XmlFile)", "summary", "df-generated"] + - ["hudson.model.listeners", "SaveableListener", "register", "()", "summary", "df-generated"] + - ["hudson.model.listeners", "SaveableListener", "unregister", "()", "summary", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage", "fromMessage", "(Localizable)", "summary", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage", "getShortDescription", "()", "summary", "df-generated"] + - ["hudson.model.queue", "CauseOfBlockage", "print", "(TaskListener)", "summary", "df-generated"] + - ["hudson.model.queue", "Executables", "getEstimatedDurationFor", "(Executable)", "summary", "df-generated"] + - ["hudson.model.queue", "FoldableAction", "foldIntoExisting", "(Item,Task,List)", "summary", "df-generated"] + - ["hudson.model.queue", "FutureLoad", "FutureLoad", "(long,long,int)", "summary", "df-generated"] + - ["hudson.model.queue", "FutureLoad", "toString", "()", "summary", "df-generated"] + - ["hudson.model.queue", "LoadPredictor", "all", "()", "summary", "df-generated"] + - ["hudson.model.queue", "LoadPredictor", "predict", "(Computer,long,long)", "summary", "df-generated"] + - ["hudson.model.queue", "LoadPredictor", "predict", "(MappingWorksheet,Computer,long,long)", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$ExecutorChunk", "canAccept", "(WorkChunk)", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$ExecutorChunk", "capacity", "()", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$ExecutorSlot", "getExecutor", "()", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$ExecutorSlot", "isAvailable", "()", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$Mapping", "execute", "(WorkUnitContext)", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$Mapping", "get", "(int)", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$Mapping", "isCompletelyValid", "()", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$Mapping", "isPartiallyValid", "()", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$Mapping", "size", "()", "summary", "df-generated"] + - ["hudson.model.queue", "MappingWorksheet$WorkChunk", "applicableExecutorChunks", "()", "summary", "df-generated"] + - ["hudson.model.queue", "Messages", "QueueSorter_installDefaultQueueSorter", "()", "summary", "df-generated"] + - ["hudson.model.queue", "Messages", "_QueueSorter_installDefaultQueueSorter", "()", "summary", "df-generated"] + - ["hudson.model.queue", "QueueListener", "all", "()", "summary", "df-generated"] + - ["hudson.model.queue", "QueueListener", "onEnterBlocked", "(BlockedItem)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueListener", "onEnterBuildable", "(BuildableItem)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueListener", "onEnterWaiting", "(WaitingItem)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueListener", "onLeaveBlocked", "(BlockedItem)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueListener", "onLeaveBuildable", "(BuildableItem)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueListener", "onLeaveWaiting", "(WaitingItem)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueListener", "onLeft", "(LeftItem)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueSorter", "all", "()", "summary", "df-generated"] + - ["hudson.model.queue", "QueueSorter", "installDefaultQueueSorter", "()", "summary", "df-generated"] + - ["hudson.model.queue", "QueueSorter", "sortBlockedItems", "(List)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueSorter", "sortBuildableItems", "(List)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueTaskDispatcher", "all", "()", "summary", "df-generated"] + - ["hudson.model.queue", "QueueTaskDispatcher", "canRun", "(Item)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueTaskDispatcher", "canTake", "(Node,BuildableItem)", "summary", "df-generated"] + - ["hudson.model.queue", "QueueTaskDispatcher", "canTake", "(Node,Task)", "summary", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", "getCreateItem", "()", "summary", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", "getItem", "()", "summary", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", "isAccepted", "()", "summary", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", "isCreated", "()", "summary", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", "isRefused", "()", "summary", "df-generated"] + - ["hudson.model.queue", "ScheduleResult", "refused", "()", "summary", "df-generated"] + - ["hudson.model.queue", "SubTask", "createExecutable", "()", "summary", "df-generated"] + - ["hudson.model.queue", "SubTask", "getAssignedLabel", "()", "summary", "df-generated"] + - ["hudson.model.queue", "SubTask", "getEstimatedDuration", "()", "summary", "df-generated"] + - ["hudson.model.queue", "SubTask", "getLastBuiltOn", "()", "summary", "df-generated"] + - ["hudson.model.queue", "SubTask", "getOwnerExecutable", "()", "summary", "df-generated"] + - ["hudson.model.queue", "SubTask", "getSameNodeConstraint", "()", "summary", "df-generated"] + - ["hudson.model.queue", "SubTaskContributor", "all", "()", "summary", "df-generated"] + - ["hudson.model.queue", "SubTaskContributor", "forProject", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model.queue", "Tasks", "getAuthenticationOf2", "(Task)", "summary", "df-generated"] + - ["hudson.model.queue", "Tasks", "getAuthenticationOf", "(Task)", "summary", "df-generated"] + - ["hudson.model.queue", "Tasks", "getDefaultAuthenticationOf", "(Task)", "summary", "df-generated"] + - ["hudson.model.queue", "Tasks", "getDefaultAuthenticationOf", "(Task,Item)", "summary", "df-generated"] + - ["hudson.model.queue", "WorkUnit", "isMainWork", "()", "summary", "df-generated"] + - ["hudson.model.queue", "WorkUnitContext", "synchronizeEnd", "(Executable,Throwable,long)", "summary", "df-generated"] + - ["hudson.model.queue", "WorkUnitContext", "synchronizeEnd", "(Executor,Executable,Throwable,long)", "summary", "df-generated"] + - ["hudson.model.queue", "WorkUnitContext", "synchronizeStart", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild$AbstractBuildExecution", "defaultCheckout", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild$DependencyChange", "getBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "doStop", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "doStop", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "due", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getAggregatedTestResultAction", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getBuildVariableResolver", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getBuildVariables", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getBuiltOn", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getDependencyChanges", "(AbstractBuild)", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getDownstreamBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getDownstreamBuilds", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getDownstreamRelationship", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getSensitiveBuildVariables", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getTestResultAction", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getTransitiveUpstreamBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getUpUrl", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getUpstreamBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getUpstreamRelationship", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "getUpstreamRelationshipBuild", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "AbstractBuild", "hasChangeSetComputed", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractCIBase", "getNodes", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractCIBase", "getQueue", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "doCheckNewName", "(String)", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "doConfigDotXml", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "doDoDelete", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "doReload", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "doSubmitDescription", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "getPronoun", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "getTaskNoun", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "isNameEditable", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "resolveForCLI", "(String)", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "updateByXml", "(Source)", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "updateByXml", "(StreamSource)", "summary", "df-generated"] + - ["hudson.model", "AbstractItem", "writeConfigDotXml", "(OutputStream)", "summary", "df-generated"] + - ["hudson.model", "AbstractModelObject", "makeSearchIndex", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$AbstractProjectDescriptor", "doAutoCompleteAssignedLabelString", "(String)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$AbstractProjectDescriptor", "doAutoCompleteLabel", "(String)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$AbstractProjectDescriptor", "doAutoCompleteUpstreamProjects", "(String)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$AbstractProjectDescriptor", "doCheckAssignedLabelString", "(AbstractProject,String)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$AbstractProjectDescriptor", "doCheckCustomWorkspace", "(String)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$AbstractProjectDescriptor", "doCheckLabel", "(AbstractProject,String)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$AbstractProjectDescriptor", "getApplicableSCMCheckoutStrategyDescriptors", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$AbstractProjectDescriptor", "validateLabelExpression", "(String,AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$LabelValidator", "check", "(AbstractProject,Label)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject$LabelValidator", "checkItem", "(Item,Label)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "blockBuildWhenDownstreamBuilding", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "blockBuildWhenUpstreamBuilding", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "checkout", "(AbstractBuild,Launcher,BuildListener,File)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "disable", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "doBuild", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "doBuildWithParameters", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "doCheckRetryCount", "(String)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "doDoWipeOutWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "enable", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "findNearest", "(String)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "findNearest", "(String,ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getBuildTriggerUpstreamProjects", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getBuildingDownstream", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getBuildingUpstream", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getDelay", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getDownstreamProjects", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getDownstreamProjectsForApi", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getHasCustomQuietPeriod", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getJDK", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getModuleRoot", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getModuleRoots", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getProminentActions", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getPublishersList", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getRelationship", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getScmCheckoutRetryCount", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getSomeBuildWithWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getSomeWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getTransitiveDownstreamProjects", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getTransitiveUpstreamProjects", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getTrigger", "(Class)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getUpstreamProjects", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getUpstreamProjectsForApi", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "getWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "hasCustomScmCheckoutRetryCount", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "hasParticipant", "(User)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "isConfigurable", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "isFingerprintConfigured", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "poll", "(TaskListener)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "pollSCMChanges", "(TaskListener)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "removeTrigger", "(TriggerDescriptor)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "resolveForCLI", "(String)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "scheduleBuild2", "(int)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "scheduleBuild2", "(int,Cause)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "scheduleBuild2", "(int,Cause,Action[])", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "scheduleBuild2", "(int,Cause,Collection)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "scheduleBuild", "(int,Cause,Action[])", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "schedulePolling", "()", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "setAssignedLabel", "(Label)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "setAssignedNode", "(Node)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "setBlockBuildWhenDownstreamBuilding", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "setBlockBuildWhenUpstreamBuilding", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "setConcurrentBuild", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "AbstractProject", "setQuietPeriod", "(Integer)", "summary", "df-generated"] + - ["hudson.model", "Action", "getIconFileName", "()", "summary", "df-generated"] + - ["hudson.model", "Action", "getUrlName", "()", "summary", "df-generated"] + - ["hudson.model", "Actionable", "getAction", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Actionable", "getActions", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Actionable", "removeAction", "(Action)", "summary", "df-generated"] + - ["hudson.model", "Actionable", "removeActions", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Actionable", "replaceActions", "(Class,Action)", "summary", "df-generated"] + - ["hudson.model", "AdministrativeMonitor", "all", "()", "summary", "df-generated"] + - ["hudson.model", "AdministrativeMonitor", "disable", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "AdministrativeMonitor", "doDisable", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "AdministrativeMonitor", "getRequiredPermission", "()", "summary", "df-generated"] + - ["hudson.model", "AdministrativeMonitor", "isActivated", "()", "summary", "df-generated"] + - ["hudson.model", "AdministrativeMonitor", "isEnabled", "()", "summary", "df-generated"] + - ["hudson.model", "AdministrativeMonitor", "isSecurity", "()", "summary", "df-generated"] + - ["hudson.model", "AperiodicWork", "all", "()", "summary", "df-generated"] + - ["hudson.model", "AperiodicWork", "doAperiodicRun", "()", "summary", "df-generated"] + - ["hudson.model", "AperiodicWork", "getInitialDelay", "()", "summary", "df-generated"] + - ["hudson.model", "AperiodicWork", "getNewInstance", "()", "summary", "df-generated"] + - ["hudson.model", "AperiodicWork", "getRecurrencePeriod", "()", "summary", "df-generated"] + - ["hudson.model", "AperiodicWork", "init", "()", "summary", "df-generated"] + - ["hudson.model", "Api", "doJson", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Api", "doPython", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Api", "doSchema", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Api", "doXml", "(StaplerRequest,StaplerResponse,String,String,String,int)", "summary", "df-generated"] + - ["hudson.model", "AsyncPeriodicWork", "execute", "(TaskListener)", "summary", "df-generated"] + - ["hudson.model", "AutoCompletionCandidates", "ofJobNames", "(Class,String,Item,ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "AutoCompletionCandidates", "ofJobNames", "(Class,String,ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "BallColor", "getBaseColor", "()", "summary", "df-generated"] + - ["hudson.model", "BallColor", "getHtmlBaseColor", "()", "summary", "df-generated"] + - ["hudson.model", "BallColor", "getIconClassName", "()", "summary", "df-generated"] + - ["hudson.model", "BallColor", "getIconName", "()", "summary", "df-generated"] + - ["hudson.model", "BallColor", "getImage", "()", "summary", "df-generated"] + - ["hudson.model", "BallColor", "isAnimated", "()", "summary", "df-generated"] + - ["hudson.model", "BallColor", "toString", "()", "summary", "df-generated"] + - ["hudson.model", "BooleanParameterDefinition", "isDefaultValue", "()", "summary", "df-generated"] + - ["hudson.model", "BooleanParameterDefinition", "setDefaultValue", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "BuildAuthorizationToken", "checkPermission", "(AbstractProject,BuildAuthorizationToken,StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "BuildAuthorizationToken", "checkPermission", "(Job,BuildAuthorizationToken,StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "BuildAuthorizationToken", "create", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "BuildListener", "finished", "(Result)", "summary", "df-generated"] + - ["hudson.model", "BuildListener", "started", "(List)", "summary", "df-generated"] + - ["hudson.model", "BuildStepListener", "all", "()", "summary", "df-generated"] + - ["hudson.model", "BuildStepListener", "finished", "(AbstractBuild,BuildStep,BuildListener,boolean)", "summary", "df-generated"] + - ["hudson.model", "BuildStepListener", "started", "(AbstractBuild,BuildStep,BuildListener)", "summary", "df-generated"] + - ["hudson.model", "BuildTimelineWidget", "doData", "(StaplerRequest,long,long)", "summary", "df-generated"] + - ["hudson.model", "BuildVariableContributor", "all", "()", "summary", "df-generated"] + - ["hudson.model", "BuildVariableContributor", "buildVariablesFor", "(AbstractBuild,Map)", "summary", "df-generated"] + - ["hudson.model", "BuildableItem", "scheduleBuild", "()", "summary", "df-generated"] + - ["hudson.model", "BuildableItem", "scheduleBuild", "(Cause)", "summary", "df-generated"] + - ["hudson.model", "BuildableItem", "scheduleBuild", "(int)", "summary", "df-generated"] + - ["hudson.model", "BuildableItem", "scheduleBuild", "(int,Cause)", "summary", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause$DeeplyNestedUpstreamCause", "toString", "()", "summary", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", "getUpstreamBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", "getUpstreamRun", "()", "summary", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", "pointsTo", "(Job)", "summary", "df-generated"] + - ["hudson.model", "Cause$UpstreamCause", "pointsTo", "(Run)", "summary", "df-generated"] + - ["hudson.model", "Cause", "getShortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Cause", "onLoad", "(Job,int)", "summary", "df-generated"] + - ["hudson.model", "Cause", "print", "(TaskListener)", "summary", "df-generated"] + - ["hudson.model", "CauseAction", "findCause", "(Class)", "summary", "df-generated"] + - ["hudson.model", "CauseAction", "getShortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "CheckPoint", "block", "()", "summary", "df-generated"] + - ["hudson.model", "CheckPoint", "block", "(BuildListener,String)", "summary", "df-generated"] + - ["hudson.model", "CheckPoint", "report", "()", "summary", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition$DescriptorImpl", "doCheckChoices", "(String)", "summary", "df-generated"] + - ["hudson.model", "ChoiceParameterDefinition", "areValidChoices", "(String)", "summary", "df-generated"] + - ["hudson.model", "Computer$TerminationRequest", "getWhen", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "buildEnvironment", "(TaskListener)", "summary", "df-generated"] + - ["hudson.model", "Computer", "cliConnect", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "Computer", "cliOnline", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "countBusy", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "countExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "countIdle", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "currentComputer", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "disconnect", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "doChangeOfflineCause", "(String)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doConfigDotXml", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doConfigSubmit", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doDoDelete", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "doDumpExportTable", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doLaunchSlaveAgent", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doProgressiveLog", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doRssAll", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doRssFailed", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doRssLatest", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doScript", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doScriptText", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Computer", "doToggleOffline", "(String)", "summary", "df-generated"] + - ["hudson.model", "Computer", "getAssignedLabels", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getCaption", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getChannel", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getConnectTime", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getDefaultCharset", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getDemandStartMilliseconds", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getIcon", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getIconAltText", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getIconClassName", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getIdleStartMilliseconds", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getLoadStatistics", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getLog", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getLogRecords", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getMonitorData", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getName", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getNode", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getNumExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getOfflineCauseReason", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getRetentionStrategy", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getSystemProperties", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getThreadDump", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getTiedJobs", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getTimeline", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "getUrl", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "interrupt", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isAcceptingTasks", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isConnecting", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isIdle", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isJnlpAgent", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isLaunchSupported", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isManualLaunchAllowed", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isOffline", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isOnline", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isPartiallyIdle", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isTemporarilyOffline", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "isUnix", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "launch", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "recordTermination", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "relocateOldLogs", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "resolveForCLI", "(String)", "summary", "df-generated"] + - ["hudson.model", "Computer", "setTemporarilyOffline", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "Computer", "updateByXml", "(InputStream)", "summary", "df-generated"] + - ["hudson.model", "Computer", "waitUntilOffline", "()", "summary", "df-generated"] + - ["hudson.model", "Computer", "waitUntilOnline", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerPinger", "all", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerPinger", "checkIsReachable", "(InetAddress,int)", "summary", "df-generated"] + - ["hudson.model", "ComputerPinger", "isReachable", "(InetAddress,int)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet$DescriptorImpl", "doAutoCompleteCopyNewItemFrom", "(String)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "checkName", "(String)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "doCheckName", "(String)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "doConfigSubmit", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "doCreateItem", "(StaplerRequest,StaplerResponse,String,String,String)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "doDoCreateItem", "(StaplerRequest,StaplerResponse,String,String)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "doUpdateNow", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "do_launchAll", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "getBusyExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "getComputerNames", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "getDynamic", "(String,StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "getIdleExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "getMonitors", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "getNodeMonitorDescriptors", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "getNonIgnoredMonitors", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "getTotalExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "get_all", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "get_monitors", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "get_slaveNames", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "init", "()", "summary", "df-generated"] + - ["hudson.model", "ComputerSet", "initialize", "()", "summary", "df-generated"] + - ["hudson.model", "DependencyGraph$Dependency", "pointsItself", "()", "summary", "df-generated"] + - ["hudson.model", "DependencyGraph$Dependency", "shouldTriggerBuild", "(AbstractBuild,TaskListener,List)", "summary", "df-generated"] + - ["hudson.model", "DependencyGraph", "addDependency", "(AbstractProject,AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "DependencyGraph", "addDependency", "(AbstractProject,Collection)", "summary", "df-generated"] + - ["hudson.model", "DependencyGraph", "addDependency", "(Collection,AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "DependencyGraph", "addDependency", "(Dependency)", "summary", "df-generated"] + - ["hudson.model", "DependencyGraph", "addDependencyDeclarers", "(AbstractProject,Collection)", "summary", "df-generated"] + - ["hudson.model", "DependencyGraph", "build", "()", "summary", "df-generated"] + - ["hudson.model", "DependencyGraph", "hasIndirectDependencies", "(AbstractProject,AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "Descriptor$PropertyType", "getApplicableDescriptors", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor$PropertyType", "getApplicableItemDescriptors", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor$PropertyType", "getEnumConstants", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor$PropertyType", "getItemType", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor$PropertyType", "getItemTypeDescriptor", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor$PropertyType", "getItemTypeDescriptorOrDie", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "bindJSON", "(StaplerRequest,Class,JSONObject)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "calcAutoCompleteSettings", "(String,Map)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "calcFillSettings", "(String,Map)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "configure", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "configure", "(StaplerRequest,JSONObject)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "doHelp", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "find", "(String)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getCategory", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getConfigPage", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getCurrentDescriptorByNameUrl", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getDescriptorFullUrl", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getDescriptorUrl", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getDisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getGlobalConfigPage", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getId", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getJsonSafeClassName", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getKlass", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getRequiredGlobalConfigPagePermission", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getT", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "isInstance", "(Describable)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "isSubTypeOf", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "load", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "newInstance", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "newInstance", "(StaplerRequest,JSONObject)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "newInstancesFromHeteroList", "(StaplerRequest,JSONObject,String,Collection)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "newInstancesFromHeteroList", "(StaplerRequest,Object,Collection)", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "getDisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Descriptor", "load", "()", "summary", "df-generated"] + - ["hudson.model", "DescriptorByNameOwner", "getDescriptorByName", "(String)", "summary", "df-generated"] + - ["hudson.model", "DescriptorVisibilityFilter", "all", "()", "summary", "df-generated"] + - ["hudson.model", "DescriptorVisibilityFilter", "filter", "(Object,Descriptor)", "summary", "df-generated"] + - ["hudson.model", "DescriptorVisibilityFilter", "filterType", "(Class,Descriptor)", "summary", "df-generated"] + - ["hudson.model", "DirectlyModifiableView", "doAddJobToView", "(String)", "summary", "df-generated"] + - ["hudson.model", "DirectlyModifiableView", "doRemoveJobFromView", "(String)", "summary", "df-generated"] + - ["hudson.model", "DirectlyModifiableView", "remove", "(TopLevelItem)", "summary", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", "getIconClassName", "()", "summary", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", "getIconName", "()", "summary", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", "getLastModified", "()", "summary", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", "getLastModifiedAsCalendar", "()", "summary", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", "getSize", "()", "summary", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", "isFolder", "()", "summary", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport$Path", "isReadable", "()", "summary", "df-generated"] + - ["hudson.model", "DirectoryBrowserSupport", "serveFile", "(StaplerRequest,StaplerResponse,FilePath,String,boolean)", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "Downloadable", "(Class)", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "all", "()", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "get", "(Class)", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "get", "(String)", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "getData", "()", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "getDue", "()", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "getInterval", "()", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "hasDuplicates", "(List,String)", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "idFor", "(Class)", "summary", "df-generated"] + - ["hudson.model", "DownloadService$Downloadable", "updateNow", "()", "summary", "df-generated"] + - ["hudson.model", "DownloadService$DownloadableListener", "installListener", "()", "summary", "df-generated"] + - ["hudson.model", "DownloadService", "generateFragment", "()", "summary", "df-generated"] + - ["hudson.model", "DownloadService", "getById", "(String)", "summary", "df-generated"] + - ["hudson.model", "DownloadService", "loadJSON", "(URL)", "summary", "df-generated"] + - ["hudson.model", "DownloadService", "loadJSONHTML", "(URL)", "summary", "df-generated"] + - ["hudson.model", "Environment", "buildEnvVars", "(Map)", "summary", "df-generated"] + - ["hudson.model", "Environment", "create", "(EnvVars)", "summary", "df-generated"] + - ["hudson.model", "Environment", "tearDown", "(AbstractBuild,BuildListener)", "summary", "df-generated"] + - ["hudson.model", "EnvironmentContributor", "all", "()", "summary", "df-generated"] + - ["hudson.model", "EnvironmentContributor", "buildEnvironmentFor", "(Job,EnvVars,TaskListener)", "summary", "df-generated"] + - ["hudson.model", "EnvironmentContributor", "buildEnvironmentFor", "(Run,EnvVars,TaskListener)", "summary", "df-generated"] + - ["hudson.model", "EnvironmentList", "get", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Executor", "completedAsynchronous", "(Throwable)", "summary", "df-generated"] + - ["hudson.model", "Executor", "currentExecutor", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "doStop", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "doStop", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Executor", "doStopBuild", "(String)", "summary", "df-generated"] + - ["hudson.model", "Executor", "doYank", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "getCauseOfDeath", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "getElapsedTime", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "getEstimatedDurationFor", "(Executable)", "summary", "df-generated"] + - ["hudson.model", "Executor", "getEstimatedRemainingTime", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "getEstimatedRemainingTimeMillis", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "getIdleStartMilliseconds", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "getNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "getProgress", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "getTimeSpentInQueue", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "getTimestampString", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "hasStopPermission", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "isActive", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "isBusy", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "isDisplayCell", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "isIdle", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "isLikelyStuck", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "isParking", "()", "summary", "df-generated"] + - ["hudson.model", "Executor", "newImpersonatingProxy", "(Class,Object)", "summary", "df-generated"] + - ["hudson.model", "Executor", "of", "(Executable)", "summary", "df-generated"] + - ["hudson.model", "Executor", "recordCauseOfInterruption", "(Run,TaskListener)", "summary", "df-generated"] + - ["hudson.model", "ExecutorListener", "taskAccepted", "(Executor,Task)", "summary", "df-generated"] + - ["hudson.model", "ExecutorListener", "taskCompleted", "(Executor,Task,long)", "summary", "df-generated"] + - ["hudson.model", "ExecutorListener", "taskCompletedWithProblems", "(Executor,Task,long,Throwable)", "summary", "df-generated"] + - ["hudson.model", "ExecutorListener", "taskStarted", "(Executor,Task)", "summary", "df-generated"] + - ["hudson.model", "Failure", "generateResponse", "(StaplerRequest,StaplerResponse,Object,Throwable)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", "belongsTo", "(Job)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", "getJob", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", "getNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", "getRun", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", "is", "(Job)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$BuildPtr", "is", "(Run)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "Range", "(int,int)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "combine", "(Range)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "contains", "(Range)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "expandLeft", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "expandRight", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "getEnd", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "getStart", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "includes", "(int)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "intersect", "(Range)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "isAdjacentTo", "(Range)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "isBiggerThan", "(int)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "isDisjoint", "(Range)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "isIndependent", "(Range)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "isSingle", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "isSmallerThan", "(int)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$Range", "toString", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet$ConverterImpl", "serialize", "(RangeSet)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "add", "(int)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "addAll", "(int[])", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "fromString", "(String,boolean)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "includes", "(int)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "isEmpty", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "isSmallerThan", "(int)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "listNumbers", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "listNumbersReverse", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "max", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "min", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "removeAll", "(RangeSet)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint$RangeSet", "retainAll", "(RangeSet)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "delete", "(String)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "getActions", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "getFacet", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "getFacets", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "getSortedFacets", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "getTimestampString", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "getXStream", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "isAlive", "()", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "load", "(String)", "summary", "df-generated"] + - ["hudson.model", "Fingerprint", "trim", "()", "summary", "df-generated"] + - ["hudson.model", "FingerprintCleanupThread", "invoke", "()", "summary", "df-generated"] + - ["hudson.model", "FingerprintMap", "isReady", "()", "summary", "df-generated"] + - ["hudson.model", "HealthReport", "getAggregatedReports", "()", "summary", "df-generated"] + - ["hudson.model", "HealthReport", "getScore", "()", "summary", "df-generated"] + - ["hudson.model", "HealthReport", "isAggregateReport", "()", "summary", "df-generated"] + - ["hudson.model", "HealthReport", "setScore", "(int)", "summary", "df-generated"] + - ["hudson.model", "Hudson", "adminCheck", "()", "summary", "df-generated"] + - ["hudson.model", "Hudson", "adminCheck", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Hudson", "doFieldCheck", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Hudson", "doFieldCheck", "(String,String,String,String)", "summary", "df-generated"] + - ["hudson.model", "Hudson", "doLogRss", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Hudson", "doQuietDown", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Hudson", "getInstance", "()", "summary", "df-generated"] + - ["hudson.model", "Hudson", "isAdmin", "()", "summary", "df-generated"] + - ["hudson.model", "Hudson", "isAdmin", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "Hudson", "isDarwin", "()", "summary", "df-generated"] + - ["hudson.model", "Hudson", "isWindows", "()", "summary", "df-generated"] + - ["hudson.model", "Hudson", "setSlaves", "(List)", "summary", "df-generated"] + - ["hudson.model", "Item", "delete", "()", "summary", "df-generated"] + - ["hudson.model", "Item", "getAbsoluteUrl", "()", "summary", "df-generated"] + - ["hudson.model", "Item", "getAllJobs", "()", "summary", "df-generated"] + - ["hudson.model", "Item", "onCopiedFrom", "(Item)", "summary", "df-generated"] + - ["hudson.model", "Item", "onCreatedFromScratch", "()", "summary", "df-generated"] + - ["hudson.model", "ItemGroup", "getAllItems", "()", "summary", "df-generated"] + - ["hudson.model", "ItemGroup", "getAllItems", "(Class)", "summary", "df-generated"] + - ["hudson.model", "ItemGroup", "getAllItems", "(Class,Predicate)", "summary", "df-generated"] + - ["hudson.model", "ItemGroup", "onRenamed", "(Item,String,String)", "summary", "df-generated"] + - ["hudson.model", "ItemGroup", "getUrl", "()", "summary", "df-generated"] + - ["hudson.model", "ItemGroupMixIn", "copy", "(TopLevelItem,String)", "summary", "df-generated"] + - ["hudson.model", "ItemGroupMixIn", "createProjectFromXML", "(String,InputStream)", "summary", "df-generated"] + - ["hudson.model", "ItemVisitor", "onItem", "(Item)", "summary", "df-generated"] + - ["hudson.model", "ItemVisitor", "walk", "()", "summary", "df-generated"] + - ["hudson.model", "Items", "all2", "(Authentication,ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "Items", "all", "()", "summary", "df-generated"] + - ["hudson.model", "Items", "all", "(Authentication,ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "Items", "all", "(ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "Items", "currentlyUpdatingByXml", "()", "summary", "df-generated"] + - ["hudson.model", "Items", "findNearest", "(Class,String,ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "Items", "fromNameList", "(ItemGroup,String,Class)", "summary", "df-generated"] + - ["hudson.model", "Items", "fromNameList", "(String,Class)", "summary", "df-generated"] + - ["hudson.model", "Items", "getAllItems", "(ItemGroup,Class)", "summary", "df-generated"] + - ["hudson.model", "Items", "getAllItems", "(ItemGroup,Class,Predicate)", "summary", "df-generated"] + - ["hudson.model", "Items", "getDescriptor", "(String)", "summary", "df-generated"] + - ["hudson.model", "Items", "whileUpdatingByXml", "(Callable)", "summary", "df-generated"] + - ["hudson.model", "JDK", "getExists", "()", "summary", "df-generated"] + - ["hudson.model", "JDK", "isDefaultJDKValid", "(Node)", "summary", "df-generated"] + - ["hudson.model", "JDK", "isDefaultName", "(String)", "summary", "df-generated"] + - ["hudson.model", "Job", "assignBuildNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "doBuildStatus", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Job", "doConfigSubmit", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Job", "doDescription", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Job", "doDoRename", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Job", "doRssAll", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Job", "doRssChangelog", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Job", "doRssFailed", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Job", "getBuildStatusIconClassName", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "getBuildStatusUrl", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "getBuildTimeGraph", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "getEstimatedDuration", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "getIconColor", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "getNextBuildNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "getPermalinks", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "getProperty", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Job", "getQueueItem", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "isBuildable", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "isBuilding", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "isHoldOffBuildUntilSave", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "isInQueue", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "isKeepDependencies", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "isLogUpdated", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "logRotate", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "removeProperty", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Job", "removeProperty", "(JobProperty)", "summary", "df-generated"] + - ["hudson.model", "Job", "setBuildDiscarder", "(BuildDiscarder)", "summary", "df-generated"] + - ["hudson.model", "Job", "setLogRotator", "(LogRotator)", "summary", "df-generated"] + - ["hudson.model", "Job", "supportsLogRotator", "()", "summary", "df-generated"] + - ["hudson.model", "Job", "updateNextBuildNumber", "(int)", "summary", "df-generated"] + - ["hudson.model", "JobProperty", "getJobAction", "(Job)", "summary", "df-generated"] + - ["hudson.model", "JobProperty", "getJobActions", "(Job)", "summary", "df-generated"] + - ["hudson.model", "JobProperty", "getJobOverrides", "()", "summary", "df-generated"] + - ["hudson.model", "JobProperty", "getSubTasks", "()", "summary", "df-generated"] + - ["hudson.model", "JobPropertyDescriptor", "all", "()", "summary", "df-generated"] + - ["hudson.model", "JobPropertyDescriptor", "getPropertyDescriptors", "(Class)", "summary", "df-generated"] + - ["hudson.model", "JobPropertyDescriptor", "isApplicable", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Label", "accept", "(LabelVisitor,Object)", "summary", "df-generated"] + - ["hudson.model", "Label", "contains", "(Node)", "summary", "df-generated"] + - ["hudson.model", "Label", "getBusyExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "getExpression", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "getIdleExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "getTiedJobCount", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "getTiedJobs", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "getTotalConfiguredExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "getTotalExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "isAssignable", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "isAtom", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "isEmpty", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "isOffline", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "isSelfLabel", "()", "summary", "df-generated"] + - ["hudson.model", "Label", "matches", "(Collection)", "summary", "df-generated"] + - ["hudson.model", "Label", "matches", "(Node)", "summary", "df-generated"] + - ["hudson.model", "Label", "matches", "(VariableResolver)", "summary", "df-generated"] + - ["hudson.model", "Label", "parse", "(String)", "summary", "df-generated"] + - ["hudson.model", "Label", "parseExpression", "(String)", "summary", "df-generated"] + - ["hudson.model", "Label", "precedence", "()", "summary", "df-generated"] + - ["hudson.model", "LabelFinder", "all", "()", "summary", "df-generated"] + - ["hudson.model", "LabelFinder", "findLabels", "(Node)", "summary", "df-generated"] + - ["hudson.model", "ListView$DescriptorImpl", "doCheckIncludeRegex", "(String)", "summary", "df-generated"] + - ["hudson.model", "ListView", "getDefaultColumns", "()", "summary", "df-generated"] + - ["hudson.model", "ListView", "getStatusFilter", "()", "summary", "df-generated"] + - ["hudson.model", "ListView", "hasJobFilterExtensions", "()", "summary", "df-generated"] + - ["hudson.model", "ListView", "isAddToCurrentView", "()", "summary", "df-generated"] + - ["hudson.model", "ListView", "isRecurse", "()", "summary", "df-generated"] + - ["hudson.model", "ListView", "jobNamesContains", "(TopLevelItem)", "summary", "df-generated"] + - ["hudson.model", "ListView", "setColumns", "(List)", "summary", "df-generated"] + - ["hudson.model", "ListView", "setJobFilters", "(List)", "summary", "df-generated"] + - ["hudson.model", "ListView", "setRecurse", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "ListView", "setStatusFilter", "(Boolean)", "summary", "df-generated"] + - ["hudson.model", "LoadBalancer", "map", "(Task,MappingWorksheet)", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot$Builder", "build", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot", "builder", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot", "getAvailableExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot", "getBusyExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot", "getConnectingExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot", "getDefinedExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot", "getIdleExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot", "getOnlineExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot", "getQueueLength", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics$LoadStatisticsSnapshot", "toString", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics", "computeIdleExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics", "computeQueueLength", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics", "computeSnapshot", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics", "computeTotalExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics", "createChart", "(CategoryDataset)", "summary", "df-generated"] + - ["hudson.model", "LoadStatistics", "getLatestIdleExecutors", "(TimeScale)", "summary", "df-generated"] + - ["hudson.model", "ManageJenkinsAction", "addContextMenuItem", "(ContextMenu,String,String,String,String,boolean,boolean)", "summary", "df-generated"] + - ["hudson.model", "ManagementLink$Category", "getLabel", "()", "summary", "df-generated"] + - ["hudson.model", "ManagementLink", "all", "()", "summary", "df-generated"] + - ["hudson.model", "ManagementLink", "getBadge", "()", "summary", "df-generated"] + - ["hudson.model", "ManagementLink", "getCategory", "()", "summary", "df-generated"] + - ["hudson.model", "ManagementLink", "getDescription", "()", "summary", "df-generated"] + - ["hudson.model", "ManagementLink", "getRequiredPermission", "()", "summary", "df-generated"] + - ["hudson.model", "ManagementLink", "getRequiresConfirmation", "()", "summary", "df-generated"] + - ["hudson.model", "ManagementLink", "getRequiresPOST", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractBuild_Building", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractBuild_BuildingInWorkspace", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractBuild_BuildingOnMaster", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractBuild_BuildingRemotely", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractBuild_KeptBecause", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractItem_BeingDeleted", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractItem_FailureToStopBuilds", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractItem_NewNameInUse", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractItem_NewNameUnchanged", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractItem_NoSuchJobExists", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractItem_NoSuchJobExistsWithoutSuggestion", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractItem_Pronoun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractItem_TaskNoun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_Aborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_AwaitingBuildForWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_AwaitingWorkspaceToComeOnline", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_BuildPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_CancelPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_CustomWorkspaceEmpty", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_Disabled", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_DiscoverPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_DownstreamBuildInProgress", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_ExtendedReadPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_NewBuildForWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_NoBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_NoSCM", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_NoWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_PollingABorted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_PollingVetoed", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_Pronoun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_ScmAborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_UpstreamBuildInProgress", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_WipeOutPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_WorkspaceOffline", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_WorkspacePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_WorkspaceTitle", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "AbstractProject_WorkspaceTitleOnComputer", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Api_MultipleMatch", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Api_NoXPathMatch", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Api_WrapperParamInvalid", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BallColor_Aborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BallColor_Disabled", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BallColor_Failed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BallColor_InProgress", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BallColor_NotBuilt", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BallColor_Pending", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BallColor_Success", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BallColor_Unstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BooleanParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "BuildAuthorizationToken_InvalidTokenProvided", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Build_post_build_steps_failed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "CLI_clear_queue_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "CLI_keep_build_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "CLI_online_node_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "CLI_restart_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "CLI_safe_restart_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Cause_LegacyCodeCause_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Cause_RemoteCause_ShortDescription", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Cause_RemoteCause_ShortDescriptionWithNote", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Cause_UpstreamCause_CausedBy", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Cause_UpstreamCause_ShortDescription", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Cause_UserCause_ShortDescription", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Cause_UserIdCause_ShortDescription", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "ChoiceParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ChoiceParameterDefinition_MissingChoices", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ComputerSet_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ComputerSet_NoSuchSlave", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "ComputerSet_SlaveAlreadyExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "ComputerSet_SpecifySlaveToCopy", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_BadChannel", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_BuildPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_Caption", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_ConfigurePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_ConnectPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_CreatePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_DeletePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_DisconnectPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_ExtendedReadPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_NoSuchSlaveExists", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_NoSuchSlaveExistsWithoutAdvice", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Computer_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Descriptor_From", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Executor_NotAvailable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "FileParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "FileParameterValue_IndexTitle", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "FreeStyleProject_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "FreeStyleProject_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "HealthReport_EmptyString", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_AdministerPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_BadPortNumber", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_Computer_Caption", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_Computer_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_ControlCodeNotAllowed", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_JobAlreadyExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_MustBeAtLeast", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_MustBeAtMost", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NoJavaInPath", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NoName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NoSuchDirectory", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NodeBeingRemoved", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NodeDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NotANegativeNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NotANonNegativeNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NotANumber", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NotAPlugin", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NotAPositiveNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NotJDKDir", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_NotUsesUTF8ToDecodeURL", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_ReadPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_RunScriptsPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_TrailingDot", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_USER_CONTENT_README", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_UnsafeChar", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_ViewAlreadyExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Hudson_ViewName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ItemGroupMixIn_may_not_copy_as_it_contains_secrets_and_", "(Object,Object,Object,Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Item_CONFIGURE_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Item_CREATE_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Item_DELETE_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Item_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Item_READ_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Item_RENAME_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "JDK_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Jenkins_CheckDisplayName_DisplayNameNotUniqueWarning", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Jenkins_CheckDisplayName_NameNotUniqueWarning", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Jenkins_IsRestarting", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Jenkins_Manage_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Jenkins_NotAllowedName", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Jenkins_SystemRead_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Job_AllRecentBuildFailed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Job_BuildStability", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Job_NOfMFailed", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Job_NoRecentBuildFailed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Job_NoRenameWhileBuilding", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Job_Pronoun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Job_minutes", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Job_you_must_use_the_save_button_if_you_wish", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LabelExpression_InvalidBooleanExpression", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "LabelExpression_LabelLink", "(Object,Object,Object,Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "LabelExpression_NoMatch", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LabelExpression_NoMatch_DidYouMean", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "LabelExpression_ObsoleteMasterLabel", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Label_GroupOf", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Label_InvalidLabel", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Label_ProvisionedFrom", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "ListView_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LoadStatistics_Legends_AvailableExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LoadStatistics_Legends_BusyExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LoadStatistics_Legends_ConnectingExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LoadStatistics_Legends_DefinedExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LoadStatistics_Legends_IdleExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LoadStatistics_Legends_OnlineExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LoadStatistics_Legends_QueueLength", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "LoadStatistics_Legends_TotalExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ManageJenkinsAction_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ManagementLink_Category_CONFIGURATION", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ManagementLink_Category_MISC", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ManagementLink_Category_SECURITY", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ManagementLink_Category_STATUS", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ManagementLink_Category_TOOLS", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ManagementLink_Category_TROUBLESHOOTING", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ManagementLink_Category_UNCATEGORIZED", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "MultiStageTimeSeries_EMPTY_STRING", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "MyView_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "MyViewsProperty_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "MyViewsProperty_GlobalAction_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "MyViewsProperty_ViewExistsCheck_AlreadyExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "MyViewsProperty_ViewExistsCheck_NotExist", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Node_BecauseNodeIsNotAcceptingTasks", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Node_BecauseNodeIsReserved", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Node_LabelMissing", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Node_LackingBuildPermission", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Node_Mode_EXCLUSIVE", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Node_Mode_NORMAL", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ParameterAction_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ParametersDefinitionProperty_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "PasswordParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Permalink_LastBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Permalink_LastCompletedBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Permalink_LastFailedBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Permalink_LastStableBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Permalink_LastSuccessfulBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Permalink_LastUnstableBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Permalink_LastUnsuccessfulBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ProxyView_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ProxyView_NoSuchViewExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_AllNodesOffline", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_BlockedBy", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_ExceptionCanRun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_ExceptionCanTake", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_FinishedWaiting", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_HudsonIsAboutToShutDown", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_InProgress", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_InQuietPeriod", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_LabelHasNoNodes", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_NodeOffline", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_Unknown", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_WaitingForNextAvailableExecutor", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_WaitingForNextAvailableExecutorOn", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_executor_slot_already_in_use", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_init", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Queue_node_has_been_removed_from_configuration", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "ResultTrend_Aborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ResultTrend_Failure", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ResultTrend_Fixed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ResultTrend_NotBuilt", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ResultTrend_NowUnstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ResultTrend_StillFailing", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ResultTrend_StillUnstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ResultTrend_Success", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "ResultTrend_Unstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "RunParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_ArtifactsBrowserTitle", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_ArtifactsPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_BuildAborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_DeletePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_InProgressDuration", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_MarkedExplicitly", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_NotStartedYet", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Summary_Aborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Summary_BackToNormal", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Summary_BrokenForALongTime", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Summary_BrokenSince", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Summary_BrokenSinceThisBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Summary_NotBuilt", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Summary_Stable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Summary_Unknown", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_Summary_Unstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_UnableToDelete", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_UpdatePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run__is_waiting_for_a_checkpoint_on_", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_running_as_", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Run_running_as_SYSTEM", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Slave_InvalidConfig_Executors", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Slave_InvalidConfig_NoName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Slave_Network_Mounted_File_System_Warning", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Slave_Remote_Director_Mandatory", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Slave_Remote_Relative_Path_Warning", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Slave_Terminated", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "Slave_UnixSlave", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "Slave_WindowsSlave", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "StringParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "TextParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "TimeZoneProperty_DisplayDefaultTimeZone", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "TimeZoneProperty_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "TimeZoneProperty_current_time_in_", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "TimeZoneProperty_current_time_on_server_in_in_proposed_di", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "TopLevelItemDescriptor_NotApplicableIn", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_CoreUpdateMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_DownloadButNotActivated", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_agent", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_android", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_api_plugin", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_builder", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_buildwrapper", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_cli", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_cloud", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_cluster", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_database", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_deployment", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_devops", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_devsecops", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_dotnet", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_external", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_groovy_related", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_ios", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_listview_column", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_maven", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_misc", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_must_be_labeled", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_notifier", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_orchestration", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_page_decorator", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_parameter", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_post_build", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_python", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_report", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_ruby", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_runcondition", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_scala", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_scm", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_scm_related", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_security", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_test", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_theme", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_trigger", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_ui", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_unrecognized", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_upload", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_user", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_PluginCategory_view", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_Status_CheckingInternet", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_Status_CheckingJavaNet", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_Status_ConnectionFailed", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_Status_Success", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_Status_UnknownHostException", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_init", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "UpdateCenter_n_a", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "User_IllegalFullname", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "User_IllegalUsername", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "View_ConfigurePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "View_CreatePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "View_DeletePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "View_DisplayNameNotUniqueWarning", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "View_MissingMode", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "View_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "View_ReadPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractBuild_Building", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractBuild_BuildingInWorkspace", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractBuild_BuildingOnMaster", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractBuild_BuildingRemotely", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractBuild_KeptBecause", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractItem_BeingDeleted", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractItem_FailureToStopBuilds", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractItem_NewNameInUse", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractItem_NewNameUnchanged", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractItem_NoSuchJobExists", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractItem_NoSuchJobExistsWithoutSuggestion", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractItem_Pronoun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractItem_TaskNoun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_Aborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_AwaitingBuildForWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_AwaitingWorkspaceToComeOnline", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_BuildPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_CancelPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_CustomWorkspaceEmpty", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_Disabled", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_DiscoverPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_DownstreamBuildInProgress", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_ExtendedReadPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_NewBuildForWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_NoBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_NoSCM", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_NoWorkspace", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_PollingABorted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_PollingVetoed", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_Pronoun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_ScmAborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_UpstreamBuildInProgress", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_WipeOutPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_WorkspaceOffline", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_WorkspacePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_WorkspaceTitle", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_AbstractProject_WorkspaceTitleOnComputer", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Api_MultipleMatch", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Api_NoXPathMatch", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Api_WrapperParamInvalid", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BallColor_Aborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BallColor_Disabled", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BallColor_Failed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BallColor_InProgress", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BallColor_NotBuilt", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BallColor_Pending", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BallColor_Success", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BallColor_Unstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BooleanParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_BuildAuthorizationToken_InvalidTokenProvided", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Build_post_build_steps_failed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_CLI_clear_queue_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_CLI_keep_build_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_CLI_online_node_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_CLI_restart_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_CLI_safe_restart_shortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Cause_LegacyCodeCause_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Cause_RemoteCause_ShortDescription", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Cause_RemoteCause_ShortDescriptionWithNote", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Cause_UpstreamCause_CausedBy", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Cause_UpstreamCause_ShortDescription", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Cause_UserCause_ShortDescription", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Cause_UserIdCause_ShortDescription", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ChoiceParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ChoiceParameterDefinition_MissingChoices", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ComputerSet_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ComputerSet_NoSuchSlave", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ComputerSet_SlaveAlreadyExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ComputerSet_SpecifySlaveToCopy", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_BadChannel", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_BuildPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_Caption", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_ConfigurePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_ConnectPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_CreatePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_DeletePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_DisconnectPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_ExtendedReadPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_NoSuchSlaveExists", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_NoSuchSlaveExistsWithoutAdvice", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Computer_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Descriptor_From", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Executor_NotAvailable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_FileParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_FileParameterValue_IndexTitle", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_FreeStyleProject_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_FreeStyleProject_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_HealthReport_EmptyString", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_AdministerPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_BadPortNumber", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_Computer_Caption", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_Computer_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_ControlCodeNotAllowed", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_JobAlreadyExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_MustBeAtLeast", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_MustBeAtMost", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NoJavaInPath", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NoName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NoSuchDirectory", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NodeBeingRemoved", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NodeDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NotANegativeNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NotANonNegativeNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NotANumber", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NotAPlugin", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NotAPositiveNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NotJDKDir", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_NotUsesUTF8ToDecodeURL", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_ReadPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_RunScriptsPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_TrailingDot", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_USER_CONTENT_README", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_UnsafeChar", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_ViewAlreadyExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Hudson_ViewName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ItemGroupMixIn_may_not_copy_as_it_contains_secrets_and_", "(Object,Object,Object,Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Item_CONFIGURE_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Item_CREATE_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Item_DELETE_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Item_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Item_READ_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Item_RENAME_description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_JDK_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Jenkins_CheckDisplayName_DisplayNameNotUniqueWarning", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Jenkins_CheckDisplayName_NameNotUniqueWarning", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Jenkins_IsRestarting", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Jenkins_Manage_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Jenkins_NotAllowedName", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Jenkins_SystemRead_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Job_AllRecentBuildFailed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Job_BuildStability", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Job_NOfMFailed", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Job_NoRecentBuildFailed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Job_NoRenameWhileBuilding", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Job_Pronoun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Job_minutes", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Job_you_must_use_the_save_button_if_you_wish", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LabelExpression_InvalidBooleanExpression", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LabelExpression_LabelLink", "(Object,Object,Object,Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LabelExpression_NoMatch", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LabelExpression_NoMatch_DidYouMean", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LabelExpression_ObsoleteMasterLabel", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Label_GroupOf", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Label_InvalidLabel", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Label_ProvisionedFrom", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ListView_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LoadStatistics_Legends_AvailableExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LoadStatistics_Legends_BusyExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LoadStatistics_Legends_ConnectingExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LoadStatistics_Legends_DefinedExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LoadStatistics_Legends_IdleExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LoadStatistics_Legends_OnlineExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LoadStatistics_Legends_QueueLength", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_LoadStatistics_Legends_TotalExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ManageJenkinsAction_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ManagementLink_Category_CONFIGURATION", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ManagementLink_Category_MISC", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ManagementLink_Category_SECURITY", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ManagementLink_Category_STATUS", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ManagementLink_Category_TOOLS", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ManagementLink_Category_TROUBLESHOOTING", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ManagementLink_Category_UNCATEGORIZED", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_MultiStageTimeSeries_EMPTY_STRING", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_MyView_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_MyViewsProperty_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_MyViewsProperty_GlobalAction_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_MyViewsProperty_ViewExistsCheck_AlreadyExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_MyViewsProperty_ViewExistsCheck_NotExist", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Node_BecauseNodeIsNotAcceptingTasks", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Node_BecauseNodeIsReserved", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Node_LabelMissing", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Node_LackingBuildPermission", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Node_Mode_EXCLUSIVE", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Node_Mode_NORMAL", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ParameterAction_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ParametersDefinitionProperty_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_PasswordParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Permalink_LastBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Permalink_LastCompletedBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Permalink_LastFailedBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Permalink_LastStableBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Permalink_LastSuccessfulBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Permalink_LastUnstableBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Permalink_LastUnsuccessfulBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ProxyView_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ProxyView_NoSuchViewExists", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_AllNodesOffline", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_BlockedBy", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_ExceptionCanRun", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_ExceptionCanTake", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_FinishedWaiting", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_HudsonIsAboutToShutDown", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_InProgress", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_InQuietPeriod", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_LabelHasNoNodes", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_NodeOffline", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_Unknown", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_WaitingForNextAvailableExecutor", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_WaitingForNextAvailableExecutorOn", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_executor_slot_already_in_use", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_init", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Queue_node_has_been_removed_from_configuration", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ResultTrend_Aborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ResultTrend_Failure", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ResultTrend_Fixed", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ResultTrend_NotBuilt", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ResultTrend_NowUnstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ResultTrend_StillFailing", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ResultTrend_StillUnstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ResultTrend_Success", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_ResultTrend_Unstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_RunParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_ArtifactsBrowserTitle", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_ArtifactsPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_BuildAborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_DeletePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_InProgressDuration", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_MarkedExplicitly", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_NotStartedYet", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Summary_Aborted", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Summary_BackToNormal", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Summary_BrokenForALongTime", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Summary_BrokenSince", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Summary_BrokenSinceThisBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Summary_NotBuilt", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Summary_Stable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Summary_Unknown", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_Summary_Unstable", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_UnableToDelete", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_UpdatePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run__is_waiting_for_a_checkpoint_on_", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_running_as_", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Run_running_as_SYSTEM", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Slave_InvalidConfig_Executors", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Slave_InvalidConfig_NoName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Slave_Network_Mounted_File_System_Warning", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Slave_Remote_Director_Mandatory", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Slave_Remote_Relative_Path_Warning", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Slave_Terminated", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Slave_UnixSlave", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_Slave_WindowsSlave", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_StringParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_TextParameterDefinition_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_TimeZoneProperty_DisplayDefaultTimeZone", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_TimeZoneProperty_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_TimeZoneProperty_current_time_in_", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_TimeZoneProperty_current_time_on_server_in_in_proposed_di", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_TopLevelItemDescriptor_NotApplicableIn", "(Object,Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_CoreUpdateMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_DisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_DownloadButNotActivated", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_agent", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_android", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_api_plugin", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_builder", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_buildwrapper", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_cli", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_cloud", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_cluster", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_database", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_deployment", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_devops", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_devsecops", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_dotnet", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_external", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_groovy_related", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_ios", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_listview_column", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_maven", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_misc", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_must_be_labeled", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_notifier", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_orchestration", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_page_decorator", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_parameter", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_post_build", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_python", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_report", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_ruby", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_runcondition", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_scala", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_scm", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_scm_related", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_security", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_test", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_theme", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_trigger", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_ui", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_unrecognized", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_upload", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_user", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_PluginCategory_view", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_Status_CheckingInternet", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_Status_CheckingJavaNet", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_Status_ConnectionFailed", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_Status_Success", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_Status_UnknownHostException", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_init", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_UpdateCenter_n_a", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_User_IllegalFullname", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_User_IllegalUsername", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_View_ConfigurePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_View_CreatePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_View_DeletePermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_View_DisplayNameNotUniqueWarning", "(Object)", "summary", "df-generated"] + - ["hudson.model", "Messages", "_View_MissingMode", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_View_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.model", "Messages", "_View_ReadPermission_Description", "()", "summary", "df-generated"] + - ["hudson.model", "ModelObject", "getDisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries$TimeScale", "createDateFormat", "()", "summary", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries$TimeScale", "parse", "(String)", "summary", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries$TrendChart", "createChart", "()", "summary", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries", "MultiStageTimeSeries", "(float,float)", "summary", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries", "getLatest", "(TimeScale)", "summary", "df-generated"] + - ["hudson.model", "MultiStageTimeSeries", "update", "(float)", "summary", "df-generated"] + - ["hudson.model", "MyViewsProperty", "doCreateView", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "MyViewsProperty", "doIndex", "()", "summary", "df-generated"] + - ["hudson.model", "MyViewsProperty", "doViewExistsCheck", "(String,boolean)", "summary", "df-generated"] + - ["hudson.model", "MyViewsProperty", "getMyViewsTabBar", "()", "summary", "df-generated"] + - ["hudson.model", "Node$Mode", "getDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Node$Mode", "getName", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "canTake", "(Task)", "summary", "df-generated"] + - ["hudson.model", "Node", "createComputer", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "createLauncher", "(TaskListener)", "summary", "df-generated"] + - ["hudson.model", "Node", "getChannel", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getClockDifference", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getClockDifferenceCallable", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getFileSystemProvisioner", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getLabelCloud", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getLabelString", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getMode", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getNodeDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getNodeName", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getNodeProperties", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getNodeProperty", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Node", "getNodePropertyDescriptors", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getNumExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getRootPath", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "getWorkspaceFor", "(TopLevelItem)", "summary", "df-generated"] + - ["hudson.model", "Node", "isAcceptingTasks", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "isHoldOffLaunchUntilSave", "()", "summary", "df-generated"] + - ["hudson.model", "Node", "setLabelString", "(String)", "summary", "df-generated"] + - ["hudson.model", "Node", "setNodeName", "(String)", "summary", "df-generated"] + - ["hudson.model", "Node", "toComputer", "()", "summary", "df-generated"] + - ["hudson.model", "PageDecorator", "all", "()", "summary", "df-generated"] + - ["hudson.model", "PageDecorator", "getUrl", "()", "summary", "df-generated"] + - ["hudson.model", "PaneStatusProperties", "forCurrentUser", "()", "summary", "df-generated"] + - ["hudson.model", "PaneStatusProperties", "isCollapsed", "(String)", "summary", "df-generated"] + - ["hudson.model", "PaneStatusProperties", "toggleCollapsed", "(String)", "summary", "df-generated"] + - ["hudson.model", "ParameterDefinition$ParameterDescriptor", "getValuePage", "()", "summary", "df-generated"] + - ["hudson.model", "ParameterDefinition", "all", "()", "summary", "df-generated"] + - ["hudson.model", "ParameterDefinition", "createValue", "(CLICommand,String)", "summary", "df-generated"] + - ["hudson.model", "ParameterDefinition", "createValue", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "ParameterDefinition", "createValue", "(StaplerRequest,JSONObject)", "summary", "df-generated"] + - ["hudson.model", "ParameterDefinition", "getDefaultParameterValue", "()", "summary", "df-generated"] + - ["hudson.model", "ParameterDefinition", "getFormattedDescription", "()", "summary", "df-generated"] + - ["hudson.model", "ParameterDefinition", "getType", "()", "summary", "df-generated"] + - ["hudson.model", "ParameterDefinition", "isValid", "(ParameterValue)", "summary", "df-generated"] + - ["hudson.model", "ParameterValue", "createBuildWrapper", "(AbstractBuild)", "summary", "df-generated"] + - ["hudson.model", "ParameterValue", "createVariableResolver", "(AbstractBuild)", "summary", "df-generated"] + - ["hudson.model", "ParameterValue", "getAssignedLabel", "(SubTask)", "summary", "df-generated"] + - ["hudson.model", "ParameterValue", "getDefinition", "()", "summary", "df-generated"] + - ["hudson.model", "ParameterValue", "getFormattedDescription", "()", "summary", "df-generated"] + - ["hudson.model", "ParameterValue", "getValue", "()", "summary", "df-generated"] + - ["hudson.model", "ParameterValue", "isSensitive", "()", "summary", "df-generated"] + - ["hudson.model", "ParametersAction", "createBuildWrappers", "(AbstractBuild,Collection)", "summary", "df-generated"] + - ["hudson.model", "ParametersAction", "createVariableResolver", "(AbstractBuild)", "summary", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", "_doBuild", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", "_doBuild", "(StaplerRequest,StaplerResponse,TimeDuration)", "summary", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", "buildWithParameters", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "ParametersDefinitionProperty", "buildWithParameters", "(StaplerRequest,StaplerResponse,TimeDuration)", "summary", "df-generated"] + - ["hudson.model", "PeriodicWork", "all", "()", "summary", "df-generated"] + - ["hudson.model", "PeriodicWork", "getInitialDelay", "()", "summary", "df-generated"] + - ["hudson.model", "PeriodicWork", "getRecurrencePeriod", "()", "summary", "df-generated"] + - ["hudson.model", "PeriodicWork", "init", "()", "summary", "df-generated"] + - ["hudson.model", "PermalinkProjectAction$Permalink", "getDisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "PermalinkProjectAction$Permalink", "getId", "()", "summary", "df-generated"] + - ["hudson.model", "PermalinkProjectAction$Permalink", "resolve", "(Job)", "summary", "df-generated"] + - ["hudson.model", "PersistentDescriptor", "load", "()", "summary", "df-generated"] + - ["hudson.model", "Project", "getBuilders", "()", "summary", "df-generated"] + - ["hudson.model", "Project", "removePublisher", "(Descriptor)", "summary", "df-generated"] + - ["hudson.model", "ProxyView", "doViewExistsCheck", "(String)", "summary", "df-generated"] + - ["hudson.model", "ProxyView", "getProxiedView", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$BlockedItem", "isCauseOfBlockageNull", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$BuildableItem", "isPending", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Executable", "getEstimatedDuration", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Executable", "getParentExecutable", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "authenticate2", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "authenticate", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "doCancelQueue", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "getCauseOfBlockage", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "getCauses", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "getCausesDescription", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "getId", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "getIdLegacy", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "getInQueueForString", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "getInQueueSince", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "getParams", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "getUrl", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "hasCancelPermission", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "isBlocked", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "isBuildable", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Item", "isStuck", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$JobOffer", "canTake", "(BuildableItem)", "summary", "df-generated"] + - ["hudson.model", "Queue$JobOffer", "getCauseOfBlockage", "(BuildableItem)", "summary", "df-generated"] + - ["hudson.model", "Queue$JobOffer", "getNode", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$JobOffer", "isNotExclusive", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$JobOffer", "toString", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$LeftItem", "getExecutable", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$LeftItem", "isCancelled", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$QueueAction", "shouldSchedule", "(List)", "summary", "df-generated"] + - ["hudson.model", "Queue$QueueDecisionHandler", "all", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$QueueDecisionHandler", "shouldSchedule", "(Task,List)", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "checkAbortPermission", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "getCauseOfBlockage", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "getDefaultAuthentication2", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "getDefaultAuthentication2", "(Item)", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "getDefaultAuthentication", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "getDefaultAuthentication", "(Item)", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "getWhyBlocked", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "hasAbortPermission", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "isBuildBlocked", "()", "summary", "df-generated"] + - ["hudson.model", "Queue$Task", "isConcurrentBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "Queue", "(LoadBalancer)", "summary", "df-generated"] + - ["hudson.model", "Queue", "add", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "Queue", "add", "(AbstractProject,int)", "summary", "df-generated"] + - ["hudson.model", "Queue", "add", "(Task,int)", "summary", "df-generated"] + - ["hudson.model", "Queue", "add", "(Task,int,Action[])", "summary", "df-generated"] + - ["hudson.model", "Queue", "cancel", "(Item)", "summary", "df-generated"] + - ["hudson.model", "Queue", "cancel", "(Task)", "summary", "df-generated"] + - ["hudson.model", "Queue", "clear", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "clearLeftItems", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "contains", "(Task)", "summary", "df-generated"] + - ["hudson.model", "Queue", "countBuildableItems", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "countBuildableItemsFor", "(Label)", "summary", "df-generated"] + - ["hudson.model", "Queue", "doCancelItem", "(long)", "summary", "df-generated"] + - ["hudson.model", "Queue", "getApproximateItemsQuickly", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "getDiscoverableItems", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "getInstance", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "getItems", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "getUnblockedTasks", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "ifBlockedByHudsonShutdown", "(Task)", "summary", "df-generated"] + - ["hudson.model", "Queue", "init", "(Jenkins)", "summary", "df-generated"] + - ["hudson.model", "Queue", "isBlockedByShutdown", "(Task)", "summary", "df-generated"] + - ["hudson.model", "Queue", "isEmpty", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "isPending", "(Task)", "summary", "df-generated"] + - ["hudson.model", "Queue", "load", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "maintain", "()", "summary", "df-generated"] + - ["hudson.model", "Queue", "setLoadBalancer", "(LoadBalancer)", "summary", "df-generated"] + - ["hudson.model", "Queue", "strictCountBuildableItemsFor", "(Label)", "summary", "df-generated"] + - ["hudson.model", "Queue", "tryWithLock", "(Runnable)", "summary", "df-generated"] + - ["hudson.model", "Queue", "withLock", "(Callable)", "summary", "df-generated"] + - ["hudson.model", "Queue", "withLock", "(Runnable)", "summary", "df-generated"] + - ["hudson.model", "RSS", "forwardToRss", "(String,String,Collection,FeedAdapter,StaplerRequest,HttpServletResponse)", "summary", "df-generated"] + - ["hudson.model", "RSS", "rss", "(StaplerRequest,StaplerResponse,String,String,RunList)", "summary", "df-generated"] + - ["hudson.model", "RSS", "rss", "(StaplerRequest,StaplerResponse,String,String,RunList,FeedAdapter)", "summary", "df-generated"] + - ["hudson.model", "Resource", "isCollidingWith", "(Resource,int)", "summary", "df-generated"] + - ["hudson.model", "ResourceActivity", "getResourceList", "()", "summary", "df-generated"] + - ["hudson.model", "ResourceController", "canRun", "(ResourceList)", "summary", "df-generated"] + - ["hudson.model", "ResourceController", "execute", "(Runnable,ResourceActivity)", "summary", "df-generated"] + - ["hudson.model", "ResourceController", "getMissingResource", "(ResourceList)", "summary", "df-generated"] + - ["hudson.model", "ResourceList", "isCollidingWith", "(ResourceList)", "summary", "df-generated"] + - ["hudson.model", "ResourceList", "toString", "()", "summary", "df-generated"] + - ["hudson.model", "RestartListener", "all", "()", "summary", "df-generated"] + - ["hudson.model", "RestartListener", "isAllReady", "()", "summary", "df-generated"] + - ["hudson.model", "RestartListener", "isReadyToRestart", "()", "summary", "df-generated"] + - ["hudson.model", "RestartListener", "onRestart", "()", "summary", "df-generated"] + - ["hudson.model", "Result$OptionHandlerImpl", "OptionHandlerImpl", "(CmdLineParser,OptionDef,Setter)", "summary", "df-generated"] + - ["hudson.model", "Result", "fromString", "(String)", "summary", "df-generated"] + - ["hudson.model", "Result", "init", "()", "summary", "df-generated"] + - ["hudson.model", "Result", "isBetterOrEqualTo", "(Result)", "summary", "df-generated"] + - ["hudson.model", "Result", "isBetterThan", "(Result)", "summary", "df-generated"] + - ["hudson.model", "Result", "isCompleteBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Result", "isWorseOrEqualTo", "(Result)", "summary", "df-generated"] + - ["hudson.model", "Result", "isWorseThan", "(Result)", "summary", "df-generated"] + - ["hudson.model", "ResultTrend", "getDescription", "()", "summary", "df-generated"] + - ["hudson.model", "ResultTrend", "getID", "()", "summary", "df-generated"] + - ["hudson.model", "ResultTrend", "getResultTrend", "(AbstractBuild)", "summary", "df-generated"] + - ["hudson.model", "ResultTrend", "getResultTrend", "(Run)", "summary", "df-generated"] + - ["hudson.model", "Run$Artifact", "getFileSize", "()", "summary", "df-generated"] + - ["hudson.model", "Run$ArtifactList", "computeDisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Run$KeepLogBuildBadge", "getWhyKeepLog", "()", "summary", "df-generated"] + - ["hudson.model", "Run$RedirectUp", "doDynamic", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Run$RunExecution", "cleanUp", "(BuildListener)", "summary", "df-generated"] + - ["hudson.model", "Run$RunExecution", "getBuild", "()", "summary", "df-generated"] + - ["hudson.model", "Run$RunExecution", "getProject", "()", "summary", "df-generated"] + - ["hudson.model", "Run$RunExecution", "post", "(BuildListener)", "summary", "df-generated"] + - ["hudson.model", "Run$RunExecution", "run", "(BuildListener)", "summary", "df-generated"] + - ["hudson.model", "Run$StatusSummarizer", "summarize", "(Run,ResultTrend)", "summary", "df-generated"] + - ["hudson.model", "Run", "canToggleLogKeep", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "delete", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "deleteArtifacts", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "doBuildNumber", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Run", "doBuildStatus", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Run", "doBuildTimestamp", "(StaplerRequest,StaplerResponse,String)", "summary", "df-generated"] + - ["hudson.model", "Run", "doConfigSubmit", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "Run", "doConsoleText", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Run", "doDoDelete", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Run", "doProgressiveLog", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Run", "doSubmitDescription", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Run", "doToggleLogKeep", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Run", "fromExternalizableId", "(String)", "summary", "df-generated"] + - ["hudson.model", "Run", "getAbsoluteUrl", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getArtifacts", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getArtifactsUpTo", "(int)", "summary", "df-generated"] + - ["hudson.model", "Run", "getBadgeActions", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getBuildFingerprints", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getBuildStatusIconClassName", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getBuildStatusSummary", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getBuildStatusUrl", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getCause", "(Class)", "summary", "df-generated"] + - ["hudson.model", "Run", "getCauses", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getCharset", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getDuration", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getDurationString", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getEstimatedDuration", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getExecutor", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getHasArtifacts", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getIconColor", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getLog", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getLog", "(int)", "summary", "df-generated"] + - ["hudson.model", "Run", "getNumber", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getOneOffExecutor", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getQueueId", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getStartTimeInMillis", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getTime", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getTimeInMillis", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getTimestamp", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getTimestampString2", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getTimestampString", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getTransientActions", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "getWhyKeepLog", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "hasCustomDisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "hasntStartedYet", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "isBuilding", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "isInProgress", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "isKeepLog", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "isLogUpdated", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "keepLog", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "keepLog", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "Run", "reload", "()", "summary", "df-generated"] + - ["hudson.model", "Run", "setQueueId", "(long)", "summary", "df-generated"] + - ["hudson.model", "Run", "updateSymlinks", "(TaskListener)", "summary", "df-generated"] + - ["hudson.model", "Run", "writeLogTo", "(long,XMLOutput)", "summary", "df-generated"] + - ["hudson.model", "Run", "writeWholeLogTo", "(OutputStream)", "summary", "df-generated"] + - ["hudson.model", "RunMap", "newestValue", "()", "summary", "df-generated"] + - ["hudson.model", "RunMap", "oldestValue", "()", "summary", "df-generated"] + - ["hudson.model", "RunMap", "remove", "(Run)", "summary", "df-generated"] + - ["hudson.model", "RunParameterDefinition$DescriptorImpl", "doAutoCompleteProjectName", "(String)", "summary", "df-generated"] + - ["hudson.model", "RunParameterDefinition$RunParameterFilter", "getName", "()", "summary", "df-generated"] + - ["hudson.model", "RunParameterDefinition", "getBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "RunParameterDefinition", "getFilter", "()", "summary", "df-generated"] + - ["hudson.model", "RunParameterDefinition", "getProject", "()", "summary", "df-generated"] + - ["hudson.model", "RunParameterValue", "getRun", "()", "summary", "df-generated"] + - ["hudson.model", "Saveable", "save", "()", "summary", "df-generated"] + - ["hudson.model", "SimpleParameterDefinition", "createValue", "(String)", "summary", "df-generated"] + - ["hudson.model", "Slave$JnlpJar", "doIndex", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "Slave$JnlpJar", "getURL", "()", "summary", "df-generated"] + - ["hudson.model", "Slave$JnlpJar", "readFully", "()", "summary", "df-generated"] + - ["hudson.model", "Slave$SlaveDescriptor", "computerLauncherDescriptors", "(Slave)", "summary", "df-generated"] + - ["hudson.model", "Slave$SlaveDescriptor", "doCheckNumExecutors", "(String)", "summary", "df-generated"] + - ["hudson.model", "Slave$SlaveDescriptor", "doCheckRemoteFS", "(String)", "summary", "df-generated"] + - ["hudson.model", "Slave$SlaveDescriptor", "nodePropertyDescriptors", "(Slave)", "summary", "df-generated"] + - ["hudson.model", "Slave$SlaveDescriptor", "retentionStrategyDescriptors", "(Slave)", "summary", "df-generated"] + - ["hudson.model", "Slave", "getComputer", "()", "summary", "df-generated"] + - ["hudson.model", "Slave", "getWorkspaceRoot", "()", "summary", "df-generated"] + - ["hudson.model", "Slave", "setMode", "(Mode)", "summary", "df-generated"] + - ["hudson.model", "Slave", "setNodeProperties", "(List)", "summary", "df-generated"] + - ["hudson.model", "Slave", "setNumExecutors", "(int)", "summary", "df-generated"] + - ["hudson.model", "Slave", "setUserId", "(String)", "summary", "df-generated"] + - ["hudson.model", "StatusIcon", "getDescription", "()", "summary", "df-generated"] + - ["hudson.model", "StreamBuildListener", "StreamBuildListener", "(File,Charset)", "summary", "df-generated"] + - ["hudson.model", "StringParameterDefinition", "isTrim", "()", "summary", "df-generated"] + - ["hudson.model", "StringParameterDefinition", "setTrim", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "StringParameterValue", "doTrim", "()", "summary", "df-generated"] + - ["hudson.model", "TaskAction", "doClearError", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "TaskAction", "doProgressiveHtml", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "TaskAction", "doProgressiveLog", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "TaskAction", "getLog", "()", "summary", "df-generated"] + - ["hudson.model", "TaskAction", "obtainLog", "()", "summary", "df-generated"] + - ["hudson.model", "TaskListener", "annotate", "(ConsoleNote)", "summary", "df-generated"] + - ["hudson.model", "TaskListener", "error", "(String)", "summary", "df-generated"] + - ["hudson.model", "TaskListener", "error", "(String,Object[])", "summary", "df-generated"] + - ["hudson.model", "TaskListener", "fatalError", "(String)", "summary", "df-generated"] + - ["hudson.model", "TaskListener", "fatalError", "(String,Object[])", "summary", "df-generated"] + - ["hudson.model", "TaskListener", "getCharset", "()", "summary", "df-generated"] + - ["hudson.model", "TaskListener", "getLogger", "()", "summary", "df-generated"] + - ["hudson.model", "TaskListener", "hyperlink", "(String,String)", "summary", "df-generated"] + - ["hudson.model", "TaskThread$ListenerAndText", "forFile", "(File)", "summary", "df-generated"] + - ["hudson.model", "TaskThread$ListenerAndText", "forMemory", "()", "summary", "df-generated"] + - ["hudson.model", "TaskThread", "isRunning", "()", "summary", "df-generated"] + - ["hudson.model", "TaskThread", "readAll", "()", "summary", "df-generated"] + - ["hudson.model", "TimeSeries", "TimeSeries", "(float,float,int)", "summary", "df-generated"] + - ["hudson.model", "TimeSeries", "getHistory", "()", "summary", "df-generated"] + - ["hudson.model", "TimeSeries", "getLatest", "()", "summary", "df-generated"] + - ["hudson.model", "TimeSeries", "toString", "()", "summary", "df-generated"] + - ["hudson.model", "TimeSeries", "update", "(float)", "summary", "df-generated"] + - ["hudson.model", "TimeZoneProperty$DescriptorImpl", "doCheckTimeZoneName", "(String)", "summary", "df-generated"] + - ["hudson.model", "TimeZoneProperty$DescriptorImpl", "doFillTimeZoneNameItems", "(User)", "summary", "df-generated"] + - ["hudson.model", "TimeZoneProperty", "forCurrentUser", "()", "summary", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", "all", "()", "summary", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", "checkApplicableIn", "(ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", "getCategoryId", "()", "summary", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", "getDescription", "()", "summary", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", "getIconFilePathPattern", "()", "summary", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", "isApplicable", "(Descriptor)", "summary", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", "isApplicableIn", "(ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", "newInstance", "(ItemGroup,String)", "summary", "df-generated"] + - ["hudson.model", "TopLevelItemDescriptor", "testInstance", "(TopLevelItem)", "summary", "df-generated"] + - ["hudson.model", "TransientBuildActionFactory", "all", "()", "summary", "df-generated"] + - ["hudson.model", "TransientBuildActionFactory", "createFor", "(AbstractBuild)", "summary", "df-generated"] + - ["hudson.model", "TransientBuildActionFactory", "createFor", "(Run)", "summary", "df-generated"] + - ["hudson.model", "TransientComputerActionFactory", "all", "()", "summary", "df-generated"] + - ["hudson.model", "TransientComputerActionFactory", "createAllFor", "(Computer)", "summary", "df-generated"] + - ["hudson.model", "TransientComputerActionFactory", "createFor", "(Computer)", "summary", "df-generated"] + - ["hudson.model", "TransientProjectActionFactory", "all", "()", "summary", "df-generated"] + - ["hudson.model", "TransientProjectActionFactory", "createFor", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "TransientUserActionFactory", "all", "()", "summary", "df-generated"] + - ["hudson.model", "TransientUserActionFactory", "createFor", "(User)", "summary", "df-generated"] + - ["hudson.model", "TransientViewActionFactory", "all", "()", "summary", "df-generated"] + - ["hudson.model", "TransientViewActionFactory", "createAllFor", "(View)", "summary", "df-generated"] + - ["hudson.model", "TransientViewActionFactory", "createFor", "(View)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$CoreUpdateMonitor", "getData", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob$InstallationStatus", "getType", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob$InstallationStatus", "isSuccess", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob$InstallationStatus", "requiresRestart", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob$Installing", "Installing", "(int)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob", "_run", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob", "getContentLength", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob", "getDisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$DownloadJob", "getName", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$RestartJenkinsJob$Pending", "getType", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$RestartJenkinsJob", "cancel", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "checkConnection", "(ConnectionCheckJob,String)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "checkUpdateCenter", "(ConnectionCheckJob,String)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "download", "(DownloadJob,URL)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "getConnectionCheckUrl", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "getPluginRepositoryBaseUrl", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "getUpdateCenterUrl", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "install", "(DownloadJob,File,File)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "postValidate", "(DownloadJob,File)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "preValidate", "(DownloadJob,URL)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", "upgrade", "(DownloadJob,File,File)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterJob", "getType", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterJob", "schedule", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter$UpdateCenterJob", "submit", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "doCancelRestart", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "doConnectionStatus", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "doDowngrade", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "doIncompleteInstallStatus", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "doInstallStatus", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "doInvalidateData", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "doRestart", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "doSafeRestart", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "doUpgrade", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getAvailables", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getBackupVersion", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getCategorizedAvailables", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getDefaultBaseUrl", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getLastUpdatedString", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getPlugin", "(String)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getPlugin", "(String,VersionNumber)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getPluginFromAllSites", "(String,VersionNumber)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getSiteList", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "getUpdates", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "hasIncompatibleUpdates", "(MetadataCache)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "init", "(Jenkins)", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "isDowngradable", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "isRestartRequiredForCompletion", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "isRestartScheduled", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "isSiteDataReady", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "load", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "persistInstallStatus", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "updateAllSites", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "updateAllSitesNow", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateCenter", "updateDefaultSite", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Data", "canUpgrade", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Data", "hasCoreUpdates", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Entry", "getFileSize", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Entry", "isNewerThan", "(String)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "deploy", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "deploy", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "deploy", "(boolean,UUID,List,boolean)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "deployBackup", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "doDowngrade", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "doInstall", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "doInstallNow", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "fixesSecurityVulnerabilities", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "getDependenciesIncompatibleWithInstalledVersion", "(MetadataCache)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "getDeprecation", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "getDisplayName", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "getInstalled", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "getNeededDependencies", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "getNeededDependenciesRequiredCore", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "getWarnings", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "hasCategory", "(String)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "hasIncompatibleParentPlugins", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "hasWarnings", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "install", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "isCompatible", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "isCompatible", "(MetadataCache)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "isCompatibleWithInstalledVersion", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "isDeprecated", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "isForNewerHudson", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "isNeededDependenciesCompatibleWithInstalledVersion", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "isNeededDependenciesCompatibleWithInstalledVersion", "(MetadataCache)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "isNeededDependenciesForNewerJenkins", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Plugin", "isNeededDependenciesForNewerJenkins", "(MetadataCache)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Warning", "Warning", "(JSONObject)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Warning", "isFixable", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Warning", "isPluginWarning", "(String)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Warning", "isRelevant", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$Warning", "isRelevantToVersion", "(VersionNumber)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$WarningVersionRange", "WarningVersionRange", "(JSONObject)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite$WarningVersionRange", "includes", "(VersionNumber)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "doInvalidateData", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "doVerifySignature", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "getDataTimestamp", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "getJSONObject", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "getUpdates", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "hasUpdates", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "isDue", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "isLegacyDefault", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "updateDirectly", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "updateDirectly", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "updateDirectlyNow", "()", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "updateDirectlyNow", "(boolean)", "summary", "df-generated"] + - ["hudson.model", "UpdateSite", "verifySignatureInternal", "(JSONObject)", "summary", "df-generated"] + - ["hudson.model", "UsageStatistics$CombinedCipherInputStream", "CombinedCipherInputStream", "(InputStream,Cipher,String,int)", "summary", "df-generated"] + - ["hudson.model", "UsageStatistics$CombinedCipherInputStream", "CombinedCipherInputStream", "(InputStream,RSAKey,String)", "summary", "df-generated"] + - ["hudson.model", "UsageStatistics", "getStatData", "()", "summary", "df-generated"] + - ["hudson.model", "UsageStatistics", "isDue", "()", "summary", "df-generated"] + - ["hudson.model", "User$AllUsers", "scanAll", "()", "summary", "df-generated"] + - ["hudson.model", "User$CanonicalIdResolver", "all", "()", "summary", "df-generated"] + - ["hudson.model", "User$CanonicalIdResolver", "getPriority", "()", "summary", "df-generated"] + - ["hudson.model", "User$CanonicalIdResolver", "resolveCanonicalId", "(String,Map)", "summary", "df-generated"] + - ["hudson.model", "User", "canDelete", "()", "summary", "df-generated"] + - ["hudson.model", "User", "clear", "()", "summary", "df-generated"] + - ["hudson.model", "User", "current", "()", "summary", "df-generated"] + - ["hudson.model", "User", "delete", "()", "summary", "df-generated"] + - ["hudson.model", "User", "doConfigSubmit", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "User", "doDoDelete", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "User", "doRssAll", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "User", "doRssFailed", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "User", "doRssLatest", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "User", "doSubmitDescription", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "User", "get2", "(Authentication)", "summary", "df-generated"] + - ["hudson.model", "User", "get", "(Authentication)", "summary", "df-generated"] + - ["hudson.model", "User", "getAll", "()", "summary", "df-generated"] + - ["hudson.model", "User", "getAuthorities", "()", "summary", "df-generated"] + - ["hudson.model", "User", "getBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "User", "getProjects", "()", "summary", "df-generated"] + - ["hudson.model", "User", "getProperty", "(Class)", "summary", "df-generated"] + - ["hudson.model", "User", "getTransientActions", "()", "summary", "df-generated"] + - ["hudson.model", "User", "getUnknown", "()", "summary", "df-generated"] + - ["hudson.model", "User", "getUserDetailsForImpersonation", "()", "summary", "df-generated"] + - ["hudson.model", "User", "getUserFolder", "()", "summary", "df-generated"] + - ["hudson.model", "User", "idStrategy", "()", "summary", "df-generated"] + - ["hudson.model", "User", "impersonate2", "()", "summary", "df-generated"] + - ["hudson.model", "User", "impersonate", "()", "summary", "df-generated"] + - ["hudson.model", "User", "impersonate", "(UserDetails)", "summary", "df-generated"] + - ["hudson.model", "User", "isIdOrFullnameAllowed", "(String)", "summary", "df-generated"] + - ["hudson.model", "User", "rekey", "()", "summary", "df-generated"] + - ["hudson.model", "User", "reload", "()", "summary", "df-generated"] + - ["hudson.model", "UserProperty", "all", "()", "summary", "df-generated"] + - ["hudson.model", "UserPropertyDescriptor", "isEnabled", "()", "summary", "df-generated"] + - ["hudson.model", "UserPropertyDescriptor", "newInstance", "(User)", "summary", "df-generated"] + - ["hudson.model", "View$AsynchPeople", "getApi", "()", "summary", "df-generated"] + - ["hudson.model", "View$People", "isApplicable", "(Collection)", "summary", "df-generated"] + - ["hudson.model", "View$UserInfo", "getLastChangeTimeString", "()", "summary", "df-generated"] + - ["hudson.model", "View$UserInfo", "getTimeSortKey", "()", "summary", "df-generated"] + - ["hudson.model", "View", "all", "()", "summary", "df-generated"] + - ["hudson.model", "View", "allInstantiable", "()", "summary", "df-generated"] + - ["hudson.model", "View", "contains", "(TopLevelItem)", "summary", "df-generated"] + - ["hudson.model", "View", "doCheckJobName", "(String)", "summary", "df-generated"] + - ["hudson.model", "View", "doConfigDotXml", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.model", "View", "doConfigSubmit", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "View", "doCreateItem", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "View", "doDoDelete", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "View", "doItemCategories", "(StaplerRequest,StaplerResponse,String)", "summary", "df-generated"] + - ["hudson.model", "View", "doRssAll", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "View", "doRssFailed", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "View", "doRssLatest", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "View", "doSubmitDescription", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.model", "View", "getAllItems", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getAllProperties", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getApplicablePropertyDescriptors", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getApproximateQueueItemsQuickly", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getBuilds", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getColumns", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getComputers", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getIndenter", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getItem", "(String)", "summary", "df-generated"] + - ["hudson.model", "View", "getItemCreatePermission", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getItems", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getNewPronoun", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getOwnerPrimaryView", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getPostConstructLandingPage", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getQueueItems", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getTimeline", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getVisiblePropertyDescriptors", "()", "summary", "df-generated"] + - ["hudson.model", "View", "getWidgets", "()", "summary", "df-generated"] + - ["hudson.model", "View", "hasPeople", "()", "summary", "df-generated"] + - ["hudson.model", "View", "isAutomaticRefreshEnabled", "()", "summary", "df-generated"] + - ["hudson.model", "View", "isDefault", "()", "summary", "df-generated"] + - ["hudson.model", "View", "isEditable", "()", "summary", "df-generated"] + - ["hudson.model", "View", "isFilterExecutors", "()", "summary", "df-generated"] + - ["hudson.model", "View", "isFilterQueue", "()", "summary", "df-generated"] + - ["hudson.model", "View", "onJobRenamed", "(Item,String,String)", "summary", "df-generated"] + - ["hudson.model", "View", "registerPermissions", "()", "summary", "df-generated"] + - ["hudson.model", "View", "rename", "(String)", "summary", "df-generated"] + - ["hudson.model", "View", "updateByXml", "(Source)", "summary", "df-generated"] + - ["hudson.model", "View", "updateTransientActions", "()", "summary", "df-generated"] + - ["hudson.model", "View", "writeXml", "(OutputStream)", "summary", "df-generated"] + - ["hudson.model", "ViewDescriptor", "doAutoCompleteCopyNewItemFrom", "(String,ItemGroup)", "summary", "df-generated"] + - ["hudson.model", "ViewDescriptor", "getColumnsDescriptors", "()", "summary", "df-generated"] + - ["hudson.model", "ViewDescriptor", "getJobFiltersDescriptors", "()", "summary", "df-generated"] + - ["hudson.model", "ViewDescriptor", "getNewViewDetailPage", "()", "summary", "df-generated"] + - ["hudson.model", "ViewDescriptor", "isApplicable", "(Class)", "summary", "df-generated"] + - ["hudson.model", "ViewDescriptor", "isApplicableIn", "(ViewGroup)", "summary", "df-generated"] + - ["hudson.model", "ViewDescriptor", "isInstantiable", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "canDelete", "(View)", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "deleteView", "(View)", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "getAllViews", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "getItemGroup", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "getPrimaryView", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "getUrl", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "getView", "(String)", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "getViewActions", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "getViews", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "getViewsTabBar", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroup", "onViewRenamed", "(View,String,String)", "summary", "df-generated"] + - ["hudson.model", "ViewGroupMixIn", "canDelete", "(View)", "summary", "df-generated"] + - ["hudson.model", "ViewGroupMixIn", "deleteView", "(View)", "summary", "df-generated"] + - ["hudson.model", "ViewGroupMixIn", "getPrimaryView", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroupMixIn", "getView", "(String)", "summary", "df-generated"] + - ["hudson.model", "ViewGroupMixIn", "getViews", "()", "summary", "df-generated"] + - ["hudson.model", "ViewGroupMixIn", "onViewRenamed", "(View,String,String)", "summary", "df-generated"] + - ["hudson.model", "ViewProperty", "all", "()", "summary", "df-generated"] + - ["hudson.model", "ViewPropertyDescriptor", "isEnabledFor", "(View)", "summary", "df-generated"] + - ["hudson.model", "ViewPropertyDescriptor", "newInstance", "(View)", "summary", "df-generated"] + - ["hudson.model", "WorkspaceBrowser", "getWorkspace", "(Job)", "summary", "df-generated"] + - ["hudson.model", "WorkspaceCleanupThread", "invoke", "()", "summary", "df-generated"] + - ["hudson.model", "WorkspaceListener", "afterDelete", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.model", "WorkspaceListener", "all", "()", "summary", "df-generated"] + - ["hudson.model", "WorkspaceListener", "beforeUse", "(AbstractBuild,FilePath,BuildListener)", "summary", "df-generated"] + - ["hudson.node_monitors", "AbstractDiskSpaceMonitor", "getThresholdBytes", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "AbstractDiskSpaceMonitor", "markNodeOfflineIfDiskspaceIsTooLow", "(Computer)", "summary", "df-generated"] + - ["hudson.node_monitors", "AbstractNodeMonitorDescriptor", "getTimestamp", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "AbstractNodeMonitorDescriptor", "getTimestampString", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "AbstractNodeMonitorDescriptor", "isIgnored", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "ClockMonitor", "getDifferenceFor", "(Computer)", "summary", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitor", "getFreeSpace", "(Computer)", "summary", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitor", "install", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitorDescriptor$DiskSpace", "getFreeSize", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitorDescriptor$DiskSpace", "getGbLeft", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitorDescriptor$DiskSpace", "parse", "(String)", "summary", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitorDescriptor$DiskSpace", "toHtml", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "DiskSpaceMonitorDescriptor$DiskSpace", "toString", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "AbstractNodeMonitorDescriptor_NoDataYet", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "ArchitectureMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "ClockMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "DiskSpaceMonitorDescriptor_DiskSpace_FreeSpace", "(Object,Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "DiskSpaceMonitorDescriptor_DiskSpace_FreeSpaceTooLow", "(Object,Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "DiskSpaceMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "DiskSpaceMonitor_MarkedOffline", "(Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "DiskSpaceMonitor_MarkedOnline", "(Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "MonitorMarkedNodeOffline_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "ResponseTimeMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "ResponseTimeMonitor_MarkedOffline", "(Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "ResponseTimeMonitor_TimeOut", "(Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "SwapSpaceMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "TemporarySpaceMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_AbstractNodeMonitorDescriptor_NoDataYet", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_ArchitectureMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_ClockMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_DiskSpaceMonitorDescriptor_DiskSpace_FreeSpace", "(Object,Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_DiskSpaceMonitorDescriptor_DiskSpace_FreeSpaceTooLow", "(Object,Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_DiskSpaceMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_DiskSpaceMonitor_MarkedOffline", "(Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_DiskSpaceMonitor_MarkedOnline", "(Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_MonitorMarkedNodeOffline_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_ResponseTimeMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_ResponseTimeMonitor_MarkedOffline", "(Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_ResponseTimeMonitor_TimeOut", "(Object)", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_SwapSpaceMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "Messages", "_TemporarySpaceMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "MonitorOfflineCause", "getTrigger", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "NodeMonitor", "all", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "NodeMonitor", "data", "(Computer)", "summary", "df-generated"] + - ["hudson.node_monitors", "NodeMonitor", "getAll", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "NodeMonitor", "getColumnCaption", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "NodeMonitor", "isIgnored", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "NodeMonitor", "setIgnored", "(boolean)", "summary", "df-generated"] + - ["hudson.node_monitors", "NodeMonitor", "triggerUpdate", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "ResponseTimeMonitor$Data", "getAverage", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "ResponseTimeMonitor$Data", "hasTooManyTimeouts", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "ResponseTimeMonitor$Data", "toString", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "SwapSpaceMonitor$MemoryUsage2", "MemoryUsage2", "(MemoryUsage)", "summary", "df-generated"] + - ["hudson.node_monitors", "SwapSpaceMonitor$MemoryUsage2", "getAvailablePhysicalMemory", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "SwapSpaceMonitor$MemoryUsage2", "getAvailableSwapSpace", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "SwapSpaceMonitor$MemoryUsage2", "getTotalPhysicalMemory", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "SwapSpaceMonitor$MemoryUsage2", "getTotalSwapSpace", "()", "summary", "df-generated"] + - ["hudson.node_monitors", "SwapSpaceMonitor", "toHtml", "(MemoryUsage)", "summary", "df-generated"] + - ["hudson.node_monitors", "SwapSpaceMonitor", "toMB", "(MemoryUsage)", "summary", "df-generated"] + - ["hudson.node_monitors", "TemporarySpaceMonitor", "getFreeSpace", "(Computer)", "summary", "df-generated"] + - ["hudson.node_monitors", "TemporarySpaceMonitor", "install", "()", "summary", "df-generated"] + - ["hudson.os", "SU", "execute", "(TaskListener,String,String,Callable)", "summary", "df-generated"] + - ["hudson.os", "SU", "start", "(TaskListener,String,String)", "summary", "df-generated"] + - ["hudson.os", "WindowsUtil", "execCmd", "(String[])", "summary", "df-generated"] + - ["hudson.scheduler", "CronTab", "ceil", "(long)", "summary", "df-generated"] + - ["hudson.scheduler", "CronTab", "checkSanity", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CronTab", "floor", "(long)", "summary", "df-generated"] + - ["hudson.scheduler", "CronTab", "getTimeZone", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CronTab", "toString", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CronTabList", "check", "(Calendar)", "summary", "df-generated"] + - ["hudson.scheduler", "CronTabList", "checkSanity", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CronTabList", "create", "(String)", "summary", "df-generated"] + - ["hudson.scheduler", "CronTabList", "create", "(String,Hash)", "summary", "df-generated"] + - ["hudson.scheduler", "CronTabList", "next", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CronTabList", "previous", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabLexer", "CrontabLexer", "(CharStream)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$ExprContext", "ExprContext", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$ExprContext", "ExprContext", "(ParserRuleContext,int,int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$ExprContext", "OR", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$ExprContext", "expr", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$ExprContext", "term", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "ANNUALLY", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "AT", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "DAILY", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "EOF", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "HOURLY", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "MIDNIGHT", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "MONTHLY", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "StartRuleContext", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "WEEKLY", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "WS", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "WS", "(int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "YEARLY", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "expr", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$StartRuleContext", "expr", "(int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "DIV", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "H", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "LPAREN", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "MINUS", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "RPAREN", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "STAR", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "TermContext", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "TermContext", "(ParserRuleContext,int,int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "token", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TermContext", "token", "(int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TokenContext", "TOKEN", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser$TokenContext", "TokenContext", "(ParserRuleContext,int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser", "CrontabParser", "(TokenStream)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser", "expr", "(int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser", "term", "(int)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParser", "token", "()", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParserListener", "enterExpr", "(ExprContext)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParserListener", "enterStartRule", "(StartRuleContext)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParserListener", "enterTerm", "(TermContext)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParserListener", "enterToken", "(TokenContext)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParserListener", "exitExpr", "(ExprContext)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParserListener", "exitStartRule", "(StartRuleContext)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParserListener", "exitTerm", "(TermContext)", "summary", "df-generated"] + - ["hudson.scheduler", "CrontabParserListener", "exitToken", "(TokenContext)", "summary", "df-generated"] + - ["hudson.scheduler", "Hash", "from", "(String)", "summary", "df-generated"] + - ["hudson.scheduler", "Hash", "next", "(int)", "summary", "df-generated"] + - ["hudson.scheduler", "Hash", "zero", "()", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "BaseParser_MustBePositive", "(Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "BaseParser_OutOfRange", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "BaseParser_StartEndReversed", "(Object,Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "CronTabList_InvalidInput", "(Object,Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "CronTab_do_you_really_mean_every_minute_when_you", "(Object,Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "CronTab_short_cycles_in_the_day_of_month_field_w", "()", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "CronTab_spread_load_evenly_by_using_rather_than_", "(Object,Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "_BaseParser_MustBePositive", "(Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "_BaseParser_OutOfRange", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "_BaseParser_StartEndReversed", "(Object,Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "_CronTabList_InvalidInput", "(Object,Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "_CronTab_do_you_really_mean_every_minute_when_you", "(Object,Object)", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "_CronTab_short_cycles_in_the_day_of_month_field_w", "()", "summary", "df-generated"] + - ["hudson.scheduler", "Messages", "_CronTab_spread_load_evenly_by_using_rather_than_", "(Object,Object)", "summary", "df-generated"] + - ["hudson.scm", "AbstractScmTagAction", "doIndex", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.scm", "AbstractScmTagAction", "getTooltip", "()", "summary", "df-generated"] + - ["hudson.scm", "AbstractScmTagAction", "isTagged", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogAnnotator", "all", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogAnnotator", "annotate", "(AbstractBuild,Entry,MarkupText)", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogAnnotator", "annotate", "(Run,Entry,MarkupText)", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogAnnotator", "register", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogAnnotator", "unregister", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet$Entry", "getAffectedFiles", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet$Entry", "getAffectedPaths", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet$Entry", "getAuthor", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet$Entry", "getCommitId", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet$Entry", "getMsg", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet$Entry", "getMsgAnnotated", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet$Entry", "getMsgEscaped", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet$Entry", "getTimestamp", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet", "getKind", "()", "summary", "df-generated"] + - ["hudson.scm", "ChangeLogSet", "isEmptySet", "()", "summary", "df-generated"] + - ["hudson.scm", "Messages", "NullSCM_DisplayName", "()", "summary", "df-generated"] + - ["hudson.scm", "Messages", "SCM_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.scm", "Messages", "SCM_TagPermission_Description", "()", "summary", "df-generated"] + - ["hudson.scm", "Messages", "_NullSCM_DisplayName", "()", "summary", "df-generated"] + - ["hudson.scm", "Messages", "_SCM_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.scm", "Messages", "_SCM_TagPermission_Description", "()", "summary", "df-generated"] + - ["hudson.scm", "PollingResult", "PollingResult", "(Change)", "summary", "df-generated"] + - ["hudson.scm", "PollingResult", "hasChanges", "()", "summary", "df-generated"] + - ["hudson.scm", "RepositoryBrowser", "all", "()", "summary", "df-generated"] + - ["hudson.scm", "RepositoryBrowser", "getChangeSetLink", "(Entry)", "summary", "df-generated"] + - ["hudson.scm", "RepositoryBrowsers", "createInstance", "(Class,StaplerRequest,JSONObject,String)", "summary", "df-generated"] + - ["hudson.scm", "RepositoryBrowsers", "createInstance", "(Class,StaplerRequest,String)", "summary", "df-generated"] + - ["hudson.scm", "RepositoryBrowsers", "filter", "(Class)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "_calcRevisionsFromBuild", "(AbstractBuild,Launcher,TaskListener)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "_for", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "_for", "(Job)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "all", "()", "summary", "df-generated"] + - ["hudson.scm", "SCM", "buildEnvVars", "(AbstractBuild,Map)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "buildEnvironment", "(Run,Map)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "calcRevisionsFromBuild", "(AbstractBuild,Launcher,TaskListener)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "calcRevisionsFromBuild", "(Run,FilePath,Launcher,TaskListener)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "checkout", "(AbstractBuild,Launcher,FilePath,BuildListener,File)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "checkout", "(Run,Launcher,FilePath,TaskListener,File,SCMRevisionState)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "compareRemoteRevisionWith", "(Job,Launcher,FilePath,TaskListener,SCMRevisionState)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "createChangeLogParser", "()", "summary", "df-generated"] + - ["hudson.scm", "SCM", "getBrowser", "()", "summary", "df-generated"] + - ["hudson.scm", "SCM", "getKey", "()", "summary", "df-generated"] + - ["hudson.scm", "SCM", "getType", "()", "summary", "df-generated"] + - ["hudson.scm", "SCM", "guessBrowser", "()", "summary", "df-generated"] + - ["hudson.scm", "SCM", "poll", "(AbstractProject,Launcher,FilePath,TaskListener,SCMRevisionState)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "pollChanges", "(AbstractProject,Launcher,FilePath,TaskListener)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "postCheckout", "(AbstractBuild,Launcher,FilePath,BuildListener)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "postCheckout", "(Run,Launcher,FilePath,TaskListener)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "processWorkspaceBeforeDeletion", "(AbstractProject,FilePath,Node)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "processWorkspaceBeforeDeletion", "(Job,FilePath,Node)", "summary", "df-generated"] + - ["hudson.scm", "SCM", "requiresWorkspaceForPolling", "()", "summary", "df-generated"] + - ["hudson.scm", "SCM", "supportsPolling", "()", "summary", "df-generated"] + - ["hudson.scm", "SCMDescriptor", "getBrowserDescriptors", "()", "summary", "df-generated"] + - ["hudson.scm", "SCMDescriptor", "getGeneration", "()", "summary", "df-generated"] + - ["hudson.scm", "SCMDescriptor", "incrementGeneration", "()", "summary", "df-generated"] + - ["hudson.scm", "SCMDescriptor", "isApplicable", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.scm", "SCMDescriptor", "isApplicable", "(Job)", "summary", "df-generated"] + - ["hudson.scm", "SCMDescriptor", "isBrowserReusable", "(SCM,SCM)", "summary", "df-generated"] + - ["hudson.scm", "SCMS", "parseSCM", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.scm", "SCMS", "parseSCM", "(StaplerRequest,AbstractProject)", "summary", "df-generated"] + - ["hudson.search", "Messages", "UserSearchProperty_DisplayName", "()", "summary", "df-generated"] + - ["hudson.search", "Messages", "_UserSearchProperty_DisplayName", "()", "summary", "df-generated"] + - ["hudson.search", "Search", "doIndex", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.search", "Search", "doSuggest", "(StaplerRequest,StaplerResponse,String)", "summary", "df-generated"] + - ["hudson.search", "Search", "doSuggestOpenSearch", "(StaplerRequest,StaplerResponse,String)", "summary", "df-generated"] + - ["hudson.search", "Search", "getSuggestions", "(StaplerRequest,String)", "summary", "df-generated"] + - ["hudson.search", "Search", "suggest", "(SearchIndex,String)", "summary", "df-generated"] + - ["hudson.search", "Search", "suggest", "(SearchIndex,String,SearchableModelObject)", "summary", "df-generated"] + - ["hudson.search", "SearchFactory", "all", "()", "summary", "df-generated"] + - ["hudson.search", "SearchFactory", "createFor", "(SearchableModelObject)", "summary", "df-generated"] + - ["hudson.search", "SearchIndex", "find", "(String,List)", "summary", "df-generated"] + - ["hudson.search", "SearchIndex", "suggest", "(String,List)", "summary", "df-generated"] + - ["hudson.search", "SearchItem", "getSearchIndex", "()", "summary", "df-generated"] + - ["hudson.search", "SearchItem", "getSearchName", "()", "summary", "df-generated"] + - ["hudson.search", "SearchItem", "getSearchUrl", "()", "summary", "df-generated"] + - ["hudson.search", "SearchItems", "create", "(String,String)", "summary", "df-generated"] + - ["hudson.search", "SearchItems", "create", "(String,String,SearchIndex)", "summary", "df-generated"] + - ["hudson.search", "SearchItems", "create", "(String,String,SearchableModelObject)", "summary", "df-generated"] + - ["hudson.search", "SearchResult", "hasMoreResults", "()", "summary", "df-generated"] + - ["hudson.search", "SearchableModelObject", "getSearch", "()", "summary", "df-generated"] + - ["hudson.search", "UserSearchProperty", "UserSearchProperty", "(boolean)", "summary", "df-generated"] + - ["hudson.search", "UserSearchProperty", "getInsensitiveSearch", "()", "summary", "df-generated"] + - ["hudson.search", "UserSearchProperty", "isCaseInsensitive", "()", "summary", "df-generated"] + - ["hudson.security.captcha", "CaptchaSupport", "all", "()", "summary", "df-generated"] + - ["hudson.security.captcha", "CaptchaSupport", "generateImage", "(String,OutputStream)", "summary", "df-generated"] + - ["hudson.security.captcha", "CaptchaSupport", "validateCaptcha", "(String,String)", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbExclusion", "all", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbExclusion", "process", "(HttpServletRequest,HttpServletResponse,FilterChain)", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbFilter", "getCrumbIssuer", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuer", "all", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuer", "getCrumb", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuer", "getCrumb", "(ServletRequest)", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuer", "getCrumbRequestField", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuer", "initStaplerCrumbIssuer", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuer", "validateCrumb", "(ServletRequest)", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuer", "validateCrumb", "(ServletRequest,MultipartFormDataParser)", "summary", "df-generated"] + - ["hudson.security.csrf", "CrumbIssuer", "validateCrumb", "(ServletRequest,String,String)", "summary", "df-generated"] + - ["hudson.security.csrf", "DefaultCrumbIssuer", "DefaultCrumbIssuer", "(boolean)", "summary", "df-generated"] + - ["hudson.security.csrf", "DefaultCrumbIssuer", "isExcludeClientIPFromCrumb", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "GlobalCrumbIssuerConfiguration", "createDefaultCrumbIssuer", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "GlobalCrumbIssuerConfiguration", "getCrumbIssuer", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "Messages", "DefaultCrumbIssuer_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security.csrf", "Messages", "_DefaultCrumbIssuer_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "ACL", "as2", "(Authentication)", "summary", "df-generated"] + - ["hudson.security", "ACL", "as", "(Authentication)", "summary", "df-generated"] + - ["hudson.security", "ACL", "as", "(User)", "summary", "df-generated"] + - ["hudson.security", "ACL", "checkAnyPermission", "(Permission[])", "summary", "df-generated"] + - ["hudson.security", "ACL", "checkCreatePermission", "(ItemGroup,TopLevelItemDescriptor)", "summary", "df-generated"] + - ["hudson.security", "ACL", "checkCreatePermission", "(ViewGroup,ViewDescriptor)", "summary", "df-generated"] + - ["hudson.security", "ACL", "checkPermission", "(Permission)", "summary", "df-generated"] + - ["hudson.security", "ACL", "hasAnyPermission", "(Permission[])", "summary", "df-generated"] + - ["hudson.security", "ACL", "hasCreatePermission2", "(Authentication,ItemGroup,TopLevelItemDescriptor)", "summary", "df-generated"] + - ["hudson.security", "ACL", "hasCreatePermission2", "(Authentication,ViewGroup,ViewDescriptor)", "summary", "df-generated"] + - ["hudson.security", "ACL", "hasCreatePermission", "(Authentication,ItemGroup,TopLevelItemDescriptor)", "summary", "df-generated"] + - ["hudson.security", "ACL", "hasCreatePermission", "(Authentication,ViewGroup,ViewDescriptor)", "summary", "df-generated"] + - ["hudson.security", "ACL", "hasPermission2", "(Authentication,Permission)", "summary", "df-generated"] + - ["hudson.security", "ACL", "hasPermission", "(Authentication,Permission)", "summary", "df-generated"] + - ["hudson.security", "ACL", "hasPermission", "(Permission)", "summary", "df-generated"] + - ["hudson.security", "ACL", "impersonate2", "(Authentication)", "summary", "df-generated"] + - ["hudson.security", "ACL", "impersonate2", "(Authentication,Callable)", "summary", "df-generated"] + - ["hudson.security", "ACL", "impersonate2", "(Authentication,Runnable)", "summary", "df-generated"] + - ["hudson.security", "ACL", "impersonate", "(Authentication)", "summary", "df-generated"] + - ["hudson.security", "ACL", "impersonate", "(Authentication,Callable)", "summary", "df-generated"] + - ["hudson.security", "ACL", "impersonate", "(Authentication,Runnable)", "summary", "df-generated"] + - ["hudson.security", "ACL", "isAnonymous2", "(Authentication)", "summary", "df-generated"] + - ["hudson.security", "ACL", "isAnonymous", "(Authentication)", "summary", "df-generated"] + - ["hudson.security", "ACL", "lambda2", "(BiFunction)", "summary", "df-generated"] + - ["hudson.security", "ACL", "lambda", "(BiFunction)", "summary", "df-generated"] + - ["hudson.security", "ACLContext", "getPreviousContext", "()", "summary", "df-generated"] + - ["hudson.security", "AccessControlled", "checkAnyPermission", "(Permission[])", "summary", "df-generated"] + - ["hudson.security", "AccessControlled", "checkPermission", "(Permission)", "summary", "df-generated"] + - ["hudson.security", "AccessControlled", "getACL", "()", "summary", "df-generated"] + - ["hudson.security", "AccessControlled", "hasAnyPermission", "(Permission[])", "summary", "df-generated"] + - ["hudson.security", "AccessControlled", "hasPermission2", "(Authentication,Permission)", "summary", "df-generated"] + - ["hudson.security", "AccessControlled", "hasPermission", "(Authentication,Permission)", "summary", "df-generated"] + - ["hudson.security", "AccessControlled", "hasPermission", "(Permission)", "summary", "df-generated"] + - ["hudson.security", "AccessDeniedException2", "report", "(PrintWriter)", "summary", "df-generated"] + - ["hudson.security", "AccessDeniedException2", "reportAsHeaders", "(HttpServletResponse)", "summary", "df-generated"] + - ["hudson.security", "AccessDeniedException3", "report", "(PrintWriter)", "summary", "df-generated"] + - ["hudson.security", "AccessDeniedException3", "reportAsHeaders", "(HttpServletResponse)", "summary", "df-generated"] + - ["hudson.security", "AuthenticationProcessingFilter2", "AuthenticationProcessingFilter2", "(String)", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "all", "()", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getACL", "(AbstractItem)", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getACL", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getACL", "(Cloud)", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getACL", "(Computer)", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getACL", "(Job)", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getACL", "(Node)", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getACL", "(User)", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getACL", "(View)", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getGroups", "()", "summary", "df-generated"] + - ["hudson.security", "AuthorizationStrategy", "getRootACL", "()", "summary", "df-generated"] + - ["hudson.security", "CliAuthenticator", "authenticate", "()", "summary", "df-generated"] + - ["hudson.security", "ContainerAuthentication", "ContainerAuthentication", "(HttpServletRequest)", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "addTo", "(User)", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "addToCurrentUser", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "getEmailAddress", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "getFullName", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "getIdentifier", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "getNickname", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "getPronoun", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "locateUser", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "signin", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService$FederatedIdentity", "toString", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService", "all", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService", "getUrlName", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginService", "getUserPropertyClass", "()", "summary", "df-generated"] + - ["hudson.security", "FederatedLoginServiceUserProperty", "has", "(String)", "summary", "df-generated"] + - ["hudson.security", "FullControlOnceLoggedInAuthorizationStrategy", "isAllowAnonymousRead", "()", "summary", "df-generated"] + - ["hudson.security", "FullControlOnceLoggedInAuthorizationStrategy", "setAllowAnonymousRead", "(boolean)", "summary", "df-generated"] + - ["hudson.security", "GlobalSecurityConfiguration", "configure", "(StaplerRequest,JSONObject)", "summary", "df-generated"] + - ["hudson.security", "GlobalSecurityConfiguration", "doConfigure", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.security", "GlobalSecurityConfiguration", "getAgentProtocols", "()", "summary", "df-generated"] + - ["hudson.security", "GlobalSecurityConfiguration", "getAuthorizationStrategy", "()", "summary", "df-generated"] + - ["hudson.security", "GlobalSecurityConfiguration", "getMarkupFormatter", "()", "summary", "df-generated"] + - ["hudson.security", "GlobalSecurityConfiguration", "getSecurityRealm", "()", "summary", "df-generated"] + - ["hudson.security", "GlobalSecurityConfiguration", "getSlaveAgentPort", "()", "summary", "df-generated"] + - ["hudson.security", "GlobalSecurityConfiguration", "isDisableRememberMe", "()", "summary", "df-generated"] + - ["hudson.security", "GlobalSecurityConfiguration", "isSlaveAgentPortEnforced", "()", "summary", "df-generated"] + - ["hudson.security", "GroupDetails", "getDisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "GroupDetails", "getMembers", "()", "summary", "df-generated"] + - ["hudson.security", "GroupDetails", "getName", "()", "summary", "df-generated"] + - ["hudson.security", "HttpSessionContextIntegrationFilter2", "HttpSessionContextIntegrationFilter2", "(SecurityContextRepository)", "summary", "df-generated"] + - ["hudson.security", "HudsonFilter", "get", "(ServletContext)", "summary", "df-generated"] + - ["hudson.security", "HudsonFilter", "reset", "(SecurityRealm)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$DescriptorImpl", "doCheckAllowsSignup", "(boolean)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", "getAuthorities2", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", "getAuthorities", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", "getProtectedPassword", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", "isAccountNonExpired", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", "isAccountNonLocked", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", "isCredentialsNonExpired", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", "isEnabled", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$Details", "isPasswordCorrect", "(String)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$SignupInfo", "SignupInfo", "(FederatedIdentity)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm$SignupInfo", "SignupInfo", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "HudsonPrivateSecurityRealm", "(boolean)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "createAccountByAdmin", "(StaplerRequest,StaplerResponse,String,String)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "createAccountFromSetupWizard", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "doCreateAccount", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "doCreateAccountByAdmin", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "doCreateAccountWithFederatedIdentity", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "doCreateFirstAccount", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "getAllUsers", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "getAllowsSignup", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "isEnableCaptcha", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "isMailerPluginPresent", "()", "summary", "df-generated"] + - ["hudson.security", "HudsonPrivateSecurityRealm", "load", "(String)", "summary", "df-generated"] + - ["hudson.security", "Messages", "AccessDeniedException2_MissingPermission", "(Object,Object)", "summary", "df-generated"] + - ["hudson.security", "Messages", "AccessDeniedException_MissingPermissions", "(Object,Object)", "summary", "df-generated"] + - ["hudson.security", "Messages", "AuthorizationStrategy_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "FullControlOnceLoggedInAuthorizationStrategy_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "GlobalSecurityConfiguration_Description", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "GlobalSecurityConfiguration_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_CreateAccount_InvalidEmailAddress", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_CreateAccount_PasswordNotMatch", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_CreateAccount_PasswordRequired", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_CreateAccount_TextNotMatchWordInImage", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_CreateAccount_UserNameAlreadyTaken", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_CreateAccount_UserNameInvalidCharacters", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_CreateAccount_UserNameInvalidCharactersCustom", "(Object)", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_CreateAccount_UserNameRequired", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_Details_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_Details_PasswordError", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_ManageUserLinks_Description", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_ManageUserLinks_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_SignupWarning", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "HudsonPrivateSecurityRealm_WouldYouLikeToSignUp", "(Object,Object)", "summary", "df-generated"] + - ["hudson.security", "Messages", "LegacyAuthorizationStrategy_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "LegacySecurityRealm_Displayname", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "NoneSecurityRealm_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "Permission_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "UserDetailsServiceProxy_UnableToQuery", "(Object)", "summary", "df-generated"] + - ["hudson.security", "Messages", "_AccessDeniedException2_MissingPermission", "(Object,Object)", "summary", "df-generated"] + - ["hudson.security", "Messages", "_AccessDeniedException_MissingPermissions", "(Object,Object)", "summary", "df-generated"] + - ["hudson.security", "Messages", "_AuthorizationStrategy_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_FullControlOnceLoggedInAuthorizationStrategy_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_GlobalSecurityConfiguration_Description", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_GlobalSecurityConfiguration_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_CreateAccount_InvalidEmailAddress", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_CreateAccount_PasswordNotMatch", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_CreateAccount_PasswordRequired", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_CreateAccount_TextNotMatchWordInImage", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_CreateAccount_UserNameAlreadyTaken", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_CreateAccount_UserNameInvalidCharacters", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_CreateAccount_UserNameInvalidCharactersCustom", "(Object)", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_CreateAccount_UserNameRequired", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_Details_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_Details_PasswordError", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_ManageUserLinks_Description", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_ManageUserLinks_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_SignupWarning", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_HudsonPrivateSecurityRealm_WouldYouLikeToSignUp", "(Object,Object)", "summary", "df-generated"] + - ["hudson.security", "Messages", "_LegacyAuthorizationStrategy_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_LegacySecurityRealm_Displayname", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_NoneSecurityRealm_DisplayName", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_Permission_Permissions_Title", "()", "summary", "df-generated"] + - ["hudson.security", "Messages", "_UserDetailsServiceProxy_UnableToQuery", "(Object)", "summary", "df-generated"] + - ["hudson.security", "Permission", "fromId", "(String)", "summary", "df-generated"] + - ["hudson.security", "Permission", "getAll", "()", "summary", "df-generated"] + - ["hudson.security", "Permission", "getEnabled", "()", "summary", "df-generated"] + - ["hudson.security", "Permission", "isContainedBy", "(PermissionScope)", "summary", "df-generated"] + - ["hudson.security", "Permission", "setEnabled", "(boolean)", "summary", "df-generated"] + - ["hudson.security", "PermissionAdder", "add", "(AuthorizationStrategy,User,Permission)", "summary", "df-generated"] + - ["hudson.security", "PermissionGroup", "get", "(Class)", "summary", "df-generated"] + - ["hudson.security", "PermissionGroup", "getAll", "()", "summary", "df-generated"] + - ["hudson.security", "PermissionGroup", "getOwnerClassName", "()", "summary", "df-generated"] + - ["hudson.security", "PermissionGroup", "hasPermissionContainedBy", "(PermissionScope)", "summary", "df-generated"] + - ["hudson.security", "PermissionGroup", "size", "()", "summary", "df-generated"] + - ["hudson.security", "PermissionGroup", "toString", "()", "summary", "df-generated"] + - ["hudson.security", "PermissionScope", "isContainedBy", "(PermissionScope)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm$SecurityComponents", "SecurityComponents", "(AuthenticationManager)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm$SecurityComponents", "SecurityComponents", "(AuthenticationManager,UserDetailsService)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "all", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "allowsSignup", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "canLogOut", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "commenceSignup", "(FederatedIdentity)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "createCliAuthenticator", "(CLICommand)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "createFilter", "(FilterConfig)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "createSecurityComponents", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "doCaptcha", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "doLogout", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "getAuthenticationGatewayUrl", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "getCaptchaSupportDescriptors", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "getFrom", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "getGroupIdStrategy", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "getLoginUrl", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "getUserIdStrategy", "()", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "loadGroupByGroupname2", "(String,boolean)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "loadGroupByGroupname", "(String)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "loadGroupByGroupname", "(String,boolean)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "loadUserByUsername2", "(String)", "summary", "df-generated"] + - ["hudson.security", "SecurityRealm", "loadUserByUsername", "(String)", "summary", "df-generated"] + - ["hudson.security", "SidACL", "newInheritingACL", "(SidACL)", "summary", "df-generated"] + - ["hudson.security", "SparseACL", "add", "(Sid,Permission,boolean)", "summary", "df-generated"] + - ["hudson.security", "TokenBasedRememberMeServices2", "TokenBasedRememberMeServices2", "(UserDetailsService)", "summary", "df-generated"] + - ["hudson.security", "UserMayOrMayNotExistException2", "UserMayOrMayNotExistException2", "(String)", "summary", "df-generated"] + - ["hudson.security", "UserMayOrMayNotExistException2", "UserMayOrMayNotExistException2", "(String,Throwable)", "summary", "df-generated"] + - ["hudson.security", "UserMayOrMayNotExistException", "UserMayOrMayNotExistException", "(String)", "summary", "df-generated"] + - ["hudson.security", "UserMayOrMayNotExistException", "UserMayOrMayNotExistException", "(String,Throwable)", "summary", "df-generated"] + - ["hudson.security", "UserMayOrMayNotExistException", "fromSpring", "(UserMayOrMayNotExistException2)", "summary", "df-generated"] + - ["hudson.security", "WhoAmI", "getAuthorities", "()", "summary", "df-generated"] + - ["hudson.security", "WhoAmI", "getDetails", "()", "summary", "df-generated"] + - ["hudson.security", "WhoAmI", "getName", "()", "summary", "df-generated"] + - ["hudson.security", "WhoAmI", "getToString", "()", "summary", "df-generated"] + - ["hudson.security", "WhoAmI", "isAnonymous", "()", "summary", "df-generated"] + - ["hudson.security", "WhoAmI", "isAuthenticated", "()", "summary", "df-generated"] + - ["hudson.security", "WhoAmI", "isHeaderDangerous", "(String)", "summary", "df-generated"] + - ["hudson.slaves", "AbstractCloudImpl", "getInstanceCap", "()", "summary", "df-generated"] + - ["hudson.slaves", "AbstractCloudImpl", "getInstanceCapStr", "()", "summary", "df-generated"] + - ["hudson.slaves", "AbstractCloudSlave", "terminate", "()", "summary", "df-generated"] + - ["hudson.slaves", "ChannelPinger$SetUpRemotePing", "SetUpRemotePing", "(int,int)", "summary", "df-generated"] + - ["hudson.slaves", "ChannelPinger", "install", "(Channel)", "summary", "df-generated"] + - ["hudson.slaves", "ChannelPinger", "setUpPingForChannel", "(Channel,SlaveComputer,int,int,boolean)", "summary", "df-generated"] + - ["hudson.slaves", "Channels", "forProcess", "(String,ExecutorService,InputStream,OutputStream,OutputStream,Proc)", "summary", "df-generated"] + - ["hudson.slaves", "Channels", "forProcess", "(String,ExecutorService,InputStream,OutputStream,Proc)", "summary", "df-generated"] + - ["hudson.slaves", "Channels", "forProcess", "(String,ExecutorService,Process,OutputStream)", "summary", "df-generated"] + - ["hudson.slaves", "Channels", "newJVM", "(String,TaskListener,FilePath,ClasspathBuilder,Map)", "summary", "df-generated"] + - ["hudson.slaves", "Channels", "newJVM", "(String,TaskListener,JVMBuilder,FilePath,ClasspathBuilder)", "summary", "df-generated"] + - ["hudson.slaves", "Cloud$CloudState", "getAdditionalPlannedCapacity", "()", "summary", "df-generated"] + - ["hudson.slaves", "Cloud", "all", "()", "summary", "df-generated"] + - ["hudson.slaves", "Cloud", "canProvision", "(CloudState)", "summary", "df-generated"] + - ["hudson.slaves", "Cloud", "canProvision", "(Label)", "summary", "df-generated"] + - ["hudson.slaves", "Cloud", "provision", "(CloudState,int)", "summary", "df-generated"] + - ["hudson.slaves", "Cloud", "provision", "(Label,int)", "summary", "df-generated"] + - ["hudson.slaves", "Cloud", "registerPermissions", "()", "summary", "df-generated"] + - ["hudson.slaves", "CloudProvisioningListener", "all", "()", "summary", "df-generated"] + - ["hudson.slaves", "CloudProvisioningListener", "canProvision", "(Cloud,CloudState,int)", "summary", "df-generated"] + - ["hudson.slaves", "CloudProvisioningListener", "canProvision", "(Cloud,Label,int)", "summary", "df-generated"] + - ["hudson.slaves", "CloudProvisioningListener", "onCommit", "(PlannedNode,Node)", "summary", "df-generated"] + - ["hudson.slaves", "CloudProvisioningListener", "onComplete", "(PlannedNode,Node)", "summary", "df-generated"] + - ["hudson.slaves", "CloudProvisioningListener", "onFailure", "(PlannedNode,Throwable)", "summary", "df-generated"] + - ["hudson.slaves", "CloudProvisioningListener", "onRollback", "(PlannedNode,Node,Throwable)", "summary", "df-generated"] + - ["hudson.slaves", "CloudProvisioningListener", "onStarted", "(Cloud,Label,Collection)", "summary", "df-generated"] + - ["hudson.slaves", "CloudRetentionStrategy", "CloudRetentionStrategy", "(int)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerConnector", "launch", "(String,TaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerConnectorDescriptor", "all", "()", "summary", "df-generated"] + - ["hudson.slaves", "ComputerLauncher", "afterDisconnect", "(SlaveComputer,StreamTaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerLauncher", "afterDisconnect", "(SlaveComputer,TaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerLauncher", "beforeDisconnect", "(SlaveComputer,StreamTaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerLauncher", "beforeDisconnect", "(SlaveComputer,TaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerLauncher", "isLaunchSupported", "()", "summary", "df-generated"] + - ["hudson.slaves", "ComputerLauncher", "launch", "(SlaveComputer,StreamTaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerLauncher", "launch", "(SlaveComputer,TaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "all", "()", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "onConfigurationChange", "()", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "onLaunchFailure", "(Computer,TaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "onOffline", "(Computer)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "onOffline", "(Computer,OfflineCause)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "onOnline", "(Computer)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "onOnline", "(Computer,TaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "onTemporarilyOffline", "(Computer,OfflineCause)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "onTemporarilyOnline", "(Computer)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "preLaunch", "(Computer,TaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "preOnline", "(Computer,Channel,FilePath,TaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "register", "()", "summary", "df-generated"] + - ["hudson.slaves", "ComputerListener", "unregister", "()", "summary", "df-generated"] + - ["hudson.slaves", "DelegatingComputerLauncher$DescriptorImpl", "applicableDescriptors", "(Slave,SlaveDescriptor)", "summary", "df-generated"] + - ["hudson.slaves", "DelegatingComputerLauncher$DescriptorImpl", "getApplicableDescriptors", "()", "summary", "df-generated"] + - ["hudson.slaves", "EnvironmentVariablesNodeProperty$DescriptorImpl", "getHelpPage", "()", "summary", "df-generated"] + - ["hudson.slaves", "JNLPLauncher$DescriptorImpl", "doCheckWebSocket", "(boolean,String)", "summary", "df-generated"] + - ["hudson.slaves", "JNLPLauncher$DescriptorImpl", "isWorkDirSupported", "()", "summary", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", "JNLPLauncher", "(boolean)", "summary", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", "getInboundAgentUrl", "()", "summary", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", "isWebSocket", "()", "summary", "df-generated"] + - ["hudson.slaves", "JNLPLauncher", "setWebSocket", "(boolean)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "Cloud_ProvisionPermission_Description", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "ComputerLauncher_JavaVersionResult", "(Object,Object)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "ComputerLauncher_NoJavaFound", "(Object)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "ComputerLauncher_UnknownJavaVersion", "(Object)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "ComputerLauncher_abortedLaunch", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "ComputerLauncher_unexpectedError", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "ConnectionActivityMonitor_OfflineCause", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "DumbSlave_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "EnvironmentVariablesNodeProperty_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "JNLPLauncher_InstanceIdentityRequired", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "JNLPLauncher_TCPPortDisabled", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "JNLPLauncher_TunnelingNotSupported", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "JNLPLauncher_WebsocketNotEnabled", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "JNLPLauncher_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "NodeDescriptor_CheckName_Mandatory", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "NodeProvisioner_EmptyString", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "OfflineCause_LaunchFailed", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "OfflineCause_connection_was_broken_", "(Object)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "RetentionStrategy_Always_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "RetentionStrategy_Demand_OfflineIdle", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "RetentionStrategy_Demand_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "SimpleScheduledRetentionStrategy_FinishedUpTime", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "SimpleScheduledRetentionStrategy_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "SlaveComputer_DisconnectedBy", "(Object,Object)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_Cloud_ProvisionPermission_Description", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_ComputerLauncher_JavaVersionResult", "(Object,Object)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_ComputerLauncher_NoJavaFound", "(Object)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_ComputerLauncher_UnknownJavaVersion", "(Object)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_ComputerLauncher_abortedLaunch", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_ComputerLauncher_unexpectedError", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_ConnectionActivityMonitor_OfflineCause", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_DumbSlave_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_EnvironmentVariablesNodeProperty_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_JNLPLauncher_InstanceIdentityRequired", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_JNLPLauncher_TCPPortDisabled", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_JNLPLauncher_TunnelingNotSupported", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_JNLPLauncher_WebsocketNotEnabled", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_JNLPLauncher_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_NodeDescriptor_CheckName_Mandatory", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_NodeProvisioner_EmptyString", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_OfflineCause_LaunchFailed", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_OfflineCause_connection_was_broken_", "(Object)", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_RetentionStrategy_Always_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_RetentionStrategy_Demand_OfflineIdle", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_RetentionStrategy_Demand_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_SimpleScheduledRetentionStrategy_FinishedUpTime", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_SimpleScheduledRetentionStrategy_displayName", "()", "summary", "df-generated"] + - ["hudson.slaves", "Messages", "_SlaveComputer_DisconnectedBy", "(Object,Object)", "summary", "df-generated"] + - ["hudson.slaves", "NodeDescriptor", "all", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeDescriptor", "allInstantiable", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeDescriptor", "doCheckName", "(String)", "summary", "df-generated"] + - ["hudson.slaves", "NodeDescriptor", "handleNewNodePage", "(ComputerSet,String,StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.slaves", "NodeDescriptor", "isInstantiable", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeDescriptor", "newInstanceDetailPage", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeList$ConverterImpl", "ConverterImpl", "(XStream)", "summary", "df-generated"] + - ["hudson.slaves", "NodeProperty", "all", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProperty", "buildEnvVars", "(EnvVars,TaskListener)", "summary", "df-generated"] + - ["hudson.slaves", "NodeProperty", "canTake", "(BuildableItem)", "summary", "df-generated"] + - ["hudson.slaves", "NodeProperty", "canTake", "(Task)", "summary", "df-generated"] + - ["hudson.slaves", "NodeProperty", "for_", "(Node)", "summary", "df-generated"] + - ["hudson.slaves", "NodeProperty", "setUp", "(AbstractBuild,Launcher,BuildListener)", "summary", "df-generated"] + - ["hudson.slaves", "NodePropertyDescriptor", "isApplicableAsGlobal", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$PlannedNode", "spent", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$Strategy", "apply", "(StrategyState)", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getAdditionalPlannedCapacity", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getAvailableExecutorsLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getBusyExecutorsLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getConnectingExecutorsLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getDefinedExecutorsLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getIdleExecutorsLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getIdleLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getIdleSnapshot", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getOnlineExecutorsLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getPlannedCapacityLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getPlannedCapacitySnapshot", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getQueueLengthLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getQueueLengthSnapshot", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getTotalLatest", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "getTotalSnapshot", "()", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "recordPendingLaunches", "(Collection)", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner$StrategyState", "recordPendingLaunches", "(PlannedNode[])", "summary", "df-generated"] + - ["hudson.slaves", "NodeProvisioner", "suggestReviewNow", "()", "summary", "df-generated"] + - ["hudson.slaves", "OfflineCause$ChannelTermination", "getShortDescription", "()", "summary", "df-generated"] + - ["hudson.slaves", "OfflineCause$ChannelTermination", "toString", "()", "summary", "df-generated"] + - ["hudson.slaves", "OfflineCause$LaunchFailed", "toString", "()", "summary", "df-generated"] + - ["hudson.slaves", "OfflineCause", "getTime", "()", "summary", "df-generated"] + - ["hudson.slaves", "OfflineCause", "getTimestamp", "()", "summary", "df-generated"] + - ["hudson.slaves", "RetentionStrategy$Demand", "Demand", "(long,long)", "summary", "df-generated"] + - ["hudson.slaves", "RetentionStrategy$Demand", "getIdleDelay", "()", "summary", "df-generated"] + - ["hudson.slaves", "RetentionStrategy$Demand", "getInDemandDelay", "()", "summary", "df-generated"] + - ["hudson.slaves", "RetentionStrategy", "all", "()", "summary", "df-generated"] + - ["hudson.slaves", "RetentionStrategy", "check", "(Computer)", "summary", "df-generated"] + - ["hudson.slaves", "RetentionStrategy", "isAcceptingTasks", "(Computer)", "summary", "df-generated"] + - ["hudson.slaves", "RetentionStrategy", "isManualLaunchAllowed", "(Computer)", "summary", "df-generated"] + - ["hudson.slaves", "RetentionStrategy", "start", "(Computer)", "summary", "df-generated"] + - ["hudson.slaves", "SimpleScheduledRetentionStrategy$DescriptorImpl", "doCheck", "(String)", "summary", "df-generated"] + - ["hudson.slaves", "SimpleScheduledRetentionStrategy", "getUpTimeMins", "()", "summary", "df-generated"] + - ["hudson.slaves", "SimpleScheduledRetentionStrategy", "isKeepUpWhenActive", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "doDoDisconnect", "(String)", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "doSubmitDescription", "(StaplerResponse,String)", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getChannelToMaster", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getClassLoadingCount", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getClassLoadingPrefetchCacheCount", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getClassLoadingTime", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getEnvVarsFull", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getJnlpMac", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getOSDescription", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getResourceLoadingCount", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getResourceLoadingTime", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getSlaveVersion", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "getSystemInfoExtensions", "()", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "setAcceptingTasks", "(boolean)", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "setChannel", "(ChannelBuilder,CommandTransport,Listener)", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "setChannel", "(InputStream,OutputStream,OutputStream,Listener)", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "setChannel", "(InputStream,OutputStream,TaskListener,Listener)", "summary", "df-generated"] + - ["hudson.slaves", "SlaveComputer", "tryReconnect", "()", "summary", "df-generated"] + - ["hudson.slaves", "WorkspaceList$Lease", "release", "()", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver$DescriptorImpl", "doCheckArtifacts", "(AbstractProject,String,String)", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "getAllowEmptyArchive", "()", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "isCaseSensitive", "()", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "isDefaultExcludes", "()", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "isFingerprint", "()", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "isFollowSymlinks", "()", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "isLatestOnly", "()", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "isOnlyIfSuccessful", "()", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "setAllowEmptyArchive", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "setCaseSensitive", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "setDefaultExcludes", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "setFingerprint", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "setFollowSymlinks", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "ArtifactArchiver", "setOnlyIfSuccessful", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "BatchFile$DescriptorImpl", "doCheckUnstableReturn", "(String)", "summary", "df-generated"] + - ["hudson.tasks", "BatchFile$DescriptorImpl", "getApplicableLocalRules", "()", "summary", "df-generated"] + - ["hudson.tasks", "BatchFile", "getUnstableReturn", "()", "summary", "df-generated"] + - ["hudson.tasks", "BatchFile", "setUnstableReturn", "(Integer)", "summary", "df-generated"] + - ["hudson.tasks", "BuildStep", "getProjectAction", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.tasks", "BuildStep", "getProjectActions", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.tasks", "BuildStep", "getRequiredMonitorService", "()", "summary", "df-generated"] + - ["hudson.tasks", "BuildStep", "perform", "(AbstractBuild,Launcher,BuildListener)", "summary", "df-generated"] + - ["hudson.tasks", "BuildStep", "prebuild", "(AbstractBuild,BuildListener)", "summary", "df-generated"] + - ["hudson.tasks", "BuildStepCompatibilityLayer", "getProjectAction", "(Project)", "summary", "df-generated"] + - ["hudson.tasks", "BuildStepCompatibilityLayer", "perform", "(Build,Launcher,BuildListener)", "summary", "df-generated"] + - ["hudson.tasks", "BuildStepCompatibilityLayer", "prebuild", "(Build,BuildListener)", "summary", "df-generated"] + - ["hudson.tasks", "BuildStepDescriptor", "isApplicable", "(Class)", "summary", "df-generated"] + - ["hudson.tasks", "BuildStepMonitor", "perform", "(BuildStep,AbstractBuild,Launcher,BuildListener)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger$DescriptorImpl", "doAutoCompleteChildProjects", "(String,Item,ItemGroup)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger$DescriptorImpl", "doCheck", "(AbstractProject,String)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger$DescriptorImpl", "showEvenIfUnstableOption", "(Class)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger", "execute", "(AbstractBuild,BuildListener)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger", "execute", "(AbstractBuild,BuildListener,BuildTrigger)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger", "getChildJobs", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger", "getChildProjects", "()", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger", "getChildProjects", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger", "getChildProjects", "(ItemGroup)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger", "hasSame", "(AbstractProject,Collection)", "summary", "df-generated"] + - ["hudson.tasks", "BuildTrigger", "hasSame", "(Collection)", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrapper$Environment", "tearDown", "(Build,BuildListener)", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrapper", "all", "()", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrapper", "getProjectAction", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrapper", "getProjectActions", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrapper", "makeBuildVariables", "(AbstractBuild,Map)", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrapper", "makeSensitiveBuildVariables", "(AbstractBuild,Set)", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrapper", "preCheckout", "(AbstractBuild,Launcher,BuildListener)", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrapper", "setUp", "(AbstractBuild,Launcher,BuildListener)", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrapperDescriptor", "isApplicable", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.tasks", "BuildWrappers", "getFor", "(AbstractProject)", "summary", "df-generated"] + - ["hudson.tasks", "Builder", "all", "()", "summary", "df-generated"] + - ["hudson.tasks", "CommandInterpreter", "buildCommandLine", "(FilePath)", "summary", "df-generated"] + - ["hudson.tasks", "CommandInterpreter", "perform", "(AbstractBuild,Launcher,TaskListener)", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter$DescriptorImpl", "doCheck", "(AbstractProject,String)", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter$DescriptorImpl", "doCheckTargets", "(AbstractProject,String)", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter$FingerprintAction", "add", "(Map)", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter$FingerprintAction", "getDependencies", "()", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter$FingerprintAction", "getDependencies", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter", "getCaseSensitive", "()", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter", "getDefaultExcludes", "()", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter", "getRecordBuildArtifacts", "()", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter", "setCaseSensitive", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "Fingerprinter", "setDefaultExcludes", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "LogRotator", "(String,String,String,String)", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "LogRotator", "(int,int)", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "LogRotator", "(int,int,int,int)", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "getArtifactDaysToKeep", "()", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "getArtifactDaysToKeepStr", "()", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "getArtifactNumToKeep", "()", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "getArtifactNumToKeepStr", "()", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "getDaysToKeep", "()", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "getDaysToKeepStr", "()", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "getNumToKeep", "()", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "getNumToKeepStr", "()", "summary", "df-generated"] + - ["hudson.tasks", "LogRotator", "parse", "(String)", "summary", "df-generated"] + - ["hudson.tasks", "Maven$DescriptorImpl", "getDefaultGlobalSettingsProvider", "()", "summary", "df-generated"] + - ["hudson.tasks", "Maven$DescriptorImpl", "getDefaultSettingsProvider", "()", "summary", "df-generated"] + - ["hudson.tasks", "Maven$DescriptorImpl", "setInstallations", "(MavenInstallation[])", "summary", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", "getExecutable", "(Launcher)", "summary", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", "getExists", "()", "summary", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", "isMaven2_1", "(Launcher)", "summary", "df-generated"] + - ["hudson.tasks", "Maven$MavenInstallation", "meetsMavenReqVersion", "(Launcher,int)", "summary", "df-generated"] + - ["hudson.tasks", "Maven$ProjectWithMaven", "inferMavenInstallation", "()", "summary", "df-generated"] + - ["hudson.tasks", "Maven", "getMaven", "()", "summary", "df-generated"] + - ["hudson.tasks", "Maven", "isInjectBuildVariables", "()", "summary", "df-generated"] + - ["hudson.tasks", "Maven", "setUsePrivateRepository", "(boolean)", "summary", "df-generated"] + - ["hudson.tasks", "Maven", "usesPrivateRepository", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Ant_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Ant_ExecFailed", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Ant_ExecutableNotFound", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Ant_GlobalConfigNeeded", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Ant_NotADirectory", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Ant_NotAntDirectory", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Ant_ProjectConfigNeeded", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "ArtifactArchiver_ARCHIVING_ARTIFACTS", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "ArtifactArchiver_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "ArtifactArchiver_NoIncludes", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "ArtifactArchiver_NoMatchFound", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "ArtifactArchiver_SkipBecauseOnlyIfSuccessful", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BatchFile_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BatchFile_invalid_exit_code_range", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BatchFile_invalid_exit_code_zero", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BuildTrigger_Disabled", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BuildTrigger_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BuildTrigger_InQueue", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BuildTrigger_NoProjectSpecified", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BuildTrigger_NoSuchProject", "(Object,Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BuildTrigger_NotBuildable", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BuildTrigger_Triggering", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BuildTrigger_ok_ancestor_is_null", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "BuildTrigger_you_have_no_permission_to_build_", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "CommandInterpreter_CommandFailed", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "CommandInterpreter_UnableToDelete", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "CommandInterpreter_UnableToProduceScript", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Fingerprinter_Aborted", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Fingerprinter_Action_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Fingerprinter_DigestFailed", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Fingerprinter_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Fingerprinter_Failed", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Fingerprinter_FailedFor", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Fingerprinter_Recording", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "InstallFromApache", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "JavadocArchiver_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "JavadocArchiver_DisplayName_Generic", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "JavadocArchiver_DisplayName_Javadoc", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "JavadocArchiver_NoMatchFound", "(Object,Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "JavadocArchiver_Publishing", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "JavadocArchiver_UnableToCopy", "(Object,Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Maven_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Maven_ExecFailed", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Maven_NoExecutable", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Maven_NotMavenDirectory", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Shell_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Shell_invalid_exit_code_range", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "Shell_invalid_exit_code_zero", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "TestJavadocArchiver_DisplayName_Javadoc", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Ant_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Ant_ExecFailed", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Ant_ExecutableNotFound", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Ant_GlobalConfigNeeded", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Ant_NotADirectory", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Ant_NotAntDirectory", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Ant_ProjectConfigNeeded", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_ArtifactArchiver_ARCHIVING_ARTIFACTS", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_ArtifactArchiver_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_ArtifactArchiver_NoIncludes", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_ArtifactArchiver_NoMatchFound", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_ArtifactArchiver_SkipBecauseOnlyIfSuccessful", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BatchFile_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BatchFile_invalid_exit_code_range", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BatchFile_invalid_exit_code_zero", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BuildTrigger_Disabled", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BuildTrigger_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BuildTrigger_InQueue", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BuildTrigger_NoProjectSpecified", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BuildTrigger_NoSuchProject", "(Object,Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BuildTrigger_NotBuildable", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BuildTrigger_Triggering", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BuildTrigger_ok_ancestor_is_null", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_BuildTrigger_you_have_no_permission_to_build_", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_CommandInterpreter_CommandFailed", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_CommandInterpreter_UnableToDelete", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_CommandInterpreter_UnableToProduceScript", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Fingerprinter_Aborted", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Fingerprinter_Action_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Fingerprinter_DigestFailed", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Fingerprinter_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Fingerprinter_Failed", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Fingerprinter_FailedFor", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Fingerprinter_Recording", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_InstallFromApache", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_JavadocArchiver_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_JavadocArchiver_DisplayName_Generic", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_JavadocArchiver_DisplayName_Javadoc", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_JavadocArchiver_NoMatchFound", "(Object,Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_JavadocArchiver_Publishing", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_JavadocArchiver_UnableToCopy", "(Object,Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Maven_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Maven_ExecFailed", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Maven_NoExecutable", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Maven_NotMavenDirectory", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Shell_DisplayName", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Shell_invalid_exit_code_range", "(Object)", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_Shell_invalid_exit_code_zero", "()", "summary", "df-generated"] + - ["hudson.tasks", "Messages", "_TestJavadocArchiver_DisplayName_Javadoc", "()", "summary", "df-generated"] + - ["hudson.tasks", "Publisher", "all", "()", "summary", "df-generated"] + - ["hudson.tasks", "Publisher", "needsToRunAfterFinalized", "()", "summary", "df-generated"] + - ["hudson.tasks", "Shell$DescriptorImpl", "doCheckShell", "(String)", "summary", "df-generated"] + - ["hudson.tasks", "Shell$DescriptorImpl", "doCheckUnstableReturn", "(String)", "summary", "df-generated"] + - ["hudson.tasks", "Shell$DescriptorImpl", "getApplicableLocalRules", "()", "summary", "df-generated"] + - ["hudson.tasks", "Shell", "getUnstableReturn", "()", "summary", "df-generated"] + - ["hudson.tasks", "Shell", "setUnstableReturn", "(Integer)", "summary", "df-generated"] + - ["hudson.tasks", "UserAvatarResolver", "all", "()", "summary", "df-generated"] + - ["hudson.tasks", "UserAvatarResolver", "findAvatarFor", "(User,int,int)", "summary", "df-generated"] + - ["hudson.tasks", "UserAvatarResolver", "resolve", "(User,String)", "summary", "df-generated"] + - ["hudson.tasks", "UserAvatarResolver", "resolveOrNull", "(User,String)", "summary", "df-generated"] + - ["hudson.tasks", "UserNameResolver", "all", "()", "summary", "df-generated"] + - ["hudson.tasks", "UserNameResolver", "findNameFor", "(User)", "summary", "df-generated"] + - ["hudson.tasks", "UserNameResolver", "resolve", "(User)", "summary", "df-generated"] + - ["hudson.tools", "AbstractCommandInstaller$Descriptor", "doCheckCommand", "(String)", "summary", "df-generated"] + - ["hudson.tools", "AbstractCommandInstaller$Descriptor", "doCheckToolHome", "(String)", "summary", "df-generated"] + - ["hudson.tools", "AbstractCommandInstaller", "getCommandCall", "(FilePath)", "summary", "df-generated"] + - ["hudson.tools", "AbstractCommandInstaller", "getCommandFileExtension", "()", "summary", "df-generated"] + - ["hudson.tools", "DownloadFromUrlInstaller$DescriptorImpl", "createDownloadable", "()", "summary", "df-generated"] + - ["hudson.tools", "DownloadFromUrlInstaller$DescriptorImpl", "getInstallables", "()", "summary", "df-generated"] + - ["hudson.tools", "DownloadFromUrlInstaller", "getInstallable", "()", "summary", "df-generated"] + - ["hudson.tools", "InstallSourceProperty", "InstallSourceProperty", "(List)", "summary", "df-generated"] + - ["hudson.tools", "Messages", "BatchCommandInstaller_DescriptorImpl_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "CannotBeInstalled", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.tools", "Messages", "CommandInstaller_DescriptorImpl_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "CommandInstaller_no_command", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "CommandInstaller_no_toolHome", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "InstallSourceProperty_DescriptorImpl_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "ToolDescriptor_NotADirectory", "(Object)", "summary", "df-generated"] + - ["hudson.tools", "Messages", "ToolLocationNodeProperty_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "ZipExtractionInstaller_DescriptorImpl_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "ZipExtractionInstaller_bad_connection", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "ZipExtractionInstaller_could_not_connect", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "ZipExtractionInstaller_malformed_url", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_BatchCommandInstaller_DescriptorImpl_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_CannotBeInstalled", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_CommandInstaller_DescriptorImpl_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_CommandInstaller_no_command", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_CommandInstaller_no_toolHome", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_InstallSourceProperty_DescriptorImpl_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_ToolDescriptor_NotADirectory", "(Object)", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_ToolLocationNodeProperty_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_ZipExtractionInstaller_DescriptorImpl_displayName", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_ZipExtractionInstaller_bad_connection", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_ZipExtractionInstaller_could_not_connect", "()", "summary", "df-generated"] + - ["hudson.tools", "Messages", "_ZipExtractionInstaller_malformed_url", "()", "summary", "df-generated"] + - ["hudson.tools", "PropertyDescriptor", "isApplicable", "(Class)", "summary", "df-generated"] + - ["hudson.tools", "ToolDescriptor", "doCheckHome", "(File)", "summary", "df-generated"] + - ["hudson.tools", "ToolDescriptor", "doCheckName", "(String)", "summary", "df-generated"] + - ["hudson.tools", "ToolDescriptor", "getDefaultInstallers", "()", "summary", "df-generated"] + - ["hudson.tools", "ToolDescriptor", "getDefaultProperties", "()", "summary", "df-generated"] + - ["hudson.tools", "ToolDescriptor", "getPropertyDescriptors", "()", "summary", "df-generated"] + - ["hudson.tools", "ToolInstallation", "all", "()", "summary", "df-generated"] + - ["hudson.tools", "ToolInstallation", "buildEnvVars", "(EnvVars)", "summary", "df-generated"] + - ["hudson.tools", "ToolInstaller", "appliesTo", "(Node)", "summary", "df-generated"] + - ["hudson.tools", "ToolInstaller", "performInstallation", "(ToolInstallation,Node,TaskListener)", "summary", "df-generated"] + - ["hudson.tools", "ToolInstallerDescriptor", "all", "()", "summary", "df-generated"] + - ["hudson.tools", "ToolInstallerDescriptor", "doAutoCompleteLabel", "(String)", "summary", "df-generated"] + - ["hudson.tools", "ToolInstallerDescriptor", "doCheckLabel", "(String)", "summary", "df-generated"] + - ["hudson.tools", "ToolInstallerDescriptor", "for_", "(Class)", "summary", "df-generated"] + - ["hudson.tools", "ToolInstallerDescriptor", "isApplicable", "(Class)", "summary", "df-generated"] + - ["hudson.tools", "ToolLocationNodeProperty$DescriptorImpl", "getToolDescriptors", "()", "summary", "df-generated"] + - ["hudson.tools", "ToolLocationTranslator", "all", "()", "summary", "df-generated"] + - ["hudson.tools", "ToolLocationTranslator", "getToolHome", "(Node,ToolInstallation,TaskListener)", "summary", "df-generated"] + - ["hudson.tools", "ToolProperty", "all", "()", "summary", "df-generated"] + - ["hudson.tools", "ToolProperty", "type", "()", "summary", "df-generated"] + - ["hudson.tools", "ZipExtractionInstaller$DescriptorImpl", "doCheckUrl", "(String)", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "SCMTrigger_AdministrativeMonitorImpl_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "SCMTrigger_BuildAction_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "SCMTrigger_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "SCMTrigger_SCMTriggerCause_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "SCMTrigger_getDisplayName", "(Object)", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "SCMTrigger_no_schedules_hooks", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "SCMTrigger_no_schedules_no_hooks", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "SlowTriggerAdminMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "TimerTrigger_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "TimerTrigger_MissingWhitespace", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "TimerTrigger_TimerTriggerCause_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "TimerTrigger_no_schedules_so_will_never_run", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "TimerTrigger_the_specified_cron_tab_is_rare_or_impossible", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "TimerTrigger_would_last_have_run_at_would_next_run_at", "(Object,Object)", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "Trigger_init", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_SCMTrigger_AdministrativeMonitorImpl_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_SCMTrigger_BuildAction_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_SCMTrigger_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_SCMTrigger_SCMTriggerCause_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_SCMTrigger_getDisplayName", "(Object)", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_SCMTrigger_no_schedules_hooks", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_SCMTrigger_no_schedules_no_hooks", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_SlowTriggerAdminMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_TimerTrigger_DisplayName", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_TimerTrigger_MissingWhitespace", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_TimerTrigger_TimerTriggerCause_ShortDescription", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_TimerTrigger_no_schedules_so_will_never_run", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_TimerTrigger_the_specified_cron_tab_is_rare_or_impossible", "()", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_TimerTrigger_would_last_have_run_at_would_next_run_at", "(Object,Object)", "summary", "df-generated"] + - ["hudson.triggers", "Messages", "_Trigger_init", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$BuildAction", "doPollingLog", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$BuildAction", "getPollingLogFile", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$BuildAction", "writePollingLogTo", "(long,XMLOutput)", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", "clogCheck", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", "doCheckPollingThreadCount", "(String)", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", "doCheckScmpoll_spec", "(String,boolean,Item)", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", "getItemsBeingPolled", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", "getPollingThreadCount", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", "getRunners", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", "isClogged", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", "isPollingThreadCountOptionVisible", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$DescriptorImpl", "setPollingThreadCount", "(int)", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$Runner", "getDuration", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$Runner", "getLogFile", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$Runner", "getStartTime", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$Runner", "getTarget", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$SCMAction", "getItem", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$SCMAction", "getLog", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$SCMAction", "getOwner", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$SCMAction", "writeLogTo", "(XMLOutput)", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger$SCMTriggerCause", "SCMTriggerCause", "(File)", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger", "isIgnorePostCommitHooks", "()", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger", "run", "(Action[])", "summary", "df-generated"] + - ["hudson.triggers", "SCMTrigger", "setIgnorePostCommitHooks", "(boolean)", "summary", "df-generated"] + - ["hudson.triggers", "SafeTimerTask", "doRun", "()", "summary", "df-generated"] + - ["hudson.triggers", "SafeTimerTask", "getLogsRoot", "()", "summary", "df-generated"] + - ["hudson.triggers", "SafeTimerTask", "of", "(ExceptionRunnable)", "summary", "df-generated"] + - ["hudson.triggers", "SlowTriggerAdminMonitor$Value", "getDuration", "()", "summary", "df-generated"] + - ["hudson.triggers", "SlowTriggerAdminMonitor$Value", "getTimeString", "()", "summary", "df-generated"] + - ["hudson.triggers", "SlowTriggerAdminMonitor$Value", "getTrigger", "()", "summary", "df-generated"] + - ["hudson.triggers", "SlowTriggerAdminMonitor", "clear", "()", "summary", "df-generated"] + - ["hudson.triggers", "SlowTriggerAdminMonitor", "doClear", "()", "summary", "df-generated"] + - ["hudson.triggers", "SlowTriggerAdminMonitor", "getInstance", "()", "summary", "df-generated"] + - ["hudson.triggers", "SlowTriggerAdminMonitor", "report", "(Class,String,long)", "summary", "df-generated"] + - ["hudson.triggers", "TimerTrigger$DescriptorImpl", "doCheck", "(String,Item)", "summary", "df-generated"] + - ["hudson.triggers", "TimerTrigger$DescriptorImpl", "doCheckSpec", "(String,Item)", "summary", "df-generated"] + - ["hudson.triggers", "Trigger", "all", "()", "summary", "df-generated"] + - ["hudson.triggers", "Trigger", "checkTriggers", "(Calendar)", "summary", "df-generated"] + - ["hudson.triggers", "Trigger", "for_", "(Item)", "summary", "df-generated"] + - ["hudson.triggers", "Trigger", "getProjectAction", "()", "summary", "df-generated"] + - ["hudson.triggers", "Trigger", "getProjectActions", "()", "summary", "df-generated"] + - ["hudson.triggers", "Trigger", "run", "()", "summary", "df-generated"] + - ["hudson.triggers", "Trigger", "stop", "()", "summary", "df-generated"] + - ["hudson.triggers", "TriggerDescriptor", "isApplicable", "(Item)", "summary", "df-generated"] + - ["hudson.triggers", "Triggers", "getApplicableTriggers", "(Item)", "summary", "df-generated"] + - ["hudson.util.io", "Archiver", "countEntries", "()", "summary", "df-generated"] + - ["hudson.util.io", "ArchiverFactory", "create", "(OutputStream)", "summary", "df-generated"] + - ["hudson.util.io", "ParserConfigurator", "all", "()", "summary", "df-generated"] + - ["hudson.util.io", "ParserConfigurator", "applyConfiguration", "(SAXReader,Object)", "summary", "df-generated"] + - ["hudson.util.io", "ParserConfigurator", "configure", "(SAXReader,Object)", "summary", "df-generated"] + - ["hudson.util.io", "ReopenableFileOutputStream", "rewind", "()", "summary", "df-generated"] + - ["hudson.util.io", "ReopenableRotatingFileOutputStream", "deleteAll", "()", "summary", "df-generated"] + - ["hudson.util.io", "RewindableFileOutputStream", "rewind", "()", "summary", "df-generated"] + - ["hudson.util.io", "RewindableRotatingFileOutputStream", "deleteAll", "()", "summary", "df-generated"] + - ["hudson.util.jna", "DotNet", "isInstalled", "(int,int)", "summary", "df-generated"] + - ["hudson.util.jna", "DotNet", "isInstalled", "(int,int,String,IJIAuthInfo)", "summary", "df-generated"] + - ["hudson.util.jna", "InitializationErrorInvocationHandler", "create", "(Class,Throwable)", "summary", "df-generated"] + - ["hudson.util.jna", "JnaException", "JnaException", "(int)", "summary", "df-generated"] + - ["hudson.util.jna", "JnaException", "getErrorCode", "()", "summary", "df-generated"] + - ["hudson.util.jna", "Kernel32Utils", "createSymbolicLink", "(File,String,boolean)", "summary", "df-generated"] + - ["hudson.util.jna", "Kernel32Utils", "getTempDir", "()", "summary", "df-generated"] + - ["hudson.util.jna", "Kernel32Utils", "getWin32FileAttributes", "(File)", "summary", "df-generated"] + - ["hudson.util.jna", "Kernel32Utils", "isJunctionOrSymlink", "(File)", "summary", "df-generated"] + - ["hudson.util.jna", "Kernel32Utils", "waitForExitProcess", "(Pointer)", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "delete", "()", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "deleteValue", "(String)", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "dispose", "()", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "getIntValue", "(String)", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "getStringValue", "(String)", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "getSubKeys", "()", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "getValues", "()", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "setValue", "(String,String)", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "setValue", "(String,int)", "summary", "df-generated"] + - ["hudson.util.jna", "RegistryKey", "valueExists", "(String)", "summary", "df-generated"] + - ["hudson.util.jna", "WinIOException", "WinIOException", "(Throwable)", "summary", "df-generated"] + - ["hudson.util.jna", "WinIOException", "getErrorCode", "()", "summary", "df-generated"] + - ["hudson.util.xstream", "ImmutableListConverter", "ImmutableListConverter", "(Mapper,ReflectionProvider)", "summary", "df-generated"] + - ["hudson.util.xstream", "ImmutableListConverter", "ImmutableListConverter", "(XStream)", "summary", "df-generated"] + - ["hudson.util.xstream", "ImmutableMapConverter", "ImmutableMapConverter", "(Mapper,ReflectionProvider)", "summary", "df-generated"] + - ["hudson.util.xstream", "ImmutableMapConverter", "ImmutableMapConverter", "(XStream)", "summary", "df-generated"] + - ["hudson.util.xstream", "ImmutableSetConverter", "ImmutableSetConverter", "(Mapper,ReflectionProvider)", "summary", "df-generated"] + - ["hudson.util.xstream", "ImmutableSetConverter", "ImmutableSetConverter", "(XStream)", "summary", "df-generated"] + - ["hudson.util.xstream", "ImmutableSortedSetConverter", "ImmutableSortedSetConverter", "(Mapper,ReflectionProvider)", "summary", "df-generated"] + - ["hudson.util.xstream", "ImmutableSortedSetConverter", "ImmutableSortedSetConverter", "(XStream)", "summary", "df-generated"] + - ["hudson.util", "AlternativeUiTextProvider", "all", "()", "summary", "df-generated"] + - ["hudson.util", "AlternativeUiTextProvider", "get", "(Message,Object)", "summary", "df-generated"] + - ["hudson.util", "AlternativeUiTextProvider", "getText", "(Message,Object)", "summary", "df-generated"] + - ["hudson.util", "Area", "Area", "(int,int)", "summary", "df-generated"] + - ["hudson.util", "Area", "area", "()", "summary", "df-generated"] + - ["hudson.util", "Area", "parse", "(String)", "summary", "df-generated"] + - ["hudson.util", "Area", "toString", "()", "summary", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", "clear", "()", "summary", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", "hasMaskedArguments", "()", "summary", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", "toMaskArray", "()", "summary", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", "toWindowsCommand", "()", "summary", "df-generated"] + - ["hudson.util", "ArgumentListBuilder", "toWindowsCommand", "(boolean)", "summary", "df-generated"] + - ["hudson.util", "AtomicFileWriter", "abort", "()", "summary", "df-generated"] + - ["hudson.util", "AtomicFileWriter", "commit", "()", "summary", "df-generated"] + - ["hudson.util", "BootFailure", "publish", "(ServletContext,File)", "summary", "df-generated"] + - ["hudson.util", "ByteArrayOutputStream2", "ByteArrayOutputStream2", "(int)", "summary", "df-generated"] + - ["hudson.util", "ChartUtil", "adjustChebyshev", "(CategoryDataset,NumberAxis)", "summary", "df-generated"] + - ["hudson.util", "ChartUtil", "generateClickableMap", "(StaplerRequest,StaplerResponse,JFreeChart,Area)", "summary", "df-generated"] + - ["hudson.util", "ChartUtil", "generateClickableMap", "(StaplerRequest,StaplerResponse,JFreeChart,int,int)", "summary", "df-generated"] + - ["hudson.util", "ChartUtil", "generateGraph", "(StaplerRequest,StaplerResponse,JFreeChart,Area)", "summary", "df-generated"] + - ["hudson.util", "ChartUtil", "generateGraph", "(StaplerRequest,StaplerResponse,JFreeChart,int,int)", "summary", "df-generated"] + - ["hudson.util", "ChunkedOutputStream", "finish", "()", "summary", "df-generated"] + - ["hudson.util", "ClockDifference", "ClockDifference", "(long)", "summary", "df-generated"] + - ["hudson.util", "ClockDifference", "abs", "()", "summary", "df-generated"] + - ["hudson.util", "ClockDifference", "isDangerous", "()", "summary", "df-generated"] + - ["hudson.util", "ClockDifference", "toHtml", "()", "summary", "df-generated"] + - ["hudson.util", "ClockDifference", "toHtml", "(ClockDifference)", "summary", "df-generated"] + - ["hudson.util", "ClockDifference", "toHtml", "(Node)", "summary", "df-generated"] + - ["hudson.util", "ClockDifference", "toString", "()", "summary", "df-generated"] + - ["hudson.util", "ColorPalette", "apply", "(LineAndShapeRenderer)", "summary", "df-generated"] + - ["hudson.util", "ComboBoxModel", "ComboBoxModel", "(int)", "summary", "df-generated"] + - ["hudson.util", "CompressedFile", "compress", "()", "summary", "df-generated"] + - ["hudson.util", "CompressedFile", "loadAsString", "()", "summary", "df-generated"] + - ["hudson.util", "CompressedFile", "read", "()", "summary", "df-generated"] + - ["hudson.util", "CompressedFile", "write", "()", "summary", "df-generated"] + - ["hudson.util", "ConsistentHash", "ConsistentHash", "(int)", "summary", "df-generated"] + - ["hudson.util", "ConsistentHash", "countAllPoints", "()", "summary", "df-generated"] + - ["hudson.util", "ConsistentHash", "list", "(String)", "summary", "df-generated"] + - ["hudson.util", "ConsistentHash", "list", "(int)", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteList$ConverterImpl", "ConverterImpl", "(Mapper)", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteList", "clear", "()", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteList", "contains", "(Object)", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteList", "isEmpty", "()", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteList", "remove", "(Object)", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteList", "size", "()", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteList", "toString", "()", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteMap$Hash$ConverterImpl", "ConverterImpl", "(Mapper)", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteMap$Tree$ConverterImpl", "ConverterImpl", "(Mapper)", "summary", "df-generated"] + - ["hudson.util", "CopyOnWriteMap", "toString", "()", "summary", "df-generated"] + - ["hudson.util", "DataSetBuilder", "build", "()", "summary", "df-generated"] + - ["hudson.util", "DescribableList$ConverterImpl", "ConverterImpl", "(Mapper)", "summary", "df-generated"] + - ["hudson.util", "DescribableList", "buildDependencyGraph", "(AbstractProject,DependencyGraph)", "summary", "df-generated"] + - ["hudson.util", "DescribableList", "contains", "(Descriptor)", "summary", "df-generated"] + - ["hudson.util", "DescribableList", "rebuild", "(StaplerRequest,JSONObject,List)", "summary", "df-generated"] + - ["hudson.util", "DescribableList", "rebuild", "(StaplerRequest,JSONObject,List,String)", "summary", "df-generated"] + - ["hudson.util", "DescribableList", "rebuildHetero", "(StaplerRequest,JSONObject,Collection,String)", "summary", "df-generated"] + - ["hudson.util", "DescribableList", "remove", "(Descriptor)", "summary", "df-generated"] + - ["hudson.util", "DescribableList", "replace", "(Describable)", "summary", "df-generated"] + - ["hudson.util", "DescriptorList", "DescriptorList", "(Class)", "summary", "df-generated"] + - ["hudson.util", "DescriptorList", "DescriptorList", "(Descriptor[])", "summary", "df-generated"] + - ["hudson.util", "DescriptorList", "load", "(Class)", "summary", "df-generated"] + - ["hudson.util", "DescriptorList", "newInstanceFromRadioList", "(JSONObject)", "summary", "df-generated"] + - ["hudson.util", "DescriptorList", "newInstanceFromRadioList", "(JSONObject,String)", "summary", "df-generated"] + - ["hudson.util", "DirScanner", "scan", "(File,FileVisitor)", "summary", "df-generated"] + - ["hudson.util", "DoubleLaunchChecker", "doDynamic", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "DoubleLaunchChecker", "doIgnore", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "DoubleLaunchChecker", "getId", "()", "summary", "df-generated"] + - ["hudson.util", "DoubleLaunchChecker", "init", "()", "summary", "df-generated"] + - ["hudson.util", "DoubleLaunchChecker", "schedule", "()", "summary", "df-generated"] + - ["hudson.util", "EditDistance", "editDistance", "(String,String)", "summary", "df-generated"] + - ["hudson.util", "ErrorObject", "doDynamic", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "FileVisitor", "understandsSymlink", "()", "summary", "df-generated"] + - ["hudson.util", "FileVisitor", "visit", "(File,String)", "summary", "df-generated"] + - ["hudson.util", "FileVisitor", "visitSymlink", "(File,String,String)", "summary", "df-generated"] + - ["hudson.util", "FormApply", "applyResponse", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormApply", "isApply", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson.util", "FormApply", "success", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "error", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "error", "(String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "errorWithMarkup", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "ok", "()", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "ok", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "ok", "(String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "okWithMarkup", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "process", "()", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "respond", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "warning", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "warning", "(String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormFieldValidator", "warningWithMarkup", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "error", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "error", "(String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "error", "(Throwable,String)", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "error", "(Throwable,String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "getKind", "()", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "isSelectionCleared", "()", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "renderHtml", "()", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "respond", "(Kind,String)", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "warning", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "warning", "(String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "warning", "(Throwable,String)", "summary", "df-generated"] + - ["hudson.util", "FormFillFailure", "warning", "(Throwable,String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormValidation$FileValidator", "validate", "(File)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "error", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "error", "(String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "error", "(Throwable,String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "error", "(Throwable,String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "ok", "()", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "ok", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "ok", "(String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "renderHtml", "()", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "respond", "(Kind,String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "validateBase64", "(String,boolean,boolean,String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "validateExecutable", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "validateExecutable", "(String,FileValidator)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "validateIntegerInRange", "(String,int,int)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "validateNonNegativeInteger", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "validatePositiveInteger", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "validateRequired", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "warning", "(String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "warning", "(String,Object[])", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "warning", "(Throwable,String)", "summary", "df-generated"] + - ["hudson.util", "FormValidation", "warning", "(Throwable,String,Object[])", "summary", "df-generated"] + - ["hudson.util", "Futures", "precomputed", "(Object)", "summary", "df-generated"] + - ["hudson.util", "Graph", "doMap", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "Graph", "doPng", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "Graph", "safeDimension", "(int,int,int,int)", "summary", "df-generated"] + - ["hudson.util", "HeadBufferingStream", "HeadBufferingStream", "(InputStream,int)", "summary", "df-generated"] + - ["hudson.util", "HeadBufferingStream", "fillSide", "()", "summary", "df-generated"] + - ["hudson.util", "HttpResponses", "okJSON", "()", "summary", "df-generated"] + - ["hudson.util", "HttpResponses", "okJSON", "(Map)", "summary", "df-generated"] + - ["hudson.util", "HttpResponses", "staticResource", "(File)", "summary", "df-generated"] + - ["hudson.util", "HudsonIsLoading", "doDynamic", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "HudsonIsRestarting", "doDynamic", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "IOException2", "IOException2", "(String,Throwable)", "summary", "df-generated"] + - ["hudson.util", "IOException2", "IOException2", "(Throwable)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "closeQuietly", "(InputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "closeQuietly", "(OutputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "closeQuietly", "(Reader)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "closeQuietly", "(Writer)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "contentEquals", "(InputStream,InputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "contentEquals", "(Reader,Reader)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "copy", "(File,OutputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "copy", "(InputStream,File)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "copy", "(Reader,OutputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "copy", "(Reader,OutputStream,String)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "drain", "(InputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "isAbsolute", "(String)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "mkdirs", "(File)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "mode", "(File)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "toByteArray", "(InputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "write", "(String,OutputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "write", "(String,OutputStream,String)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "write", "(StringBuffer,OutputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "write", "(StringBuffer,OutputStream,String)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "write", "(char[],OutputStream)", "summary", "df-generated"] + - ["hudson.util", "IOUtils", "write", "(char[],OutputStream,String)", "summary", "df-generated"] + - ["hudson.util", "IncompatibleAntVersionDetected", "IncompatibleAntVersionDetected", "(Class)", "summary", "df-generated"] + - ["hudson.util", "IncompatibleAntVersionDetected", "getWhereAntIsLoaded", "()", "summary", "df-generated"] + - ["hudson.util", "IncompatibleServletVersionDetected", "IncompatibleServletVersionDetected", "(Class)", "summary", "df-generated"] + - ["hudson.util", "IncompatibleServletVersionDetected", "getWhereServletIsLoaded", "()", "summary", "df-generated"] + - ["hudson.util", "IncompatibleVMDetected", "getSystemProperties", "()", "summary", "df-generated"] + - ["hudson.util", "InterceptingProxy", "wrap", "(Class,Object)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "empty", "()", "summary", "df-generated"] + - ["hudson.util", "Iterators", "limit", "(Iterator,CountingPredicate)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "readOnly", "(Iterator)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "removeDups", "(Iterable)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "reverse", "(List)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "reverseSequence", "(int,int)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "reverseSequence", "(int,int,int)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "sequence", "(Iterable[])", "summary", "df-generated"] + - ["hudson.util", "Iterators", "sequence", "(int,int)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "sequence", "(int,int,int)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "skip", "(Iterator,int)", "summary", "df-generated"] + - ["hudson.util", "Iterators", "wrap", "(Iterable)", "summary", "df-generated"] + - ["hudson.util", "KeyedDataStorage", "getPerformanceStats", "()", "summary", "df-generated"] + - ["hudson.util", "KeyedDataStorage", "resetPerformanceStats", "()", "summary", "df-generated"] + - ["hudson.util", "LRUStringConverter", "LRUStringConverter", "(int)", "summary", "df-generated"] + - ["hudson.util", "ListBoxModel", "ListBoxModel", "(int)", "summary", "df-generated"] + - ["hudson.util", "ListBoxModel", "writeTo", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "LogTaskListener", "LogTaskListener", "(Logger,Level)", "summary", "df-generated"] + - ["hudson.util", "Messages", "ClockDifference_Ahead", "(Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "ClockDifference_Behind", "(Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "ClockDifference_Failed", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "ClockDifference_InSync", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "FormFieldValidator_did_not_manage_to_validate_may_be_too_sl", "(Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "FormValidation_Error_Details", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "FormValidation_ValidateRequired", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "HttpResponses_Saved", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "Retrier_Attempt", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "Retrier_AttemptFailed", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "Retrier_CallingListener", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "Retrier_ExceptionFailed", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "Retrier_ExceptionThrown", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "Retrier_Interruption", "(Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "Retrier_NoSuccess", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "Retrier_Sleeping", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "Retrier_Success", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_ClockDifference_Ahead", "(Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_ClockDifference_Behind", "(Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_ClockDifference_Failed", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "_ClockDifference_InSync", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "_FormFieldValidator_did_not_manage_to_validate_may_be_too_sl", "(Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_FormValidation_Error_Details", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "_FormValidation_ValidateRequired", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "_HttpResponses_Saved", "()", "summary", "df-generated"] + - ["hudson.util", "Messages", "_Retrier_Attempt", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_Retrier_AttemptFailed", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_Retrier_CallingListener", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_Retrier_ExceptionFailed", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_Retrier_ExceptionThrown", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_Retrier_Interruption", "(Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_Retrier_NoSuccess", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_Retrier_Sleeping", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "Messages", "_Retrier_Success", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "MultipartFormDataParser", "MultipartFormDataParser", "(HttpServletRequest)", "summary", "df-generated"] + - ["hudson.util", "MultipartFormDataParser", "cleanUp", "()", "summary", "df-generated"] + - ["hudson.util", "MultipartFormDataParser", "get", "(String)", "summary", "df-generated"] + - ["hudson.util", "MultipartFormDataParser", "isMultiPartForm", "(String)", "summary", "df-generated"] + - ["hudson.util", "NoOverlapCategoryAxis", "NoOverlapCategoryAxis", "(String)", "summary", "df-generated"] + - ["hudson.util", "NoTempDir", "getTempDir", "()", "summary", "df-generated"] + - ["hudson.util", "OneShotEvent", "block", "()", "summary", "df-generated"] + - ["hudson.util", "OneShotEvent", "block", "(long)", "summary", "df-generated"] + - ["hudson.util", "OneShotEvent", "isSignaled", "()", "summary", "df-generated"] + - ["hudson.util", "OneShotEvent", "signal", "()", "summary", "df-generated"] + - ["hudson.util", "PackedMap$ConverterImpl", "ConverterImpl", "(Mapper)", "summary", "df-generated"] + - ["hudson.util", "PersistedList$ConverterImpl", "ConverterImpl", "(Mapper)", "summary", "df-generated"] + - ["hudson.util", "PersistedList", "get", "(Class)", "summary", "df-generated"] + - ["hudson.util", "PersistedList", "getAll", "(Class)", "summary", "df-generated"] + - ["hudson.util", "PersistedList", "remove", "(Class)", "summary", "df-generated"] + - ["hudson.util", "PersistedList", "removeAll", "(Class)", "summary", "df-generated"] + - ["hudson.util", "PersistedList", "replace", "(Object,Object)", "summary", "df-generated"] + - ["hudson.util", "PersistedList", "replaceBy", "(Collection)", "summary", "df-generated"] + - ["hudson.util", "PersistedList", "toString", "()", "summary", "df-generated"] + - ["hudson.util", "PluginServletFilter", "addFilter", "(Filter)", "summary", "df-generated"] + - ["hudson.util", "PluginServletFilter", "cleanUp", "()", "summary", "df-generated"] + - ["hudson.util", "PluginServletFilter", "hasFilter", "(Filter)", "summary", "df-generated"] + - ["hudson.util", "PluginServletFilter", "removeFilter", "(Filter)", "summary", "df-generated"] + - ["hudson.util", "ProcessKiller", "all", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessKiller", "kill", "(OSProcess)", "summary", "df-generated"] + - ["hudson.util", "ProcessKillingVeto", "all", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessKillingVeto", "vetoProcessKilling", "(IOSProcess)", "summary", "df-generated"] + - ["hudson.util", "ProcessTree$OSProcess", "getChildren", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessTree$OSProcess", "hasMatchingEnvVars", "(Map)", "summary", "df-generated"] + - ["hudson.util", "ProcessTree$Remote", "Remote", "(ProcessTree,Channel)", "summary", "df-generated"] + - ["hudson.util", "ProcessTree$Remote", "Remote", "(ProcessTree,Channel,boolean)", "summary", "df-generated"] + - ["hudson.util", "ProcessTree", "get", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessTree", "get", "(Process)", "summary", "df-generated"] + - ["hudson.util", "ProcessTree", "killAll", "(Process,Map)", "summary", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IOSProcess", "act", "(ProcessCallable)", "summary", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IOSProcess", "getArguments", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IOSProcess", "getEnvironmentVariables", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IOSProcess", "getParent", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IOSProcess", "getPid", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IOSProcess", "kill", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IOSProcess", "killRecursively", "()", "summary", "df-generated"] + - ["hudson.util", "ProcessTreeRemoting$IProcessTree", "killAll", "(Map)", "summary", "df-generated"] + - ["hudson.util", "Protector", "protect", "(String)", "summary", "df-generated"] + - ["hudson.util", "Protector", "unprotect", "(String)", "summary", "df-generated"] + - ["hudson.util", "QueryParameterMap", "QueryParameterMap", "(HttpServletRequest)", "summary", "df-generated"] + - ["hudson.util", "QueryParameterMap", "QueryParameterMap", "(String)", "summary", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", "convertHexDigit", "(byte)", "summary", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", "getDouble", "()", "summary", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", "getSingle", "()", "summary", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", "quote", "(String)", "summary", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", "quote", "(StringBuffer,String)", "summary", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", "setDouble", "(boolean)", "summary", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", "setSingle", "(boolean)", "summary", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", "tokenize", "(String)", "summary", "df-generated"] + - ["hudson.util", "QuotedStringTokenizer", "tokenize", "(String,String)", "summary", "df-generated"] + - ["hudson.util", "ReflectionUtils$Parameter", "annotation", "(Class)", "summary", "df-generated"] + - ["hudson.util", "ReflectionUtils$Parameter", "index", "()", "summary", "df-generated"] + - ["hudson.util", "ReflectionUtils$Parameter", "type", "()", "summary", "df-generated"] + - ["hudson.util", "ReflectionUtils", "getPublicMethodNamed", "(Class,String)", "summary", "df-generated"] + - ["hudson.util", "ReflectionUtils", "getPublicProperty", "(Object,String)", "summary", "df-generated"] + - ["hudson.util", "ReflectionUtils", "getVmDefaultValueForPrimitiveType", "(Class)", "summary", "df-generated"] + - ["hudson.util", "RemotingDiagnostics$HeapDump", "doHeapDump", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "RemotingDiagnostics$HeapDump", "doIndex", "(StaplerResponse)", "summary", "df-generated"] + - ["hudson.util", "RemotingDiagnostics$HeapDump", "obtain", "()", "summary", "df-generated"] + - ["hudson.util", "RemotingDiagnostics", "executeGroovy", "(String,VirtualChannel)", "summary", "df-generated"] + - ["hudson.util", "RemotingDiagnostics", "getHeapDump", "(VirtualChannel)", "summary", "df-generated"] + - ["hudson.util", "RemotingDiagnostics", "getSystemProperties", "(VirtualChannel)", "summary", "df-generated"] + - ["hudson.util", "RemotingDiagnostics", "getThreadDump", "(VirtualChannel)", "summary", "df-generated"] + - ["hudson.util", "RemotingDiagnostics", "getThreadDumpAsync", "(VirtualChannel)", "summary", "df-generated"] + - ["hudson.util", "Retrier", "start", "()", "summary", "df-generated"] + - ["hudson.util", "RingBufferLogHandler", "RingBufferLogHandler", "(int)", "summary", "df-generated"] + - ["hudson.util", "RingBufferLogHandler", "clear", "()", "summary", "df-generated"] + - ["hudson.util", "RingBufferLogHandler", "getDefaultRingBufferSize", "()", "summary", "df-generated"] + - ["hudson.util", "RingBufferLogHandler", "getView", "()", "summary", "df-generated"] + - ["hudson.util", "RobustCollectionConverter", "RobustCollectionConverter", "(Mapper,ReflectionProvider)", "summary", "df-generated"] + - ["hudson.util", "RobustCollectionConverter", "RobustCollectionConverter", "(XStream)", "summary", "df-generated"] + - ["hudson.util", "RobustReflectionConverter$DuplicateFieldException", "DuplicateFieldException", "(String)", "summary", "df-generated"] + - ["hudson.util", "RobustReflectionConverter", "addErrorInContext", "(UnmarshallingContext,Throwable)", "summary", "df-generated"] + - ["hudson.util", "RunList", "RunList", "(Collection)", "summary", "df-generated"] + - ["hudson.util", "RunList", "RunList", "(View)", "summary", "df-generated"] + - ["hudson.util", "RunList", "fromJobs", "(Iterable)", "summary", "df-generated"] + - ["hudson.util", "Secret", "getCipher", "(String)", "summary", "df-generated"] + - ["hudson.util", "SecretRewriter", "SecretRewriter", "(File)", "summary", "df-generated"] + - ["hudson.util", "SecretRewriter", "rewrite", "(File)", "summary", "df-generated"] + - ["hudson.util", "SecretRewriter", "rewrite", "(File,File)", "summary", "df-generated"] + - ["hudson.util", "SequentialExecutionQueue", "isStarving", "(long)", "summary", "df-generated"] + - ["hudson.util", "Service", "load", "(Class,ClassLoader,Collection)", "summary", "df-generated"] + - ["hudson.util", "Service", "loadInstances", "(ClassLoader,Class)", "summary", "df-generated"] + - ["hudson.util", "ShiftedCategoryAxis", "ShiftedCategoryAxis", "(String)", "summary", "df-generated"] + - ["hudson.util", "StreamTaskListener", "StreamTaskListener", "(File)", "summary", "df-generated"] + - ["hudson.util", "StreamTaskListener", "StreamTaskListener", "(File,Charset)", "summary", "df-generated"] + - ["hudson.util", "StreamTaskListener", "StreamTaskListener", "(File,boolean,Charset)", "summary", "df-generated"] + - ["hudson.util", "StreamTaskListener", "StreamTaskListener", "(Writer)", "summary", "df-generated"] + - ["hudson.util", "StreamTaskListener", "closeQuietly", "()", "summary", "df-generated"] + - ["hudson.util", "StreamTaskListener", "fromStderr", "()", "summary", "df-generated"] + - ["hudson.util", "StreamTaskListener", "fromStdout", "()", "summary", "df-generated"] + - ["hudson.util", "TableNestChecker", "TableNestChecker", "(ContentHandler)", "summary", "df-generated"] + - ["hudson.util", "TableNestChecker", "applyTo", "(XMLOutput)", "summary", "df-generated"] + - ["hudson.util", "TagCloud$Entry", "getClassName", "()", "summary", "df-generated"] + - ["hudson.util", "TagCloud$Entry", "scale", "()", "summary", "df-generated"] + - ["hudson.util", "TagCloud", "TagCloud", "(Iterable,WeightFunction)", "summary", "df-generated"] + - ["hudson.util", "TextFile", "delete", "()", "summary", "df-generated"] + - ["hudson.util", "TextFile", "exists", "()", "summary", "df-generated"] + - ["hudson.util", "TextFile", "fastTail", "(int)", "summary", "df-generated"] + - ["hudson.util", "TextFile", "fastTail", "(int,Charset)", "summary", "df-generated"] + - ["hudson.util", "TextFile", "head", "(int)", "summary", "df-generated"] + - ["hudson.util", "TextFile", "lines", "()", "summary", "df-generated"] + - ["hudson.util", "TextFile", "read", "()", "summary", "df-generated"] + - ["hudson.util", "TextFile", "readTrim", "()", "summary", "df-generated"] + - ["hudson.util", "TextFile", "write", "(String)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "convert", "(long,TimeUnit)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "convert", "(long,TimeUnit2)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "sleep", "(long)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "timedJoin", "(Thread,long)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "timedWait", "(Object,long)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "toDays", "(long)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "toHours", "(long)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "toMicros", "(long)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "toMillis", "(long)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "toMinutes", "(long)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "toNanos", "(long)", "summary", "df-generated"] + - ["hudson.util", "TimeUnit2", "toSeconds", "(long)", "summary", "df-generated"] + - ["hudson.util", "XStream2", "XStream2", "(HierarchicalStreamDriver)", "summary", "df-generated"] + - ["hudson.util", "XStream2", "XStream2", "(ReflectionProvider,HierarchicalStreamDriver,ClassLoaderReference,Mapper,ConverterLookup,ConverterRegistry)", "summary", "df-generated"] + - ["hudson.util", "XStream2", "addCriticalField", "(Class,String)", "summary", "df-generated"] + - ["hudson.util", "XStream2", "getDefaultDriver", "()", "summary", "df-generated"] + - ["hudson.util", "XStream2", "toXMLUTF8", "(Object,OutputStream)", "summary", "df-generated"] + - ["hudson.util", "XStream2", "unmarshal", "(HierarchicalStreamReader,Object,DataHolder,boolean)", "summary", "df-generated"] + - ["hudson.util", "XStream2SecurityUtils", "checkForCollectionDoSAttack", "(UnmarshallingContext,long)", "summary", "df-generated"] + - ["hudson.views", "BuildButtonColumn", "taskNoun", "(Object)", "summary", "df-generated"] + - ["hudson.views", "ListViewColumn", "all", "()", "summary", "df-generated"] + - ["hudson.views", "ListViewColumn", "createDefaultInitialColumnList", "()", "summary", "df-generated"] + - ["hudson.views", "ListViewColumn", "createDefaultInitialColumnList", "(Class)", "summary", "df-generated"] + - ["hudson.views", "ListViewColumn", "createDefaultInitialColumnList", "(View)", "summary", "df-generated"] + - ["hudson.views", "ListViewColumn", "getColumnCaption", "()", "summary", "df-generated"] + - ["hudson.views", "ListViewColumn", "shownByDefault", "()", "summary", "df-generated"] + - ["hudson.views", "ListViewColumnDescriptor", "shownByDefault", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "BuildButtonColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "DefaultMyViewsTabsBar_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "DefaultViewsTabsBar_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "GlobalDefaultViewConfiguration_ViewDoesNotExist", "(Object)", "summary", "df-generated"] + - ["hudson.views", "Messages", "JobColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "LastDurationColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "LastFailureColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "LastStableColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "LastSuccessColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "StatusColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "StatusFilter_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "WeatherColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_BuildButtonColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_DefaultMyViewsTabsBar_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_DefaultViewsTabsBar_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_GlobalDefaultViewConfiguration_ViewDoesNotExist", "(Object)", "summary", "df-generated"] + - ["hudson.views", "Messages", "_JobColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_LastDurationColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_LastFailureColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_LastStableColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_LastSuccessColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_StatusColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_StatusFilter_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "Messages", "_WeatherColumn_DisplayName", "()", "summary", "df-generated"] + - ["hudson.views", "MyViewsTabBar$GlobalConfigurationImpl", "getMyViewsTabBar", "()", "summary", "df-generated"] + - ["hudson.views", "MyViewsTabBar", "all", "()", "summary", "df-generated"] + - ["hudson.views", "StatusFilter", "StatusFilter", "(boolean)", "summary", "df-generated"] + - ["hudson.views", "StatusFilter", "getStatusFilter", "()", "summary", "df-generated"] + - ["hudson.views", "ViewJobFilter", "all", "()", "summary", "df-generated"] + - ["hudson.views", "ViewJobFilter", "filter", "(List,List,View)", "summary", "df-generated"] + - ["hudson.views", "ViewsTabBar$GlobalConfigurationImpl", "getViewsTabBar", "()", "summary", "df-generated"] + - ["hudson.views", "ViewsTabBar", "all", "()", "summary", "df-generated"] + - ["hudson.widgets", "BuildHistoryWidget", "getQueuedItem", "()", "summary", "df-generated"] + - ["hudson.widgets", "BuildHistoryWidget", "getQueuedItems", "()", "summary", "df-generated"] + - ["hudson.widgets", "HistoryWidget", "getDisplayName", "()", "summary", "df-generated"] + - ["hudson.widgets", "HistoryWidget", "isTrimmed", "()", "summary", "df-generated"] + - ["hudson.widgets", "HistoryWidget", "setTrimmed", "(boolean)", "summary", "df-generated"] + - ["hudson.widgets", "Messages", "BuildHistoryWidget_DisplayName", "()", "summary", "df-generated"] + - ["hudson.widgets", "Messages", "_BuildHistoryWidget_DisplayName", "()", "summary", "df-generated"] + - ["hudson.widgets", "RenderOnDemandClosure", "RenderOnDemandClosure", "(JellyContext,String)", "summary", "df-generated"] + - ["hudson.widgets", "RenderOnDemandClosure", "render", "()", "summary", "df-generated"] + - ["hudson.widgets", "Widget", "getUrlName", "()", "summary", "df-generated"] + - ["hudson", "AboutJenkins", "getLicensesURL", "()", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "addHyperlink", "(int,int,String)", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "addHyperlinkLowKey", "(int,int,String)", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "addMarkup", "(int,int,String,String)", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "charAt", "(int)", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "findToken", "(Pattern)", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "findTokens", "(Pattern)", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "getText", "()", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "hide", "(int,int)", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "length", "()", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "subText", "(int,int)", "summary", "df-generated"] + - ["hudson", "AbstractMarkupText", "wrapBy", "(String,String)", "summary", "df-generated"] + - ["hudson", "BulkChange", "abort", "()", "summary", "df-generated"] + - ["hudson", "BulkChange", "commit", "()", "summary", "df-generated"] + - ["hudson", "BulkChange", "contains", "(Saveable)", "summary", "df-generated"] + - ["hudson", "BulkChange", "current", "()", "summary", "df-generated"] + - ["hudson", "ClassicPluginStrategy", "getImpliedDependencies", "(String,String)", "summary", "df-generated"] + - ["hudson", "ClassicPluginStrategy", "startPlugin", "(PluginWrapper)", "summary", "df-generated"] + - ["hudson", "DependencyRunner$ProjectRunnable", "run", "(AbstractProject)", "summary", "df-generated"] + - ["hudson", "DescriptorExtensionList", "clearLegacyInstances", "()", "summary", "df-generated"] + - ["hudson", "DescriptorExtensionList", "listLegacyInstances", "()", "summary", "df-generated"] + - ["hudson", "DescriptorExtensionList", "newInstanceFromRadioList", "(JSONObject)", "summary", "df-generated"] + - ["hudson", "DescriptorExtensionList", "newInstanceFromRadioList", "(JSONObject,String)", "summary", "df-generated"] + - ["hudson", "EnvVars", "createCookie", "()", "summary", "df-generated"] + - ["hudson", "EnvVars", "getPlatform", "()", "summary", "df-generated"] + - ["hudson", "EnvVars", "getRemote", "(VirtualChannel)", "summary", "df-generated"] + - ["hudson", "EnvVars", "putAllNonNull", "(Map)", "summary", "df-generated"] + - ["hudson", "EnvVars", "resolve", "(Map)", "summary", "df-generated"] + - ["hudson", "EnvVars", "setPlatform", "(Platform)", "summary", "df-generated"] + - ["hudson", "ExtensionComponent", "isDescriptorOf", "(Class)", "summary", "df-generated"] + - ["hudson", "ExtensionComponent", "ordinal", "()", "summary", "df-generated"] + - ["hudson", "ExtensionFinder", "_find", "(Class,Hudson)", "summary", "df-generated"] + - ["hudson", "ExtensionFinder", "find", "(Class,Hudson)", "summary", "df-generated"] + - ["hudson", "ExtensionFinder", "findExtensions", "(Class,Hudson)", "summary", "df-generated"] + - ["hudson", "ExtensionFinder", "isRefreshable", "()", "summary", "df-generated"] + - ["hudson", "ExtensionFinder", "refresh", "()", "summary", "df-generated"] + - ["hudson", "ExtensionFinder", "scout", "(Class,Hudson)", "summary", "df-generated"] + - ["hudson", "ExtensionList", "clearLegacyInstances", "()", "summary", "df-generated"] + - ["hudson", "ExtensionList", "get", "(Class)", "summary", "df-generated"] + - ["hudson", "ExtensionList", "getInstance", "(Class)", "summary", "df-generated"] + - ["hudson", "ExtensionList", "lookup", "(Class)", "summary", "df-generated"] + - ["hudson", "ExtensionList", "lookupSingleton", "(Class)", "summary", "df-generated"] + - ["hudson", "ExtensionList", "refresh", "(ExtensionComponentSet)", "summary", "df-generated"] + - ["hudson", "ExtensionList", "reverseView", "()", "summary", "df-generated"] + - ["hudson", "ExtensionListListener", "onChange", "()", "summary", "df-generated"] + - ["hudson", "ExtensionListView", "createCopyOnWriteList", "(Class)", "summary", "df-generated"] + - ["hudson", "ExtensionListView", "createList", "(Class)", "summary", "df-generated"] + - ["hudson", "FilePath$FileCallableWrapperFactory", "wrap", "(DelegatingCallable)", "summary", "df-generated"] + - ["hudson", "FilePath$TarCompression", "compress", "(OutputStream)", "summary", "df-generated"] + - ["hudson", "FilePath$TarCompression", "extract", "(InputStream)", "summary", "df-generated"] + - ["hudson", "FilePath", "FilePath", "(File)", "summary", "df-generated"] + - ["hudson", "FilePath", "act", "(Callable)", "summary", "df-generated"] + - ["hudson", "FilePath", "actAsync", "(FileCallable)", "summary", "df-generated"] + - ["hudson", "FilePath", "archive", "(ArchiverFactory,OutputStream,DirScanner)", "summary", "df-generated"] + - ["hudson", "FilePath", "archive", "(ArchiverFactory,OutputStream,DirScanner,String,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "archive", "(ArchiverFactory,OutputStream,FileFilter)", "summary", "df-generated"] + - ["hudson", "FilePath", "archive", "(ArchiverFactory,OutputStream,String)", "summary", "df-generated"] + - ["hudson", "FilePath", "chmod", "(int)", "summary", "df-generated"] + - ["hudson", "FilePath", "containsSymlink", "(FilePath,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyFrom", "(FileItem)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyFrom", "(FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyFrom", "(InputStream)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyFrom", "(URL)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyRecursiveTo", "(DirScanner,FilePath,String)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyRecursiveTo", "(DirScanner,FilePath,String,TarCompression)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyRecursiveTo", "(FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyRecursiveTo", "(String,FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyRecursiveTo", "(String,String,FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyTo", "(FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyTo", "(OutputStream)", "summary", "df-generated"] + - ["hudson", "FilePath", "copyToWithPermission", "(FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "createZipArchive", "(OutputStream)", "summary", "df-generated"] + - ["hudson", "FilePath", "createZipArchive", "(OutputStream,String)", "summary", "df-generated"] + - ["hudson", "FilePath", "delete", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "deleteContents", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "deleteRecursive", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "deleteSuffixesRecursive", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "exists", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "getFreeDiskSpace", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "getHomeDirectory", "(VirtualChannel)", "summary", "df-generated"] + - ["hudson", "FilePath", "getTotalDiskSpace", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "getUsableDiskSpace", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "hasSymlink", "(FilePath,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "installIfNecessaryFrom", "(URL,TaskListener,String)", "summary", "df-generated"] + - ["hudson", "FilePath", "isDescendant", "(String)", "summary", "df-generated"] + - ["hudson", "FilePath", "isDirectory", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "isRemote", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "isSymlink", "(File,String,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "lastModified", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "length", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "list", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "list", "(FileFilter)", "summary", "df-generated"] + - ["hudson", "FilePath", "list", "(FilePath,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "list", "(String)", "summary", "df-generated"] + - ["hudson", "FilePath", "list", "(String,String)", "summary", "df-generated"] + - ["hudson", "FilePath", "list", "(String,String,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "listDirectories", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "mkdirs", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "mode", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "moveAllChildrenTo", "(FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "newInputStreamDenyingSymlinkAsNeeded", "(File,String,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "read", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "read", "(FilePath,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "readFromOffset", "(long)", "summary", "df-generated"] + - ["hudson", "FilePath", "renameTo", "(FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "symlinkTo", "(String,TaskListener)", "summary", "df-generated"] + - ["hudson", "FilePath", "tar", "(OutputStream,DirScanner)", "summary", "df-generated"] + - ["hudson", "FilePath", "tar", "(OutputStream,FileFilter)", "summary", "df-generated"] + - ["hudson", "FilePath", "tar", "(OutputStream,String)", "summary", "df-generated"] + - ["hudson", "FilePath", "toComputer", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "touch", "(long)", "summary", "df-generated"] + - ["hudson", "FilePath", "untar", "(FilePath,TarCompression)", "summary", "df-generated"] + - ["hudson", "FilePath", "untarFrom", "(InputStream,TarCompression)", "summary", "df-generated"] + - ["hudson", "FilePath", "unzip", "(FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "unzipFrom", "(InputStream)", "summary", "df-generated"] + - ["hudson", "FilePath", "validateFileMask", "(FilePath,String)", "summary", "df-generated"] + - ["hudson", "FilePath", "validateFileMask", "(FilePath,String,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "validateFileMask", "(String)", "summary", "df-generated"] + - ["hudson", "FilePath", "validateFileMask", "(String,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "validateFileMask", "(String,boolean,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "validateRelativeDirectory", "(String)", "summary", "df-generated"] + - ["hudson", "FilePath", "validateRelativeDirectory", "(String,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "validateRelativePath", "(String,boolean,boolean)", "summary", "df-generated"] + - ["hudson", "FilePath", "write", "()", "summary", "df-generated"] + - ["hudson", "FilePath", "write", "(String,String)", "summary", "df-generated"] + - ["hudson", "FilePath", "zip", "(FilePath)", "summary", "df-generated"] + - ["hudson", "FilePath", "zip", "(OutputStream)", "summary", "df-generated"] + - ["hudson", "FilePath", "zip", "(OutputStream,DirScanner)", "summary", "df-generated"] + - ["hudson", "FilePath", "zip", "(OutputStream,DirScanner,String,boolean,String)", "summary", "df-generated"] + - ["hudson", "FilePath", "zip", "(OutputStream,FileFilter)", "summary", "df-generated"] + - ["hudson", "FilePath", "zip", "(OutputStream,String)", "summary", "df-generated"] + - ["hudson", "FileSystemProvisioner", "discardWorkspace", "(AbstractProject,FilePath)", "summary", "df-generated"] + - ["hudson", "FileSystemProvisioner", "prepareWorkspace", "(AbstractBuild,FilePath,TaskListener)", "summary", "df-generated"] + - ["hudson", "FileSystemProvisioner", "snapshot", "(AbstractBuild,FilePath,String,TaskListener)", "summary", "df-generated"] + - ["hudson", "Functions", "adminCheck", "(StaplerRequest,StaplerResponse,Object,Permission)", "summary", "df-generated"] + - ["hudson", "Functions", "advertiseHeaders", "(HttpServletResponse)", "summary", "df-generated"] + - ["hudson", "Functions", "checkAnyPermission", "(AccessControlled,Permission[])", "summary", "df-generated"] + - ["hudson", "Functions", "checkAnyPermission", "(Object,Permission[])", "summary", "df-generated"] + - ["hudson", "Functions", "checkPermission", "(AccessControlled,Permission)", "summary", "df-generated"] + - ["hudson", "Functions", "checkPermission", "(Object,Permission)", "summary", "df-generated"] + - ["hudson", "Functions", "checkPermission", "(Permission)", "summary", "df-generated"] + - ["hudson", "Functions", "configureAutoRefresh", "(HttpServletRequest,HttpServletResponse,boolean)", "summary", "df-generated"] + - ["hudson", "Functions", "createRenderOnDemandProxy", "(JellyContext,String)", "summary", "df-generated"] + - ["hudson", "Functions", "defaultToTrue", "(Boolean)", "summary", "df-generated"] + - ["hudson", "Functions", "determineRows", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "dumpAllThreads", "()", "summary", "df-generated"] + - ["hudson", "Functions", "emptyList", "()", "summary", "df-generated"] + - ["hudson", "Functions", "escape", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "generateConsoleAnnotationScriptAndStylesheet", "()", "summary", "df-generated"] + - ["hudson", "Functions", "generateId", "()", "summary", "df-generated"] + - ["hudson", "Functions", "generateItemId", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getAllTopLevelItems", "(ItemGroup)", "summary", "df-generated"] + - ["hudson", "Functions", "getAuthorizationStrategyDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getAvatar", "(User,String)", "summary", "df-generated"] + - ["hudson", "Functions", "getBuildWrapperDescriptors", "(AbstractProject)", "summary", "df-generated"] + - ["hudson", "Functions", "getBuilderDescriptors", "(AbstractProject)", "summary", "df-generated"] + - ["hudson", "Functions", "getCLICommands", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getCaptchaSupportDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getCloudDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getComputerLauncherDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getCookie", "(HttpServletRequest,String)", "summary", "df-generated"] + - ["hudson", "Functions", "getCrumb", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson", "Functions", "getCrumbIssuerDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getCrumbRequestField", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getCurrentDescriptorByNameUrl", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getCurrentJellyContext", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getCurrentLocale", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getCurrentTime", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getDiffString2", "(int)", "summary", "df-generated"] + - ["hudson", "Functions", "getDiffString", "(int)", "summary", "df-generated"] + - ["hudson", "Functions", "getEnvVars", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getFooterURL", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getGlobalNodePropertyDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getHourLocalTimezone", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getIconFilePath", "(Action)", "summary", "df-generated"] + - ["hudson", "Functions", "getIsUnitTest", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getJDKDescriptor", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getJobPropertyDescriptors", "(Class)", "summary", "df-generated"] + - ["hudson", "Functions", "getJobPropertyDescriptors", "(Job)", "summary", "df-generated"] + - ["hudson", "Functions", "getLogRecords", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getLoggerNames", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getMyViewsTabBarDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getNodeModes", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getNodePropertyDescriptors", "(Class)", "summary", "df-generated"] + - ["hudson", "Functions", "getPageDecorators", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getParameterDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getPublisherDescriptors", "(AbstractProject)", "summary", "df-generated"] + - ["hudson", "Functions", "getRelativeLinkTo", "(Item)", "summary", "df-generated"] + - ["hudson", "Functions", "getRequestHeaders", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "getResourcePath", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getRetentionStrategyDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSCMDescriptors", "(AbstractProject)", "summary", "df-generated"] + - ["hudson", "Functions", "getScreenResolution", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSearchURL", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSecurityRealmDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getServerName", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSimplePageDecorator", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSimplePageDecorators", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSortedDescriptorsForGlobalConfig", "(Predicate)", "summary", "df-generated"] + - ["hudson", "Functions", "getSortedDescriptorsForGlobalConfigByDescriptor", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSortedDescriptorsForGlobalConfigByDescriptor", "(Predicate)", "summary", "df-generated"] + - ["hudson", "Functions", "getSortedDescriptorsForGlobalConfigNoSecurity", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSortedDescriptorsForGlobalConfigUnclassified", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSortedDescriptorsForGlobalConfigUnclassifiedReadable", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSystemProperties", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getSystemProperty", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "getThreadInfos", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getTimeSpanString", "(Date)", "summary", "df-generated"] + - ["hudson", "Functions", "getTypeParameter", "(Class,Class,int)", "summary", "df-generated"] + - ["hudson", "Functions", "getUserAvatar", "(User,String)", "summary", "df-generated"] + - ["hudson", "Functions", "getUserTimeZone", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getUserTimeZonePostfix", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getVersion", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getViewsTabBarDescriptors", "()", "summary", "df-generated"] + - ["hudson", "Functions", "getWin32ErrorMessage", "(IOException)", "summary", "df-generated"] + - ["hudson", "Functions", "getYuiSuffix", "()", "summary", "df-generated"] + - ["hudson", "Functions", "hasAnyPermission", "(AccessControlled,Permission[])", "summary", "df-generated"] + - ["hudson", "Functions", "hasAnyPermission", "(Object,Permission[])", "summary", "df-generated"] + - ["hudson", "Functions", "hasPermission", "(Object,Permission)", "summary", "df-generated"] + - ["hudson", "Functions", "hasPermission", "(Permission)", "summary", "df-generated"] + - ["hudson", "Functions", "hasView", "(Object,String)", "summary", "df-generated"] + - ["hudson", "Functions", "htmlAttributeEscape", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "humanReadableByteSize", "(long)", "summary", "df-generated"] + - ["hudson", "Functions", "hyperlinkMatchesCurrentPage", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "inferHudsonURL", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson", "Functions", "initPageVariables", "(JellyContext)", "summary", "df-generated"] + - ["hudson", "Functions", "isAnonymous", "()", "summary", "df-generated"] + - ["hudson", "Functions", "isArtifactsPermissionEnabled", "()", "summary", "df-generated"] + - ["hudson", "Functions", "isAutoRefresh", "(HttpServletRequest)", "summary", "df-generated"] + - ["hudson", "Functions", "isCollapsed", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "isContextMenuVisible", "(Action)", "summary", "df-generated"] + - ["hudson", "Functions", "isExtensionsAvailable", "()", "summary", "df-generated"] + - ["hudson", "Functions", "isGlibcSupported", "()", "summary", "df-generated"] + - ["hudson", "Functions", "isMatrixProject", "(Object)", "summary", "df-generated"] + - ["hudson", "Functions", "isModel", "(Object)", "summary", "df-generated"] + - ["hudson", "Functions", "isModelWithChildren", "(Object)", "summary", "df-generated"] + - ["hudson", "Functions", "isModelWithContextMenu", "(Object)", "summary", "df-generated"] + - ["hudson", "Functions", "isMultiline", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "isMustangOrAbove", "()", "summary", "df-generated"] + - ["hudson", "Functions", "isUserTimeZoneOverride", "()", "summary", "df-generated"] + - ["hudson", "Functions", "isWindows", "()", "summary", "df-generated"] + - ["hudson", "Functions", "isWipeOutPermissionEnabled", "()", "summary", "df-generated"] + - ["hudson", "Functions", "iso8601DateTime", "(Date)", "summary", "df-generated"] + - ["hudson", "Functions", "jsStringEscape", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "localDate", "(Date)", "summary", "df-generated"] + - ["hudson", "Functions", "nbspIndent", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "printLogRecord", "(LogRecord)", "summary", "df-generated"] + - ["hudson", "Functions", "printLogRecordHtml", "(LogRecord,LogRecord)", "summary", "df-generated"] + - ["hudson", "Functions", "printStackTrace", "(Throwable,PrintStream)", "summary", "df-generated"] + - ["hudson", "Functions", "printStackTrace", "(Throwable,PrintWriter)", "summary", "df-generated"] + - ["hudson", "Functions", "restoreCurrentDescriptorByNameUrl", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "rfc822Date", "(Calendar)", "summary", "df-generated"] + - ["hudson", "Functions", "runScript", "(Script)", "summary", "df-generated"] + - ["hudson", "Functions", "setCurrentDescriptorByNameUrl", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "size2", "(Object)", "summary", "df-generated"] + - ["hudson", "Functions", "sortThreadsAndGetGroupMap", "(ThreadInfo[])", "summary", "df-generated"] + - ["hudson", "Functions", "toCCStatus", "(Item)", "summary", "df-generated"] + - ["hudson", "Functions", "toEmailSafeString", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "tryGetIcon", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "urlEncode", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "useHidingPasswordFields", "()", "summary", "df-generated"] + - ["hudson", "Functions", "xmlEscape", "(String)", "summary", "df-generated"] + - ["hudson", "Functions", "xsDate", "(Calendar)", "summary", "df-generated"] + - ["hudson", "Indenter", "getCss", "(Job)", "summary", "df-generated"] + - ["hudson", "Indenter", "getRelativeShift", "(Job)", "summary", "df-generated"] + - ["hudson", "Launcher$LocalLauncher", "launchChannel", "(OutputStream,ProcessBuilder)", "summary", "df-generated"] + - ["hudson", "Launcher$ProcStarter", "join", "()", "summary", "df-generated"] + - ["hudson", "Launcher$ProcStarter", "masks", "()", "summary", "df-generated"] + - ["hudson", "Launcher$ProcStarter", "quiet", "()", "summary", "df-generated"] + - ["hudson", "Launcher$RemoteProcess", "getIOtriplet", "()", "summary", "df-generated"] + - ["hudson", "Launcher$RemoteProcess", "isAlive", "()", "summary", "df-generated"] + - ["hudson", "Launcher$RemoteProcess", "join", "()", "summary", "df-generated"] + - ["hudson", "Launcher$RemoteProcess", "kill", "()", "summary", "df-generated"] + - ["hudson", "Launcher", "getComputer", "()", "summary", "df-generated"] + - ["hudson", "Launcher", "isUnix", "()", "summary", "df-generated"] + - ["hudson", "Launcher", "kill", "(Map)", "summary", "df-generated"] + - ["hudson", "Launcher", "launch", "()", "summary", "df-generated"] + - ["hudson", "Launcher", "launch", "(ProcStarter)", "summary", "df-generated"] + - ["hudson", "Launcher", "launchChannel", "(String[],OutputStream,FilePath,Map)", "summary", "df-generated"] + - ["hudson", "Launcher", "prepareFilterRules", "(Run,EnvVarsFilterableBuilder)", "summary", "df-generated"] + - ["hudson", "LauncherDecorator", "all", "()", "summary", "df-generated"] + - ["hudson", "LauncherDecorator", "decorate", "(Launcher,Node)", "summary", "df-generated"] + - ["hudson", "Lookup", "get", "(Class)", "summary", "df-generated"] + - ["hudson", "Main", "remotePost", "(String[])", "summary", "df-generated"] + - ["hudson", "Main", "run", "(String[])", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "SubText", "(Matcher,int)", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "SubText", "(int,int)", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "end", "()", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "end", "(int)", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "group", "(int)", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "groupCount", "()", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "href", "(String)", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "replace", "(String)", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "start", "()", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "start", "(int)", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "surroundWith", "(String,String)", "summary", "df-generated"] + - ["hudson", "MarkupText$SubText", "surroundWithLiteral", "(String,String)", "summary", "df-generated"] + - ["hudson", "MarkupText", "addMarkup", "(int,String)", "summary", "df-generated"] + - ["hudson", "Messages", "AboutJenkins_Description", "()", "summary", "df-generated"] + - ["hudson", "Messages", "AboutJenkins_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_TildaDoesntWork", "()", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_did_not_manage_to_validate_may_be_too_sl", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateAntFileMask_doesntMatchAndSuggest", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateAntFileMask_doesntMatchAnything", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateAntFileMask_doesntMatchAnythingAndSuggest", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateAntFileMask_matchWithCaseInsensitive", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateAntFileMask_portionMatchAndSuggest", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateAntFileMask_portionMatchButPreviousNotMatchAndSuggest", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateAntFileMask_whitespaceSeparator", "()", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateRelativePath_noSuchDirectory", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateRelativePath_noSuchFile", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateRelativePath_notDirectory", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateRelativePath_notFile", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "FilePath_validateRelativePath_wildcardNotAllowed", "()", "summary", "df-generated"] + - ["hudson", "Messages", "Functions_NoExceptionDetails", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_CheckUpdateServerError", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_ConfigureUpdateCenterPermission_Description", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_PluginCycleDependenciesMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_PluginDeprecationMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_PluginDoesntSupportDynamicLoad_RestartRequired", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_PluginIsAlreadyInstalled_RestartRequired", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_PluginUpdateMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_PortNotANumber", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_PortNotInRange", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_UnexpectedException", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_UpdateSiteChangeLogLevel", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_UpdateSiteError", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_UploadPluginsPermission_Description", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_adoptThisPlugin", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_ago", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_compatWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_connectionFailed", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_coreWarning", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_depCompatWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_depCoreWarning", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_deprecationWarning", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_emptyUpdateSiteUrl", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_insecureUrl", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_invalidUrl", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_parentCompatWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_parentDepCompatWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginManager_securityWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_Already_Disabled", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_Error_Disabling", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_NoSuchPlugin", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_PluginWrapperAdministrativeMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_Plugin_Disabled", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_Plugin_Has_Dependent", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_disabled_2", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_failed_to_load_dependency_2", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_failed_to_load_plugin_2", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_missing", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_obsoleteCore", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "PluginWrapper_obsolete_2", "(Object,Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "ProxyConfiguration_FailedToConnect", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "ProxyConfiguration_FailedToConnectViaProxy", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "ProxyConfiguration_MalformedTestUrl", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "ProxyConfiguration_Success", "()", "summary", "df-generated"] + - ["hudson", "Messages", "ProxyConfiguration_TestUrlRequired", "()", "summary", "df-generated"] + - ["hudson", "Messages", "TcpSlaveAgentListener_PingAgentProtocol_displayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "Util_day", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "Util_hour", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "Util_millisecond", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "Util_minute", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "Util_month", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "Util_second", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "Util_year", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_AboutJenkins_Description", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_AboutJenkins_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_TildaDoesntWork", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_did_not_manage_to_validate_may_be_too_sl", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateAntFileMask_doesntMatchAndSuggest", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateAntFileMask_doesntMatchAnything", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateAntFileMask_doesntMatchAnythingAndSuggest", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateAntFileMask_matchWithCaseInsensitive", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateAntFileMask_portionMatchAndSuggest", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateAntFileMask_portionMatchButPreviousNotMatchAndSuggest", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateAntFileMask_whitespaceSeparator", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateRelativePath_noSuchDirectory", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateRelativePath_noSuchFile", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateRelativePath_notDirectory", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateRelativePath_notFile", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_FilePath_validateRelativePath_wildcardNotAllowed", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_Functions_NoExceptionDetails", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_CheckUpdateServerError", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_ConfigureUpdateCenterPermission_Description", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_PluginCycleDependenciesMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_PluginDeprecationMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_PluginDoesntSupportDynamicLoad_RestartRequired", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_PluginIsAlreadyInstalled_RestartRequired", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_PluginUpdateMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_PortNotANumber", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_PortNotInRange", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_UnexpectedException", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_UpdateSiteChangeLogLevel", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_UpdateSiteError", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_UploadPluginsPermission_Description", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_adoptThisPlugin", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_ago", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_compatWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_connectionFailed", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_coreWarning", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_depCompatWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_depCoreWarning", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_deprecationWarning", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_emptyUpdateSiteUrl", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_insecureUrl", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_invalidUrl", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_parentCompatWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_parentDepCompatWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginManager_securityWarning", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_Already_Disabled", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_Error_Disabling", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_NoSuchPlugin", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_PluginWrapperAdministrativeMonitor_DisplayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_Plugin_Disabled", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_Plugin_Has_Dependent", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_disabled_2", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_failed_to_load_dependency_2", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_failed_to_load_plugin_2", "(Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_missing", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_obsoleteCore", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_PluginWrapper_obsolete_2", "(Object,Object,Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_ProxyConfiguration_FailedToConnect", "(Object,Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_ProxyConfiguration_FailedToConnectViaProxy", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_ProxyConfiguration_MalformedTestUrl", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_ProxyConfiguration_Success", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_ProxyConfiguration_TestUrlRequired", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_TcpSlaveAgentListener_PingAgentProtocol_displayName", "()", "summary", "df-generated"] + - ["hudson", "Messages", "_Util_day", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_Util_hour", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_Util_millisecond", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_Util_minute", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_Util_month", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_Util_second", "(Object)", "summary", "df-generated"] + - ["hudson", "Messages", "_Util_year", "(Object)", "summary", "df-generated"] + - ["hudson", "Platform", "current", "()", "summary", "df-generated"] + - ["hudson", "Platform", "isDarwin", "()", "summary", "df-generated"] + - ["hudson", "Platform", "isSnowLeopardOrLater", "()", "summary", "df-generated"] + - ["hudson", "Plugin", "configure", "(JSONObject)", "summary", "df-generated"] + - ["hudson", "Plugin", "configure", "(StaplerRequest,JSONObject)", "summary", "df-generated"] + - ["hudson", "Plugin", "doDynamic", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson", "Plugin", "postInitialize", "()", "summary", "df-generated"] + - ["hudson", "Plugin", "setServletContext", "(ServletContext)", "summary", "df-generated"] + - ["hudson", "Plugin", "start", "()", "summary", "df-generated"] + - ["hudson", "Plugin", "stop", "()", "summary", "df-generated"] + - ["hudson", "PluginFirstClassLoader2", "PluginFirstClassLoader2", "(URL[],ClassLoader)", "summary", "df-generated"] + - ["hudson", "PluginManager$MetadataCache", "of", "(String,Class,Supplier)", "summary", "df-generated"] + - ["hudson", "PluginManager$PluginDeprecationMonitor", "getDeprecatedPlugins", "()", "summary", "df-generated"] + - ["hudson", "PluginManager$PluginUpdateMonitor", "getInstance", "()", "summary", "df-generated"] + - ["hudson", "PluginManager$UberClassLoader", "toString", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "createCache", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "discover", "(Class)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doCheckPluginUrl", "(StaplerRequest,String)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doCheckUpdateSiteUrl", "(StaplerRequest,String)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doCheckUpdatesServer", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "doInstall", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doInstallNecessaryPlugins", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doInstallPlugins", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doInstallPluginsDone", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "doPlugins", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "doPluginsSearch", "(String,Integer)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doPrevalidateConfig", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doProxyConfigure", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doSiteConfigure", "(String)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doUpdateSources", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson", "PluginManager", "doUploadPlugin", "(StaplerRequest)", "summary", "df-generated"] + - ["hudson", "PluginManager", "dynamicLoad", "(File)", "summary", "df-generated"] + - ["hudson", "PluginManager", "getBundledPluginManifest", "(String)", "summary", "df-generated"] + - ["hudson", "PluginManager", "getProxyDescriptor", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "getUpdates", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "hasAdoptThisPluginLabel", "(Plugin)", "summary", "df-generated"] + - ["hudson", "PluginManager", "hasAdoptThisPluginLabel", "(PluginWrapper)", "summary", "df-generated"] + - ["hudson", "PluginManager", "initTasks", "(InitStrategy)", "summary", "df-generated"] + - ["hudson", "PluginManager", "install", "(Collection,boolean)", "summary", "df-generated"] + - ["hudson", "PluginManager", "isMetaLabel", "(String)", "summary", "df-generated"] + - ["hudson", "PluginManager", "isNonMetaLabel", "(String)", "summary", "df-generated"] + - ["hudson", "PluginManager", "isPluginUploaded", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "parseRequestedPlugins", "(InputStream)", "summary", "df-generated"] + - ["hudson", "PluginManager", "prevalidateConfig", "(InputStream)", "summary", "df-generated"] + - ["hudson", "PluginManager", "resolveDependentPlugins", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "start", "(List)", "summary", "df-generated"] + - ["hudson", "PluginManager", "stop", "()", "summary", "df-generated"] + - ["hudson", "PluginManager", "unscientific", "(double)", "summary", "df-generated"] + - ["hudson", "PluginManagerStaplerOverride", "all", "()", "summary", "df-generated"] + - ["hudson", "PluginStrategy", "findComponents", "(Class,Hudson)", "summary", "df-generated"] + - ["hudson", "PluginStrategy", "initializeComponents", "(PluginWrapper)", "summary", "df-generated"] + - ["hudson", "PluginStrategy", "load", "(PluginWrapper)", "summary", "df-generated"] + - ["hudson", "PluginStrategy", "updateDependency", "(PluginWrapper,PluginWrapper)", "summary", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", "getStatus", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableResult", "setStatus", "(PluginDisableStatus)", "summary", "df-generated"] + - ["hudson", "PluginWrapper$PluginDisableStrategy", "toString", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper$PluginWrapperAdministrativeMonitor", "doAct", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["hudson", "PluginWrapper$PluginWrapperAdministrativeMonitor", "get", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper$PluginWrapperAdministrativeMonitor", "hasAnyDerivedDependencyErrors", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "disable", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "doDoUninstall", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "doMakeDisabled", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "doMakeEnabled", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "doPin", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "doUnpin", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "enable", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getActiveWarnings", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getBackupVersion", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getDeprecations", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getImpliedDependents", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getIndexPage", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getInfo", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getIssueTrackerReportUrl", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getPlugin", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getPluginClass", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getPluginOrFail", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getRequiredCoreVersion", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getUpdateInfo", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getUrl", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getVersion", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "getVersionNumber", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasCycleDependency", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasDependants", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasDependencies", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasDependents", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasDerivedDependencyErrors", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasImpliedDependents", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasLicensesXml", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasMandatoryDependencies", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasMandatoryDependents", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasOptionalDependants", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasOptionalDependents", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasOriginalDependencyErrors", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "hasUpdate", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "injectJarsToClasspath", "(File[])", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isActive", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isBundled", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isDeleted", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isDeprecated", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isDetached", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isDowngradable", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isEnabled", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isOlderThan", "(VersionNumber)", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isPinned", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "isPinningForcingOldVersion", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "releaseClassLoader", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "setHasCycleDependency", "(boolean)", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "setOptionalDependants", "(Set)", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "stop", "()", "summary", "df-generated"] + - ["hudson", "PluginWrapper", "supportsDynamicLoad", "()", "summary", "df-generated"] + - ["hudson", "Proc", "getStderr", "()", "summary", "df-generated"] + - ["hudson", "Proc", "getStdin", "()", "summary", "df-generated"] + - ["hudson", "Proc", "getStdout", "()", "summary", "df-generated"] + - ["hudson", "Proc", "isAlive", "()", "summary", "df-generated"] + - ["hudson", "Proc", "join", "()", "summary", "df-generated"] + - ["hudson", "Proc", "joinWithTimeout", "(long,TimeUnit,TaskListener)", "summary", "df-generated"] + - ["hudson", "Proc", "kill", "()", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration$DescriptorImpl", "doCheckPort", "(String)", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration$DescriptorImpl", "doValidateProxy", "(String,String,int,String,Secret,String)", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "createProxy", "()", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "createProxy", "(String)", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "createProxy", "(String,String,int,String)", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "getInputStream", "(URL)", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "getNoProxyHostPatterns", "()", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "getNoProxyHostPatterns", "(String)", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "getPort", "()", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "getXmlFile", "()", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "load", "()", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "newHttpClient", "()", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "newHttpClientBuilder", "()", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "newHttpRequestBuilder", "(URI)", "summary", "df-generated"] + - ["hudson", "ProxyConfiguration", "open", "(URL)", "summary", "df-generated"] + - ["hudson", "StructuredForm", "toList", "(JSONObject,String)", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener$ConnectionFromCurrentPeer", "toString", "()", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener$PingAgentProtocol", "connect", "(Socket)", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener", "TcpSlaveAgentListener", "(int)", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener", "getAdvertisedHost", "()", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener", "getAdvertisedPort", "()", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener", "getAgentProtocolNames", "()", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener", "getIdentityPublicKey", "()", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener", "getPort", "()", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener", "getRemotingMinimumVersion", "()", "summary", "df-generated"] + - ["hudson", "TcpSlaveAgentListener", "shutdown", "()", "summary", "df-generated"] + - ["hudson", "URLConnectionDecorator", "all", "()", "summary", "df-generated"] + - ["hudson", "URLConnectionDecorator", "decorate", "(URLConnection)", "summary", "df-generated"] + - ["hudson", "Util", "closeAndLogFailures", "(Closeable,Logger,String,String)", "summary", "df-generated"] + - ["hudson", "Util", "copyFile", "(File,File)", "summary", "df-generated"] + - ["hudson", "Util", "createFileSet", "(File,String)", "summary", "df-generated"] + - ["hudson", "Util", "createFileSet", "(File,String,String)", "summary", "df-generated"] + - ["hudson", "Util", "createSubList", "(Collection,Class)", "summary", "df-generated"] + - ["hudson", "Util", "createSymlink", "(File,String,String,TaskListener)", "summary", "df-generated"] + - ["hudson", "Util", "createTempDir", "()", "summary", "df-generated"] + - ["hudson", "Util", "daysBetween", "(Date,Date)", "summary", "df-generated"] + - ["hudson", "Util", "daysElapsedSince", "(Date)", "summary", "df-generated"] + - ["hudson", "Util", "deleteContentsRecursive", "(File)", "summary", "df-generated"] + - ["hudson", "Util", "deleteContentsRecursive", "(Path,PathChecker)", "summary", "df-generated"] + - ["hudson", "Util", "deleteFile", "(File)", "summary", "df-generated"] + - ["hudson", "Util", "deleteRecursive", "(File)", "summary", "df-generated"] + - ["hudson", "Util", "deleteRecursive", "(Path,PathChecker)", "summary", "df-generated"] + - ["hudson", "Util", "displayIOException", "(IOException,TaskListener)", "summary", "df-generated"] + - ["hudson", "Util", "escape", "(String)", "summary", "df-generated"] + - ["hudson", "Util", "filter", "(Iterable,Class)", "summary", "df-generated"] + - ["hudson", "Util", "filter", "(List,Class)", "summary", "df-generated"] + - ["hudson", "Util", "fromHexString", "(String)", "summary", "df-generated"] + - ["hudson", "Util", "getDigestOf", "(File)", "summary", "df-generated"] + - ["hudson", "Util", "getDigestOf", "(InputStream)", "summary", "df-generated"] + - ["hudson", "Util", "getDigestOf", "(String)", "summary", "df-generated"] + - ["hudson", "Util", "getHostName", "()", "summary", "df-generated"] + - ["hudson", "Util", "getNearestAncestorOfTypeOrThrow", "(StaplerRequest,Class)", "summary", "df-generated"] + - ["hudson", "Util", "getPastTimeString", "(long)", "summary", "df-generated"] + - ["hudson", "Util", "getTimeSpanString", "(long)", "summary", "df-generated"] + - ["hudson", "Util", "getWin32ErrorMessage", "(IOException)", "summary", "df-generated"] + - ["hudson", "Util", "getWin32ErrorMessage", "(Throwable)", "summary", "df-generated"] + - ["hudson", "Util", "getWin32ErrorMessage", "(int)", "summary", "df-generated"] + - ["hudson", "Util", "ifOverridden", "(Supplier,Class,Class,String,Class[])", "summary", "df-generated"] + - ["hudson", "Util", "isAbsoluteUri", "(String)", "summary", "df-generated"] + - ["hudson", "Util", "isDescendant", "(File,File)", "summary", "df-generated"] + - ["hudson", "Util", "isOverridden", "(Class,Class,String,Class[])", "summary", "df-generated"] + - ["hudson", "Util", "isRelativePath", "(String)", "summary", "df-generated"] + - ["hudson", "Util", "isSafeToRedirectTo", "(String)", "summary", "df-generated"] + - ["hudson", "Util", "isSymlink", "(File)", "summary", "df-generated"] + - ["hudson", "Util", "isSymlink", "(Path)", "summary", "df-generated"] + - ["hudson", "Util", "loadFile", "(File)", "summary", "df-generated"] + - ["hudson", "Util", "loadFile", "(File,Charset)", "summary", "df-generated"] + - ["hudson", "Util", "loadProperties", "(String)", "summary", "df-generated"] + - ["hudson", "Util", "min", "(int,int[])", "summary", "df-generated"] + - ["hudson", "Util", "modeToPermissions", "(int)", "summary", "df-generated"] + - ["hudson", "Util", "permissionsToMode", "(Set)", "summary", "df-generated"] + - ["hudson", "Util", "resolveSymlink", "(File)", "summary", "df-generated"] + - ["hudson", "Util", "resolveSymlink", "(File,TaskListener)", "summary", "df-generated"] + - ["hudson", "Util", "resolveSymlinkToFile", "(File)", "summary", "df-generated"] + - ["hudson", "Util", "toAes128Key", "(String)", "summary", "df-generated"] + - ["hudson", "Util", "toHexString", "(byte[],int,int)", "summary", "df-generated"] + - ["hudson", "Util", "tokenize", "(String,String)", "summary", "df-generated"] + - ["hudson", "Util", "touch", "(File)", "summary", "df-generated"] + - ["hudson", "Util", "tryParseNumber", "(String,Number)", "summary", "df-generated"] + - ["hudson", "Util", "xmlEscape", "(String)", "summary", "df-generated"] + - ["hudson", "WebAppMain", "getDefaultRingBufferSize", "()", "summary", "df-generated"] + - ["hudson", "WebAppMain", "getHomeDir", "(ServletContextEvent)", "summary", "df-generated"] + - ["hudson", "WebAppMain", "installExpressionFactory", "(ServletContextEvent)", "summary", "df-generated"] + - ["hudson", "WebAppMain", "joinInit", "()", "summary", "df-generated"] + - ["hudson", "WorkspaceSnapshot", "restoreTo", "(AbstractBuild,FilePath,TaskListener)", "summary", "df-generated"] + - ["hudson", "XmlFile", "asString", "()", "summary", "df-generated"] + - ["hudson", "XmlFile", "delete", "()", "summary", "df-generated"] + - ["hudson", "XmlFile", "exists", "()", "summary", "df-generated"] + - ["hudson", "XmlFile", "mkdirs", "()", "summary", "df-generated"] + - ["hudson", "XmlFile", "read", "()", "summary", "df-generated"] + - ["hudson", "XmlFile", "readRaw", "()", "summary", "df-generated"] + - ["hudson", "XmlFile", "sniffEncoding", "()", "summary", "df-generated"] + - ["hudson", "XmlFile", "unmarshal", "(Object)", "summary", "df-generated"] + - ["hudson", "XmlFile", "unmarshalNullingOut", "(Object)", "summary", "df-generated"] + - ["hudson", "XmlFile", "write", "(Object)", "summary", "df-generated"] + - ["hudson", "XmlFile", "writeRawTo", "(Writer)", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "findClass", "(String)", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "findResource", "(String)", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "findResources", "(String)", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "getClassLoadingLock", "(String)", "summary", "df-generated"] + - ["jenkins.agents", "AgentComputerUtil", "getChannelToController", "()", "summary", "df-generated"] + - ["jenkins.agents", "AgentComputerUtil", "getChannelToMaster", "()", "summary", "df-generated"] + - ["jenkins.agents", "WebSocketAgents", "doIndex", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidFile", "doDelete", "()", "summary", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidFile", "doDownload", "()", "summary", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidFile", "getLastModified", "()", "summary", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidFile", "getLastModifiedDate", "()", "summary", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidFile", "getPath", "()", "summary", "df-generated"] + - ["jenkins.diagnosis", "HsErrPidFile", "getTimeSpanString", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "ControllerExecutorsAgents", "doAct", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.diagnostics", "ControllerExecutorsNoAgents", "doAct", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "CompletedInitializationMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "ControllerExecutorsAgents_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "ControllerExecutorsNoAgents_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "RootUrlNotSetMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "SecurityIsOffMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "URICheckEncodingMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "_CompletedInitializationMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "_ControllerExecutorsAgents_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "_ControllerExecutorsNoAgents_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "_RootUrlNotSetMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "_SecurityIsOffMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "Messages", "_URICheckEncodingMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "RootUrlNotSetMonitor", "isUrlNull", "()", "summary", "df-generated"] + - ["jenkins.diagnostics", "SecurityIsOffMonitor", "doAct", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.diagnostics", "URICheckEncodingMonitor", "doCheckURIEncoding", "(StaplerRequest)", "summary", "df-generated"] + - ["jenkins.diagnostics", "URICheckEncodingMonitor", "isCheckEnabled", "()", "summary", "df-generated"] + - ["jenkins.fingerprints", "FileFingerprintStorage", "load", "(File)", "summary", "df-generated"] + - ["jenkins.fingerprints", "FileFingerprintStorage", "save", "(Fingerprint,File)", "summary", "df-generated"] + - ["jenkins.fingerprints", "FingerprintStorage", "cleanFingerprint", "(Fingerprint,TaskListener)", "summary", "df-generated"] + - ["jenkins.fingerprints", "FingerprintStorage", "delete", "(String)", "summary", "df-generated"] + - ["jenkins.fingerprints", "FingerprintStorage", "get", "()", "summary", "df-generated"] + - ["jenkins.fingerprints", "FingerprintStorage", "getFileFingerprintStorage", "()", "summary", "df-generated"] + - ["jenkins.fingerprints", "FingerprintStorage", "isReady", "()", "summary", "df-generated"] + - ["jenkins.fingerprints", "FingerprintStorage", "iterateAndCleanupFingerprints", "(TaskListener)", "summary", "df-generated"] + - ["jenkins.fingerprints", "FingerprintStorage", "load", "(String)", "summary", "df-generated"] + - ["jenkins.fingerprints", "FingerprintStorage", "save", "(Fingerprint)", "summary", "df-generated"] + - ["jenkins.fingerprints", "FingerprintStorageDescriptor", "all", "()", "summary", "df-generated"] + - ["jenkins.fingerprints", "GlobalFingerprintConfiguration", "get", "()", "summary", "df-generated"] + - ["jenkins.fingerprints", "GlobalFingerprintConfiguration", "getFingerprintStorageDescriptors", "()", "summary", "df-generated"] + - ["jenkins.fingerprints", "GlobalFingerprintConfiguration", "isFingerprintCleanupDisabled", "()", "summary", "df-generated"] + - ["jenkins.fingerprints", "GlobalFingerprintConfiguration", "setFingerprintCleanupDisabled", "(boolean)", "summary", "df-generated"] + - ["jenkins.fingerprints", "Messages", "FileFingerprintStorage_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.fingerprints", "Messages", "_FileFingerprintStorage_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.formelementpath", "FormElementPathPageDecorator", "isEnabled", "()", "summary", "df-generated"] + - ["jenkins.install", "InstallState", "initializeState", "()", "summary", "df-generated"] + - ["jenkins.install", "InstallState", "isSetupComplete", "()", "summary", "df-generated"] + - ["jenkins.install", "InstallState", "valueOf", "(String)", "summary", "df-generated"] + - ["jenkins.install", "InstallStateFilter", "all", "()", "summary", "df-generated"] + - ["jenkins.install", "InstallStateFilter", "getNextInstallState", "(InstallState,Provider)", "summary", "df-generated"] + - ["jenkins.install", "InstallUtil", "clearInstallStatus", "()", "summary", "df-generated"] + - ["jenkins.install", "InstallUtil", "getLastExecVersion", "()", "summary", "df-generated"] + - ["jenkins.install", "InstallUtil", "getPersistedInstallStatus", "()", "summary", "df-generated"] + - ["jenkins.install", "InstallUtil", "persistInstallStatus", "(List)", "summary", "df-generated"] + - ["jenkins.install", "InstallUtil", "proceedToNextStateFrom", "(InstallState)", "summary", "df-generated"] + - ["jenkins.install", "InstallUtil", "saveLastExecVersion", "()", "summary", "df-generated"] + - ["jenkins.install", "Messages", "SetupWizard_ConfigureInstance_RootUrl_Empty", "()", "summary", "df-generated"] + - ["jenkins.install", "Messages", "SetupWizard_ConfigureInstance_RootUrl_Invalid", "()", "summary", "df-generated"] + - ["jenkins.install", "Messages", "SetupWizard_ConfigureInstance_ValidationErrors", "()", "summary", "df-generated"] + - ["jenkins.install", "Messages", "SetupWizard_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.install", "Messages", "_SetupWizard_ConfigureInstance_RootUrl_Empty", "()", "summary", "df-generated"] + - ["jenkins.install", "Messages", "_SetupWizard_ConfigureInstance_RootUrl_Invalid", "()", "summary", "df-generated"] + - ["jenkins.install", "Messages", "_SetupWizard_ConfigureInstance_ValidationErrors", "()", "summary", "df-generated"] + - ["jenkins.install", "Messages", "_SetupWizard_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "doCompleteInstall", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "doConfigureInstance", "(StaplerRequest,String)", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "doCreateAdminUser", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "doPlatformPluginList", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "doRestartStatus", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "getCurrentLevel", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "getInitialAdminApiTokenFile", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "getInitialAdminPasswordFile", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "getInstallState", "(String)", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "getInstallStates", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "getPlatformPluginUpdates", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "hasSetupWizardFilter", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "isUsingSecurityToken", "()", "summary", "df-generated"] + - ["jenkins.install", "SetupWizard", "onInstallStateUpdate", "(InstallState)", "summary", "df-generated"] + - ["jenkins.management", "AdministrativeMonitorsApi", "doNonSecurityPopupContent", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.management", "AdministrativeMonitorsApi", "doSecurityPopupContent", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.management", "AdministrativeMonitorsApiData", "hasActiveMonitors", "()", "summary", "df-generated"] + - ["jenkins.management", "AdministrativeMonitorsDecorator", "getMonitorsToDisplay", "()", "summary", "df-generated"] + - ["jenkins.management", "AdministrativeMonitorsDecorator", "getNonSecurityAdministrativeMonitors", "()", "summary", "df-generated"] + - ["jenkins.management", "AdministrativeMonitorsDecorator", "getSecurityAdministrativeMonitors", "()", "summary", "df-generated"] + - ["jenkins.management", "AsynchronousAdministrativeMonitor", "isFixingActive", "()", "summary", "df-generated"] + - ["jenkins.management", "Badge", "getSeverity", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "AdministrativeMonitorsDecorator_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "CliLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "CliLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ConfigureLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ConfigureLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ConfigureTools_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ConfigureTools_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ConsoleLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ConsoleLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "NodesLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "NodesLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "PluginsLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "PluginsLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "PluginsLink_incompatibleUpdateAvailable", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "PluginsLink_incompatibleUpdatesAvailable", "(Object)", "summary", "df-generated"] + - ["jenkins.management", "Messages", "PluginsLink_securityUpdateAvailable", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "PluginsLink_securityUpdatesAvailable", "(Object)", "summary", "df-generated"] + - ["jenkins.management", "Messages", "PluginsLink_updateAvailable", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "PluginsLink_updatesAvailable", "(Object)", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ReloadLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ReloadLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ShutdownLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ShutdownLink_DisplayName_cancel", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ShutdownLink_DisplayName_prepare", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ShutdownLink_DisplayName_update", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ShutdownLink_ShutDownReason_title", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ShutdownLink_ShutDownReason_update", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "ShutdownLink_ShuttingDownInProgressDescription", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "StatisticsLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "StatisticsLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "SystemInfoLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "SystemInfoLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "SystemLogLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "SystemLogLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_AdministrativeMonitorsDecorator_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_CliLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_CliLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ConfigureLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ConfigureLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ConfigureTools_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ConfigureTools_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ConsoleLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ConsoleLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_NodesLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_NodesLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_PluginsLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_PluginsLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_PluginsLink_incompatibleUpdateAvailable", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_PluginsLink_incompatibleUpdatesAvailable", "(Object)", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_PluginsLink_securityUpdateAvailable", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_PluginsLink_securityUpdatesAvailable", "(Object)", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_PluginsLink_updateAvailable", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_PluginsLink_updatesAvailable", "(Object)", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ReloadLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ReloadLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ShutdownLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ShutdownLink_DisplayName_cancel", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ShutdownLink_DisplayName_prepare", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ShutdownLink_DisplayName_update", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ShutdownLink_ShutDownReason_title", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ShutdownLink_ShutDownReason_update", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_ShutdownLink_ShuttingDownInProgressDescription", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_StatisticsLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_StatisticsLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_SystemInfoLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_SystemInfoLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_SystemLogLink_Description", "()", "summary", "df-generated"] + - ["jenkins.management", "Messages", "_SystemLogLink_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.management", "ShutdownLink", "doCancel", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.management", "ShutdownLink", "doPrepare", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model.identity", "IdentityRootAction", "getFingerprint", "()", "summary", "df-generated"] + - ["jenkins.model.identity", "IdentityRootAction", "getPublicKey", "()", "summary", "df-generated"] + - ["jenkins.model.identity", "InstanceIdentityProvider$KeyTypes", "getCertificate", "()", "summary", "df-generated"] + - ["jenkins.model.identity", "InstanceIdentityProvider$KeyTypes", "getKeyPair", "()", "summary", "df-generated"] + - ["jenkins.model.identity", "InstanceIdentityProvider$KeyTypes", "getPrivateKey", "()", "summary", "df-generated"] + - ["jenkins.model.identity", "InstanceIdentityProvider$KeyTypes", "getPrivateKeyClass", "()", "summary", "df-generated"] + - ["jenkins.model.identity", "InstanceIdentityProvider$KeyTypes", "getPublicKey", "()", "summary", "df-generated"] + - ["jenkins.model.identity", "InstanceIdentityProvider$KeyTypes", "getPublicKeyClass", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Category", "getMinToShow", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Category", "getOrder", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "ItemCategory", "getCategory", "(TopLevelItemDescriptor)", "summary", "df-generated"] + - ["jenkins.model.item_category", "ItemCategory", "getDescription", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "ItemCategory", "getDisplayName", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "ItemCategory", "getId", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "ItemCategory", "getMinToShow", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "ItemCategory", "getOrder", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "NestedProjects_Description", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "NestedProjects_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "StandaloneProjects_Description", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "StandaloneProjects_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "Uncategorized_Description", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "Uncategorized_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "_NestedProjects_Description", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "_NestedProjects_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "_StandaloneProjects_Description", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "_StandaloneProjects_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "_Uncategorized_Description", "()", "summary", "df-generated"] + - ["jenkins.model.item_category", "Messages", "_Uncategorized_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "baseDirInitialized", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "get", "(int)", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "getById", "(String)", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "getByNumber", "(int)", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "maxNumberOnDisk", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "newestBuild", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "oldestBuild", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "purgeCache", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "removeValue", "(Object)", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "reset", "(TreeMap)", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "runExists", "(int)", "summary", "df-generated"] + - ["jenkins.model.lazy", "AbstractLazyLoadRunMap", "search", "(int,Direction)", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn$RunMixIn", "dropLinks", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "getBuild", "(String)", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "getBuildByNumber", "(int)", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "getFirstBuild", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "getLastBuild", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "getNearestBuild", "(int)", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "getNearestOldBuild", "(int)", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "loadBuild", "(File)", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "newBuild", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "onCreatedFromScratch", "()", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "onLoad", "(ItemGroup,String)", "summary", "df-generated"] + - ["jenkins.model.lazy", "LazyBuildMixIn", "removeRun", "(Run)", "summary", "df-generated"] + - ["jenkins.model.queue", "AsynchronousExecution", "blocksRestart", "()", "summary", "df-generated"] + - ["jenkins.model.queue", "AsynchronousExecution", "displayCell", "()", "summary", "df-generated"] + - ["jenkins.model.queue", "AsynchronousExecution", "interrupt", "(boolean)", "summary", "df-generated"] + - ["jenkins.model.queue", "AsynchronousExecution", "maybeComplete", "()", "summary", "df-generated"] + - ["jenkins.model.queue", "ItemDeletion", "contains", "(Item)", "summary", "df-generated"] + - ["jenkins.model.queue", "ItemDeletion", "deregister", "(Item)", "summary", "df-generated"] + - ["jenkins.model.queue", "ItemDeletion", "isRegistered", "(Item)", "summary", "df-generated"] + - ["jenkins.model.queue", "ItemDeletion", "register", "(Item)", "summary", "df-generated"] + - ["jenkins.model", "ArtifactManager", "archive", "(FilePath,Launcher,BuildListener,Map)", "summary", "df-generated"] + - ["jenkins.model", "ArtifactManager", "delete", "()", "summary", "df-generated"] + - ["jenkins.model", "ArtifactManager", "onLoad", "(Run)", "summary", "df-generated"] + - ["jenkins.model", "ArtifactManager", "root", "()", "summary", "df-generated"] + - ["jenkins.model", "ArtifactManagerConfiguration", "get", "()", "summary", "df-generated"] + - ["jenkins.model", "ArtifactManagerFactory", "managerFor", "(Run)", "summary", "df-generated"] + - ["jenkins.model", "ArtifactManagerFactoryDescriptor", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "AssetManager", "doDynamic", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "BackgroundGlobalBuildDiscarder", "processJob", "(TaskListener,Job)", "summary", "df-generated"] + - ["jenkins.model", "BuildDiscarder", "perform", "(Job)", "summary", "df-generated"] + - ["jenkins.model", "BuildDiscarderDescriptor", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "BuiltInNodeMigration", "doAct", "(StaplerRequest,StaplerResponse,String,String)", "summary", "df-generated"] + - ["jenkins.model", "CauseOfInterruption", "getShortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "CauseOfInterruption", "print", "(TaskListener)", "summary", "df-generated"] + - ["jenkins.model", "Configuration", "getBooleanConfigParameter", "(String,boolean)", "summary", "df-generated"] + - ["jenkins.model", "DependencyDeclarer", "buildDependencyGraph", "(AbstractProject,DependencyGraph)", "summary", "df-generated"] + - ["jenkins.model", "DirectlyModifiableTopLevelItemGroup", "canAdd", "(TopLevelItem)", "summary", "df-generated"] + - ["jenkins.model", "DirectlyModifiableTopLevelItemGroup", "remove", "(TopLevelItem)", "summary", "df-generated"] + - ["jenkins.model", "FingerprintFacet", "createActions", "(List)", "summary", "df-generated"] + - ["jenkins.model", "FingerprintFacet", "getTimestamp", "()", "summary", "df-generated"] + - ["jenkins.model", "FingerprintFacet", "isFingerprintDeletionBlocked", "()", "summary", "df-generated"] + - ["jenkins.model", "GlobalBuildDiscarderConfiguration", "get", "()", "summary", "df-generated"] + - ["jenkins.model", "GlobalBuildDiscarderStrategy", "apply", "(Job)", "summary", "df-generated"] + - ["jenkins.model", "GlobalBuildDiscarderStrategy", "apply", "(Run)", "summary", "df-generated"] + - ["jenkins.model", "GlobalBuildDiscarderStrategy", "isApplicable", "(Job)", "summary", "df-generated"] + - ["jenkins.model", "GlobalBuildDiscarderStrategyDescriptor", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "GlobalCloudConfiguration", "doConfigure", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "GlobalConfiguration", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "GlobalConfigurationCategory", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "GlobalConfigurationCategory", "get", "(Class)", "summary", "df-generated"] + - ["jenkins.model", "GlobalConfigurationCategory", "getShortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "GlobalQuietPeriodConfiguration", "getQuietPeriod", "()", "summary", "df-generated"] + - ["jenkins.model", "GlobalSCMRetryCountConfiguration", "getScmCheckoutRetryCount", "()", "summary", "df-generated"] + - ["jenkins.model", "IdStrategy", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "IdStrategy", "equals", "(String,String)", "summary", "df-generated"] + - ["jenkins.model", "IdStrategy", "filenameOf", "(String)", "summary", "df-generated"] + - ["jenkins.model", "IdStrategy", "legacyFilenameOf", "(String)", "summary", "df-generated"] + - ["jenkins.model", "IdStrategy", "toString", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins$DescriptorImpl", "doCheckNumExecutors", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins$DescriptorImpl", "getDynamic", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins$EnforceSlaveAgentPortAdministrativeMonitor", "doAct", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins$EnforceSlaveAgentPortAdministrativeMonitor", "getExpectedPort", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins$EnforceSlaveAgentPortAdministrativeMonitor", "getSystemPropertyName", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins$JenkinsHolder", "getInstance", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "_doScript", "(StaplerRequest,StaplerResponse,RequestDispatcher,VirtualChannel,ACL)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "addNode", "(Node)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "checkGoodName", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "cleanUp", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "copy", "(AbstractProject,String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "createProject", "(Class,String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "disableSecurity", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doCancelQuietDown", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doCheckDisplayName", "(String,String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doCheckURIEncoding", "(StaplerRequest)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doCheckViewName", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doClassicThreadDump", "(StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doConfigExecutorsSubmit", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doConfigSubmit", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doCreateView", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doDefaultJDKCheck", "(StaplerRequest,String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doDoFingerprintCheck", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doEval", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doException", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doExit", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doFingerprintCleanup", "(StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doGc", "(StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doIconSize", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doLoginEntry", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doLogout", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doQuietDown", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doQuietDown", "(boolean,int)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doReload", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doResources", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doRestart", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doSafeExit", "(StaplerRequest)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doSafeRestart", "(StaplerRequest)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doScript", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doScriptText", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doSecured", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doSignup", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doSimulateOutOfMemory", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doSubmitDescription", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doTestPost", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doToggleCollapse", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doViewExistsCheck", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "doWorkspaceCleanup", "(StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "get", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getActiveInstance", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getAuthentication2", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getAuthentication", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getBuildWrapper", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getBuilder", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getCategorizedManagementLinks", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getComputer", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getConfiguredRootUrl", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getDescriptor", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getDescriptorByType", "(Class)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getFederatedLoginService", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getFederatedLoginServices", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getInitLevel", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getInjector", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getInstallState", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getInstance", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getInstanceOrNull", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getItem", "(String,Item,Class)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getItem", "(String,ItemGroup,Class)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getItemByFullName", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getItemByFullName", "(String,Class)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getItems", "(Class)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getJobNames", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getJobProperty", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getLegacyInstanceId", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getLifecycle", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getManagementLinks", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getMe", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getPlugin", "(Class)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getPlugin", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getPlugins", "(Class)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getProjects", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getPublisher", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getQuietPeriod", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getRepositoryBrowser", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getRetentionStrategy", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getRootUrl", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getRootUrlFromRequest", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getScm", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getScmCheckoutRetryCount", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getSecretKeyAsAES128", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getSecurity", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getSecurityRealms", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getSlaveAgentPort", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getStoredVersion", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getTrigger", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getUnprotectedRootActions", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "getVersion", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "hasPeople", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isCheckURIEncodingEnabled", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isDefaultBuildDir", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isDisableRememberMe", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isNoUsageStatistics", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isQuietingDown", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isRootUrlSecure", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isSlaveAgentPortEnforced", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isSubjectToMandatoryReadPermissionCheck", "(String)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isTerminating", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isUpgradedFromBefore", "(VersionNumber)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isUsageStatisticsCollected", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isUseCrumbs", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isUseProjectNamingStrategy", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "isUseSecurity", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "lookup", "(Class)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "rebuildDependencyGraph", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "refreshExtensions", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "reload", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "removeNode", "(Node)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "restart", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "safeRestart", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setAgentProtocols", "(Set)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setDisableRememberMe", "(boolean)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setMode", "(Mode)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setNoUsageStatistics", "(Boolean)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setNodes", "(List)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setNumExecutors", "(int)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setQuietPeriod", "(Integer)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setScmCheckoutRetryCount", "(int)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setSlaveAgentPort", "(int)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "setViews", "(Collection)", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "shouldShowStackTrace", "()", "summary", "df-generated"] + - ["jenkins.model", "Jenkins", "updateNode", "(Node)", "summary", "df-generated"] + - ["jenkins.model", "JenkinsLocationConfiguration", "doCheckAdminAddress", "(String)", "summary", "df-generated"] + - ["jenkins.model", "JenkinsLocationConfiguration", "doCheckUrl", "(String)", "summary", "df-generated"] + - ["jenkins.model", "JenkinsLocationConfiguration", "get", "()", "summary", "df-generated"] + - ["jenkins.model", "JenkinsLocationConfiguration", "getOrDie", "()", "summary", "df-generated"] + - ["jenkins.model", "MasterBuildConfiguration", "getLabelString", "()", "summary", "df-generated"] + - ["jenkins.model", "MasterBuildConfiguration", "getNumExecutors", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "BlockedBecauseOfBuildInProgress_ETA", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "BlockedBecauseOfBuildInProgress_shortDescription", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "BuildDiscarderProperty_displayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "BuiltInNodeMigration_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "CLI_disable_job_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "CLI_enable_job_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "CLI_keep_build_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "CLI_restart_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "CLI_safe_restart_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "CLI_safe_shutdown_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "CLI_shutdown_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "CauseOfInterruption_ShortDescription", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "DefaultProjectNamingStrategy_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "EnforceSlaveAgentPortAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "GlobalCloudConfiguration_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_BadPortNumber", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_Computer_Caption", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_Computer_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_Computer_IncorrectNumberOfExecutors", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_ControlCodeNotAllowed", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_JobAlreadyExists", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_JobNameConventionNotApplyed", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_NoJavaInPath", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_NoName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_NodeBeingRemoved", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_NodeDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_NotUsesUTF8ToDecodeURL", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_UnsafeChar", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_ViewAlreadyExists", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Hudson_ViewName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "IdStrategy_CaseInsensitive_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "IdStrategy_CaseSensitiveEmailAddress_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "IdStrategy_CaseSensitive_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "JenkinsLocationConfiguration_does_not_look_like_an_email_address", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "JobGlobalBuildDiscarderStrategy_displayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Mailer_Address_Not_Configured", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Mailer_Localhost_Error", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "Mailer_NotHttp_Error", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "ParameterizedJobMixIn_build_now", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "ParameterizedJobMixIn_build_with_parameters", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "PatternProjectNamingStrategy_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "PatternProjectNamingStrategy_NamePatternInvalidSyntax", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "PatternProjectNamingStrategy_NamePatternRequired", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "SimpleGlobalBuildDiscarderStrategy_displayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_BlockedBecauseOfBuildInProgress_ETA", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_BlockedBecauseOfBuildInProgress_shortDescription", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_BuildDiscarderProperty_displayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_BuiltInNodeMigration_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_CLI_disable_job_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_CLI_enable_job_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_CLI_keep_build_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_CLI_restart_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_CLI_safe_restart_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_CLI_safe_shutdown_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_CLI_shutdown_shortDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_CauseOfInterruption_ShortDescription", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_DefaultProjectNamingStrategy_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_EnforceSlaveAgentPortAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_GlobalCloudConfiguration_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_BadPortNumber", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_Computer_Caption", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_Computer_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_Computer_IncorrectNumberOfExecutors", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_ControlCodeNotAllowed", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_JobAlreadyExists", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_JobNameConventionNotApplyed", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_NoJavaInPath", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_NoName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_NodeBeingRemoved", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_NodeDescription", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_NotUsesUTF8ToDecodeURL", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_UnsafeChar", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_ViewAlreadyExists", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Hudson_ViewName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_IdStrategy_CaseInsensitive_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_IdStrategy_CaseSensitiveEmailAddress_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_IdStrategy_CaseSensitive_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_JenkinsLocationConfiguration_does_not_look_like_an_email_address", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_JobGlobalBuildDiscarderStrategy_displayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Mailer_Address_Not_Configured", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Mailer_Localhost_Error", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_Mailer_NotHttp_Error", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_ParameterizedJobMixIn_build_now", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_ParameterizedJobMixIn_build_with_parameters", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_PatternProjectNamingStrategy_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_PatternProjectNamingStrategy_NamePatternInvalidSyntax", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_PatternProjectNamingStrategy_NamePatternRequired", "()", "summary", "df-generated"] + - ["jenkins.model", "Messages", "_SimpleGlobalBuildDiscarderStrategy_displayName", "()", "summary", "df-generated"] + - ["jenkins.model", "ModelObjectWithChildren", "doChildrenContextMenu", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "ModelObjectWithContextMenu", "doContextMenu", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "ModifiableTopLevelItemGroup", "copy", "(TopLevelItem,String)", "summary", "df-generated"] + - ["jenkins.model", "ModifiableTopLevelItemGroup", "createProjectFromXML", "(String,InputStream)", "summary", "df-generated"] + - ["jenkins.model", "NodeListener", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "NodeListener", "fireOnCreated", "(Node)", "summary", "df-generated"] + - ["jenkins.model", "NodeListener", "fireOnDeleted", "(Node)", "summary", "df-generated"] + - ["jenkins.model", "NodeListener", "fireOnUpdated", "(Node,Node)", "summary", "df-generated"] + - ["jenkins.model", "Nodes", "isLegacy", "()", "summary", "df-generated"] + - ["jenkins.model", "Nodes", "load", "()", "summary", "df-generated"] + - ["jenkins.model", "Nodes", "removeNode", "(Node)", "summary", "df-generated"] + - ["jenkins.model", "Nodes", "replaceNode", "(Node,Node)", "summary", "df-generated"] + - ["jenkins.model", "Nodes", "setNodes", "(Collection)", "summary", "df-generated"] + - ["jenkins.model", "Nodes", "updateNode", "(Node)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "doBuild", "(StaplerRequest,StaplerResponse,TimeDuration)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "doBuildWithParameters", "(StaplerRequest,StaplerResponse,TimeDuration)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "doCancelQueue", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "doDisable", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "doEnable", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "doPolling", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "getBuildNowText", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "getParameterizedJobMixIn", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "getQuietPeriod", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "isBuildable", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "isDisabled", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "isParameterized", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "makeDisabled", "(boolean)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "resolveForCLI", "(String)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "scheduleBuild2", "(int,Action[])", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "setDisabled", "(boolean)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn$ParameterizedJob", "supportsMakeDisabled", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "doBuild", "(StaplerRequest,StaplerResponse,TimeDuration)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "doBuildWithParameters", "(StaplerRequest,StaplerResponse,TimeDuration)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "doCancelQueue", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "getBuildCause", "(ParameterizedJob,StaplerRequest)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "getBuildNowText", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "getTrigger", "(Job,Class)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "isParameterized", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "scheduleBuild2", "(int,Action[])", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "scheduleBuild", "()", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "scheduleBuild", "(Cause)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "scheduleBuild", "(int)", "summary", "df-generated"] + - ["jenkins.model", "ParameterizedJobMixIn", "scheduleBuild", "(int,Cause)", "summary", "df-generated"] + - ["jenkins.model", "PeepholePermalink", "apply", "(Run)", "summary", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy$PatternProjectNamingStrategy$DescriptorImpl", "doCheckNamePattern", "(String)", "summary", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy", "checkName", "(String)", "summary", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy", "checkName", "(String,String)", "summary", "df-generated"] + - ["jenkins.model", "ProjectNamingStrategy", "isForceExistingJobs", "()", "summary", "df-generated"] + - ["jenkins.model", "RunAction2", "onAttached", "(Run)", "summary", "df-generated"] + - ["jenkins.model", "RunAction2", "onLoad", "(Run)", "summary", "df-generated"] + - ["jenkins.model", "RunIdMigrator$UnmigrationInstruction", "getCommand", "()", "summary", "df-generated"] + - ["jenkins.model", "RunIdMigrator", "created", "(File)", "summary", "df-generated"] + - ["jenkins.model", "RunIdMigrator", "delete", "(File,String)", "summary", "df-generated"] + - ["jenkins.model", "RunIdMigrator", "findNumber", "(String)", "summary", "df-generated"] + - ["jenkins.model", "RunIdMigrator", "migrate", "(File,File)", "summary", "df-generated"] + - ["jenkins.model", "SimplePageDecorator", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "SimplePageDecorator", "first", "()", "summary", "df-generated"] + - ["jenkins.model", "SimplePageDecorator", "getUrl", "()", "summary", "df-generated"] + - ["jenkins.model", "TransientActionFactory", "actionType", "()", "summary", "df-generated"] + - ["jenkins.model", "TransientActionFactory", "createFor", "(Object)", "summary", "df-generated"] + - ["jenkins.model", "TransientActionFactory", "factoriesFor", "(Class,Class)", "summary", "df-generated"] + - ["jenkins.model", "TransientActionFactory", "type", "()", "summary", "df-generated"] + - ["jenkins.model", "TransientFingerprintFacetFactory", "all", "()", "summary", "df-generated"] + - ["jenkins.model", "TransientFingerprintFacetFactory", "createFor", "(Fingerprint,List)", "summary", "df-generated"] + - ["jenkins.model", "Uptime", "getStartTime", "()", "summary", "df-generated"] + - ["jenkins.model", "Uptime", "getUptime", "()", "summary", "df-generated"] + - ["jenkins.model", "Uptime", "init", "()", "summary", "df-generated"] + - ["jenkins.monitor", "JavaVersionRecommendationAdminMonitor", "doAct", "(String)", "summary", "df-generated"] + - ["jenkins.monitor", "Messages", "JavaLevelAdminMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.monitor", "Messages", "_JavaLevelAdminMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.mvn", "GlobalMavenConfig", "get", "()", "summary", "df-generated"] + - ["jenkins.mvn", "GlobalSettingsProvider", "parseSettingsProvider", "(StaplerRequest)", "summary", "df-generated"] + - ["jenkins.mvn", "GlobalSettingsProvider", "supplySettings", "(AbstractBuild,TaskListener)", "summary", "df-generated"] + - ["jenkins.mvn", "GlobalSettingsProviderDescriptor", "all", "()", "summary", "df-generated"] + - ["jenkins.mvn", "Messages", "DefaultGlobalSettingsProvider_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.mvn", "Messages", "DefaultSettingsProvider_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.mvn", "Messages", "FilePathGlobalSettingsProvider_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.mvn", "Messages", "FilePathSettingsProvider_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.mvn", "Messages", "_DefaultGlobalSettingsProvider_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.mvn", "Messages", "_DefaultSettingsProvider_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.mvn", "Messages", "_FilePathGlobalSettingsProvider_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.mvn", "Messages", "_FilePathSettingsProvider_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.mvn", "SettingsProvider", "parseSettingsProvider", "(StaplerRequest)", "summary", "df-generated"] + - ["jenkins.mvn", "SettingsProvider", "supplySettings", "(AbstractBuild,TaskListener)", "summary", "df-generated"] + - ["jenkins.mvn", "SettingsProviderDescriptor", "all", "()", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "getInstance", "()", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "getInstance", "(boolean)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "getTLDEntries", "(ArrayType)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "isAllowLocal", "()", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "isValid", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "isValidCountryCodeTld", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "isValidGenericTld", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "isValidInfrastructureTld", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "isValidLocalTld", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "isValidTld", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "unicodeToASCII", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "DomainValidator", "updateTLDOverride", "(ArrayType,String[])", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "InetAddressValidator", "getInstance", "()", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "InetAddressValidator", "isValid", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "InetAddressValidator", "isValidInet4Address", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "InetAddressValidator", "isValidInet6Address", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "RegexValidator", "RegexValidator", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "RegexValidator", "RegexValidator", "(String,boolean)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "RegexValidator", "RegexValidator", "(String[])", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "RegexValidator", "RegexValidator", "(String[],boolean)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "RegexValidator", "isValid", "(String)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "RegexValidator", "toString", "()", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", "UrlValidator", "(long)", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", "getInstance", "()", "summary", "df-generated"] + - ["jenkins.org.apache.commons.validator.routines", "UrlValidator", "isValid", "(String)", "summary", "df-generated"] + - ["jenkins.plugins", "DetachedPluginsUtil$DetachedPlugin", "getRequiredVersion", "()", "summary", "df-generated"] + - ["jenkins.plugins", "DetachedPluginsUtil", "getDetachedPlugins", "()", "summary", "df-generated"] + - ["jenkins.plugins", "DetachedPluginsUtil", "getDetachedPlugins", "(VersionNumber)", "summary", "df-generated"] + - ["jenkins.plugins", "DetachedPluginsUtil", "getImpliedDependencies", "(String,String)", "summary", "df-generated"] + - ["jenkins.plugins", "DetachedPluginsUtil", "isDetachedPlugin", "(String)", "summary", "df-generated"] + - ["jenkins.scm", "RunWithSCM", "calculateCulprits", "()", "summary", "df-generated"] + - ["jenkins.scm", "RunWithSCM", "getCulprits", "()", "summary", "df-generated"] + - ["jenkins.scm", "RunWithSCM", "hasParticipant", "(User)", "summary", "df-generated"] + - ["jenkins.scm", "SCMCheckoutStrategy", "checkout", "(AbstractBuildExecution)", "summary", "df-generated"] + - ["jenkins.scm", "SCMCheckoutStrategy", "preCheckout", "(AbstractBuild,Launcher,BuildListener)", "summary", "df-generated"] + - ["jenkins.scm", "SCMCheckoutStrategyDescriptor", "_for", "(AbstractProject)", "summary", "df-generated"] + - ["jenkins.scm", "SCMCheckoutStrategyDescriptor", "all", "()", "summary", "df-generated"] + - ["jenkins.scm", "SCMCheckoutStrategyDescriptor", "isApplicable", "(AbstractProject)", "summary", "df-generated"] + - ["jenkins.scm", "SCMDecisionHandler", "all", "()", "summary", "df-generated"] + - ["jenkins.scm", "SCMDecisionHandler", "firstShouldPollVeto", "(Item)", "summary", "df-generated"] + - ["jenkins.scm", "SCMDecisionHandler", "listShouldPollVetos", "(Item)", "summary", "df-generated"] + - ["jenkins.scm", "SCMDecisionHandler", "shouldPoll", "(Item)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyConfiguration", "get", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyConfiguration", "hasExistingConfigFile", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyConfiguration", "isCreationOfLegacyTokenEnabled", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyConfiguration", "isTokenGenerationOnCreationEnabled", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyConfiguration", "isUsageStatisticsEnabled", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyConfiguration", "setCreationOfLegacyTokenEnabled", "(boolean)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyConfiguration", "setTokenGenerationOnCreationEnabled", "(boolean)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyConfiguration", "setUsageStatisticsEnabled", "(boolean)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyDisabledDefaultAdministrativeMonitor", "doAct", "(String)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenPropertyEnabledNewLegacyAdministrativeMonitor", "doAct", "(String)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats$SingleTokenStats", "getNumDaysUse", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats$SingleTokenStats", "getUseCounter", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats", "removeAll", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats", "removeAllExcept", "(String)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStats", "removeId", "(String)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", "getNumDaysCreation", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", "isLegacy", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore$HashedToken", "match", "(byte[])", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", "addFixedNewToken", "(String,String)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", "generateNewToken", "(String)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", "reconfigure", "(Map)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", "regenerateTokenFromLegacy", "(Secret)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", "regenerateTokenFromLegacyIfRequired", "(Secret)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", "renameToken", "(String,String)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", "revokeAllTokens", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "ApiTokenStore", "revokeAllTokensExcept", "(String)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "LegacyApiTokenAdministrativeMonitor", "doIndex", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "LegacyApiTokenAdministrativeMonitor", "doRevokeAllSelected", "(RevokeAllSelectedModel)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "LegacyApiTokenAdministrativeMonitor", "getImpactedUserList", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "LegacyApiTokenAdministrativeMonitor", "getLegacyTokenOf", "(User)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "LegacyApiTokenAdministrativeMonitor", "hasFreshToken", "(User,TokenInfoAndStats)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "LegacyApiTokenAdministrativeMonitor", "hasMoreRecentlyUsedToken", "(User,TokenInfoAndStats)", "summary", "df-generated"] + - ["jenkins.security.apitoken", "Messages", "ApiTokenPropertyDisabledDefaultAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "Messages", "ApiTokenPropertyEnabledNewLegacyAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "Messages", "LegacyApiTokenAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "Messages", "_ApiTokenPropertyDisabledDefaultAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "Messages", "_ApiTokenPropertyEnabledNewLegacyAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.security.apitoken", "Messages", "_LegacyApiTokenAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.security.csrf", "Messages", "CSRFAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.security.csrf", "Messages", "_CSRFAdministrativeMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.security.s2m", "AdminWhitelistRule", "getMasterKillSwitch", "()", "summary", "df-generated"] + - ["jenkins.security.s2m", "AdminWhitelistRule", "setMasterKillSwitch", "(boolean)", "summary", "df-generated"] + - ["jenkins.security.seed", "Messages", "UserSeedProperty_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security.seed", "Messages", "_UserSeedProperty_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security.seed", "UserSeedChangeListener", "fireUserSeedRenewed", "(User)", "summary", "df-generated"] + - ["jenkins.security.seed", "UserSeedChangeListener", "onUserSeedRenewed", "(User)", "summary", "df-generated"] + - ["jenkins.security.seed", "UserSeedProperty$DescriptorImpl", "doRenewSessionSeed", "(User)", "summary", "df-generated"] + - ["jenkins.security.seed", "UserSeedProperty$DescriptorImpl", "isCurrentUser", "(User)", "summary", "df-generated"] + - ["jenkins.security.seed", "UserSeedProperty", "renewSeed", "()", "summary", "df-generated"] + - ["jenkins.security.stapler", "RoutingDecisionProvider", "decide", "(String)", "summary", "df-generated"] + - ["jenkins.security.stapler", "StaticRoutingDecisionProvider", "get", "()", "summary", "df-generated"] + - ["jenkins.security.stapler", "StaticRoutingDecisionProvider", "reload", "()", "summary", "df-generated"] + - ["jenkins.security.stapler", "TypedFilter", "isStaplerRelevant", "(Class)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "doAddFixedToken", "(User,String,String)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "doChangeToken", "(User,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "doGenerateNewToken", "(User,String)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "doRename", "(User,String,String)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "doRevoke", "(User,String)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "doRevokeAll", "(User)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "doRevokeAllExcept", "(User,String)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "getNoLegacyToken", "()", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "hasCurrentUserRightToGenerateNewToken", "(User)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "isStatisticsEnabled", "()", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty$DescriptorImpl", "mustDisplayLegacyApiToken", "(User)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "addFixedNewToken", "(String,String)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "changeApiToken", "()", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "deleteApiToken", "()", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "generateNewToken", "(String)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "getApiToken", "()", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "getTokenList", "()", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "hasLegacyToken", "()", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "matchesPassword", "(String)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "revokeAllTokens", "()", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "revokeAllTokensExceptOne", "(String)", "summary", "df-generated"] + - ["jenkins.security", "ApiTokenProperty", "revokeToken", "(String)", "summary", "df-generated"] + - ["jenkins.security", "BasicHeaderAuthenticator", "all", "()", "summary", "df-generated"] + - ["jenkins.security", "BasicHeaderAuthenticator", "authenticate2", "(HttpServletRequest,HttpServletResponse,String,String)", "summary", "df-generated"] + - ["jenkins.security", "BasicHeaderAuthenticator", "authenticate", "(HttpServletRequest,HttpServletResponse,String,String)", "summary", "df-generated"] + - ["jenkins.security", "ChannelConfigurator", "all", "()", "summary", "df-generated"] + - ["jenkins.security", "ChannelConfigurator", "onChannelBuilding", "(ChannelBuilder,Object)", "summary", "df-generated"] + - ["jenkins.security", "ClassFilterImpl", "register", "()", "summary", "df-generated"] + - ["jenkins.security", "ClassFilterImpl", "unregister", "()", "summary", "df-generated"] + - ["jenkins.security", "ConfidentialStore", "get", "()", "summary", "df-generated"] + - ["jenkins.security", "ConfidentialStore", "randomBytes", "(int)", "summary", "df-generated"] + - ["jenkins.security", "CryptoConfidentialKey", "decrypt", "()", "summary", "df-generated"] + - ["jenkins.security", "CryptoConfidentialKey", "decrypt", "(byte[])", "summary", "df-generated"] + - ["jenkins.security", "CryptoConfidentialKey", "encrypt", "()", "summary", "df-generated"] + - ["jenkins.security", "CryptoConfidentialKey", "encrypt", "(byte[])", "summary", "df-generated"] + - ["jenkins.security", "CryptoConfidentialKey", "newIv", "()", "summary", "df-generated"] + - ["jenkins.security", "CryptoConfidentialKey", "newIv", "(int)", "summary", "df-generated"] + - ["jenkins.security", "CustomClassFilter$Contributed", "load", "()", "summary", "df-generated"] + - ["jenkins.security", "CustomClassFilter", "permits", "(Class)", "summary", "df-generated"] + - ["jenkins.security", "CustomClassFilter", "permits", "(String)", "summary", "df-generated"] + - ["jenkins.security", "HMACConfidentialKey", "checkMac", "(String,String)", "summary", "df-generated"] + - ["jenkins.security", "HMACConfidentialKey", "checkMac", "(byte[],byte[])", "summary", "df-generated"] + - ["jenkins.security", "HMACConfidentialKey", "createMac", "()", "summary", "df-generated"] + - ["jenkins.security", "HMACConfidentialKey", "mac", "(String)", "summary", "df-generated"] + - ["jenkins.security", "HMACConfidentialKey", "mac", "(byte[])", "summary", "df-generated"] + - ["jenkins.security", "LastGrantedAuthoritiesProperty", "getAuthorities2", "()", "summary", "df-generated"] + - ["jenkins.security", "LastGrantedAuthoritiesProperty", "getAuthorities", "()", "summary", "df-generated"] + - ["jenkins.security", "LastGrantedAuthoritiesProperty", "invalidate", "()", "summary", "df-generated"] + - ["jenkins.security", "LastGrantedAuthoritiesProperty", "update", "(Authentication)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ApiTokenProperty_ChangeToken_CapabilityNotAllowed", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ApiTokenProperty_ChangeToken_Success", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ApiTokenProperty_ChangeToken_SuccessHidden", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ApiTokenProperty_ChangeToken_TokenIsHidden", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ApiTokenProperty_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ApiTokenProperty_LegacyTokenName", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ApiTokenProperty_NoLegacyToken", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "RekeySecretAdminMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_Empty", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_Exception", "(Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_FailedIdentityCheck", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_IOException", "(Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_Invalid", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_InvalidRootURL", "(Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_NeedsRootURL", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_NotJenkins", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_OtherJenkins", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_ResourceResponse", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_SameAsCurrent", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_SameAsJenkinsRoot", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_SomeJenkins", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "ResourceDomainConfiguration_ThisJenkins", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "Token_Created_on", "(Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "UpdateSiteWarningsMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ApiTokenProperty_ChangeToken_CapabilityNotAllowed", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ApiTokenProperty_ChangeToken_Success", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ApiTokenProperty_ChangeToken_SuccessHidden", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ApiTokenProperty_ChangeToken_TokenIsHidden", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ApiTokenProperty_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ApiTokenProperty_LegacyTokenName", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ApiTokenProperty_NoLegacyToken", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_RekeySecretAdminMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_Empty", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_Exception", "(Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_FailedIdentityCheck", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_IOException", "(Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_Invalid", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_InvalidRootURL", "(Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_NeedsRootURL", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_NotJenkins", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_OtherJenkins", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_ResourceResponse", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_SameAsCurrent", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_SameAsJenkinsRoot", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_SomeJenkins", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_ResourceDomainConfiguration_ThisJenkins", "()", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_Token_Created_on", "(Object)", "summary", "df-generated"] + - ["jenkins.security", "Messages", "_UpdateSiteWarningsMonitor_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.security", "QueueItemAuthenticator", "authenticate2", "(Item)", "summary", "df-generated"] + - ["jenkins.security", "QueueItemAuthenticator", "authenticate2", "(Task)", "summary", "df-generated"] + - ["jenkins.security", "QueueItemAuthenticator", "authenticate", "(Item)", "summary", "df-generated"] + - ["jenkins.security", "QueueItemAuthenticator", "authenticate", "(Task)", "summary", "df-generated"] + - ["jenkins.security", "QueueItemAuthenticatorConfiguration", "get", "()", "summary", "df-generated"] + - ["jenkins.security", "QueueItemAuthenticatorDescriptor", "all", "()", "summary", "df-generated"] + - ["jenkins.security", "QueueItemAuthenticatorProvider", "authenticators", "()", "summary", "df-generated"] + - ["jenkins.security", "QueueItemAuthenticatorProvider", "getAuthenticators", "()", "summary", "df-generated"] + - ["jenkins.security", "RSAConfidentialKey", "getEncodedPublicKey", "()", "summary", "df-generated"] + - ["jenkins.security", "RSADigitalSignatureConfidentialKey", "sign", "(String)", "summary", "df-generated"] + - ["jenkins.security", "RekeySecretAdminMonitor", "doScan", "(StaplerRequest)", "summary", "df-generated"] + - ["jenkins.security", "RekeySecretAdminMonitor", "isDone", "()", "summary", "df-generated"] + - ["jenkins.security", "RekeySecretAdminMonitor", "isScanOnBoot", "()", "summary", "df-generated"] + - ["jenkins.security", "RekeySecretAdminMonitor", "scanOnReboot", "()", "summary", "df-generated"] + - ["jenkins.security", "RekeySecretAdminMonitor", "setNeeded", "()", "summary", "df-generated"] + - ["jenkins.security", "ResourceDomainConfiguration", "doCheckUrl", "(String)", "summary", "df-generated"] + - ["jenkins.security", "ResourceDomainConfiguration", "get", "()", "summary", "df-generated"] + - ["jenkins.security", "ResourceDomainConfiguration", "isResourceDomainConfigured", "()", "summary", "df-generated"] + - ["jenkins.security", "ResourceDomainConfiguration", "isResourceRequest", "(HttpServletRequest)", "summary", "df-generated"] + - ["jenkins.security", "ResourceDomainFilter", "init", "()", "summary", "df-generated"] + - ["jenkins.security", "ResourceDomainRecommendation", "doAct", "(String,String)", "summary", "df-generated"] + - ["jenkins.security", "ResourceDomainRootAction", "doIndex", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.security", "ResourceDomainRootAction", "get", "()", "summary", "df-generated"] + - ["jenkins.security", "SecureRequester", "permit", "(StaplerRequest,Object)", "summary", "df-generated"] + - ["jenkins.security", "SecurityListener", "fireAuthenticated2", "(UserDetails)", "summary", "df-generated"] + - ["jenkins.security", "SecurityListener", "fireAuthenticated", "(UserDetails)", "summary", "df-generated"] + - ["jenkins.security", "SecurityListener", "fireFailedToAuthenticate", "(String)", "summary", "df-generated"] + - ["jenkins.security", "SecurityListener", "fireFailedToLogIn", "(String)", "summary", "df-generated"] + - ["jenkins.security", "SecurityListener", "fireLoggedIn", "(String)", "summary", "df-generated"] + - ["jenkins.security", "SecurityListener", "fireLoggedOut", "(String)", "summary", "df-generated"] + - ["jenkins.security", "SecurityListener", "fireUserCreated", "(String)", "summary", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsConfiguration", "getAllWarnings", "()", "summary", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsConfiguration", "getApplicableWarnings", "()", "summary", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsConfiguration", "getPlugin", "(Warning)", "summary", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsConfiguration", "isIgnored", "(Warning)", "summary", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsMonitor", "doForward", "(String,String)", "summary", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsMonitor", "getActiveCoreWarnings", "()", "summary", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsMonitor", "getActivePluginWarningsByPlugin", "()", "summary", "df-generated"] + - ["jenkins.security", "UpdateSiteWarningsMonitor", "hasApplicableHiddenWarnings", "()", "summary", "df-generated"] + - ["jenkins.security", "UserDetailsCache", "get", "()", "summary", "df-generated"] + - ["jenkins.security", "UserDetailsCache", "invalidate", "(String)", "summary", "df-generated"] + - ["jenkins.security", "UserDetailsCache", "invalidateAll", "()", "summary", "df-generated"] + - ["jenkins.slaves.restarter", "SlaveRestarter", "all", "()", "summary", "df-generated"] + - ["jenkins.slaves.restarter", "SlaveRestarter", "canWork", "()", "summary", "df-generated"] + - ["jenkins.slaves.restarter", "SlaveRestarter", "restart", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "Messages", "ClassLoaderStatisticsSlaveInfo_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "Messages", "EnvVarsSlaveInfo_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "Messages", "SystemPropertySlaveInfo_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "Messages", "ThreadDumpSlaveInfo_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "Messages", "_ClassLoaderStatisticsSlaveInfo_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "Messages", "_EnvVarsSlaveInfo_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "Messages", "_SystemPropertySlaveInfo_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "Messages", "_ThreadDumpSlaveInfo_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "SlaveSystemInfo", "all", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "SlaveSystemInfo", "getDisplayName", "()", "summary", "df-generated"] + - ["jenkins.slaves.systemInfo", "SlaveSystemInfo", "getRequiredPermission", "()", "summary", "df-generated"] + - ["jenkins.slaves", "IOHubProvider", "cleanUp", "()", "summary", "df-generated"] + - ["jenkins.slaves", "JnlpAgentReceiver", "all", "()", "summary", "df-generated"] + - ["jenkins.slaves", "JnlpAgentReceiver", "exists", "(String)", "summary", "df-generated"] + - ["jenkins.slaves", "JnlpAgentReceiver", "generateCookie", "()", "summary", "df-generated"] + - ["jenkins.slaves", "JnlpAgentReceiver", "owns", "(String)", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "DeprecatedAgentProtocolMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "JnlpSlaveAgentProtocol2_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "JnlpSlaveAgentProtocol3_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "JnlpSlaveAgentProtocol4_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "JnlpSlaveAgentProtocol_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "_DeprecatedAgentProtocolMonitor_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "_JnlpSlaveAgentProtocol2_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "_JnlpSlaveAgentProtocol3_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "_JnlpSlaveAgentProtocol4_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "Messages", "_JnlpSlaveAgentProtocol_displayName", "()", "summary", "df-generated"] + - ["jenkins.slaves", "NioChannelSelector", "cleanUp", "()", "summary", "df-generated"] + - ["jenkins.slaves", "PingFailureAnalyzer", "all", "()", "summary", "df-generated"] + - ["jenkins.slaves", "PingFailureAnalyzer", "onPingFailure", "(Channel,Throwable)", "summary", "df-generated"] + - ["jenkins.slaves", "RemotingVersionInfo", "getEmbeddedVersion", "()", "summary", "df-generated"] + - ["jenkins.slaves", "RemotingVersionInfo", "getMinimumSupportedVersion", "()", "summary", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", "getDisabledDefaults", "()", "summary", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", "getEnabledDefaults", "()", "summary", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", "isDisabled", "()", "summary", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", "isFailIfWorkDirIsMissing", "()", "summary", "df-generated"] + - ["jenkins.slaves", "RemotingWorkDirSettings", "isUseAgentRootDir", "()", "summary", "df-generated"] + - ["jenkins.slaves", "WorkspaceLocator", "all", "()", "summary", "df-generated"] + - ["jenkins.slaves", "WorkspaceLocator", "locate", "(TopLevelItem,Node)", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "RetainVariablesLocalRule_CharacteristicEnvVarsFormValidationOK", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "RetainVariablesLocalRule_CharacteristicEnvVarsFormValidationWarning", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "RetainVariablesLocalRule_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "RetainVariablesLocalRule_REMOVE_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "RetainVariablesLocalRule_RESET_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "RetainVariablesLocalRule_RemovalMessage", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "RetainVariablesLocalRule_ResetMessage", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "_RetainVariablesLocalRule_CharacteristicEnvVarsFormValidationOK", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "_RetainVariablesLocalRule_CharacteristicEnvVarsFormValidationWarning", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "_RetainVariablesLocalRule_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "_RetainVariablesLocalRule_REMOVE_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "_RetainVariablesLocalRule_RESET_DisplayName", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "_RetainVariablesLocalRule_RemovalMessage", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "Messages", "_RetainVariablesLocalRule_ResetMessage", "(Object,Object)", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "RetainVariablesLocalRule$DescriptorImpl", "doCheckRetainCharacteristicEnvVars", "(boolean)", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "RetainVariablesLocalRule$ProcessVariablesHandling", "getDisplayName", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "RetainVariablesLocalRule", "getProcessVariablesHandling", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "RetainVariablesLocalRule", "isRetainCharacteristicEnvVars", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "RetainVariablesLocalRule", "setProcessVariablesHandling", "(ProcessVariablesHandling)", "summary", "df-generated"] + - ["jenkins.tasks.filters.impl", "RetainVariablesLocalRule", "setRetainCharacteristicEnvVars", "(boolean)", "summary", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterGlobalConfiguration", "get", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterGlobalConfiguration", "getAllActivatedGlobalRules", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterGlobalConfiguration", "getAllGlobalRules", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterLocalRuleDescriptor", "allApplicableFor", "(Class)", "summary", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterLocalRuleDescriptor", "isApplicable", "(Class)", "summary", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterRule", "filter", "(EnvVars,EnvVarsFilterRuleContext)", "summary", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterRule", "getDisplayName", "()", "summary", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterRuleWrapper", "filter", "(EnvVars,Launcher,TaskListener)", "summary", "df-generated"] + - ["jenkins.tasks.filters", "EnvVarsFilterableBuilder", "buildEnvVarsFilterRules", "()", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildStep", "perform", "(Run,EnvVars,TaskListener)", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildStep", "perform", "(Run,FilePath,EnvVars,Launcher,TaskListener)", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildStep", "perform", "(Run,FilePath,Launcher,TaskListener)", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildStep", "requiresWorkspace", "()", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper$Disposer", "requiresWorkspace", "()", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper$Disposer", "tearDown", "(Run,FilePath,Launcher,TaskListener)", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper$Disposer", "tearDown", "(Run,TaskListener)", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper", "createContext", "()", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper", "createLoggerDecorator", "(Run)", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper", "requiresWorkspace", "()", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper", "setUp", "(Context,Run,FilePath,Launcher,TaskListener,EnvVars)", "summary", "df-generated"] + - ["jenkins.tasks", "SimpleBuildWrapper", "setUp", "(Context,Run,TaskListener,EnvVars)", "summary", "df-generated"] + - ["jenkins.telemetry.impl", "UserLanguages", "setUpFilter", "()", "summary", "df-generated"] + - ["jenkins.telemetry", "Telemetry", "all", "()", "summary", "df-generated"] + - ["jenkins.telemetry", "Telemetry", "createContent", "()", "summary", "df-generated"] + - ["jenkins.telemetry", "Telemetry", "getDisplayName", "()", "summary", "df-generated"] + - ["jenkins.telemetry", "Telemetry", "getEnd", "()", "summary", "df-generated"] + - ["jenkins.telemetry", "Telemetry", "getId", "()", "summary", "df-generated"] + - ["jenkins.telemetry", "Telemetry", "getStart", "()", "summary", "df-generated"] + - ["jenkins.telemetry", "Telemetry", "isActivePeriod", "()", "summary", "df-generated"] + - ["jenkins.telemetry", "Telemetry", "isDisabled", "()", "summary", "df-generated"] + - ["jenkins.tools", "GlobalToolConfiguration", "doConfigure", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.triggers", "Messages", "ReverseBuildTrigger_build_after_other_projects_are_built", "()", "summary", "df-generated"] + - ["jenkins.triggers", "Messages", "ReverseBuildTrigger_running_as_cannot_even_see_for_trigger_f", "(Object,Object,Object)", "summary", "df-generated"] + - ["jenkins.triggers", "Messages", "SCMTriggerItem_PollingVetoed", "(Object)", "summary", "df-generated"] + - ["jenkins.triggers", "Messages", "_ReverseBuildTrigger_build_after_other_projects_are_built", "()", "summary", "df-generated"] + - ["jenkins.triggers", "Messages", "_ReverseBuildTrigger_running_as_cannot_even_see_for_trigger_f", "(Object,Object,Object)", "summary", "df-generated"] + - ["jenkins.triggers", "Messages", "_SCMTriggerItem_PollingVetoed", "(Object)", "summary", "df-generated"] + - ["jenkins.triggers", "ReverseBuildTrigger$DescriptorImpl", "doAutoCompleteUpstreamProjects", "(String,Item,ItemGroup)", "summary", "df-generated"] + - ["jenkins.triggers", "ReverseBuildTrigger$DescriptorImpl", "doCheckUpstreamProjects", "(Job,String)", "summary", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", "asItem", "()", "summary", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", "getNextBuildNumber", "()", "summary", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", "getQuietPeriod", "()", "summary", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", "getSCMTrigger", "()", "summary", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", "getSCMs", "()", "summary", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", "poll", "(TaskListener)", "summary", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", "scheduleBuild2", "(int,Action[])", "summary", "df-generated"] + - ["jenkins.triggers", "SCMTriggerItem", "schedulePolling", "()", "summary", "df-generated"] + - ["jenkins.util.groovy", "AbstractGroovyViewModule", "methodMissing", "(String,Object)", "summary", "df-generated"] + - ["jenkins.util.groovy", "AbstractGroovyViewModule", "propertyMissing", "(String)", "summary", "df-generated"] + - ["jenkins.util.groovy", "AbstractGroovyViewModule", "propertyMissing", "(String,Object)", "summary", "df-generated"] + - ["jenkins.util.groovy", "GroovyHookScript", "run", "()", "summary", "df-generated"] + - ["jenkins.util.io", "CompositeIOException", "asUncheckedIOException", "()", "summary", "df-generated"] + - ["jenkins.util.io", "FileBoolean", "fastGet", "()", "summary", "df-generated"] + - ["jenkins.util.io", "FileBoolean", "get", "()", "summary", "df-generated"] + - ["jenkins.util.io", "FileBoolean", "isOff", "()", "summary", "df-generated"] + - ["jenkins.util.io", "FileBoolean", "isOn", "()", "summary", "df-generated"] + - ["jenkins.util.io", "FileBoolean", "off", "()", "summary", "df-generated"] + - ["jenkins.util.io", "FileBoolean", "on", "()", "summary", "df-generated"] + - ["jenkins.util.io", "FileBoolean", "set", "(boolean)", "summary", "df-generated"] + - ["jenkins.util.io", "PathRemover$RetryStrategy", "shouldRetry", "(int)", "summary", "df-generated"] + - ["jenkins.util.io", "PathRemover", "forceRemoveDirectoryContents", "(Path)", "summary", "df-generated"] + - ["jenkins.util.io", "PathRemover", "forceRemoveFile", "(Path)", "summary", "df-generated"] + - ["jenkins.util.io", "PathRemover", "forceRemoveRecursive", "(Path)", "summary", "df-generated"] + - ["jenkins.util.io", "PathRemover", "newSimpleRemover", "()", "summary", "df-generated"] + - ["jenkins.util.java", "JavaUtils", "getCurrentJavaRuntimeVersionNumber", "()", "summary", "df-generated"] + - ["jenkins.util.java", "JavaUtils", "getCurrentRuntimeJavaVersion", "()", "summary", "df-generated"] + - ["jenkins.util.java", "JavaUtils", "isRunningWithJava8OrBelow", "()", "summary", "df-generated"] + - ["jenkins.util.java", "JavaUtils", "isRunningWithPostJava8", "()", "summary", "df-generated"] + - ["jenkins.util.xml", "XMLUtils", "getValue", "(String,Document)", "summary", "df-generated"] + - ["jenkins.util.xml", "XMLUtils", "getValue", "(String,File)", "summary", "df-generated"] + - ["jenkins.util.xml", "XMLUtils", "getValue", "(String,File,String)", "summary", "df-generated"] + - ["jenkins.util.xml", "XMLUtils", "parse", "(File)", "summary", "df-generated"] + - ["jenkins.util.xml", "XMLUtils", "parse", "(File,String)", "summary", "df-generated"] + - ["jenkins.util.xml", "XMLUtils", "parse", "(InputStream)", "summary", "df-generated"] + - ["jenkins.util.xml", "XMLUtils", "parse", "(Reader)", "summary", "df-generated"] + - ["jenkins.util.xml", "XMLUtils", "safeTransform", "(Source,Result)", "summary", "df-generated"] + - ["jenkins.util.xstream", "CriticalXStreamException", "CriticalXStreamException", "(XStreamException)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM$ConverterImpl", "unmarshalElement", "(HierarchicalStreamReader,UnmarshallingContext)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "from", "(HierarchicalStreamReader)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "from", "(InputStream)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "from", "(Reader)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "from", "(XStream,Object)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "getAttributeCount", "()", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "newReader", "()", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "newWriter", "()", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "unmarshal", "(XStream)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "unmarshal", "(XStream,Object)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "writeTo", "(HierarchicalStreamWriter)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "writeTo", "(OutputStream)", "summary", "df-generated"] + - ["jenkins.util.xstream", "XStreamDOM", "writeTo", "(Writer)", "summary", "df-generated"] + - ["jenkins.util", "AntClassLoader", "AntClassLoader", "(ClassLoader,Project,Path)", "summary", "df-generated"] + - ["jenkins.util", "AntClassLoader", "AntClassLoader", "(ClassLoader,Project,Path,boolean)", "summary", "df-generated"] + - ["jenkins.util", "AntClassLoader", "AntClassLoader", "(ClassLoader,boolean)", "summary", "df-generated"] + - ["jenkins.util", "AntClassLoader", "AntClassLoader", "(Project,Path)", "summary", "df-generated"] + - ["jenkins.util", "AntClassLoader", "AntClassLoader", "(Project,Path,boolean)", "summary", "df-generated"] + - ["jenkins.util", "AntClassLoader", "addPathFiles", "(Collection)", "summary", "df-generated"] + - ["jenkins.util", "DirectedGraph$SCC", "SCC", "(int)", "summary", "df-generated"] + - ["jenkins.util", "DirectedGraph", "getStronglyConnectedComponents", "()", "summary", "df-generated"] + - ["jenkins.util", "FullDuplexHttpService", "download", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.util", "FullDuplexHttpService", "upload", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["jenkins.util", "HttpSessionListener", "all", "()", "summary", "df-generated"] + - ["jenkins.util", "InterceptingExecutorService", "toString", "()", "summary", "df-generated"] + - ["jenkins.util", "JSONSignatureValidator", "verifySignature", "(JSONObject)", "summary", "df-generated"] + - ["jenkins.util", "JavaVMArguments", "current", "()", "summary", "df-generated"] + - ["jenkins.util", "JenkinsClassLoader", "findClass", "(String)", "summary", "df-generated"] + - ["jenkins.util", "JenkinsClassLoader", "findLoadedClass2", "(String)", "summary", "df-generated"] + - ["jenkins.util", "JenkinsClassLoader", "findResource", "(String)", "summary", "df-generated"] + - ["jenkins.util", "JenkinsClassLoader", "findResources", "(String)", "summary", "df-generated"] + - ["jenkins.util", "JenkinsClassLoader", "getClassLoadingLock", "(String)", "summary", "df-generated"] + - ["jenkins.util", "JenkinsJVM", "checkJenkinsJVM", "()", "summary", "df-generated"] + - ["jenkins.util", "JenkinsJVM", "checkNotJenkinsJVM", "()", "summary", "df-generated"] + - ["jenkins.util", "JenkinsJVM", "isJenkinsJVM", "()", "summary", "df-generated"] + - ["jenkins.util", "Listeners", "notify", "(Class,boolean,Consumer)", "summary", "df-generated"] + - ["jenkins.util", "MemoryReductionUtil", "getPresizedMutableMap", "(int)", "summary", "df-generated"] + - ["jenkins.util", "MemoryReductionUtil", "preallocatedHashmapCapacity", "(int)", "summary", "df-generated"] + - ["jenkins.util", "PluginLabelUtil", "canonicalLabels", "(JSONArray)", "summary", "df-generated"] + - ["jenkins.util", "ProgressiveRendering", "news", "()", "summary", "df-generated"] + - ["jenkins.util", "ProgressiveRendering", "start", "()", "summary", "df-generated"] + - ["jenkins.util", "ResourceBundleUtil", "getBundle", "(String)", "summary", "df-generated"] + - ["jenkins.util", "ResourceBundleUtil", "getBundle", "(String,Locale)", "summary", "df-generated"] + - ["jenkins.util", "ServerTcpPort", "ServerTcpPort", "(JSONObject)", "summary", "df-generated"] + - ["jenkins.util", "ServerTcpPort", "getPort", "()", "summary", "df-generated"] + - ["jenkins.util", "SetContextClassLoader", "SetContextClassLoader", "(Class)", "summary", "df-generated"] + - ["jenkins.util", "SetContextClassLoader", "SetContextClassLoader", "(ClassLoader)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "allowOnAgent", "(String)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "getBoolean", "(String)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "getBoolean", "(String,boolean)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "getInteger", "(String)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "getInteger", "(String,Integer)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "getInteger", "(String,Integer,Level)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "getLong", "(String)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "getLong", "(String,Long)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "getLong", "(String,Long,Level)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "getString", "(String)", "summary", "df-generated"] + - ["jenkins.util", "SystemProperties", "optBoolean", "(String)", "summary", "df-generated"] + - ["jenkins.util", "TimeDuration", "TimeDuration", "(long)", "summary", "df-generated"] + - ["jenkins.util", "TimeDuration", "as", "(TimeUnit)", "summary", "df-generated"] + - ["jenkins.util", "TimeDuration", "fromString", "(String)", "summary", "df-generated"] + - ["jenkins.util", "TimeDuration", "getTime", "()", "summary", "df-generated"] + - ["jenkins.util", "TimeDuration", "getTimeInMillis", "()", "summary", "df-generated"] + - ["jenkins.util", "TimeDuration", "getTimeInSeconds", "()", "summary", "df-generated"] + - ["jenkins.util", "Timer", "get", "()", "summary", "df-generated"] + - ["jenkins.util", "Timer", "shutdown", "()", "summary", "df-generated"] + - ["jenkins.util", "TreeString$ConverterImpl", "ConverterImpl", "(XStream)", "summary", "df-generated"] + - ["jenkins.util", "TreeString", "isBlank", "()", "summary", "df-generated"] + - ["jenkins.util", "TreeStringBuilder", "dedup", "()", "summary", "df-generated"] + - ["jenkins.util", "URLClassLoader2", "URLClassLoader2", "(URL[])", "summary", "df-generated"] + - ["jenkins.util", "URLClassLoader2", "URLClassLoader2", "(URL[],ClassLoader)", "summary", "df-generated"] + - ["jenkins.util", "UrlHelper", "isValidRootUrl", "(String)", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "canRead", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "child", "(String)", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "containsSymLinkChild", "(boolean)", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "exists", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "getName", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "getParent", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "hasSymlink", "(boolean)", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "isDescendant", "(String)", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "isDirectory", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "isFile", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "lastModified", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "length", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "list", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "list", "(String,String,boolean)", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "list", "(String,String,boolean,boolean)", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "listOnlyDescendants", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "mode", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "open", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "open", "(boolean)", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "readLink", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "run", "(Callable)", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "supportIsDescendant", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "supportsQuickRecursiveListing", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "toExternalURL", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "toString", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "toURI", "()", "summary", "df-generated"] + - ["jenkins.util", "VirtualFile", "zip", "(OutputStream,String,String,boolean,boolean,String)", "summary", "df-generated"] + - ["jenkins.views", "Header", "get", "()", "summary", "df-generated"] + - ["jenkins.views", "Header", "isAvailable", "()", "summary", "df-generated"] + - ["jenkins.views", "Header", "isCompatible", "()", "summary", "df-generated"] + - ["jenkins.views", "Header", "isEnabled", "()", "summary", "df-generated"] + - ["jenkins.views", "PartialHeader", "getSupportedHeaderVersion", "()", "summary", "df-generated"] + - ["jenkins.views", "PartialHeader", "incompatibleHeaders", "()", "summary", "df-generated"] + - ["jenkins.websocket", "Provider$Handler", "close", "()", "summary", "df-generated"] + - ["jenkins.websocket", "Provider$Handler", "sendBinary", "(ByteBuffer)", "summary", "df-generated"] + - ["jenkins.websocket", "Provider$Handler", "sendBinary", "(ByteBuffer,boolean)", "summary", "df-generated"] + - ["jenkins.websocket", "Provider$Handler", "sendPing", "(ByteBuffer)", "summary", "df-generated"] + - ["jenkins.websocket", "Provider$Handler", "sendText", "(String)", "summary", "df-generated"] + - ["jenkins.websocket", "Provider$Listener", "onWebSocketBinary", "(byte[],int,int)", "summary", "df-generated"] + - ["jenkins.websocket", "Provider$Listener", "onWebSocketClose", "(int,String)", "summary", "df-generated"] + - ["jenkins.websocket", "Provider$Listener", "onWebSocketError", "(Throwable)", "summary", "df-generated"] + - ["jenkins.websocket", "Provider$Listener", "onWebSocketText", "(String)", "summary", "df-generated"] + - ["jenkins.websocket", "Provider", "handle", "(HttpServletRequest,HttpServletResponse,Listener)", "summary", "df-generated"] + - ["jenkins.websocket", "WebSocketEcho", "doIndex", "()", "summary", "df-generated"] + - ["jenkins.websocket", "WebSockets", "isSupported", "()", "summary", "df-generated"] + - ["jenkins.websocket", "WebSockets", "upgrade", "(WebSocketSession)", "summary", "df-generated"] + - ["jenkins.widgets", "HistoryPageEntry", "getEntryId", "()", "summary", "df-generated"] + - ["jenkins.widgets", "HistoryPageFilter", "HistoryPageFilter", "(int)", "summary", "df-generated"] + - ["jenkins.widgets", "HistoryPageFilter", "add", "(Iterable)", "summary", "df-generated"] + - ["jenkins.widgets", "HistoryPageFilter", "add", "(Iterable,List)", "summary", "df-generated"] + - ["jenkins.widgets", "HistoryPageFilter", "setNewerThan", "(Long)", "summary", "df-generated"] + - ["jenkins.widgets", "HistoryPageFilter", "setOlderThan", "(Long)", "summary", "df-generated"] + - ["jenkins.widgets", "HistoryPageFilter", "size", "()", "summary", "df-generated"] + - ["jenkins", "AgentProtocol", "all", "()", "summary", "df-generated"] + - ["jenkins", "AgentProtocol", "getDisplayName", "()", "summary", "df-generated"] + - ["jenkins", "AgentProtocol", "getName", "()", "summary", "df-generated"] + - ["jenkins", "AgentProtocol", "handle", "(Socket)", "summary", "df-generated"] + - ["jenkins", "AgentProtocol", "isDeprecated", "()", "summary", "df-generated"] + - ["jenkins", "AgentProtocol", "isOptIn", "()", "summary", "df-generated"] + - ["jenkins", "AgentProtocol", "isRequired", "()", "summary", "df-generated"] + - ["jenkins", "AgentProtocol", "of", "(String)", "summary", "df-generated"] + - ["jenkins", "ClassLoaderReflectionToolkit", "_findResource", "(ClassLoader,String)", "summary", "df-generated"] + - ["jenkins", "ClassLoaderReflectionToolkit", "_findResources", "(ClassLoader,String)", "summary", "df-generated"] + - ["jenkins", "ClassLoaderReflectionToolkit", "loadClass", "(ClassLoader,String)", "summary", "df-generated"] + - ["jenkins", "ExtensionComponentSet", "allOf", "(ExtensionFinder)", "summary", "df-generated"] + - ["jenkins", "ExtensionComponentSet", "filtered", "()", "summary", "df-generated"] + - ["jenkins", "ExtensionComponentSet", "find", "(Class)", "summary", "df-generated"] + - ["jenkins", "ExtensionComponentSet", "union", "(Collection)", "summary", "df-generated"] + - ["jenkins", "ExtensionComponentSet", "union", "(ExtensionComponentSet[])", "summary", "df-generated"] + - ["jenkins", "ExtensionFilter", "all", "()", "summary", "df-generated"] + - ["jenkins", "ExtensionFilter", "allows", "(Class,ExtensionComponent)", "summary", "df-generated"] + - ["jenkins", "ExtensionFilter", "isAllowed", "(Class,ExtensionComponent)", "summary", "df-generated"] + - ["jenkins", "ExtensionRefreshException", "ExtensionRefreshException", "(String,Throwable)", "summary", "df-generated"] + - ["jenkins", "ExtensionRefreshException", "ExtensionRefreshException", "(Throwable)", "summary", "df-generated"] + - ["jenkins", "I18n", "doResourceBundle", "(StaplerRequest)", "summary", "df-generated"] + - ["jenkins", "InitReactorRunner", "getDisplayName", "(Task)", "summary", "df-generated"] + - ["jenkins", "InitReactorRunner", "run", "(Reactor)", "summary", "df-generated"] + - ["jenkins", "UserAgentURLConnectionDecorator", "getUserAgent", "()", "summary", "df-generated"] + - ["jenkins", "YesNoMaybe", "toBool", "()", "summary", "df-generated"] + - ["jenkins", "YesNoMaybe", "toBoolean", "(YesNoMaybe)", "summary", "df-generated"] + - ["org.acegisecurity.acls.sid", "GrantedAuthoritySid", "GrantedAuthoritySid", "(GrantedAuthority)", "summary", "df-generated"] + - ["org.acegisecurity.acls.sid", "PrincipalSid", "PrincipalSid", "(Authentication)", "summary", "df-generated"] + - ["org.acegisecurity.context", "SecurityContext", "fromSpring", "(SecurityContext)", "summary", "df-generated"] + - ["org.acegisecurity.context", "SecurityContext", "getAuthentication", "()", "summary", "df-generated"] + - ["org.acegisecurity.context", "SecurityContext", "setAuthentication", "(Authentication)", "summary", "df-generated"] + - ["org.acegisecurity.context", "SecurityContext", "toSpring", "()", "summary", "df-generated"] + - ["org.acegisecurity.context", "SecurityContextHolder", "clearContext", "()", "summary", "df-generated"] + - ["org.acegisecurity.context", "SecurityContextHolder", "getContext", "()", "summary", "df-generated"] + - ["org.acegisecurity.context", "SecurityContextHolder", "setContext", "(SecurityContext)", "summary", "df-generated"] + - ["org.acegisecurity.providers.anonymous", "AnonymousAuthenticationToken", "AnonymousAuthenticationToken", "(String,Object,GrantedAuthority[])", "summary", "df-generated"] + - ["org.acegisecurity.providers.anonymous", "AnonymousAuthenticationToken", "setDetails", "(Object)", "summary", "df-generated"] + - ["org.acegisecurity.providers.anonymous", "AnonymousAuthenticationToken", "toString", "()", "summary", "df-generated"] + - ["org.acegisecurity.providers", "AbstractAuthenticationToken", "toString", "()", "summary", "df-generated"] + - ["org.acegisecurity.providers", "AuthenticationProvider", "authenticate", "(Authentication)", "summary", "df-generated"] + - ["org.acegisecurity.providers", "AuthenticationProvider", "supports", "(Class)", "summary", "df-generated"] + - ["org.acegisecurity.providers", "ProviderNotFoundException", "ProviderNotFoundException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity.providers", "ProviderNotFoundException", "ProviderNotFoundException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity.providers", "ProviderNotFoundException", "fromSpring", "(ProviderNotFoundException)", "summary", "df-generated"] + - ["org.acegisecurity.providers", "UsernamePasswordAuthenticationToken", "UsernamePasswordAuthenticationToken", "(Object,Object)", "summary", "df-generated"] + - ["org.acegisecurity.providers", "UsernamePasswordAuthenticationToken", "UsernamePasswordAuthenticationToken", "(Object,Object,GrantedAuthority[])", "summary", "df-generated"] + - ["org.acegisecurity.providers", "UsernamePasswordAuthenticationToken", "setDetails", "(Object)", "summary", "df-generated"] + - ["org.acegisecurity.providers", "UsernamePasswordAuthenticationToken", "toString", "()", "summary", "df-generated"] + - ["org.acegisecurity.ui.rememberme", "RememberMeServices", "autoLogin", "(HttpServletRequest,HttpServletResponse)", "summary", "df-generated"] + - ["org.acegisecurity.ui.rememberme", "RememberMeServices", "loginFail", "(HttpServletRequest,HttpServletResponse)", "summary", "df-generated"] + - ["org.acegisecurity.ui.rememberme", "RememberMeServices", "loginSuccess", "(HttpServletRequest,HttpServletResponse,Authentication)", "summary", "df-generated"] + - ["org.acegisecurity.ui", "WebAuthenticationDetails", "WebAuthenticationDetails", "(HttpServletRequest)", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", "getAuthorities", "()", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", "getPassword", "()", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", "getUsername", "()", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", "isAccountNonExpired", "()", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", "isAccountNonLocked", "()", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", "isCredentialsNonExpired", "()", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetails", "isEnabled", "()", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetailsService", "fromSpring", "(UserDetailsService)", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UserDetailsService", "toSpring", "()", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UsernameNotFoundException", "UsernameNotFoundException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UsernameNotFoundException", "UsernameNotFoundException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity.userdetails", "UsernameNotFoundException", "fromSpring", "(UsernameNotFoundException)", "summary", "df-generated"] + - ["org.acegisecurity.util", "FieldUtils", "getProtectedFieldValue", "(String,Object)", "summary", "df-generated"] + - ["org.acegisecurity.util", "FieldUtils", "setProtectedFieldValue", "(String,Object,Object)", "summary", "df-generated"] + - ["org.acegisecurity", "AccessDeniedException", "AccessDeniedException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity", "AccessDeniedException", "AccessDeniedException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity", "AccountExpiredException", "AccountExpiredException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity", "AccountExpiredException", "AccountExpiredException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity", "AccountExpiredException", "fromSpring", "(AccountExpiredException)", "summary", "df-generated"] + - ["org.acegisecurity", "AcegiSecurityException", "toSpring", "()", "summary", "df-generated"] + - ["org.acegisecurity", "Authentication", "getAuthorities", "()", "summary", "df-generated"] + - ["org.acegisecurity", "Authentication", "getCredentials", "()", "summary", "df-generated"] + - ["org.acegisecurity", "Authentication", "getDetails", "()", "summary", "df-generated"] + - ["org.acegisecurity", "Authentication", "getPrincipal", "()", "summary", "df-generated"] + - ["org.acegisecurity", "Authentication", "isAuthenticated", "()", "summary", "df-generated"] + - ["org.acegisecurity", "Authentication", "setAuthenticated", "(boolean)", "summary", "df-generated"] + - ["org.acegisecurity", "AuthenticationException", "clearExtraInformation", "()", "summary", "df-generated"] + - ["org.acegisecurity", "AuthenticationManager", "fromSpring", "(AuthenticationManager)", "summary", "df-generated"] + - ["org.acegisecurity", "AuthenticationManager", "toSpring", "()", "summary", "df-generated"] + - ["org.acegisecurity", "AuthenticationServiceException", "AuthenticationServiceException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity", "AuthenticationServiceException", "AuthenticationServiceException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity", "AuthenticationServiceException", "fromSpring", "(AuthenticationServiceException)", "summary", "df-generated"] + - ["org.acegisecurity", "BadCredentialsException", "BadCredentialsException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity", "BadCredentialsException", "BadCredentialsException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity", "BadCredentialsException", "fromSpring", "(AuthenticationException)", "summary", "df-generated"] + - ["org.acegisecurity", "CredentialsExpiredException", "CredentialsExpiredException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity", "CredentialsExpiredException", "CredentialsExpiredException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity", "CredentialsExpiredException", "fromSpring", "(CredentialsExpiredException)", "summary", "df-generated"] + - ["org.acegisecurity", "DisabledException", "DisabledException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity", "DisabledException", "DisabledException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity", "DisabledException", "fromSpring", "(DisabledException)", "summary", "df-generated"] + - ["org.acegisecurity", "GrantedAuthority", "fromSpring", "(Collection)", "summary", "df-generated"] + - ["org.acegisecurity", "GrantedAuthority", "fromSpring", "(GrantedAuthority)", "summary", "df-generated"] + - ["org.acegisecurity", "GrantedAuthority", "toSpring", "()", "summary", "df-generated"] + - ["org.acegisecurity", "GrantedAuthority", "toSpring", "(GrantedAuthority[])", "summary", "df-generated"] + - ["org.acegisecurity", "InsufficientAuthenticationException", "InsufficientAuthenticationException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity", "InsufficientAuthenticationException", "InsufficientAuthenticationException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity", "InsufficientAuthenticationException", "fromSpring", "(InsufficientAuthenticationException)", "summary", "df-generated"] + - ["org.acegisecurity", "LockedException", "LockedException", "(String)", "summary", "df-generated"] + - ["org.acegisecurity", "LockedException", "LockedException", "(String,Throwable)", "summary", "df-generated"] + - ["org.acegisecurity", "LockedException", "fromSpring", "(LockedException)", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "BuildStatusIcon", "isBuildStatus", "()", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "BuildStatusIcon", "isInProgress", "()", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "Icon", "isSvgSprite", "()", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", "getSymbol", "(String,String,String,String,String,String,String)", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", "initPageVariables", "(JellyContext)", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", "toNormalizedIconNameClass", "(Object)", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", "toNormalizedIconSizeClass", "(Object)", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", "toNormalizedIconUrl", "(Object)", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", "tryTranslateTangoIconToSymbol", "(String)", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "IconSet", "tryTranslateTangoIconToSymbol", "(String,Supplier)", "summary", "df-generated"] + - ["org.jenkins.ui.icon", "IconSpec", "getIconClassName", "()", "summary", "df-generated"] + - ["org.jenkins.ui.symbol", "Symbol", "get", "(SymbolRequest)", "summary", "df-generated"] + - ["org.springframework.dao", "DataAccessException", "DataAccessException", "(String)", "summary", "df-generated"] + - ["org.springframework.dao", "DataAccessException", "DataAccessException", "(String,Throwable)", "summary", "df-generated"] + - ["org.springframework.dao", "DataAccessException", "toSpring", "()", "summary", "df-generated"] + - ["org.springframework.dao", "DataAccessResourceFailureException", "DataAccessResourceFailureException", "(String)", "summary", "df-generated"] + - ["org.springframework.dao", "DataAccessResourceFailureException", "DataAccessResourceFailureException", "(String,Throwable)", "summary", "df-generated"] + - ["org.springframework.dao", "DataRetrievalFailureException", "DataRetrievalFailureException", "(String)", "summary", "df-generated"] + - ["org.springframework.dao", "DataRetrievalFailureException", "DataRetrievalFailureException", "(String,Throwable)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/kotlinstdlib.model.yml b/java/ql/lib/ext/generated/kotlinstdlib.model.yml index bc296146214..a4f310b20b9 100644 --- a/java/ql/lib/ext/generated/kotlinstdlib.model.yml +++ b/java/ql/lib/ext/generated/kotlinstdlib.model.yml @@ -6,18 +6,18 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["kotlin.io", "FilesKt", false, "appendBytes", "(File,byte[])", "", "Argument[0]", "create-file", "df-generated"] - - ["kotlin.io", "FilesKt", false, "appendText", "(File,String,Charset)", "", "Argument[0]", "create-file", "df-generated"] - - ["kotlin.io", "FilesKt", false, "bufferedWriter", "(File,Charset,int)", "", "Argument[0]", "create-file", "df-generated"] - - ["kotlin.io", "FilesKt", false, "copyRecursively", "(File,File,boolean,Function2)", "", "Argument[1]", "create-file", "df-generated"] - - ["kotlin.io", "FilesKt", false, "copyTo", "(File,File,boolean,int)", "", "Argument[1]", "create-file", "df-generated"] - - ["kotlin.io", "FilesKt", false, "outputStream", "(File)", "", "Argument[0]", "create-file", "df-generated"] - - ["kotlin.io", "FilesKt", false, "printWriter", "(File,Charset)", "", "Argument[0]", "create-file", "df-generated"] - - ["kotlin.io", "FilesKt", false, "writeBytes", "(File,byte[])", "", "Argument[0]", "create-file", "df-generated"] - - ["kotlin.io", "FilesKt", false, "writeText", "(File,String,Charset)", "", "Argument[0]", "create-file", "df-generated"] - - ["kotlin.io", "FilesKt", false, "writer", "(File,Charset)", "", "Argument[0]", "create-file", "df-generated"] - - ["kotlin.io", "TextStreamsKt", false, "readBytes", "(URL)", "", "Argument[0]", "open-url", "df-generated"] - - ["kotlin.io", "TextStreamsKt", false, "readText", "(URL,Charset)", "", "Argument[0]", "open-url", "df-generated"] + - ["kotlin.io", "FilesKt", false, "appendBytes", "(File,byte[])", "", "Argument[0]", "path-injection", "df-generated"] + - ["kotlin.io", "FilesKt", false, "appendText", "(File,String,Charset)", "", "Argument[0]", "path-injection", "df-generated"] + - ["kotlin.io", "FilesKt", false, "bufferedWriter", "(File,Charset,int)", "", "Argument[0]", "path-injection", "df-generated"] + - ["kotlin.io", "FilesKt", false, "copyRecursively", "(File,File,boolean,Function2)", "", "Argument[1]", "path-injection", "df-generated"] + - ["kotlin.io", "FilesKt", false, "copyTo", "(File,File,boolean,int)", "", "Argument[1]", "path-injection", "df-generated"] + - ["kotlin.io", "FilesKt", false, "outputStream", "(File)", "", "Argument[0]", "path-injection", "df-generated"] + - ["kotlin.io", "FilesKt", false, "printWriter", "(File,Charset)", "", "Argument[0]", "path-injection", "df-generated"] + - ["kotlin.io", "FilesKt", false, "writeBytes", "(File,byte[])", "", "Argument[0]", "path-injection", "df-generated"] + - ["kotlin.io", "FilesKt", false, "writeText", "(File,String,Charset)", "", "Argument[0]", "path-injection", "df-generated"] + - ["kotlin.io", "FilesKt", false, "writer", "(File,Charset)", "", "Argument[0]", "path-injection", "df-generated"] + - ["kotlin.io", "TextStreamsKt", false, "readBytes", "(URL)", "", "Argument[0]", "request-forgery", "df-generated"] + - ["kotlin.io", "TextStreamsKt", false, "readText", "(URL,Charset)", "", "Argument[0]", "request-forgery", "df-generated"] - addsTo: diff --git a/java/ql/lib/ext/generated/org.apache.commons.io.model.yml b/java/ql/lib/ext/generated/org.apache.commons.io.model.yml index 3a40daa82ec..c220b8c82eb 100644 --- a/java/ql/lib/ext/generated/org.apache.commons.io.model.yml +++ b/java/ql/lib/ext/generated/org.apache.commons.io.model.yml @@ -6,112 +6,112 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.commons.io.file", "PathFilter", true, "accept", "(Path,BasicFileAttributes)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.file", "PathUtils", false, "copyFile", "(URL,Path,CopyOption[])", "", "Argument[0]", "open-url", "df-generated"] - - ["org.apache.commons.io.file", "PathUtils", false, "copyFile", "(URL,Path,CopyOption[])", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io.file", "PathUtils", false, "copyFileToDirectory", "(Path,Path,CopyOption[])", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io.file", "PathUtils", false, "copyFileToDirectory", "(URL,Path,CopyOption[])", "", "Argument[0]", "open-url", "df-generated"] - - ["org.apache.commons.io.file", "PathUtils", false, "copyFileToDirectory", "(URL,Path,CopyOption[])", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io.file", "PathUtils", false, "newOutputStream", "(Path,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.file", "PathUtils", false, "writeString", "(Path,CharSequence,Charset,OpenOption[])", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.filefilter", "FileFilterUtils", true, "filter", "(IOFileFilter,File[])", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io.filefilter", "FileFilterUtils", true, "filterList", "(IOFileFilter,File[])", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io.filefilter", "FileFilterUtils", true, "filterSet", "(IOFileFilter,File[])", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io.input", "Tailer$Tailable", true, "getRandomAccess", "(String)", "", "Argument[this]", "create-file", "df-generated"] - - ["org.apache.commons.io.input", "XmlStreamReader", true, "XmlStreamReader", "(URL)", "", "Argument[0]", "open-url", "df-generated"] - - ["org.apache.commons.io.output", "DeferredFileOutputStream", true, "writeTo", "(OutputStream)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(File,Charset)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(File,Charset,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(File,CharsetEncoder)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(File,CharsetEncoder,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(File,String)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(File,String,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(String,Charset)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(String,Charset,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(String,CharsetEncoder)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(String,CharsetEncoder,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(String,String)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(String,String,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(File)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(File,Charset)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(File,Charset,boolean,String)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(File,String)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(File,String,boolean,String)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(File,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(File,boolean,String)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(String)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(String,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(String,boolean,String)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "XmlStreamWriter", true, "XmlStreamWriter", "(File)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io.output", "XmlStreamWriter", true, "XmlStreamWriter", "(File,String)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyDirectory", "(File,File)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyDirectory", "(File,File,FileFilter)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyDirectory", "(File,File,FileFilter,boolean)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyDirectory", "(File,File,FileFilter,boolean,CopyOption[])", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyDirectory", "(File,File,boolean)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyDirectoryToDirectory", "(File,File)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyFile", "(File,File)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyFile", "(File,File,CopyOption[])", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyFile", "(File,File,boolean)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyFile", "(File,File,boolean,CopyOption[])", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyFileToDirectory", "(File,File)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyFileToDirectory", "(File,File,boolean)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyInputStreamToFile", "(InputStream,File)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyToDirectory", "(File,File)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyToDirectory", "(Iterable,File)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyToFile", "(InputStream,File)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyURLToFile", "(URL,File)", "", "Argument[0]", "open-url", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyURLToFile", "(URL,File)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyURLToFile", "(URL,File,int,int)", "", "Argument[0]", "open-url", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "copyURLToFile", "(URL,File,int,int)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "moveDirectory", "(File,File)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "moveDirectoryToDirectory", "(File,File,boolean)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "moveFile", "(File,File)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "moveFile", "(File,File,CopyOption[])", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "moveFileToDirectory", "(File,File,boolean)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "moveToDirectory", "(File,File,boolean)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "newOutputStream", "(File,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "openOutputStream", "(File)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "openOutputStream", "(File,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "touch", "(File)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "write", "(File,CharSequence)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "write", "(File,CharSequence,Charset)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "write", "(File,CharSequence,Charset,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "write", "(File,CharSequence,String)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "write", "(File,CharSequence,String,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "write", "(File,CharSequence,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "writeByteArrayToFile", "(File,byte[])", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "writeByteArrayToFile", "(File,byte[],boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "writeByteArrayToFile", "(File,byte[],int,int)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "writeByteArrayToFile", "(File,byte[],int,int,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "writeLines", "(File,Collection)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "writeLines", "(File,Collection,String)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "writeLines", "(File,Collection,String,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "writeLines", "(File,Collection,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "writeLines", "(File,String,Collection)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "writeLines", "(File,String,Collection,String)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "writeLines", "(File,String,Collection,String,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "writeLines", "(File,String,Collection,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "writeStringToFile", "(File,String)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "writeStringToFile", "(File,String,Charset)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "writeStringToFile", "(File,String,Charset,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "writeStringToFile", "(File,String,String)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "writeStringToFile", "(File,String,String,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "FileUtils", true, "writeStringToFile", "(File,String,boolean)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "IOUtils", true, "copy", "(URL,File)", "", "Argument[0]", "open-url", "df-generated"] - - ["org.apache.commons.io", "IOUtils", true, "copy", "(URL,File)", "", "Argument[1]", "create-file", "df-generated"] - - ["org.apache.commons.io", "IOUtils", true, "copy", "(URL,OutputStream)", "", "Argument[0]", "open-url", "df-generated"] - - ["org.apache.commons.io", "IOUtils", true, "toByteArray", "(URI)", "", "Argument[0]", "open-url", "df-generated"] - - ["org.apache.commons.io", "IOUtils", true, "toByteArray", "(URL)", "", "Argument[0]", "open-url", "df-generated"] - - ["org.apache.commons.io", "IOUtils", true, "toString", "(URI)", "", "Argument[0]", "open-url", "df-generated"] - - ["org.apache.commons.io", "IOUtils", true, "toString", "(URI,Charset)", "", "Argument[0]", "open-url", "df-generated"] - - ["org.apache.commons.io", "IOUtils", true, "toString", "(URI,String)", "", "Argument[0]", "open-url", "df-generated"] - - ["org.apache.commons.io", "IOUtils", true, "toString", "(URL)", "", "Argument[0]", "open-url", "df-generated"] - - ["org.apache.commons.io", "IOUtils", true, "toString", "(URL,Charset)", "", "Argument[0]", "open-url", "df-generated"] - - ["org.apache.commons.io", "IOUtils", true, "toString", "(URL,String)", "", "Argument[0]", "open-url", "df-generated"] - - ["org.apache.commons.io", "RandomAccessFileMode", false, "create", "(File)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "RandomAccessFileMode", false, "create", "(Path)", "", "Argument[0]", "create-file", "df-generated"] - - ["org.apache.commons.io", "RandomAccessFileMode", false, "create", "(String)", "", "Argument[0]", "create-file", "df-generated"] + - ["org.apache.commons.io.file", "PathFilter", true, "accept", "(Path,BasicFileAttributes)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.file", "PathUtils", false, "copyFile", "(URL,Path,CopyOption[])", "", "Argument[0]", "request-forgery", "df-generated"] + - ["org.apache.commons.io.file", "PathUtils", false, "copyFile", "(URL,Path,CopyOption[])", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io.file", "PathUtils", false, "copyFileToDirectory", "(Path,Path,CopyOption[])", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io.file", "PathUtils", false, "copyFileToDirectory", "(URL,Path,CopyOption[])", "", "Argument[0]", "request-forgery", "df-generated"] + - ["org.apache.commons.io.file", "PathUtils", false, "copyFileToDirectory", "(URL,Path,CopyOption[])", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io.file", "PathUtils", false, "newOutputStream", "(Path,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.file", "PathUtils", false, "writeString", "(Path,CharSequence,Charset,OpenOption[])", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.filefilter", "FileFilterUtils", true, "filter", "(IOFileFilter,File[])", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io.filefilter", "FileFilterUtils", true, "filterList", "(IOFileFilter,File[])", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io.filefilter", "FileFilterUtils", true, "filterSet", "(IOFileFilter,File[])", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io.input", "Tailer$Tailable", true, "getRandomAccess", "(String)", "", "Argument[this]", "path-injection", "df-generated"] + - ["org.apache.commons.io.input", "XmlStreamReader", true, "XmlStreamReader", "(URL)", "", "Argument[0]", "request-forgery", "df-generated"] + - ["org.apache.commons.io.output", "DeferredFileOutputStream", true, "writeTo", "(OutputStream)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(File,Charset)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(File,Charset,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(File,CharsetEncoder)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(File,CharsetEncoder,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(File,String)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(File,String,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(String,Charset)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(String,Charset,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(String,CharsetEncoder)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(String,CharsetEncoder,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(String,String)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "FileWriterWithEncoding", true, "FileWriterWithEncoding", "(String,String,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(File)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(File,Charset)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(File,Charset,boolean,String)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(File,String)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(File,String,boolean,String)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(File,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(File,boolean,String)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(String)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(String,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "LockableFileWriter", true, "LockableFileWriter", "(String,boolean,String)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "XmlStreamWriter", true, "XmlStreamWriter", "(File)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io.output", "XmlStreamWriter", true, "XmlStreamWriter", "(File,String)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyDirectory", "(File,File)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyDirectory", "(File,File,FileFilter)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyDirectory", "(File,File,FileFilter,boolean)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyDirectory", "(File,File,FileFilter,boolean,CopyOption[])", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyDirectory", "(File,File,boolean)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyDirectoryToDirectory", "(File,File)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyFile", "(File,File)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyFile", "(File,File,CopyOption[])", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyFile", "(File,File,boolean)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyFile", "(File,File,boolean,CopyOption[])", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyFileToDirectory", "(File,File)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyFileToDirectory", "(File,File,boolean)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyInputStreamToFile", "(InputStream,File)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyToDirectory", "(File,File)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyToDirectory", "(Iterable,File)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyToFile", "(InputStream,File)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyURLToFile", "(URL,File)", "", "Argument[0]", "request-forgery", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyURLToFile", "(URL,File)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyURLToFile", "(URL,File,int,int)", "", "Argument[0]", "request-forgery", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "copyURLToFile", "(URL,File,int,int)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "moveDirectory", "(File,File)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "moveDirectoryToDirectory", "(File,File,boolean)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "moveFile", "(File,File)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "moveFile", "(File,File,CopyOption[])", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "moveFileToDirectory", "(File,File,boolean)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "moveToDirectory", "(File,File,boolean)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "newOutputStream", "(File,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "openOutputStream", "(File)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "openOutputStream", "(File,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "touch", "(File)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "write", "(File,CharSequence)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "write", "(File,CharSequence,Charset)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "write", "(File,CharSequence,Charset,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "write", "(File,CharSequence,String)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "write", "(File,CharSequence,String,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "write", "(File,CharSequence,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "writeByteArrayToFile", "(File,byte[])", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "writeByteArrayToFile", "(File,byte[],boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "writeByteArrayToFile", "(File,byte[],int,int)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "writeByteArrayToFile", "(File,byte[],int,int,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "writeLines", "(File,Collection)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "writeLines", "(File,Collection,String)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "writeLines", "(File,Collection,String,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "writeLines", "(File,Collection,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "writeLines", "(File,String,Collection)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "writeLines", "(File,String,Collection,String)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "writeLines", "(File,String,Collection,String,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "writeLines", "(File,String,Collection,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "writeStringToFile", "(File,String)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "writeStringToFile", "(File,String,Charset)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "writeStringToFile", "(File,String,Charset,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "writeStringToFile", "(File,String,String)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "writeStringToFile", "(File,String,String,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "FileUtils", true, "writeStringToFile", "(File,String,boolean)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "IOUtils", true, "copy", "(URL,File)", "", "Argument[0]", "request-forgery", "df-generated"] + - ["org.apache.commons.io", "IOUtils", true, "copy", "(URL,File)", "", "Argument[1]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "IOUtils", true, "copy", "(URL,OutputStream)", "", "Argument[0]", "request-forgery", "df-generated"] + - ["org.apache.commons.io", "IOUtils", true, "toByteArray", "(URI)", "", "Argument[0]", "request-forgery", "df-generated"] + - ["org.apache.commons.io", "IOUtils", true, "toByteArray", "(URL)", "", "Argument[0]", "request-forgery", "df-generated"] + - ["org.apache.commons.io", "IOUtils", true, "toString", "(URI)", "", "Argument[0]", "request-forgery", "df-generated"] + - ["org.apache.commons.io", "IOUtils", true, "toString", "(URI,Charset)", "", "Argument[0]", "request-forgery", "df-generated"] + - ["org.apache.commons.io", "IOUtils", true, "toString", "(URI,String)", "", "Argument[0]", "request-forgery", "df-generated"] + - ["org.apache.commons.io", "IOUtils", true, "toString", "(URL)", "", "Argument[0]", "request-forgery", "df-generated"] + - ["org.apache.commons.io", "IOUtils", true, "toString", "(URL,Charset)", "", "Argument[0]", "request-forgery", "df-generated"] + - ["org.apache.commons.io", "IOUtils", true, "toString", "(URL,String)", "", "Argument[0]", "request-forgery", "df-generated"] + - ["org.apache.commons.io", "RandomAccessFileMode", false, "create", "(File)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "RandomAccessFileMode", false, "create", "(Path)", "", "Argument[0]", "path-injection", "df-generated"] + - ["org.apache.commons.io", "RandomAccessFileMode", false, "create", "(String)", "", "Argument[0]", "path-injection", "df-generated"] - addsTo: @@ -1428,5 +1428,3 @@ extensions: - ["org.apache.commons.io", "UncheckedIOExceptions", "UncheckedIOExceptions", "()", "summary", "df-generated"] - ["org.apache.commons.io", "UncheckedIOExceptions", "create", "(Object)", "summary", "df-generated"] - ["org.apache.commons.io", "UncheckedIOExceptions", "wrap", "(IOException,Object)", "summary", "df-generated"] - - \ No newline at end of file diff --git a/java/ql/lib/ext/generated/stapler.model.yml b/java/ql/lib/ext/generated/stapler.model.yml new file mode 100644 index 00000000000..a82d01328d6 --- /dev/null +++ b/java/ql/lib/ext/generated/stapler.model.yml @@ -0,0 +1,679 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +# Definitions of models for the Stapler framework. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["org.kohsuke.stapler.bind", "Bound", true, "getProxyScript", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.bind", "Bound", true, "getTarget", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.bind", "Bound", true, "getURL", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.bind", "BoundObjectTable$Table", true, "getDynamic", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.bind", "BoundObjectTable", true, "bind", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.compression", "FilterServletOutputStream", true, "FilterServletOutputStream", "(OutputStream,ServletOutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.compression", "FilterServletOutputStream", true, "FilterServletOutputStream", "(OutputStream,ServletOutputStream)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ClassAttributeBehaviour", true, "simple", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ClassAttributeBehaviour", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", true, "getExportConfig", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", true, "name", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", true, "value", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", true, "getClassAttribute", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", true, "getExportInterceptor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", true, "withClassAttribute", "(ClassAttributeBehaviour)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", true, "withClassAttribute", "(ClassAttributeBehaviour)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", true, "withExportInterceptor", "(ExportInterceptor)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", true, "withExportInterceptor", "(ExportInterceptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", true, "withFlavor", "(Flavor)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", true, "withPrettyPrint", "(boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", true, "withSkipIfFail", "(boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler.export", "Flavor", true, "createDataWriter", "(Object,StaplerResponse)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Flavor", true, "createDataWriter", "(Object,Writer)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Flavor", true, "createDataWriter", "(Object,Writer,ExportConfig)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Flavor", true, "createDataWriter", "(Object,Writer,ExportConfig)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Model", true, "getProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Model", true, "writeTo", "(Object,DataWriter)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Model", true, "writeTo", "(Object,TreePruner,DataWriter)", "", "Argument[this]", "Argument[2]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Model", true, "writeTo", "(Object,int,DataWriter)", "", "Argument[this]", "Argument[2]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ModelBuilder", true, "get", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ModelBuilder", true, "get", "(Class,Class,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "ModelBuilder", true, "getOrNull", "(Class,Class,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "NotExportableException", true, "NotExportableException", "(Class,Class,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "NotExportableException", true, "NotExportableException", "(String,Class)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Property", true, "getJavadoc", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Property", true, "writeTo", "(Object,TreePruner,DataWriter)", "", "Argument[this]", "Argument[2]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Property", true, "writeTo", "(Object,int,DataWriter)", "", "Argument[this]", "Argument[2]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Range", true, "apply", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Range", true, "apply", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Range", true, "apply", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "Range", true, "apply", "(Object[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "SchemaGenerator", true, "SchemaGenerator", "(Model)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "TreePruner", true, "accept", "(Object,Property)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "TreePruner", true, "accept", "(Object,Property)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler.export", "TreePruner", true, "getRange", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "TypeUtil", true, "getBaseClass", "(Type,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.export", "TypeUtil", true, "getTypeArgument", "(Type,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "Adjunct", true, "Adjunct", "(AdjunctManager,String,ClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "Adjunct", true, "Adjunct", "(AdjunctManager,String,ClassLoader)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "Adjunct", true, "getPackageUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "AdjunctManager", "(ServletContext,ClassLoader,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "AdjunctManager", "(ServletContext,ClassLoader,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "AdjunctManager", "(ServletContext,ClassLoader,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "AdjunctManager", "(ServletContext,ClassLoader,String,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "AdjunctManager", "(ServletContext,ClassLoader,String,long)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "AdjunctManager", "(ServletContext,ClassLoader,String,long)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "doDynamic", "(StaplerRequest,StaplerResponse)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "get", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "get", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", true, "get", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctsInPage", true, "assumeIncluded", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctsInPage", true, "assumeIncluded", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctsInPage", true, "generate", "(XMLOutput,String[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctsInPage", true, "get", "(StaplerRequest)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctsInPage", true, "getIncluded", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctsInPage", true, "spool", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "NoSuchAdjunctException", true, "NoSuchAdjunctException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "NoSuchAdjunctException", true, "NoSuchAdjunctException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.errors", "ErrorObject", true, "getMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.errors", "NoHomeDirError", true, "NoHomeDirError", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "AtomicFileWriter", true, "AtomicFileWriter", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "AtomicFileWriter", true, "getTemporaryFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "ByteBuffer", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "ByteBuffer", true, "writeTo", "(OutputStream)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "CharSpool", false, "writeTo", "(Writer)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "IOException2", true, "IOException2", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "IOException2", true, "IOException2", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "WriterOutputStream", true, "WriterOutputStream", "(Writer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "WriterOutputStream", true, "WriterOutputStream", "(Writer,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.framework", "AbstractWebAppMain", true, "getInitializer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.interceptor", "Interceptor", true, "setTarget", "(Function)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.interceptor", "JsonOutputFilter$FilterPropertyFilter", true, "FilterPropertyFilter", "(Set,Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.interceptor", "JsonOutputFilter$FilterPropertyFilter", true, "FilterPropertyFilter", "(Set,Set)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.interceptor", "JsonOutputFilter$FilterPropertyFilter", true, "FilterPropertyFilter", "(String[],String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.interceptor", "JsonOutputFilter$FilterPropertyFilter", true, "FilterPropertyFilter", "(String[],String[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovierJellyScript", true, "GroovierJellyScript", "(Class,URL)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyClassLoaderTearOff", true, "GroovyClassLoaderTearOff", "(MetaClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyClassLoaderTearOff", true, "parse", "(URL)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyClassLoaderTearOff", true, "parseGSP", "(URL)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyClassTearOff", false, "GroovyClassTearOff", "(MetaClass)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyClassTearOff", false, "createDispatcher", "(Object,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyClassTearOff", false, "createDispatcher", "(Object,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyClosureScript", true, "getDelegate", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyClosureScript", true, "setDelegate", "(GroovyObject)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyServerPageScript", true, "getOut", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyServerPageTearOff", true, "GroovyServerPageTearOff", "(MetaClass)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyServerPageTearOff", true, "createDispatcher", "(Object,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovyServerPageTearOff", true, "createDispatcher", "(Object,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "JellyBuilder", "(JellyContext,XMLOutput)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "JellyBuilder", "(JellyContext,XMLOutput)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "getBuilder", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "getContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "getOutput", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "getRequest", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "getResponse", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "getRootURL", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "jelly", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "namespace", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "namespace", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "namespace", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "namespace", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "namespace", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "res", "(Object,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "res", "(Object,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "setOutput", "(XMLOutput)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "setOutput", "(XMLOutput)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", false, "with", "(XMLOutput,Closure)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "StaplerClosureScript", true, "gettext", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "StaplerClosureScript", true, "gettext", "(String,Object[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "AdjunctTag", true, "setAssumes", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "AdjunctTag", true, "setIncludes", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "BindTag", true, "setValue", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "BindTag", true, "setVar", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ContentTypeTag", true, "setValue", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "CopyStreamTag", true, "setInputStream", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "CopyStreamTag", true, "setReader", "(Reader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "CustomTagLibrary", false, "CustomTagLibrary", "(JellyContext,ClassLoader,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "CustomTagLibrary", false, "CustomTagLibrary", "(JellyContext,ClassLoader,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "CustomTagLibrary", false, "CustomTagLibrary", "(JellyContext,ClassLoader,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "CustomTagLibrary", false, "CustomTagLibrary", "(JellyContext,ClassLoader,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "DoctypeTag", true, "setPublicId", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "DoctypeTag", true, "setSystemId", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "FindAncestorTag", true, "setTag", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "FindAncestorTag", true, "setVar", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "HeaderTag", true, "setName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "HeaderTag", true, "setValue", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "IncludeTag", true, "setFrom", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "IncludeTag", true, "setIt", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "IncludeTag", true, "setPage", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "InternationalizedStringExpression$RawHtmlArgument", false, "RawHtmlArgument", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "InternationalizedStringExpression", true, "InternationalizedStringExpression", "(ResourceBundle,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "InternationalizedStringExpression", true, "InternationalizedStringExpression", "(ResourceBundle,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "InternationalizedStringExpression", true, "getArguments", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "IsUserInRoleTag", true, "setRole", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyClassLoaderTearOff", true, "JellyClassLoaderTearOff", "(MetaClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyClassTearOff", true, "JellyClassTearOff", "(MetaClass)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyClassTearOff", true, "createDispatcher", "(Object,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyClassTearOff", true, "createDispatcher", "(Object,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyClassTearOff", true, "createDispatcher", "(Object,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyRequestDispatcher", false, "JellyRequestDispatcher", "(Object,Script)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyRequestDispatcher", false, "JellyRequestDispatcher", "(Object,Script)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyViewScript", false, "JellyViewScript", "(Class,URL,Script)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyViewScript", false, "JellyViewScript", "(Class,URL,Script)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyViewScript", false, "JellyViewScript", "(Klass,URL,Script)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyViewScript", false, "JellyViewScript", "(Klass,URL,Script)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyViewScript", false, "JellyViewScript", "(Klass,URL,Script)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyViewScript", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "OutTag", true, "setValue", "(Expression)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "RedirectTag", true, "setUrl", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ResourceBundle", true, "ResourceBundle", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ResourceBundle", true, "format", "(Locale,String,Object[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ResourceBundle", true, "getBaseName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ResourceBundle", true, "getFormatString", "(Locale,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ResourceBundle", true, "getFormatStringWithoutDefaulting", "(Locale,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ResourceBundle", true, "load", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ResourceBundle", true, "load", "(URL)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ResourceBundleFactory", true, "create", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "SetHeaderTag", true, "setName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "SetHeaderTag", true, "setValue", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "StructuredMessageFormatTag", true, "addArgument", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "StructuredMessageFormatTag", true, "setKey", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ThisTagLibrary", true, "ThisTagLibrary", "(Expression)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.json", "JsonHttpResponse", true, "JsonHttpResponse", "(JSONObject)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.json", "JsonHttpResponse", true, "JsonHttpResponse", "(JSONObject,int)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", false, "Klass", "(Object,KlassNavigator)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", false, "Klass", "(Object,KlassNavigator)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", false, "getArrayElement", "(Object,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", false, "getMapElement", "(Object,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", true, "getArrayElement", "(Object,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", true, "getMapElement", "(Object,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler.tags", "Include", true, "setIt", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.tags", "Include", true, "setPage", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler.util", "IllegalReflectiveAccessLogHandler", true, "get", "(IllegalAccessException)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "AbstractTearOff", true, "resolveScript", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "AcceptHeader", false, "AcceptHeader", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "AcceptHeader", false, "select", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "AcceptHeader", false, "select", "(String[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "AcceptHeader", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Ancestor", true, "getFullUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Ancestor", true, "getNext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Ancestor", true, "getNextToken", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Ancestor", true, "getObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Ancestor", true, "getPrev", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Ancestor", true, "getRestOfUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Ancestor", true, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", true, "AttributeKey", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "CachingScriptLoader", true, "findScript", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "CachingScriptLoader", true, "findScript", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "EvaluationTrace", true, "trace", "(StaplerResponse,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Facet", true, "buildIndexDispatchers", "(MetaClass,List)", "", "Argument[this]", "Argument[1].Element", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Facet", true, "buildIndexDispatchers", "(MetaClass,List)", "", "Argument[0]", "Argument[1].Element", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Facet", true, "buildViewDispatchers", "(MetaClass,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Facet", true, "createRequestDispatcher", "(RequestImpl,Class,Object,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Facet", true, "createRequestDispatcher", "(RequestImpl,Klass,Object,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Facet", true, "createRequestDispatcher", "(RequestImpl,Klass,Object,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Facet", true, "createRequestDispatcher", "(RequestImpl,Klass,Object,String)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ForwardToView", true, "optional", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler", "ForwardToView", true, "with", "(Map)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler", "ForwardToView", true, "with", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ForwardToView", true, "with", "(String,Object)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler", "ForwardToView", true, "with", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ForwardToView", true, "with", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ForwardingFunction", true, "ForwardingFunction", "(Function)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Function$InstanceFunction", true, "InstanceFunction", "(Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Function", true, "contextualize", "(Object)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.kohsuke.stapler", "Function", true, "getParameterNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "FunctionList", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "FunctionList", "(Function[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "annotated", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "name", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "prefix", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "signature", "(Class[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "signatureStartsWith", "(Class[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "union", "(FunctionList)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "union", "(FunctionList)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList", false, "webMethodsLegacy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpRedirect", false, "HttpRedirect", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpRedirect", false, "HttpRedirect", "(int,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses$HttpResponseException", true, "HttpResponseException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses$HttpResponseException", true, "HttpResponseException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses$HttpResponseException", true, "HttpResponseException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses$HttpResponseException", true, "HttpResponseException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", true, "error", "(Throwable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", true, "error", "(int,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", true, "error", "(int,Throwable)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", true, "redirectTo", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", true, "redirectTo", "(int,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "JavaScriptMethodContext", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "MetaClass", true, "getPostConstructMethods", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "MetaClass", true, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "MetaClassLoader", true, "MetaClassLoader", "(ClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "MetaClassLoader", true, "get", "(ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "NoStaplerConstructorException", true, "NoStaplerConstructorException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "RawHtmlArgument", true, "RawHtmlArgument", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "RawHtmlArgument", true, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ReflectionUtils", true, "union", "(Annotation[],Annotation[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ReflectionUtils", true, "union", "(Annotation[],Annotation[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "RequestImpl", true, "RequestImpl", "(Stapler,HttpServletRequest,List,TokenList)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "RequestImpl", true, "RequestImpl", "(Stapler,HttpServletRequest,List,TokenList)", "", "Argument[2].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "RequestImpl", true, "RequestImpl", "(Stapler,HttpServletRequest,List,TokenList)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "RequestImpl", true, "getView", "(Klass,Object,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "RequestImpl", true, "getView", "(Klass,Object,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ResponseImpl", true, "ResponseImpl", "(Stapler,HttpServletResponse)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ResponseImpl", true, "ResponseImpl", "(Stapler,HttpServletResponse)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ResponseImpl", true, "encode", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ScriptLoadException", true, "ScriptLoadException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ScriptLoadException", true, "ScriptLoadException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "ScriptLoadException", true, "ScriptLoadException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "SingleLinkedList", true, "SingleLinkedList", "(Object,SingleLinkedList)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "SingleLinkedList", true, "SingleLinkedList", "(Object,SingleLinkedList)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "SingleLinkedList", true, "grow", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "SingleLinkedList", true, "grow", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", true, "escape", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", true, "getClassLoader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", true, "getViewURL", "(Class,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", true, "getWebApp", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", true, "htmlSafeArgument", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", true, "htmlSafeArguments", "(Object[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "bindJSON", "(Type,Class,Object)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "findAncestor", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "findAncestor", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getAncestors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getBindInterceptor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getFileItem", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getOriginalRequestURI", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getOriginalRestOfPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getRestOfPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getStapler", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getSubmittedForm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getView", "(Class,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getView", "(Klass,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getView", "(Object,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getView", "(Object,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "getWebApp", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "setBindInterceptor", "(BindInterceptor)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "setBindInterceptor", "(BindInterceptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "setBindInterceptpr", "(BindInterceptor)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "setBindInterceptpr", "(BindInterceptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "setBindListener", "(BindInterceptor)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", true, "setBindListener", "(BindInterceptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", true, "getCompressedOutputStream", "(HttpServletRequest)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", true, "getCompressedWriter", "(HttpServletRequest)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", true, "getJsonConfig", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", true, "setJsonConfig", "(JsonConfig)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponseWrapper", true, "StaplerResponseWrapper", "(StaplerResponse)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponseWrapper", true, "getWrapped", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaticViewFacet", true, "StaticViewFacet", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaticViewFacet", true, "StaticViewFacet", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "StaticViewFacet", true, "addExtension", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", false, "assembleOriginalRestOfPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", false, "assembleRestOfPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", false, "decode", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", false, "get", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", false, "next", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", false, "peek", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", false, "prev", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", false, "toString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "TraversalMethodContext", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "WebApp", "(ServletContext)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "get", "(ServletContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getClassLoader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getCrumbIssuer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getDispatchValidator", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getDispatchersFilter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getFilterForDoActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getFilterForFields", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getFilterForGetMethods", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getFilteredDispatchTriggerListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getFilteredDoActionTriggerListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getFilteredFieldTriggerListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getFilteredGetterTriggerListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getJsonInErrorMessageSanitizer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getMetaClass", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getMetaClass", "(Klass)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getMetaClass", "(Klass)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getMetaClass", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getResponseRenderers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "getSomeStapler", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setClassLoader", "(ClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setCrumbIssuer", "(CrumbIssuer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setDispatchValidator", "(DispatchValidator)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setDispatchersFilter", "(DispatchersFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setFilterForDoActions", "(Filter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setFilterForFields", "(Filter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setFilterForGetMethods", "(Filter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setFilteredDispatchTriggerListener", "(FilteredDispatchTriggerListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setFilteredDoActionTriggerListener", "(FilteredDoActionTriggerListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setFilteredFieldTriggerListener", "(FilteredFieldTriggerListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setFilteredGetterTriggerListener", "(FilteredGetterTriggerListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", true, "setJsonInErrorMessageSanitizer", "(JsonInErrorMessageSanitizer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WebMethodContext", false, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.kohsuke.stapler", "WrongTypeException", true, "WrongTypeException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["org.kohsuke.stapler.bind", "Bound", "getTarget", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.bind", "Bound", "getURL", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.bind", "Bound", "release", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.bind", "BoundObjectTable$Table", "doEnableLogging", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.bind", "BoundObjectTable", "bindWeak", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.bind", "BoundObjectTable", "getTable", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.bind", "BoundObjectTable", "releaseMe", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.compression", "CompressionFilter", "activate", "(ServletRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler.compression", "CompressionFilter", "getUncaughtExceptionHandler", "(ServletContext)", "summary", "df-generated"] + - ["org.kohsuke.stapler.compression", "CompressionFilter", "has", "(ServletRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler.compression", "CompressionFilter", "setUncaughtExceptionHandler", "(ServletContext,UncaughtExceptionHandler)", "summary", "df-generated"] + - ["org.kohsuke.stapler.compression", "CompressionServletResponse", "CompressionServletResponse", "(HttpServletResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler.compression", "CompressionServletResponse", "activate", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.compression", "CompressionServletResponse", "close", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.compression", "UncaughtExceptionHandler", "reportException", "(Throwable,ServletContext,HttpServletRequest,HttpServletResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler.config", "ConfigurationLoader", "as", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.config", "ConfigurationLoader", "from", "(File)", "summary", "df-generated"] + - ["org.kohsuke.stapler.config", "ConfigurationLoader", "from", "(Map)", "summary", "df-generated"] + - ["org.kohsuke.stapler.config", "ConfigurationLoader", "from", "(Properties)", "summary", "df-generated"] + - ["org.kohsuke.stapler.config", "ConfigurationLoader", "fromEnvironmentVariables", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.config", "ConfigurationLoader", "fromSystemProperties", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.event", "FilteredDispatchTriggerListener", "onDispatchTrigger", "(StaplerRequest,StaplerResponse,Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.event", "FilteredDoActionTriggerListener", "onDoActionTrigger", "(Function,StaplerRequest,StaplerResponse,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.event", "FilteredFieldTriggerListener", "onFieldTrigger", "(FieldRef,StaplerRequest,StaplerResponse,Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.event", "FilteredGetterTriggerListener", "onGetterTrigger", "(Function,StaplerRequest,StaplerResponse,Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "endArray", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "endObject", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "getExportConfig", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "name", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "startArray", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "startObject", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "type", "(Type,Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "value", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "valueNull", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "DataWriter", "valuePrimitive", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", "getFlavor", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", "isPrettyPrint", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportConfig", "isSkipIfFail", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "ExportInterceptor", "getValue", "(Property,Object,ExportConfig)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "Flavor", "createDataWriter", "(Object,Writer,ExportConfig)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "NamedPathPruner", "NamedPathPruner", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "NotExportableException", "NotExportableException", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "NotExportableException", "NotExportableException", "(String,Throwable,Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "NotExportableException", "NotExportableException", "(Throwable,Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "NotExportableException", "getType", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "Property", "getGenericType", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "Property", "getJavadoc", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "Property", "getType", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "Property", "getValue", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "Range", "Range", "(int,int)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "SchemaGenerator", "add", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "SchemaGenerator", "generateSchema", "(Result)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "SchemaGenerator", "getXmlTypeName", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "TreePruner$ByDepth", "ByDepth", "(int)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "TreePruner", "accept", "(Object,Property)", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "TreePruner", "getRange", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.export", "TypeUtil", "erasure", "(Type)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "Adjunct", "has", "(Kind)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "Adjunct", "write", "(StaplerRequest,XMLOutput)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctManager", "get", "(ServletContext)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctsInPage", "get", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctsInPage", "isIncluded", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "AdjunctsInPage", "writeSpooled", "(XMLOutput)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.adjunct", "NoSuchAdjunctException", "NoSuchAdjunctException", "(Throwable)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.errors", "ErrorObject", "getMessage", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "AtomicFileWriter", "commit", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "ByteBuffer", "length", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "ByteBuffer", "newInputStream", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "IOException2", "IOException2", "(Throwable)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "LargeText", "(ByteBuffer,Charset,boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "LargeText", "(ByteBuffer,boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "LargeText", "(File,Charset,boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "LargeText", "(File,Charset,boolean,boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "LargeText", "(File,boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "LargeText", "(File,boolean,boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "doProgressText", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "isComplete", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "length", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "markAsComplete", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "readAll", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "writeLogTo", "(long,OutputStream)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LargeText", "writeLogTo", "(long,Writer)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework.io", "LineEndNormalizingWriter", "LineEndNormalizingWriter", "(Writer)", "summary", "df-generated"] + - ["org.kohsuke.stapler.framework", "AbstractWebAppMain", "getApplication", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.interceptor", "Interceptor", "invoke", "(StaplerRequest,StaplerResponse,Object,Object[])", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "GroovierJellyScript", "run", "(JellyBuilder)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "adjunct", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "getMy", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "getServletContext", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "img", "(Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "include", "(Class,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "include", "(Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "methodMissing", "(String,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "namespace", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "raw", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "redirectToDom", "(Closure)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "set", "(String,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "taglib", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "JellyBuilder", "text", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "Namespace", "createInvoker", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "Namespace", "endPrefixMapping", "(XMLOutput)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly.groovy", "Namespace", "startPrefixMapping", "(XMLOutput)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "AttributeConstraintsTag", "setExpr", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "AttributeTag", "setDeprecated", "(boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "AttributeTag", "setName", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "AttributeTag", "setSince", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "AttributeTag", "setType", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "AttributeTag", "setUse", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "CopyStreamTag", "setFile", "(File)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "CopyStreamTag", "setUrl", "(URL)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "HTMLWriterOutput", "create", "(OutputStream)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "HTMLWriterOutput", "create", "(Writer,boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "HTMLWriterOutput", "useHTML", "(boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "IncludeTag", "setClass", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "IncludeTag", "setClazz", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "IncludeTag", "setOptional", "(boolean)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "InternationalizedStringExpression", "makeEscapingExpression", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyClassLoaderTearOff", "createContext", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyClassLoaderTearOff", "getTagLibrary", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyClassTearOff", "serveIndexJelly", "(StaplerRequest,StaplerResponse,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyCompatibleFacet", "getClassTearOffTypes", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyCompatibleFacet", "getScriptExtensions", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyFacet", "setExpressionFactory", "(ServletContextEvent,ExpressionFactory)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyTagFileLoader", "discover", "(ClassLoader)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "JellyTagFileLoader", "load", "(CustomTagLibrary,String,ClassLoader)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ReallyStaticTagLibrary", "createTagScript", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ScriptInvoker", "invokeScript", "(StaplerRequest,StaplerResponse,Script,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "ScriptInvoker", "invokeScript", "(StaplerRequest,StaplerResponse,Script,Object,XMLOutput)", "summary", "df-generated"] + - ["org.kohsuke.stapler.jelly", "StatusCodeTag", "setValue", "(int)", "summary", "df-generated"] + - ["org.kohsuke.stapler.json", "JsonHttpResponse", "JsonHttpResponse", "(Throwable,int)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang.util", "FieldRefFilter", "wrap", "(Field)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang.util", "MethodRefFilter", "wrap", "(Method)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "AnnotatedRef", "getAnnotation", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "AnnotatedRef", "hasAnnotation", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "FieldRef$Filter", "keep", "(FieldRef)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "FieldRef", "get", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "FieldRef", "getName", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "FieldRef", "getQualifiedName", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "FieldRef", "getReturnType", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "FieldRef", "getSignature", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "FieldRef", "isRoutable", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "FieldRef", "isStatic", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "FieldRef", "wrap", "(Field)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "getAncestors", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "getDeclaredFields", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "getDeclaredMethods", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "getFields", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "getFunctions", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "getResource", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "getSuperClass", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "isArray", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "isMap", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "java", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "toJavaClass", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "Klass", "toString", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", "getAncestors", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", "getDeclaredFields", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", "getDeclaredMethods", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", "getFunctions", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", "getResource", "(Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", "getSuperClass", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", "isArray", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", "isMap", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "KlassNavigator", "toJavaClass", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "MethodRef", "getName", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "MethodRef", "invoke", "(Object,Object[])", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "MethodRef", "isRoutable", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler.lang", "MethodRef", "wrap", "(Method)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Ancestor", "getRelativePath", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AnnotationHandler", "parse", "(StaplerRequest,Annotation,Class,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", "appScoped", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", "get", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", "get", "(HttpServletRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", "remove", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", "remove", "(HttpServletRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", "requestScoped", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", "sessionScoped", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", "set", "(HttpServletRequest,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "AttributeKey", "set", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "BindInterceptor", "instantiate", "(Class,JSONObject)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "BindInterceptor", "onConvert", "(Type,Class,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "CachingScriptLoader", "clearScripts", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "ClassDescriptor", "ClassDescriptor", "(Class,Class[])", "summary", "df-generated"] + - ["org.kohsuke.stapler", "ClassDescriptor", "loadConstructorParamNames", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "ClassDescriptor", "loadParameterNames", "(Constructor)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "ClassDescriptor", "loadParameterNames", "(Method)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "CrumbIssuer", "doCrumb", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "CrumbIssuer", "issueCrumb", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "CrumbIssuer", "issueCrumb", "(StaplerRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "CrumbIssuer", "validateCrumb", "(StaplerRequest,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "DispatchValidator", "allowDispatch", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "DispatchValidator", "isDispatchAllowed", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "DispatchValidator", "isDispatchAllowed", "(StaplerRequest,StaplerResponse,String,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "DispatchValidator", "requireDispatchAllowed", "(StaplerRequest,StaplerResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "anonymizedTraceEval", "(StaplerRequest,StaplerResponse,Object,String,String[])", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "dispatch", "(RequestImpl,ResponseImpl,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "isTraceEnabled", "(StaplerRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "toString", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "trace", "(StaplerRequest,StaplerResponse,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "trace", "(StaplerRequest,StaplerResponse,String,Object[])", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "traceEval", "(StaplerRequest,StaplerResponse,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "traceEval", "(StaplerRequest,StaplerResponse,Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "traceEval", "(StaplerRequest,StaplerResponse,Object,String,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Dispatcher", "traceable", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "EvaluationTrace$ApplicationTracer", "trace", "(StaplerRequest,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "EvaluationTrace", "get", "(StaplerRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "EvaluationTrace", "printHtml", "(PrintWriter)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Facet", "buildFallbackDispatchers", "(MetaClass,List)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Facet", "buildIndexDispatchers", "(MetaClass,List)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Facet", "buildViewDispatchers", "(MetaClass,List)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Facet", "createRequestDispatcher", "(RequestImpl,Klass,Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Facet", "discover", "(ClassLoader)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Facet", "discoverExtensions", "(Class,ClassLoader[])", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Facet", "getKlass", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Facet", "handleIndexRequest", "(RequestImpl,ResponseImpl,Object,MetaClass)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "ForwardToView", "ForwardToView", "(Class,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "ForwardToView", "ForwardToView", "(Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "ForwardToView", "ForwardToView", "(RequestDispatcher)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getAnnotation", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getAnnotations", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getCheckedExceptionTypes", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getDeclaringClass", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getDisplayName", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getGenericParameterTypes", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getName", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getParameterAnnotations", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getParameterNames", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getParameterTypes", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getQualifiedName", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getReturnType", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "getSignature", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "invoke", "(StaplerRequest,StaplerResponse,Object,Object[])", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "isStatic", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Function", "returnNull", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "FunctionList$Filter", "keep", "(Function)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpRedirect", "fromContextPath", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponse", "generateResponse", "(StaplerRequest,StaplerResponse,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponseRenderer", "generateResponse", "(StaplerRequest,StaplerResponse,Object,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "errorWithoutStack", "(int,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "forbidden", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "forwardToPreviousPage", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "forwardToView", "(Class,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "forwardToView", "(Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "html", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "literalHtml", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "notFound", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "ok", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "plainText", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "redirectToContextRoot", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "redirectToDot", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "redirectViaContextPath", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "redirectViaContextPath", "(int,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "staticResource", "(URL)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "staticResource", "(URL,long)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "status", "(int)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "HttpResponses", "text", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "LocaleDrivenResourceProvider", "lookup", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "MethodHandleFactory", "get", "(Method)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "NoStaplerConstructorException", "NoStaplerConstructorException", "(String,Throwable)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "NoStaplerConstructorException", "NoStaplerConstructorException", "(Throwable)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "RawHtmlArgument", "toString", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "ReflectionUtils", "getVmDefaultValueFor", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "SingleLinkedList", "empty", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "buildResourcePaths", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "forward", "(RequestDispatcher,StaplerRequest,HttpServletResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "getClassLoader", "(ServletContext)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "getCurrent", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "getCurrentRequest", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "getCurrentResponse", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "invoke", "(HttpServletRequest,HttpServletResponse,Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "isSocketException", "(Throwable)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "lookupConverter", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "setClassLoader", "(ServletContext,ClassLoader)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "Stapler", "setRoot", "(ServletContextEvent,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerFallback", "getStaplerFallback", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "bindJSON", "(Class,JSONObject)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "bindJSON", "(Object,JSONObject)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "bindJSONToList", "(Class,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "bindParameters", "(Class,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "bindParameters", "(Class,String,int)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "bindParameters", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "bindParameters", "(Object,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "bindParametersToList", "(Class,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "checkIfModified", "(Calendar,StaplerResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "checkIfModified", "(Date,StaplerResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "checkIfModified", "(long,StaplerResponse)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "checkIfModified", "(long,StaplerResponse,long)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "createJavaScriptProxy", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "findAncestorObject", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "getBoundObjectTable", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "getReferer", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "getRequestURIWithQueryString", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "getRequestURLWithQueryString", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "getRootPath", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "hasParameter", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerRequest", "isJavaScriptProxyCall", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "forward", "(Object,String,StaplerRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "forwardToPreviousPage", "(StaplerRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "reverseProxyTo", "(URL,StaplerRequest)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "sendRedirect2", "(String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "sendRedirect", "(int,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveExposedBean", "(StaplerRequest,Object,ExportConfig)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveExposedBean", "(StaplerRequest,Object,Flavor)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveFile", "(StaplerRequest,InputStream,long,int,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveFile", "(StaplerRequest,InputStream,long,long,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveFile", "(StaplerRequest,InputStream,long,long,int,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveFile", "(StaplerRequest,InputStream,long,long,long,String)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveFile", "(StaplerRequest,URL)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveFile", "(StaplerRequest,URL,long)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveLocalizedFile", "(StaplerRequest,URL)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "StaplerResponse", "serveLocalizedFile", "(StaplerRequest,URL,long)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "TearOffSupport", "getTearOff", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "TearOffSupport", "loadTearOff", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "TearOffSupport", "setTearOff", "(Class,Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", "countRemainingTokens", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", "hasMore", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", "length", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", "nextAsInt", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "TokenList", "nextAsLong", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", "clearMetaClassCache", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", "clearScripts", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", "getApp", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", "getCurrent", "()", "summary", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", "getFacet", "(Class)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", "getKlass", "(Object)", "summary", "df-generated"] + - ["org.kohsuke.stapler", "WebApp", "setApp", "(Object)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/groovy.lang.model.yml b/java/ql/lib/ext/groovy.lang.model.yml index 815beb99041..7c6ac81d1ab 100644 --- a/java/ql/lib/ext/groovy.lang.model.yml +++ b/java/ql/lib/ext/groovy.lang.model.yml @@ -3,30 +3,30 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["groovy.lang", "GroovyClassLoader", False, "parseClass", "(GroovyCodeSource)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyClassLoader", False, "parseClass", "(GroovyCodeSource,boolean)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyClassLoader", False, "parseClass", "(InputStream,String)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyClassLoader", False, "parseClass", "(Reader,String)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyClassLoader", False, "parseClass", "(String)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyClassLoader", False, "parseClass", "(String,String)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "evaluate", "(GroovyCodeSource)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "evaluate", "(Reader)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "evaluate", "(Reader,String)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "evaluate", "(String)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "evaluate", "(String,String)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "evaluate", "(String,String,String)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "evaluate", "(URI)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "parse", "(Reader)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "parse", "(Reader,String)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "parse", "(String)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "parse", "(String,String)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "parse", "(URI)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "run", "(GroovyCodeSource,List)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "run", "(GroovyCodeSource,String[])", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "run", "(Reader,String,List)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "run", "(Reader,String,String[])", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "run", "(String,String,List)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "run", "(String,String,String[])", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "run", "(URI,List)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.lang", "GroovyShell", False, "run", "(URI,String[])", "", "Argument[0]", "groovy", "manual"] - - ["groovy.text", "TemplateEngine", True, "createTemplate", "", "", "Argument[0]", "groovy", "manual"] + - ["groovy.lang", "GroovyClassLoader", False, "parseClass", "(GroovyCodeSource)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyClassLoader", False, "parseClass", "(GroovyCodeSource,boolean)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyClassLoader", False, "parseClass", "(InputStream,String)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyClassLoader", False, "parseClass", "(Reader,String)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyClassLoader", False, "parseClass", "(String)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyClassLoader", False, "parseClass", "(String,String)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "evaluate", "(GroovyCodeSource)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "evaluate", "(Reader)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "evaluate", "(Reader,String)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "evaluate", "(String)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "evaluate", "(String,String)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "evaluate", "(String,String,String)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "evaluate", "(URI)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "parse", "(Reader)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "parse", "(Reader,String)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "parse", "(String)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "parse", "(String,String)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "parse", "(URI)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "run", "(GroovyCodeSource,List)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "run", "(GroovyCodeSource,String[])", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "run", "(Reader,String,List)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "run", "(Reader,String,String[])", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "run", "(String,String,List)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "run", "(String,String,String[])", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "run", "(URI,List)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.lang", "GroovyShell", False, "run", "(URI,String[])", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.text", "TemplateEngine", True, "createTemplate", "", "", "Argument[0]", "groovy-injection", "manual"] diff --git a/java/ql/lib/ext/groovy.util.model.yml b/java/ql/lib/ext/groovy.util.model.yml index 61d1dbb6a05..f0a979e2ce8 100644 --- a/java/ql/lib/ext/groovy.util.model.yml +++ b/java/ql/lib/ext/groovy.util.model.yml @@ -3,8 +3,8 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["groovy.util", "Eval", False, "me", "(String)", "", "Argument[0]", "groovy", "manual"] - - ["groovy.util", "Eval", False, "me", "(String,Object,String)", "", "Argument[2]", "groovy", "manual"] - - ["groovy.util", "Eval", False, "x", "(Object,String)", "", "Argument[1]", "groovy", "manual"] - - ["groovy.util", "Eval", False, "xy", "(Object,Object,String)", "", "Argument[2]", "groovy", "manual"] - - ["groovy.util", "Eval", False, "xyz", "(Object,Object,Object,String)", "", "Argument[3]", "groovy", "manual"] + - ["groovy.util", "Eval", False, "me", "(String)", "", "Argument[0]", "groovy-injection", "manual"] + - ["groovy.util", "Eval", False, "me", "(String,Object,String)", "", "Argument[2]", "groovy-injection", "manual"] + - ["groovy.util", "Eval", False, "x", "(Object,String)", "", "Argument[1]", "groovy-injection", "manual"] + - ["groovy.util", "Eval", False, "xy", "(Object,Object,String)", "", "Argument[2]", "groovy-injection", "manual"] + - ["groovy.util", "Eval", False, "xyz", "(Object,Object,Object,String)", "", "Argument[3]", "groovy-injection", "manual"] diff --git a/java/ql/lib/ext/hudson.cli.model.yml b/java/ql/lib/ext/hudson.cli.model.yml index b0d3d3a19ff..6b962143625 100644 --- a/java/ql/lib/ext/hudson.cli.model.yml +++ b/java/ql/lib/ext/hudson.cli.model.yml @@ -3,5 +3,5 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["hudson.cli", "FullDuplexHttpStream", True, "FullDuplexHttpStream", "(URL,String,String)", "", "Argument[0]", "open-url", "ai-manual"] - - ["hudson.cli", "FullDuplexHttpStream", True, "FullDuplexHttpStream", "(URL,String,String)", "", "Argument[1]", "open-url", "manual"] + - ["hudson.cli", "FullDuplexHttpStream", True, "FullDuplexHttpStream", "(URL,String,String)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["hudson.cli", "FullDuplexHttpStream", True, "FullDuplexHttpStream", "(URL,String,String)", "", "Argument[1]", "request-forgery", "manual"] diff --git a/java/ql/lib/ext/hudson.lifecycle.model.yml b/java/ql/lib/ext/hudson.lifecycle.model.yml index be8c5fe843a..fde691fe175 100644 --- a/java/ql/lib/ext/hudson.lifecycle.model.yml +++ b/java/ql/lib/ext/hudson.lifecycle.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["hudson.lifecycle", "Lifecycle", True, "rewriteHudsonWar", "(File)", "", "Argument[0]", "create-file", "ai-manual"] + - ["hudson.lifecycle", "Lifecycle", True, "rewriteHudsonWar", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/hudson.model.model.yml b/java/ql/lib/ext/hudson.model.model.yml index 04701194c06..95aebc69028 100644 --- a/java/ql/lib/ext/hudson.model.model.yml +++ b/java/ql/lib/ext/hudson.model.model.yml @@ -3,16 +3,22 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["hudson.model", "DownloadService", True, "loadJSON", "(URL)", "", "Argument[0]", "open-url", "ai-manual"] - - ["hudson.model", "DownloadService", True, "loadJSONHTML", "(URL)", "", "Argument[0]", "open-url", "ai-manual"] - - ["hudson.model", "DirectoryBrowserSupport", False, "DirectoryBrowserSupport", "(ModelObject,FilePath,String,String,boolean)", "", "Argument[1]", "read-file", "ai-manual"] - - ["hudson.model", "Items", True, "load", "(ItemGroup,File)", "", "Argument[1]", "read-file", "ai-manual"] - - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", True, "download", "(DownloadJob,URL)", "", "Argument[1]", "open-url", "ai-manual"] - - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", True, "install", "(DownloadJob,File,File)", "", "Argument[1]", "create-file", "ai-manual"] # should be delete-file - - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", True, "install", "(DownloadJob,File,File)", "", "Argument[2]", "create-file", "ai-manual"] + - ["hudson.model", "DownloadService", True, "loadJSON", "(URL)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["hudson.model", "DownloadService", True, "loadJSONHTML", "(URL)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["hudson.model", "DirectoryBrowserSupport", False, "DirectoryBrowserSupport", "(ModelObject,FilePath,String,String,boolean)", "", "Argument[1]", "path-injection", "ai-manual"] + - ["hudson.model", "Items", True, "load", "(ItemGroup,File)", "", "Argument[1]", "path-injection", "ai-manual"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", True, "download", "(DownloadJob,URL)", "", "Argument[1]", "request-forgery", "ai-manual"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", True, "install", "(DownloadJob,File,File)", "", "Argument[1]", "path-injection", "ai-manual"] + - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", True, "install", "(DownloadJob,File,File)", "", "Argument[2]", "path-injection", "ai-manual"] - addsTo: pack: codeql/java-all extensible: summaryModel data: - ["hudson.model", "Node", True, "createPath", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["hudson.model", "DirectoryBrowserSupport$Path", False, "Path", "(String,String,boolean,long,boolean,long)", "", "Argument[0]", "Argument[this].SyntheticField[hudson.model.DirectoryBrowserSupport$Path.href]", "taint", "ai-manual"] + - addsTo: + pack: codeql/java-all + extensible: sourceModel + data: + - ["hudson.model", "Descriptor", True, "configure", "", "", "Parameter", "remote", "manual"] + - ["hudson.model", "Descriptor", True, "newInstance", "", "", "Parameter", "remote", "manual"] diff --git a/java/ql/lib/ext/hudson.model.yml b/java/ql/lib/ext/hudson.model.yml index 8fa6a8c0653..08d56be275e 100644 --- a/java/ql/lib/ext/hudson.model.yml +++ b/java/ql/lib/ext/hudson.model.yml @@ -3,24 +3,68 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["hudson", "FilePath", False, "copyFrom", "(FilePath)", "", "Argument[0]", "read-file", "manual"] - - ["hudson", "FilePath", False, "copyFrom", "(URL)", "", "Argument[0]", "read-file", "manual"] - - ["hudson", "FilePath", False, "copyFrom", "(FileItem)", "", "Argument[0]", "read-file", "ai-manual"] - - ["hudson", "FilePath", False, "copyRecursiveTo", "(DirScanner,FilePath,String,TarCompression)", "", "Argument[1]", "create-file", "ai-manual"] - - ["hudson", "FilePath", False, "copyRecursiveTo", "(DirScanner,FilePath,String)", "", "Argument[1]", "write-file", "ai-manual"] - - ["hudson", "FilePath", False, "copyRecursiveTo", "(String,FilePath)", "", "Argument[1]", "create-file", "ai-manual"] - - ["hudson", "FilePath", False, "copyRecursiveTo", "(String,String,FilePath)", "", "Argument[0]", "read-file", "ai-manual"] - - ["hudson", "FilePath", False, "copyRecursiveTo", "(String,String,FilePath)", "", "Argument[2]", "create-file", "ai-manual"] - - ["hudson", "FilePath", False, "copyTo", "(FilePath)", "", "Argument[0]", "create-file", "ai-manual"] - - ["hudson", "FilePath", False, "installIfNecessaryFrom", "(URL,TaskListener,String)", "", "Argument[0]", "open-url", "ai-manual"] - - ["hudson", "FilePath", False, "newInputStreamDenyingSymlinkAsNeeded", "(File,String,boolean)", "", "Argument[0]", "read-file", "ai-manual"] + - ["hudson", "FilePath", True, "copyFrom", "", "", "Argument[this]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "copyFrom", "(FilePath)", "", "Argument[0]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "copyFrom", "(URL)", "", "Argument[0]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "copyFrom", "(FileItem)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "copyRecursiveTo", "", "", "Argument[this]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "copyRecursiveTo", "(DirScanner,FilePath,String,TarCompression)", "", "Argument[1]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "copyRecursiveTo", "(DirScanner,FilePath,String)", "", "Argument[1]", "file-content-store", "ai-manual"] + - ["hudson", "FilePath", True, "copyRecursiveTo", "(String,FilePath)", "", "Argument[1]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "copyRecursiveTo", "(String,String,FilePath)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "copyRecursiveTo", "(String,String,FilePath)", "", "Argument[2]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "copyTo", "", "", "Argument[this]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "copyTo", "(FilePath)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "copyToWithPermission", "", "", "Argument[this]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "copyToWithPermission", "(FilePath)", "", "Argument[0]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "installIfNecessaryFrom", "(URL,TaskListener,String)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["hudson", "FilePath", True, "newInputStreamDenyingSymlinkAsNeeded", "(File,String,boolean)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "openInputStream", "(File,OpenOption[])", "", "Argument[0]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "read", "", "", "Argument[this]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "read", "(FilePath,OpenOption[])", "", "Argument[0]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "readFromOffset", "", "", "Argument[this]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "readToString", "", "", "Argument[this]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "renameTo", "", "", "Argument[this]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "renameTo", "", "", "Argument[0]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "write", "", "", "Argument[this]", "path-injection", "manual"] + - ["hudson", "FilePath", True, "write", "(String,String)", "", "Argument[0]", "file-content-store", "manual"] + - ["hudson", "Launcher$ProcStarter", False, "cmds", "", "", "Argument[0]", "command-injection", "manual"] + - ["hudson", "Launcher$ProcStarter", False, "cmdAsSingleString", "", "", "Argument[0]", "command-injection", "manual"] + - ["hudson", "Launcher", True, "launch", "", "", "Argument[0]", "command-injection", "manual"] + - ["hudson", "Launcher", True, "launchChannel", "", "", "Argument[0]", "command-injection", "manual"] + - addsTo: + pack: codeql/java-all + extensible: sourceModel + data: + - ["hudson", "Plugin", True, "configure", "", "", "Parameter", "remote", "manual"] + - ["hudson", "Plugin", True, "newInstance", "", "", "Parameter", "remote", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel data: - - ["hudson", "FilePath", False, "child", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - - ["hudson", "FilePath", False, "list", "(String,String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] - - ["hudson", "FilePath", False, "list", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] - - ["hudson", "FilePath", False, "list", "(String)", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] - - ["hudson", "FilePath", False, "normalize", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - - ["hudson", "FilePath", False, "sibling", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] + - ["hudson", "FilePath", True, "FilePath", "(String)", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - ["hudson", "FilePath", True, "FilePath", "(FilePath,String)", "", "Argument[0..1]", "Argument[this]", "taint", "manual"] + - ["hudson", "FilePath", True, "FilePath", "(VirtualChannel,String)", "", "Argument[1]", "Argument[this]", "taint", "manual"] + - ["hudson", "FilePath", True, "child", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] + - ["hudson", "FilePath", True, "list", "(String,String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] + - ["hudson", "FilePath", True, "list", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] + - ["hudson", "FilePath", True, "list", "(String)", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] + - ["hudson", "FilePath", True, "normalize", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] + - ["hudson", "FilePath", True, "sibling", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] + - ["hudson", "Util", True, "nullify", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "fixNull", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "fixEmpty", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "fixEmptyAndTrim", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "getFileName", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "join", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "encodeRFC2396", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "wrapToErrorSpan", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "fileToPath", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "xmlEscape", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "escape", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "singleQuote", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "rawEncode", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "encode", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "fromHexString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "toHexString", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["hudson", "Util", True, "tokenize", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/java/ql/lib/ext/hudson.scm.model.yml b/java/ql/lib/ext/hudson.scm.model.yml index f37c3442532..dc6e0bfa5bb 100644 --- a/java/ql/lib/ext/hudson.scm.model.yml +++ b/java/ql/lib/ext/hudson.scm.model.yml @@ -3,11 +3,11 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["hudson.scm", "ChangeLogParser", True, "parse", "(AbstractBuild,File)", "", "Argument[1]", "read-file", "ai-manual"] - - ["hudson.scm", "ChangeLogParser", True, "parse", "(Run,RepositoryBrowser,File)", "", "Argument[2]", "read-file", "ai-manual"] - - ["hudson.scm", "SCM", True, "checkout", "(AbstractBuild,Launcher,FilePath,BuildListener,File)", "", "Argument[2]", "create-file", "ai-manual"] - - ["hudson.scm", "SCM", True, "checkout", "(Run,Launcher,FilePath,TaskListener,File,SCMRevisionState)", "", "Argument[2]", "create-file", "ai-manual"] - - ["hudson.scm", "SCM", True, "compareRemoteRevisionWith", "(Job,Launcher,FilePath,TaskListener,SCMRevisionState)", "", "Argument[2]", "read-file", "ai-manual"] + - ["hudson.scm", "ChangeLogParser", True, "parse", "(AbstractBuild,File)", "", "Argument[1]", "path-injection", "ai-manual"] + - ["hudson.scm", "ChangeLogParser", True, "parse", "(Run,RepositoryBrowser,File)", "", "Argument[2]", "path-injection", "ai-manual"] + - ["hudson.scm", "SCM", True, "checkout", "(AbstractBuild,Launcher,FilePath,BuildListener,File)", "", "Argument[2]", "path-injection", "ai-manual"] + - ["hudson.scm", "SCM", True, "checkout", "(Run,Launcher,FilePath,TaskListener,File,SCMRevisionState)", "", "Argument[2]", "path-injection", "ai-manual"] + - ["hudson.scm", "SCM", True, "compareRemoteRevisionWith", "(Job,Launcher,FilePath,TaskListener,SCMRevisionState)", "", "Argument[2]", "path-injection", "ai-manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/hudson.util.io.model.yml b/java/ql/lib/ext/hudson.util.io.model.yml index 65e0f3efb27..3d29b93e20c 100644 --- a/java/ql/lib/ext/hudson.util.io.model.yml +++ b/java/ql/lib/ext/hudson.util.io.model.yml @@ -3,5 +3,5 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["hudson.util.io", "ReopenableFileOutputStream", True, "ReopenableFileOutputStream", "(File)", "", "Argument[0]", "create-file", "ai-manual"] - - ["hudson.util.io", "RewindableFileOutputStream", True, "RewindableFileOutputStream", "(File)", "", "Argument[0]", "create-file", "ai-manual"] + - ["hudson.util.io", "ReopenableFileOutputStream", True, "ReopenableFileOutputStream", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson.util.io", "RewindableFileOutputStream", True, "RewindableFileOutputStream", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/hudson.util.jna.model.yml b/java/ql/lib/ext/hudson.util.jna.model.yml index c67d645f950..c840d0f4725 100644 --- a/java/ql/lib/ext/hudson.util.jna.model.yml +++ b/java/ql/lib/ext/hudson.util.jna.model.yml @@ -3,6 +3,6 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["hudson.util.jna", "GNUCLibrary", True, "open", "(String,int)", "", "Argument[0]", "read-file", "ai-manual"] - - ["hudson.util.jna", "Kernel32", True, "MoveFileExA", "(String,String,int)", "", "Argument[0]", "create-file", "ai-manual"] # should be delete-file - - ["hudson.util.jna", "Kernel32", True, "MoveFileExA", "(String,String,int)", "", "Argument[1]", "create-file", "ai-manual"] + - ["hudson.util.jna", "GNUCLibrary", True, "open", "(String,int)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson.util.jna", "Kernel32", True, "MoveFileExA", "(String,String,int)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson.util.jna", "Kernel32", True, "MoveFileExA", "(String,String,int)", "", "Argument[1]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/hudson.util.model.yml b/java/ql/lib/ext/hudson.util.model.yml index 0e34233e735..1ac3aa8c10a 100644 --- a/java/ql/lib/ext/hudson.util.model.yml +++ b/java/ql/lib/ext/hudson.util.model.yml @@ -3,23 +3,44 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["hudson.util", "AtomicFileWriter", True, "AtomicFileWriter", "(File)", "", "Argument[0]", "create-file", "ai-manual"] - - ["hudson.util", "AtomicFileWriter", True, "AtomicFileWriter", "(Path,Charset,boolean,boolean)", "", "Argument[0]", "create-file", "ai-manual"] - - ["hudson.util", "AtomicFileWriter", True, "AtomicFileWriter", "(Path,Charset)", "", "Argument[0]", "create-file", "ai-manual"] - - ["hudson.util", "ClasspathBuilder", True, "add", "(FilePath)", "", "Argument[0]", "read-file", "ai-manual"] - - ["hudson.util", "IOUtils", True, "mkdirs", "(File)", "", "Argument[0]", "create-file", "ai-manual"] - - ["hudson.util", "StreamTaskListener", True, "StreamTaskListener", "(File,boolean,Charset)", "", "Argument[0]", "create-file", "ai-manual"] - - ["hudson.util", "TextFile", True, "delete", "()", "", "Argument[this]", "create-file", "manual"] - - ["hudson.util", "TextFile", True, "fastTail", "", "", "Argument[this]", "read-file", "manual"] - - ["hudson.util", "TextFile", True, "head", "", "", "Argument[this]", "read-file", "manual"] - - ["hudson.util", "TextFile", True, "lines", "()", "", "Argument[this]", "read-file", "manual"] - - ["hudson.util", "TextFile", True, "read", "()", "", "Argument[this]", "read-file", "manual"] - - ["hudson.util", "TextFile", True, "readTrim", "()", "", "Argument[this]", "read-file", "manual"] - - ["hudson.util", "TextFile", True, "write", "(String)", "", "Argument[0]", "write-file", "manual"] + - ["hudson.util", "AtomicFileWriter", True, "AtomicFileWriter", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson.util", "AtomicFileWriter", True, "AtomicFileWriter", "(Path,Charset,boolean,boolean)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson.util", "AtomicFileWriter", True, "AtomicFileWriter", "(Path,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson.util", "ClasspathBuilder", True, "add", "(FilePath)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson.util", "FormValidation", True, "errorWithMarkup", "", "", "Argument[0]", "html-injection", "manual"] + - ["hudson.util", "FormValidation", True, "okWithMarkup", "", "", "Argument[0]", "html-injection", "manual"] + - ["hudson.util", "FormValidation", True, "respond", "", "", "Argument[1]", "html-injection", "manual"] + - ["hudson.util", "FormValidation", True, "warningWithMarkup", "", "", "Argument[0]", "html-injection", "manual"] + - ["hudson.util", "IOUtils", True, "mkdirs", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson.util", "StreamTaskListener", True, "StreamTaskListener", "(File,boolean,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson.util", "TextFile", True, "delete", "()", "", "Argument[this]", "path-injection", "manual"] + - ["hudson.util", "TextFile", True, "fastTail", "", "", "Argument[this]", "path-injection", "manual"] + - ["hudson.util", "TextFile", True, "head", "", "", "Argument[this]", "path-injection", "manual"] + - ["hudson.util", "TextFile", True, "lines", "()", "", "Argument[this]", "path-injection", "manual"] + - ["hudson.util", "TextFile", True, "read", "()", "", "Argument[this]", "path-injection", "manual"] + - ["hudson.util", "TextFile", True, "readTrim", "()", "", "Argument[this]", "path-injection", "manual"] + - ["hudson.util", "TextFile", True, "write", "(String)", "", "Argument[this]", "path-injection", "manual"] + - ["hudson.util", "TextFile", True, "write", "(String)", "", "Argument[0]", "file-content-store", "manual"] + - ["hudson.util", "HttpResponses", True, "staticResource", "(File)", "", "Argument[0]", "path-injection", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel data: + - ["hudson.util", "ArgumentListBuilder", True, "ArgumentListBuilder", "", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "add", "", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "clone", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "prepend", "", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "toCommandArray", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "toList", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "toWindowsCommand", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + # ArgumentListBuilder fluent methods + - ["hudson.util", "ArgumentListBuilder", True, "add", "", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "addKeyValuePair", "", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "addKeyValuePairs", "", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "addKeyValuePairsFromPropertyString", "", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "addMasked", "", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "addQuoted", "", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "addTokenized", "", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["hudson.util", "ArgumentListBuilder", True, "prepend", "", "", "Argument[this]", "ReturnValue", "value", "manual"] - ["hudson.util", "QuotedStringTokenizer", True, "tokenize", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["hudson.util", "TextFile", True, "TextFile", "(File)", "", "Argument[0]", "Argument[this]", "taint", "ai-manual"] - diff --git a/java/ql/lib/ext/io.netty.bootstrap.model.yml b/java/ql/lib/ext/io.netty.bootstrap.model.yml index f38329a8bad..e07853583f7 100644 --- a/java/ql/lib/ext/io.netty.bootstrap.model.yml +++ b/java/ql/lib/ext/io.netty.bootstrap.model.yml @@ -3,6 +3,6 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["io.netty.bootstrap", "Bootstrap", True, "connect", "(InetAddress,int)", "", "Argument[0]", "open-url", "ai-manual"] - - ["io.netty.bootstrap", "Bootstrap", True, "connect", "(SocketAddress)", "", "Argument[0]", "open-url", "ai-manual"] - - ["io.netty.bootstrap", "Bootstrap", True, "connect", "(String,int)", "", "Argument[0]", "open-url", "ai-manual"] + - ["io.netty.bootstrap", "Bootstrap", True, "connect", "(InetAddress,int)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["io.netty.bootstrap", "Bootstrap", True, "connect", "(SocketAddress)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["io.netty.bootstrap", "Bootstrap", True, "connect", "(String,int)", "", "Argument[0]", "request-forgery", "ai-manual"] diff --git a/java/ql/lib/ext/io.netty.channel.model.yml b/java/ql/lib/ext/io.netty.channel.model.yml index e06a3e0a582..38bdb84786a 100644 --- a/java/ql/lib/ext/io.netty.channel.model.yml +++ b/java/ql/lib/ext/io.netty.channel.model.yml @@ -3,15 +3,15 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["io.netty.channel", "Channel$Unsafe", True, "connect", "(SocketAddress,SocketAddress,ChannelPromise)", "", "Argument[0]", "open-url", "ai-manual"] - - ["io.netty.channel", "ChannelDuplexHandler", True, "connect", "(ChannelHandlerContext,SocketAddress,SocketAddress,ChannelPromise)", "", "Argument[1]", "open-url", "ai-manual"] - - ["io.netty.channel", "ChannelOutboundHandlerAdapter", True, "connect", "(ChannelHandlerContext,SocketAddress,SocketAddress,ChannelPromise)", "", "Argument[1]", "open-url", "ai-manual"] - - ["io.netty.channel", "ChannelOutboundInvoker", True, "connect", "(SocketAddress,ChannelPromise)", "", "Argument[0]", "open-url", "ai-manual"] - - ["io.netty.channel", "ChannelOutboundInvoker", True, "connect", "(SocketAddress,SocketAddress,ChannelPromise)", "", "Argument[0]", "open-url", "ai-manual"] - - ["io.netty.channel", "ChannelOutboundInvoker", True, "connect", "(SocketAddress)", "", "Argument[0]", "open-url", "ai-manual"] - - ["io.netty.channel", "DefaultChannelPipeline", False, "connect", "(SocketAddress,ChannelPromise)", "", "Argument[0]", "open-url", "ai-manual"] - - ["io.netty.channel", "DefaultChannelPipeline", False, "connect", "(SocketAddress,SocketAddress,ChannelPromise)", "", "Argument[0]", "open-url", "ai-manual"] - - ["io.netty.channel", "DefaultChannelPipeline", False, "connect", "(SocketAddress,SocketAddress)", "", "Argument[0]", "open-url", "ai-manual"] + - ["io.netty.channel", "Channel$Unsafe", True, "connect", "(SocketAddress,SocketAddress,ChannelPromise)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["io.netty.channel", "ChannelDuplexHandler", True, "connect", "(ChannelHandlerContext,SocketAddress,SocketAddress,ChannelPromise)", "", "Argument[1]", "request-forgery", "ai-manual"] + - ["io.netty.channel", "ChannelOutboundHandlerAdapter", True, "connect", "(ChannelHandlerContext,SocketAddress,SocketAddress,ChannelPromise)", "", "Argument[1]", "request-forgery", "ai-manual"] + - ["io.netty.channel", "ChannelOutboundInvoker", True, "connect", "(SocketAddress,ChannelPromise)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["io.netty.channel", "ChannelOutboundInvoker", True, "connect", "(SocketAddress,SocketAddress,ChannelPromise)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["io.netty.channel", "ChannelOutboundInvoker", True, "connect", "(SocketAddress)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["io.netty.channel", "DefaultChannelPipeline", False, "connect", "(SocketAddress,ChannelPromise)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["io.netty.channel", "DefaultChannelPipeline", False, "connect", "(SocketAddress,SocketAddress,ChannelPromise)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["io.netty.channel", "DefaultChannelPipeline", False, "connect", "(SocketAddress,SocketAddress)", "", "Argument[0]", "request-forgery", "ai-manual"] - addsTo: pack: codeql/java-all extensible: sourceModel diff --git a/java/ql/lib/ext/io.netty.handler.codec.http.model.yml b/java/ql/lib/ext/io.netty.handler.codec.http.model.yml index 2912bdce85a..f9ec6702ff9 100644 --- a/java/ql/lib/ext/io.netty.handler.codec.http.model.yml +++ b/java/ql/lib/ext/io.netty.handler.codec.http.model.yml @@ -3,9 +3,9 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["io.netty.handler.codec.http", "DefaultFullHttpRequest", True, "DefaultFullHttpRequest", "(HttpVersion,HttpMethod,String,ByteBuf)", "", "Argument[2]", "open-url", "ai-manual"] - - ["io.netty.handler.codec.http", "DefaultHttpRequest", True, "DefaultHttpRequest", "(HttpVersion,HttpMethod,String)", "", "Argument[2]", "open-url", "ai-manual"] - - ["io.netty.handler.codec.http", "HttpRequest", True, "setUri", "", "", "Argument[0]", "open-url", "manual"] + - ["io.netty.handler.codec.http", "DefaultFullHttpRequest", True, "DefaultFullHttpRequest", "(HttpVersion,HttpMethod,String,ByteBuf)", "", "Argument[2]", "request-forgery", "ai-manual"] + - ["io.netty.handler.codec.http", "DefaultHttpRequest", True, "DefaultHttpRequest", "(HttpVersion,HttpMethod,String)", "", "Argument[2]", "request-forgery", "ai-manual"] + - ["io.netty.handler.codec.http", "HttpRequest", True, "setUri", "", "", "Argument[0]", "request-forgery", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/io.netty.handler.codec.http.multipart.model.yml b/java/ql/lib/ext/io.netty.handler.codec.http.multipart.model.yml index 4090f6356bf..a44a2c6c400 100644 --- a/java/ql/lib/ext/io.netty.handler.codec.http.multipart.model.yml +++ b/java/ql/lib/ext/io.netty.handler.codec.http.multipart.model.yml @@ -3,7 +3,7 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["io.netty.handler.codec.http.multipart", "HttpPostRequestEncoder", True, "addBodyFileUpload", "(String,File,String,boolean)", "", "Argument[1]", "read-file", "ai-manual"] + - ["io.netty.handler.codec.http.multipart", "HttpPostRequestEncoder", True, "addBodyFileUpload", "(String,File,String,boolean)", "", "Argument[1]", "path-injection", "ai-manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/io.netty.handler.ssl.model.yml b/java/ql/lib/ext/io.netty.handler.ssl.model.yml index 63628323f49..f63a7a3906f 100644 --- a/java/ql/lib/ext/io.netty.handler.ssl.model.yml +++ b/java/ql/lib/ext/io.netty.handler.ssl.model.yml @@ -3,5 +3,7 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["io.netty.handler.ssl", "OpenSslServerContext", False, "OpenSslServerContext", "(File,File)", "", "Argument[0]", "read-file", "ai-manual"] - - ["io.netty.handler.ssl", "SslContextBuilder", False, "forServer", "(File,File)", "", "Argument[0]", "read-file", "ai-manual"] + - ["io.netty.handler.ssl", "OpenSslServerContext", False, "OpenSslServerContext", "(File,File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["io.netty.handler.ssl", "SslContextBuilder", False, "forServer", "(File,File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["io.netty.handler.ssl", "SslContextBuilder", False, "trustManager", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["io.netty.handler.ssl", "SslContextBuilder", False, "trustManager", "(InputStream)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/io.netty.handler.stream.model.yml b/java/ql/lib/ext/io.netty.handler.stream.model.yml index 1d305863f6c..f4e635f4437 100644 --- a/java/ql/lib/ext/io.netty.handler.stream.model.yml +++ b/java/ql/lib/ext/io.netty.handler.stream.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["io.netty.handler.stream", "ChunkedFile", True, "ChunkedFile", "(RandomAccessFile,long,long,int)", "", "Argument[0]", "read-file", "ai-manual"] + - ["io.netty.handler.stream", "ChunkedFile", True, "ChunkedFile", "(RandomAccessFile,long,long,int)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/io.netty.util.internal.model.yml b/java/ql/lib/ext/io.netty.util.internal.model.yml index 477b8e88858..7852b8b9e32 100644 --- a/java/ql/lib/ext/io.netty.util.internal.model.yml +++ b/java/ql/lib/ext/io.netty.util.internal.model.yml @@ -3,8 +3,8 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["io.netty.util.internal", "PlatformDependent", False, "createTempFile", "(String,String,File)", "", "Argument[2]", "create-file", "ai-manual"] - - ["io.netty.util.internal", "SocketUtils", False, "connect", "(Socket,SocketAddress,int)", "", "Argument[1]", "open-url", "ai-manual"] + - ["io.netty.util.internal", "PlatformDependent", False, "createTempFile", "(String,String,File)", "", "Argument[2]", "path-injection", "ai-manual"] + - ["io.netty.util.internal", "SocketUtils", False, "connect", "(Socket,SocketAddress,int)", "", "Argument[1]", "request-forgery", "ai-manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/jakarta.faces.context.model.yml b/java/ql/lib/ext/jakarta.faces.context.model.yml index 84a0fd22710..468ef036c1a 100644 --- a/java/ql/lib/ext/jakarta.faces.context.model.yml +++ b/java/ql/lib/ext/jakarta.faces.context.model.yml @@ -14,5 +14,5 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["jakarta.faces.context", "ResponseStream", True, "write", "", "", "Argument[0]", "xss", "manual"] - - ["jakarta.faces.context", "ResponseWriter", True, "write", "", "", "Argument[0]", "xss", "manual"] + - ["jakarta.faces.context", "ResponseStream", True, "write", "", "", "Argument[0]", "html-injection", "manual"] + - ["jakarta.faces.context", "ResponseWriter", True, "write", "", "", "Argument[0]", "html-injection", "manual"] diff --git a/java/ql/lib/ext/jakarta.ws.rs.client.model.yml b/java/ql/lib/ext/jakarta.ws.rs.client.model.yml index 821ea0ad640..0460c09dc3c 100644 --- a/java/ql/lib/ext/jakarta.ws.rs.client.model.yml +++ b/java/ql/lib/ext/jakarta.ws.rs.client.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["jakarta.ws.rs.client", "Client", True, "target", "", "", "Argument[0]", "open-url", "manual"] + - ["jakarta.ws.rs.client", "Client", True, "target", "", "", "Argument[0]", "request-forgery", "manual"] diff --git a/java/ql/lib/ext/jakarta.ws.rs.core.model.yml b/java/ql/lib/ext/jakarta.ws.rs.core.model.yml index a13bb2189d1..739f61df8b8 100644 --- a/java/ql/lib/ext/jakarta.ws.rs.core.model.yml +++ b/java/ql/lib/ext/jakarta.ws.rs.core.model.yml @@ -3,8 +3,8 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["jakarta.ws.rs.core", "Response", True, "seeOther", "", "", "Argument[0]", "url-redirect", "manual"] - - ["jakarta.ws.rs.core", "Response", True, "temporaryRedirect", "", "", "Argument[0]", "url-redirect", "manual"] + - ["jakarta.ws.rs.core", "Response", True, "seeOther", "", "", "Argument[0]", "url-redirection", "manual"] + - ["jakarta.ws.rs.core", "Response", True, "temporaryRedirect", "", "", "Argument[0]", "url-redirection", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/java.io.model.yml b/java/ql/lib/ext/java.io.model.yml index 2db99b7027e..83e57a68c74 100644 --- a/java/ql/lib/ext/java.io.model.yml +++ b/java/ql/lib/ext/java.io.model.yml @@ -3,50 +3,55 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["java.io", "File", True, "createTempFile", "(String,String,File)", "", "Argument[2]", "create-file", "ai-manual"] - - ["java.io", "File", True, "renameTo", "(File)", "", "Argument[0]", "create-file", "ai-manual"] - - ["java.io", "FileInputStream", True, "FileInputStream", "(File)", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.io", "FileInputStream", True, "FileInputStream", "(String)", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.io", "FileOutputStream", False, "FileOutputStream", "", "", "Argument[0]", "create-file", "manual"] - - ["java.io", "FileOutputStream", False, "write", "", "", "Argument[0]", "write-file", "manual"] - - ["java.io", "FileReader", True, "FileReader", "(File)", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.io", "FileReader", True, "FileReader", "(String)", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.io", "FileSystem", True, "createDirectory", "(File)", "", "Argument[0]", "create-file", "ai-manual"] - - ["java.io", "FileWriter", False, "FileWriter", "", "", "Argument[0]", "create-file", "manual"] - - ["java.io", "PrintStream", False, "PrintStream", "(File)", "", "Argument[0]", "create-file", "manual"] - - ["java.io", "PrintStream", False, "PrintStream", "(File,Charset)", "", "Argument[0]", "create-file", "manual"] - - ["java.io", "PrintStream", False, "PrintStream", "(File,String)", "", "Argument[0]", "create-file", "manual"] - - ["java.io", "PrintStream", False, "PrintStream", "(String)", "", "Argument[0]", "create-file", "manual"] - - ["java.io", "PrintStream", False, "PrintStream", "(String,Charset)", "", "Argument[0]", "create-file", "manual"] - - ["java.io", "PrintStream", False, "PrintStream", "(String,String)", "", "Argument[0]", "create-file", "manual"] - - ["java.io", "PrintStream", True, "append", "", "", "Argument[0]", "write-file", "manual"] - - ["java.io", "PrintStream", True, "format", "(Locale,String,Object[])", "", "Argument[1..2]", "write-file", "manual"] - - ["java.io", "PrintStream", True, "format", "(String,Object[])", "", "Argument[0..1]", "write-file", "manual"] - - ["java.io", "PrintStream", True, "print", "", "", "Argument[0]", "write-file", "manual"] - - ["java.io", "PrintStream", True, "printf", "(Locale,String,Object[])", "", "Argument[1..2]", "write-file", "manual"] - - ["java.io", "PrintStream", True, "printf", "(String,Object[])", "", "Argument[0..1]", "write-file", "manual"] - - ["java.io", "PrintStream", True, "println", "", "", "Argument[0]", "write-file", "manual"] - - ["java.io", "PrintStream", True, "write", "", "", "Argument[0]", "write-file", "manual"] - - ["java.io", "PrintStream", True, "writeBytes", "", "", "Argument[0]", "write-file", "manual"] - - ["java.io", "PrintWriter", False, "PrintWriter", "(File)", "", "Argument[0]", "create-file", "manual"] - - ["java.io", "PrintWriter", False, "PrintWriter", "(File,Charset)", "", "Argument[0]", "create-file", "manual"] - - ["java.io", "PrintWriter", False, "PrintWriter", "(File,String)", "", "Argument[0]", "create-file", "manual"] - - ["java.io", "PrintWriter", False, "PrintWriter", "(String)", "", "Argument[0]", "create-file", "manual"] - - ["java.io", "PrintWriter", False, "PrintWriter", "(String,Charset)", "", "Argument[0]", "create-file", "manual"] - - ["java.io", "PrintWriter", False, "PrintWriter", "(String,String)", "", "Argument[0]", "create-file", "manual"] - - ["java.io", "PrintWriter", False, "format", "(Locale,String,Object[])", "", "Argument[1..2]", "write-file", "manual"] - - ["java.io", "PrintWriter", False, "format", "(String,Object[])", "", "Argument[0..1]", "write-file", "manual"] - - ["java.io", "PrintWriter", False, "print", "", "", "Argument[0]", "write-file", "manual"] - - ["java.io", "PrintWriter", False, "printf", "(Locale,String,Object[])", "", "Argument[1..2]", "write-file", "manual"] - - ["java.io", "PrintWriter", False, "printf", "(String,Object[])", "", "Argument[0..1]", "write-file", "manual"] - - ["java.io", "PrintWriter", False, "println", "", "", "Argument[0]", "write-file", "manual"] - - ["java.io", "RandomAccessFile", False, "RandomAccessFile", "", "", "Argument[0]", "create-file", "manual"] - - ["java.io", "RandomAccessFile", False, "write", "", "", "Argument[0]", "write-file", "manual"] - - ["java.io", "RandomAccessFile", False, "writeBytes", "", "", "Argument[0]", "write-file", "manual"] - - ["java.io", "RandomAccessFile", False, "writeChars", "", "", "Argument[0]", "write-file", "manual"] - - ["java.io", "RandomAccessFile", False, "writeUTF", "", "", "Argument[0]", "write-file", "manual"] - - ["java.io", "Writer", True, "append", "", "", "Argument[0]", "write-file", "manual"] - - ["java.io", "Writer", True, "write", "", "", "Argument[0]", "write-file", "manual"] + - ["java.io", "File", False, "File", "(File,String)", "", "Argument[1]", "path-injection", "manual"] # old PathCreation + - ["java.io", "File", False, "File", "(String)", "", "Argument[0]", "path-injection", "manual"] # old PathCreation + - ["java.io", "File", False, "File", "(String,String)", "", "Argument[0..1]", "path-injection", "manual"] # old PathCreation + - ["java.io", "File", False, "File", "(URI)", "", "Argument[0]", "path-injection", "manual"] # old PathCreation + - ["java.io", "File", True, "createTempFile", "(String,String,File)", "", "Argument[2]", "path-injection", "ai-manual"] + - ["java.io", "File", True, "renameTo", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.io", "FileInputStream", True, "FileInputStream", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.io", "FileInputStream", True, "FileInputStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.io", "FileOutputStream", False, "FileOutputStream", "", "", "Argument[0]", "path-injection", "manual"] + - ["java.io", "FileOutputStream", False, "write", "", "", "Argument[0]", "file-content-store", "manual"] + - ["java.io", "FileReader", True, "FileReader", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.io", "FileReader", True, "FileReader", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.io", "FileReader", True, "FileReader", "(String,Charset)", "", "Argument[0]", "path-injection", "manual"] + - ["java.io", "FileSystem", True, "createDirectory", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.io", "FileWriter", False, "FileWriter", "", "", "Argument[0]", "path-injection", "manual"] + - ["java.io", "PrintStream", False, "PrintStream", "(File)", "", "Argument[0]", "path-injection", "manual"] + - ["java.io", "PrintStream", False, "PrintStream", "(File,Charset)", "", "Argument[0]", "path-injection", "manual"] + - ["java.io", "PrintStream", False, "PrintStream", "(File,String)", "", "Argument[0]", "path-injection", "manual"] + - ["java.io", "PrintStream", False, "PrintStream", "(String)", "", "Argument[0]", "path-injection", "manual"] + - ["java.io", "PrintStream", False, "PrintStream", "(String,Charset)", "", "Argument[0]", "path-injection", "manual"] + - ["java.io", "PrintStream", False, "PrintStream", "(String,String)", "", "Argument[0]", "path-injection", "manual"] + - ["java.io", "PrintStream", True, "append", "", "", "Argument[0]", "file-content-store", "manual"] + - ["java.io", "PrintStream", True, "format", "(Locale,String,Object[])", "", "Argument[1..2]", "file-content-store", "manual"] + - ["java.io", "PrintStream", True, "format", "(String,Object[])", "", "Argument[0..1]", "file-content-store", "manual"] + - ["java.io", "PrintStream", True, "print", "", "", "Argument[0]", "file-content-store", "manual"] + - ["java.io", "PrintStream", True, "printf", "(Locale,String,Object[])", "", "Argument[1..2]", "file-content-store", "manual"] + - ["java.io", "PrintStream", True, "printf", "(String,Object[])", "", "Argument[0..1]", "file-content-store", "manual"] + - ["java.io", "PrintStream", True, "println", "", "", "Argument[0]", "file-content-store", "manual"] + - ["java.io", "PrintStream", True, "write", "", "", "Argument[0]", "file-content-store", "manual"] + - ["java.io", "PrintStream", True, "writeBytes", "", "", "Argument[0]", "file-content-store", "manual"] + - ["java.io", "PrintWriter", False, "PrintWriter", "(File)", "", "Argument[0]", "path-injection", "manual"] + - ["java.io", "PrintWriter", False, "PrintWriter", "(File,Charset)", "", "Argument[0]", "path-injection", "manual"] + - ["java.io", "PrintWriter", False, "PrintWriter", "(File,String)", "", "Argument[0]", "path-injection", "manual"] + - ["java.io", "PrintWriter", False, "PrintWriter", "(String)", "", "Argument[0]", "path-injection", "manual"] + - ["java.io", "PrintWriter", False, "PrintWriter", "(String,Charset)", "", "Argument[0]", "path-injection", "manual"] + - ["java.io", "PrintWriter", False, "PrintWriter", "(String,String)", "", "Argument[0]", "path-injection", "manual"] + - ["java.io", "PrintWriter", False, "format", "(Locale,String,Object[])", "", "Argument[1..2]", "file-content-store", "manual"] + - ["java.io", "PrintWriter", False, "format", "(String,Object[])", "", "Argument[0..1]", "file-content-store", "manual"] + - ["java.io", "PrintWriter", False, "print", "", "", "Argument[0]", "file-content-store", "manual"] + - ["java.io", "PrintWriter", False, "printf", "(Locale,String,Object[])", "", "Argument[1..2]", "file-content-store", "manual"] + - ["java.io", "PrintWriter", False, "printf", "(String,Object[])", "", "Argument[0..1]", "file-content-store", "manual"] + - ["java.io", "PrintWriter", False, "println", "", "", "Argument[0]", "file-content-store", "manual"] + - ["java.io", "RandomAccessFile", False, "RandomAccessFile", "", "", "Argument[0]", "path-injection", "manual"] + - ["java.io", "RandomAccessFile", False, "write", "", "", "Argument[0]", "file-content-store", "manual"] + - ["java.io", "RandomAccessFile", False, "writeBytes", "", "", "Argument[0]", "file-content-store", "manual"] + - ["java.io", "RandomAccessFile", False, "writeChars", "", "", "Argument[0]", "file-content-store", "manual"] + - ["java.io", "RandomAccessFile", False, "writeUTF", "", "", "Argument[0]", "file-content-store", "manual"] + - ["java.io", "Writer", True, "append", "", "", "Argument[0]", "file-content-store", "manual"] + - ["java.io", "Writer", True, "write", "", "", "Argument[0]", "file-content-store", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel @@ -100,6 +105,7 @@ extensions: pack: codeql/java-all extensible: neutralModel data: + # summary neutrals - ["java.io", "Closeable", "close", "()", "summary", "manual"] - ["java.io", "DataOutput", "writeBoolean", "(boolean)", "summary", "manual"] - ["java.io", "File", "delete", "()", "summary", "manual"] @@ -117,3 +123,7 @@ extensions: - ["java.io", "DataInput", "readLong", "()", "summary", "manual"] # taint-numeric - ["java.io", "DataOutput", "writeInt", "(int)", "summary", "manual"] # taint-numeric - ["java.io", "DataOutput", "writeLong", "(long)", "summary", "manual"] # taint-numeric + + # sink neutrals + - ["java.io", "File", "compareTo", "", "sink", "hq-manual"] + - ["java.io", "File", "exists", "()", "sink", "hq-manual"] diff --git a/java/ql/lib/ext/java.lang.model.yml b/java/ql/lib/ext/java.lang.model.yml index bbb269b3d55..8625a68caa0 100644 --- a/java/ql/lib/ext/java.lang.model.yml +++ b/java/ql/lib/ext/java.lang.model.yml @@ -3,11 +3,14 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["java.lang", "Class", False, "getResource", "(String)", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.lang", "Class", False, "getResourceAsStream", "(String)", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.lang", "ClassLoader", True, "getSystemResource", "(String)", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.lang", "ClassLoader", True, "getSystemResourceAsStream", "(String)", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.lang", "Module", True, "getResourceAsStream", "(String)", "", "Argument[0]", "read-file", "ai-manual"] + - ["java.lang", "Class", False, "getResource", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.lang", "Class", False, "getResourceAsStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.lang", "ClassLoader", True, "getSystemResource", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.lang", "ClassLoader", True, "getSystemResourceAsStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.lang", "Module", True, "getResourceAsStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + # These are potential vulnerabilities, but not for command-injection. No query for this kind of vulnerability currently exists. + # - ["java.lang", "Runtime", False, "load", "(String)", "", "Argument[0]", "command-injection", "ai-manual"] + # - ["java.lang", "Runtime", False, "loadLibrary", "(String)", "", "Argument[0]", "command-injection", "ai-manual"] # These are modeled in plain CodeQL. TODO: migrate them. # - ["java.lang", "ProcessBuilder", False, "command", "(String[])", "", "Argument[0]", "command-injection", "ai-manual"] # - ["java.lang", "ProcessBuilder", False, "directory", "(File)", "", "Argument[0]", "command-injection", "ai-manual"] @@ -29,14 +32,14 @@ extensions: # These are modeled in plain CodeQL. TODO: migrate them. # - ["java.lang", "System", False, "load", "(String)", "", "Argument[0]", "command-injection", "ai-manual"] # This is actually injecting a library. # - ["java.lang", "System", False, "loadLibrary", "(String)", "", "Argument[0]", "command-injection", "ai-manual"] # This is actually injecting a library. - - ["java.lang", "System$Logger", True, "log", "(Level,Object)", "", "Argument[1]", "logging", "manual"] - - ["java.lang", "System$Logger", True, "log", "(Level,ResourceBundle,String,Object[])", "", "Argument[2..3]", "logging", "manual"] - - ["java.lang", "System$Logger", True, "log", "(Level,ResourceBundle,String,Throwable)", "", "Argument[2]", "logging", "manual"] - - ["java.lang", "System$Logger", True, "log", "(Level,String)", "", "Argument[1]", "logging", "manual"] - - ["java.lang", "System$Logger", True, "log", "(Level,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["java.lang", "System$Logger", True, "log", "(Level,String,Supplier)", "", "Argument[1..2]", "logging", "manual"] - - ["java.lang", "System$Logger", True, "log", "(Level,String,Supplier,Throwable)", "", "Argument[1..2]", "logging", "manual"] - - ["java.lang", "System$Logger", True, "log", "(Level,String,Throwable)", "", "Argument[1]", "logging", "manual"] + - ["java.lang", "System$Logger", True, "log", "(Level,Object)", "", "Argument[1]", "log-injection", "manual"] + - ["java.lang", "System$Logger", True, "log", "(Level,ResourceBundle,String,Object[])", "", "Argument[2..3]", "log-injection", "manual"] + - ["java.lang", "System$Logger", True, "log", "(Level,ResourceBundle,String,Throwable)", "", "Argument[2]", "log-injection", "manual"] + - ["java.lang", "System$Logger", True, "log", "(Level,String)", "", "Argument[1]", "log-injection", "manual"] + - ["java.lang", "System$Logger", True, "log", "(Level,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["java.lang", "System$Logger", True, "log", "(Level,String,Supplier)", "", "Argument[1..2]", "log-injection", "manual"] + - ["java.lang", "System$Logger", True, "log", "(Level,String,Supplier,Throwable)", "", "Argument[1..2]", "log-injection", "manual"] + - ["java.lang", "System$Logger", True, "log", "(Level,String,Throwable)", "", "Argument[1]", "log-injection", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/java.net.http.model.yml b/java/ql/lib/ext/java.net.http.model.yml index d967f46494b..9fc18d2eaab 100644 --- a/java/ql/lib/ext/java.net.http.model.yml +++ b/java/ql/lib/ext/java.net.http.model.yml @@ -8,5 +8,5 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["java.net.http", "HttpRequest", False, "newBuilder", "", "", "Argument[0]", "open-url", "manual"] - - ["java.net.http", "HttpRequest$Builder", False, "uri", "", "", "Argument[0]", "open-url", "manual"] + - ["java.net.http", "HttpRequest", False, "newBuilder", "", "", "Argument[0]", "request-forgery", "manual"] + - ["java.net.http", "HttpRequest$Builder", False, "uri", "", "", "Argument[0]", "request-forgery", "manual"] diff --git a/java/ql/lib/ext/java.net.model.yml b/java/ql/lib/ext/java.net.model.yml index 9ab8c663506..39a4c484112 100644 --- a/java/ql/lib/ext/java.net.model.yml +++ b/java/ql/lib/ext/java.net.model.yml @@ -9,22 +9,22 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["java.net", "DatagramSocket", True, "connect", "(SocketAddress)", "", "Argument[0]", "open-url", "ai-manual"] - - ["java.net", "Socket", True, "Socket", "(String,int)", "", "Argument[0]", "open-url", "ai-manual"] - - ["java.net", "URL", False, "openConnection", "", "", "Argument[this]", "open-url", "manual"] - - ["java.net", "URL", False, "openConnection", "(Proxy)", "", "Argument[0]", "open-url", "ai-manual"] - - ["java.net", "URL", False, "openStream", "", "", "Argument[this]", "open-url", "manual"] - - ["java.net", "URLClassLoader", False, "URLClassLoader", "(String,URL[],ClassLoader)", "", "Argument[1]", "open-url", "manual"] - - ["java.net", "URLClassLoader", False, "URLClassLoader", "(String,URL[],ClassLoader,URLStreamHandlerFactory)", "", "Argument[1]", "open-url", "manual"] - - ["java.net", "URLClassLoader", False, "URLClassLoader", "(URL[])", "", "Argument[0]", "open-url", "manual"] - - ["java.net", "URLClassLoader", False, "URLClassLoader", "(URL[],ClassLoader)", "", "Argument[0]", "open-url", "manual"] - - ["java.net", "URLClassLoader", False, "URLClassLoader", "(URL[],ClassLoader,URLStreamHandlerFactory)", "", "Argument[0]", "open-url", "manual"] - - ["java.net", "URLClassLoader", False, "newInstance", "", "", "Argument[0]", "open-url", "manual"] - - ["java.net", "URLClassLoader", False, "URLClassLoader", "(String,URL[],ClassLoader,URLStreamHandlerFactory)", "", "Argument[1]", "open-url", "manual"] - - ["java.net", "URLClassLoader", False, "URLClassLoader", "(String,URL[],ClassLoader)", "", "Argument[1]", "open-url", "manual"] - - ["java.net", "URLClassLoader", False, "URLClassLoader", "(URL[],ClassLoader,URLStreamHandlerFactory)", "", "Argument[0]", "open-url", "manual"] - - ["java.net", "URLClassLoader", False, "URLClassLoader", "(URL[],ClassLoader)", "", "Argument[0]", "open-url", "manual"] - - ["java.net", "URLClassLoader", False, "URLClassLoader", "(URL[])", "", "Argument[0]", "open-url", "manual"] + - ["java.net", "DatagramSocket", True, "connect", "(SocketAddress)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["java.net", "Socket", True, "Socket", "(String,int)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["java.net", "URL", False, "openConnection", "", "", "Argument[this]", "request-forgery", "manual"] + - ["java.net", "URL", False, "openConnection", "(Proxy)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["java.net", "URL", False, "openStream", "", "", "Argument[this]", "request-forgery", "manual"] + - ["java.net", "URLClassLoader", False, "URLClassLoader", "(String,URL[],ClassLoader)", "", "Argument[1]", "request-forgery", "manual"] + - ["java.net", "URLClassLoader", False, "URLClassLoader", "(String,URL[],ClassLoader,URLStreamHandlerFactory)", "", "Argument[1]", "request-forgery", "manual"] + - ["java.net", "URLClassLoader", False, "URLClassLoader", "(URL[])", "", "Argument[0]", "request-forgery", "manual"] + - ["java.net", "URLClassLoader", False, "URLClassLoader", "(URL[],ClassLoader)", "", "Argument[0]", "request-forgery", "manual"] + - ["java.net", "URLClassLoader", False, "URLClassLoader", "(URL[],ClassLoader,URLStreamHandlerFactory)", "", "Argument[0]", "request-forgery", "manual"] + - ["java.net", "URLClassLoader", False, "newInstance", "", "", "Argument[0]", "request-forgery", "manual"] + - ["java.net", "URLClassLoader", False, "URLClassLoader", "(String,URL[],ClassLoader,URLStreamHandlerFactory)", "", "Argument[1]", "request-forgery", "manual"] + - ["java.net", "URLClassLoader", False, "URLClassLoader", "(String,URL[],ClassLoader)", "", "Argument[1]", "request-forgery", "manual"] + - ["java.net", "URLClassLoader", False, "URLClassLoader", "(URL[],ClassLoader,URLStreamHandlerFactory)", "", "Argument[0]", "request-forgery", "manual"] + - ["java.net", "URLClassLoader", False, "URLClassLoader", "(URL[],ClassLoader)", "", "Argument[0]", "request-forgery", "manual"] + - ["java.net", "URLClassLoader", False, "URLClassLoader", "(URL[])", "", "Argument[0]", "request-forgery", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/java.nio.file.model.yml b/java/ql/lib/ext/java.nio.file.model.yml index 42ae8b9052b..5e3f32b5e6f 100644 --- a/java/ql/lib/ext/java.nio.file.model.yml +++ b/java/ql/lib/ext/java.nio.file.model.yml @@ -3,49 +3,62 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["java.nio.file", "Files", False, "copy", "(Path,OutputStream)", "", "Argument[0]", "read-file", "manual"] - - ["java.nio.file", "Files", False, "copy", "(Path,Path,CopyOption[])", "", "Argument[0]", "read-file", "manual"] - - ["java.nio.file", "Files", False, "copy", "(Path,Path,CopyOption[])", "", "Argument[1]", "create-file", "manual"] - - ["java.nio.file", "Files", False, "copy", "(InputStream,Path,CopyOption[])", "", "Argument[0]", "write-file", "manual"] - - ["java.nio.file", "Files", False, "copy", "(InputStream,Path,CopyOption[])", "", "Argument[1]", "create-file", "manual"] - - ["java.nio.file", "Files", False, "createDirectories", "", "", "Argument[0]", "create-file", "manual"] - - ["java.nio.file", "Files", False, "createDirectory", "", "", "Argument[0]", "create-file", "manual"] - - ["java.nio.file", "Files", False, "createFile", "", "", "Argument[0]", "create-file", "manual"] - - ["java.nio.file", "Files", False, "createLink", "", "", "Argument[0]", "create-file", "manual"] - - ["java.nio.file", "Files", False, "createSymbolicLink", "", "", "Argument[0]", "create-file", "manual"] - - ["java.nio.file", "Files", False, "createTempDirectory", "(Path,String,FileAttribute[])", "", "Argument[0]", "create-file", "manual"] - - ["java.nio.file", "Files", False, "createTempFile", "(Path,String,String,FileAttribute[])", "", "Argument[0]", "create-file", "manual"] - - ["java.nio.file", "Files", False, "delete", "(Path)", "", "Argument[0]", "create-file", "ai-manual"] # should be delete-file - - ["java.nio.file", "Files", False, "deleteIfExists", "(Path)", "", "Argument[0]", "create-file", "ai-manual"] # should be delete-file - - ["java.nio.file", "Files", False, "deleteIfExists", "(Path)", "", "Argument[0]", "create-file", "ai-manual"] # should be delete-file - - ["java.nio.file", "Files", False, "lines", "(Path,Charset)", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.nio.file", "Files", False, "lines", "(Path)", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.nio.file", "Files", False, "move", "", "", "Argument[1]", "create-file", "manual"] - - ["java.nio.file", "Files", False, "newBufferedReader", "(Path,Charset)", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.nio.file", "Files", False, "newBufferedReader", "(Path)", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.nio.file", "Files", False, "newBufferedWriter", "", "", "Argument[0]", "create-file", "manual"] - - ["java.nio.file", "Files", False, "newInputStream", "(Path,OpenOption[])", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.nio.file", "Files", False, "newOutputStream", "", "", "Argument[0]", "create-file", "manual"] - - ["java.nio.file", "Files", False, "readAllBytes", "(Path)", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.nio.file", "Files", False, "readAllLines", "(Path,Charset)", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.nio.file", "Files", False, "readAllLines", "(Path)", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.nio.file", "Files", False, "readString", "(Path,Charset)", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.nio.file", "Files", False, "readString", "(Path)", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.nio.file", "Files", False, "write", "", "", "Argument[0]", "create-file", "manual"] - - ["java.nio.file", "Files", False, "write", "", "", "Argument[1]", "write-file", "manual"] - - ["java.nio.file", "Files", False, "writeString", "", "", "Argument[0]", "create-file", "manual"] - - ["java.nio.file", "Files", False, "writeString", "", "", "Argument[1]", "write-file", "manual"] - - ["java.nio.file", "Files", True, "move", "(Path,Path,CopyOption[])", "", "Argument[1]", "create-file", "ai-manual"] - - ["java.nio.file", "Files", True, "move", "(Path,Path,CopyOption[])", "", "Argument[0]", "create-file", "ai-manual"] # should be delete-file - - ["java.nio.file", "Files", True, "delete", "(Path)", "", "Argument[0]", "create-file", "ai-manual"] # should be delete-file - - ["java.nio.file", "Files", True, "newInputStream", "(Path,OpenOption[])", "", "Argument[0]", "read-file", "ai-manual"] - - ["java.nio.file", "Files", True, "newOutputStream", "(Path,OpenOption[])", "", "Argument[0]", "create-file", "ai-manual"] - - ["java.nio.file", "SecureDirectoryStream", True, "deleteDirectory", "(Path)", "", "Argument[0]", "create-file", "ai-manual"] # should be delete-file - - ["java.nio.file", "SecureDirectoryStream", True, "deleteFile", "(Path)", "", "Argument[0]", "create-file", "ai-manual"] # should be delete-file + - ["java.nio.file", "Files", False, "copy", "(Path,OutputStream)", "", "Argument[0]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "copy", "(Path,Path,CopyOption[])", "", "Argument[0]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "copy", "(Path,Path,CopyOption[])", "", "Argument[1]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "copy", "(InputStream,Path,CopyOption[])", "", "Argument[0]", "file-content-store", "manual"] + - ["java.nio.file", "Files", False, "copy", "(InputStream,Path,CopyOption[])", "", "Argument[1]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "createDirectories", "", "", "Argument[0]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "createDirectory", "", "", "Argument[0]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "createFile", "", "", "Argument[0]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "createLink", "", "", "Argument[0]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "createSymbolicLink", "", "", "Argument[0]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "createTempDirectory", "(Path,String,FileAttribute[])", "", "Argument[0]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "createTempFile", "(Path,String,String,FileAttribute[])", "", "Argument[0]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "delete", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", False, "deleteIfExists", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", False, "deleteIfExists", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", False, "getFileStore", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] # the FileStore class is unlikely to be used for later sanitization + - ["java.nio.file", "Files", False, "lines", "(Path,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", False, "lines", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", False, "move", "", "", "Argument[1]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "newBufferedReader", "(Path,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", False, "newBufferedReader", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", False, "newBufferedWriter", "", "", "Argument[0]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "newInputStream", "(Path,OpenOption[])", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", False, "newOutputStream", "", "", "Argument[0]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "probeContentType", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] # accesses the file based on user input, but only reads its content type from it + - ["java.nio.file", "Files", False, "readAllBytes", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", False, "readAllLines", "(Path,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", False, "readAllLines", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", False, "readString", "(Path,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", False, "readString", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", False, "write", "", "", "Argument[0]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "write", "", "", "Argument[1]", "file-content-store", "manual"] + - ["java.nio.file", "Files", False, "writeString", "", "", "Argument[0]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "writeString", "", "", "Argument[1]", "file-content-store", "manual"] + - ["java.nio.file", "Files", True, "move", "(Path,Path,CopyOption[])", "", "Argument[1]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", True, "move", "(Path,Path,CopyOption[])", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", True, "delete", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", True, "newInputStream", "(Path,OpenOption[])", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", True, "newOutputStream", "(Path,OpenOption[])", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "FileSystem", False, "getPath", "", "", "Argument[0..1]", "path-injection", "manual"] # old PathCreation + - ["java.nio.file", "Path", False, "of", "(String,String[])", "", "Argument[0..1]", "path-injection", "manual"] # old PathCreation + - ["java.nio.file", "Path", False, "of", "(URI)", "", "Argument[0]", "path-injection", "manual"] # old PathCreation + - ["java.nio.file", "Path", False, "resolve", "(String)", "", "Argument[0]", "path-injection", "manual"] # old PathCreation + - ["java.nio.file", "Path", False, "resolveSibling", "(String)", "", "Argument[0]", "path-injection", "manual"] # old PathCreation + - ["java.nio.file", "Paths", False, "get", "(String,String[])", "", "Argument[0..1]", "path-injection", "manual"] # old PathCreation + - ["java.nio.file", "Paths", False, "get", "(URI)", "", "Argument[0]", "path-injection", "manual"] # old PathCreation + - ["java.nio.file", "SecureDirectoryStream", True, "deleteDirectory", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "SecureDirectoryStream", True, "deleteFile", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - addsTo: pack: codeql/java-all extensible: summaryModel data: + - ["java.nio.file", "Files", False, "find", "(Path,int,BiPredicate,FileVisitOption[])", "", "Argument[0]", "ReturnValue.Element", "taint", "ai-manual"] + - ["java.nio.file", "Files", False, "find", "(Path,int,BiPredicate,FileVisitOption[])", "", "Argument[2]", "ReturnValue.Element", "taint", "ai-manual"] + - ["java.nio.file", "Files", False, "list", "(Path)", "", "Argument[0]", "ReturnValue.Element", "taint", "ai-manual"] + - ["java.nio.file", "Files", False, "readSymbolicLink", "(Path)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] # this can be used to enumerate a file system - ["java.nio.file", "Files", True, "newBufferedReader", "(Path,Charset)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["java.nio.file", "Files", True, "newBufferedReader", "(Path)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["java.nio.file", "Files", True, "newByteChannel", "(Path,OpenOption[])", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] @@ -81,4 +94,22 @@ extensions: pack: codeql/java-all extensible: neutralModel data: + # summary neutrals - ["java.nio.file", "Files", "exists", "(Path,LinkOption[])", "summary", "manual"] + + # sink neutrals + - ["java.nio.file", "Files", "exists", "", "sink", "hq-manual"] + - ["java.nio.file", "Files", "getLastModifiedTime", "", "sink", "hq-manual"] + - ["java.nio.file", "Files", "getOwner", "", "sink", "hq-manual"] + - ["java.nio.file", "Files", "getPosixFilePermissions", "", "sink", "hq-manual"] + - ["java.nio.file", "Files", "isDirectory", "", "sink", "hq-manual"] + - ["java.nio.file", "Files", "isExecutable", "", "sink", "hq-manual"] + - ["java.nio.file", "Files", "isHidden", "", "sink", "hq-manual"] + - ["java.nio.file", "Files", "isReadable", "", "sink", "hq-manual"] + - ["java.nio.file", "Files", "isRegularFile", "", "sink", "hq-manual"] + - ["java.nio.file", "Files", "isSameFile", "", "sink", "hq-manual"] + - ["java.nio.file", "Files", "isSymbolicLink", "", "sink", "hq-manual"] + - ["java.nio.file", "Files", "isWritable", "", "sink", "hq-manual"] + - ["java.nio.file", "Files", "notExists", "", "sink", "hq-manual"] + - ["java.nio.file", "Files", "setLastModifiedTime", "", "sink", "hq-manual"] + - ["java.nio.file", "Files", "size", "", "sink", "hq-manual"] diff --git a/java/ql/lib/ext/java.nio.file.spi.model.yml b/java/ql/lib/ext/java.nio.file.spi.model.yml new file mode 100644 index 00000000000..91e465af105 --- /dev/null +++ b/java/ql/lib/ext/java.nio.file.spi.model.yml @@ -0,0 +1,8 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + # sink neutrals + - ["java.nio.file.spi", "FileSystemProvider", "isHidden", "", "sink", "hq-manual"] + - ["java.nio.file.spi", "FileSystemProvider", "isSameFile", "", "sink", "hq-manual"] diff --git a/java/ql/lib/ext/java.sql.model.yml b/java/ql/lib/ext/java.sql.model.yml index 87e0fca7f9b..58985c886b5 100644 --- a/java/ql/lib/ext/java.sql.model.yml +++ b/java/ql/lib/ext/java.sql.model.yml @@ -3,25 +3,24 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["java.sql", "Connection", True, "prepareCall", "", "", "Argument[0]", "sql", "manual"] - - ["java.sql", "Connection", True, "prepareStatement", "", "", "Argument[0]", "sql", "manual"] - - ["java.sql", "DatabaseMetaData", True, "getColumns", "(String,String,String,String)", "", "Argument[2]", "sql", "ai-manual"] - - ["java.sql", "DatabaseMetaData", True, "getPrimaryKeys", "(String,String,String)", "", "Argument[2]", "sql", "ai-manual"] - - ["java.sql", "Driver", False, "connect", "(String,Properties)", "", "Argument[0]", "jdbc-url", "manual"] - - ["java.sql", "DriverManager", False, "getConnection", "(String)", "", "Argument[0]", "jdbc-url", "manual"] - - ["java.sql", "DriverManager", False, "getConnection", "(String,Properties)", "", "Argument[0]", "jdbc-url", "manual"] - - ["java.sql", "DriverManager", False, "getConnection", "(String,String,String)", "", "Argument[0]", "jdbc-url", "manual"] - - ["java.sql", "Statement", True, "addBatch", "", "", "Argument[0]", "sql", "manual"] - - ["java.sql", "Statement", True, "execute", "", "", "Argument[0]", "sql", "manual"] - - ["java.sql", "Statement", True, "executeLargeUpdate", "", "", "Argument[0]", "sql", "manual"] - - ["java.sql", "Statement", True, "executeQuery", "", "", "Argument[0]", "sql", "manual"] - - ["java.sql", "Statement", True, "executeUpdate", "", "", "Argument[0]", "sql", "manual"] + - ["java.sql", "Connection", True, "prepareCall", "", "", "Argument[0]", "sql-injection", "manual"] + - ["java.sql", "Connection", True, "prepareStatement", "", "", "Argument[0]", "sql-injection", "manual"] + - ["java.sql", "DatabaseMetaData", True, "getColumns", "(String,String,String,String)", "", "Argument[2]", "sql-injection", "ai-manual"] + - ["java.sql", "DatabaseMetaData", True, "getPrimaryKeys", "(String,String,String)", "", "Argument[2]", "sql-injection", "ai-manual"] + - ["java.sql", "Driver", False, "connect", "(String,Properties)", "", "Argument[0]", "request-forgery", "manual"] + - ["java.sql", "DriverManager", False, "getConnection", "(String)", "", "Argument[0]", "request-forgery", "manual"] + - ["java.sql", "DriverManager", False, "getConnection", "(String,Properties)", "", "Argument[0]", "request-forgery", "manual"] + - ["java.sql", "DriverManager", False, "getConnection", "(String,String,String)", "", "Argument[0]", "request-forgery", "manual"] + - ["java.sql", "Statement", True, "addBatch", "", "", "Argument[0]", "sql-injection", "manual"] + - ["java.sql", "Statement", True, "execute", "", "", "Argument[0]", "sql-injection", "manual"] + - ["java.sql", "Statement", True, "executeLargeUpdate", "", "", "Argument[0]", "sql-injection", "manual"] + - ["java.sql", "Statement", True, "executeQuery", "", "", "Argument[0]", "sql-injection", "manual"] + - ["java.sql", "Statement", True, "executeUpdate", "", "", "Argument[0]", "sql-injection", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel data: - ["java.sql", "Connection", True, "nativeSQL", "(String)", "", "Argument[0]", "ReturnValue", "taint", "hq-manual"] - - ["java.sql", "PreparedStatement", True, "setString", "(int,String)", "", "Argument[1]", "Argument[this]", "value", "manual"] - ["java.sql", "ResultSet", True, "getString", "(String)", "", "Argument[this]", "ReturnValue", "taint", "manual"] - addsTo: @@ -31,13 +30,14 @@ extensions: - ["java.sql", "Connection", "createStatement", "()", "summary", "manual"] - ["java.sql", "PreparedStatement", "executeUpdate", "()", "summary", "manual"] - ["java.sql", "PreparedStatement", "executeQuery", "()", "summary", "manual"] + - ["java.sql", "PreparedStatement", "setInt", "(int,int)", "summary", "manual"] + - ["java.sql", "PreparedStatement", "setLong", "(int,long)", "summary", "manual"] + - ["java.sql", "PreparedStatement", "setString", "(int,String)", "summary", "manual"] - ["java.sql", "ResultSet", "next", "()", "summary", "manual"] - ["java.sql", "Statement", "close", "()", "summary", "manual"] # The below APIs have numeric flow and are currently being stored as neutral models. # These may be changed to summary models with kinds "value-numeric" and "taint-numeric" (or similar) in the future. - - ["java.sql", "PreparedStatement", "setInt", "(int,int)", "summary", "manual"] # value-numeric - - ["java.sql", "PreparedStatement", "setLong", "(int,long)", "summary", "manual"] # value-numeric - ["java.sql", "ResultSet", "getInt", "(int)", "summary", "manual"] # taint-numeric - ["java.sql", "ResultSet", "getInt", "(String)", "summary", "manual"] # taint-numeric - ["java.sql", "ResultSet", "getLong", "(String)", "summary", "manual"] # taint-numeric diff --git a/java/ql/lib/ext/java.text.model.yml b/java/ql/lib/ext/java.text.model.yml index 728ed4fa6b4..5b315e9986d 100644 --- a/java/ql/lib/ext/java.text.model.yml +++ b/java/ql/lib/ext/java.text.model.yml @@ -3,8 +3,14 @@ extensions: pack: codeql/java-all extensible: neutralModel data: + # summary neutrals # The below APIs have numeric flow and are currently being stored as neutral models. # These may be changed to summary models with kinds "value-numeric" and "taint-numeric" (or similar) in the future. - ["java.text", "DateFormat", "format", "(Date)", "summary", "manual"] # taint-numeric - ["java.text", "DateFormat", "parse", "(String)", "summary", "manual"] # taint-numeric - ["java.text", "SimpleDateFormat", "SimpleDateFormat", "(String)", "summary", "manual"] # taint-numeric + + # sink neutrals + - ["java.text", "Collator", "compare", "", "sink", "hq-manual"] + - ["java.text", "Collator", "equals", "", "sink", "hq-manual"] + - ["java.text", "RuleBasedCollator", "compare", "", "sink", "hq-manual"] diff --git a/java/ql/lib/ext/java.util.logging.model.yml b/java/ql/lib/ext/java.util.logging.model.yml index 05d7aa62a70..330a2d469a8 100644 --- a/java/ql/lib/ext/java.util.logging.model.yml +++ b/java/ql/lib/ext/java.util.logging.model.yml @@ -3,40 +3,40 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["java.util.logging", "Logger", True, "config", "", "", "Argument[0]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "entering", "(String,String)", "", "Argument[0..1]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "entering", "(String,String,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "entering", "(String,String,Object[])", "", "Argument[0..2]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "exiting", "(String,String)", "", "Argument[0..1]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "exiting", "(String,String,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "fine", "", "", "Argument[0]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "finer", "", "", "Argument[0]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "finest", "", "", "Argument[0]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "info", "", "", "Argument[0]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "log", "(Level,String)", "", "Argument[1]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "log", "(Level,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "log", "(Level,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "log", "(Level,String,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "log", "(Level,Supplier)", "", "Argument[1]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "log", "(Level,Throwable,Supplier)", "", "Argument[2]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "log", "(LogRecord)", "", "Argument[0]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "logp", "(Level,String,String,String)", "", "Argument[1..3]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "logp", "(Level,String,String,String,Object)", "", "Argument[1..4]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "logp", "(Level,String,String,String,Object[])", "", "Argument[1..4]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "logp", "(Level,String,String,String,Throwable)", "", "Argument[1..3]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "logp", "(Level,String,String,Supplier)", "", "Argument[1..3]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "logp", "(Level,String,String,Throwable,Supplier)", "", "Argument[1..2]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "logp", "(Level,String,String,Throwable,Supplier)", "", "Argument[4]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,ResourceBundle,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,ResourceBundle,String,Object[])", "", "Argument[4..5]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,ResourceBundle,String,Throwable)", "", "Argument[1..2]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,ResourceBundle,String,Throwable)", "", "Argument[4]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,String,String)", "", "Argument[1..4]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,String,String,Object)", "", "Argument[1..5]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,String,String,Object[])", "", "Argument[1..5]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,String,String,Throwable)", "", "Argument[1..4]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "severe", "", "", "Argument[0]", "logging", "manual"] - - ["java.util.logging", "Logger", True, "warning", "", "", "Argument[0]", "logging", "manual"] + - ["java.util.logging", "Logger", True, "config", "", "", "Argument[0]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "entering", "(String,String)", "", "Argument[0..1]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "entering", "(String,String,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "entering", "(String,String,Object[])", "", "Argument[0..2]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "exiting", "(String,String)", "", "Argument[0..1]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "exiting", "(String,String,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "fine", "", "", "Argument[0]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "finer", "", "", "Argument[0]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "finest", "", "", "Argument[0]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "info", "", "", "Argument[0]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "log", "(Level,String)", "", "Argument[1]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "log", "(Level,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "log", "(Level,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "log", "(Level,String,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "log", "(Level,Supplier)", "", "Argument[1]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "log", "(Level,Throwable,Supplier)", "", "Argument[2]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "log", "(LogRecord)", "", "Argument[0]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "logp", "(Level,String,String,String)", "", "Argument[1..3]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "logp", "(Level,String,String,String,Object)", "", "Argument[1..4]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "logp", "(Level,String,String,String,Object[])", "", "Argument[1..4]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "logp", "(Level,String,String,String,Throwable)", "", "Argument[1..3]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "logp", "(Level,String,String,Supplier)", "", "Argument[1..3]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "logp", "(Level,String,String,Throwable,Supplier)", "", "Argument[1..2]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "logp", "(Level,String,String,Throwable,Supplier)", "", "Argument[4]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,ResourceBundle,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,ResourceBundle,String,Object[])", "", "Argument[4..5]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,ResourceBundle,String,Throwable)", "", "Argument[1..2]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,ResourceBundle,String,Throwable)", "", "Argument[4]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,String,String)", "", "Argument[1..4]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,String,String,Object)", "", "Argument[1..5]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,String,String,Object[])", "", "Argument[1..5]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,String,String,Throwable)", "", "Argument[1..4]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "severe", "", "", "Argument[0]", "log-injection", "manual"] + - ["java.util.logging", "Logger", True, "warning", "", "", "Argument[0]", "log-injection", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/java.util.prefs.model.yml b/java/ql/lib/ext/java.util.prefs.model.yml new file mode 100644 index 00000000000..a2a7c16bc5d --- /dev/null +++ b/java/ql/lib/ext/java.util.prefs.model.yml @@ -0,0 +1,8 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + # sink neutrals + - ["java.util.prefs", "AbstractPreferences", "nodeExists", "", "sink", "hq-manual"] + - ["java.util.prefs", "Preferences", "nodeExists", "", "sink", "hq-manual"] diff --git a/java/ql/lib/ext/javafx.scene.web.model.yml b/java/ql/lib/ext/javafx.scene.web.model.yml index 64f8eea916b..78d1a00dfde 100644 --- a/java/ql/lib/ext/javafx.scene.web.model.yml +++ b/java/ql/lib/ext/javafx.scene.web.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["javafx.scene.web", "WebEngine", False, "load", "(String)", "", "Argument[0]", "open-url", "ai-manual"] + - ["javafx.scene.web", "WebEngine", False, "load", "(String)", "", "Argument[0]", "request-forgery", "ai-manual"] diff --git a/java/ql/lib/ext/javax.faces.context.model.yml b/java/ql/lib/ext/javax.faces.context.model.yml index ad33971c2c3..98f3e64ec6c 100644 --- a/java/ql/lib/ext/javax.faces.context.model.yml +++ b/java/ql/lib/ext/javax.faces.context.model.yml @@ -14,5 +14,5 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["javax.faces.context", "ResponseStream", True, "write", "", "", "Argument[0]", "xss", "manual"] - - ["javax.faces.context", "ResponseWriter", True, "write", "", "", "Argument[0]", "xss", "manual"] + - ["javax.faces.context", "ResponseStream", True, "write", "", "", "Argument[0]", "html-injection", "manual"] + - ["javax.faces.context", "ResponseWriter", True, "write", "", "", "Argument[0]", "html-injection", "manual"] diff --git a/java/ql/lib/ext/javax.naming.directory.model.yml b/java/ql/lib/ext/javax.naming.directory.model.yml index bb350a084cb..6f60e7cf20d 100644 --- a/java/ql/lib/ext/javax.naming.directory.model.yml +++ b/java/ql/lib/ext/javax.naming.directory.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["javax.naming.directory", "DirContext", True, "search", "", "", "Argument[0..1]", "ldap", "manual"] + - ["javax.naming.directory", "DirContext", True, "search", "", "", "Argument[0..1]", "ldap-injection", "manual"] diff --git a/java/ql/lib/ext/javax.net.ssl.model.yml b/java/ql/lib/ext/javax.net.ssl.model.yml index 7cbed92c184..59085b8d120 100644 --- a/java/ql/lib/ext/javax.net.ssl.model.yml +++ b/java/ql/lib/ext/javax.net.ssl.model.yml @@ -3,5 +3,5 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["javax.net.ssl", "HttpsURLConnection", True, "setDefaultHostnameVerifier", "", "", "Argument[0]", "set-hostname-verifier", "manual"] - - ["javax.net.ssl", "HttpsURLConnection", True, "setHostnameVerifier", "", "", "Argument[0]", "set-hostname-verifier", "manual"] + - ["javax.net.ssl", "HttpsURLConnection", True, "setDefaultHostnameVerifier", "", "", "Argument[0]", "hostname-verification", "manual"] + - ["javax.net.ssl", "HttpsURLConnection", True, "setHostnameVerifier", "", "", "Argument[0]", "hostname-verification", "manual"] diff --git a/java/ql/lib/ext/javax.script.model.yml b/java/ql/lib/ext/javax.script.model.yml index 0dcc6adb3d7..dcec679640f 100644 --- a/java/ql/lib/ext/javax.script.model.yml +++ b/java/ql/lib/ext/javax.script.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["javax.script", "CompiledScript", False, "eval", "", "", "Argument[this]", "mvel", "manual"] + - ["javax.script", "CompiledScript", False, "eval", "", "", "Argument[this]", "mvel-injection", "manual"] diff --git a/java/ql/lib/ext/javax.servlet.http.model.yml b/java/ql/lib/ext/javax.servlet.http.model.yml index e4c0a2b2332..6485ea22a2e 100644 --- a/java/ql/lib/ext/javax.servlet.http.model.yml +++ b/java/ql/lib/ext/javax.servlet.http.model.yml @@ -22,10 +22,10 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["javax.servlet.http", "HttpServletResponse", False, "addCookie", "", "", "Argument[0]", "header-splitting", "manual"] - - ["javax.servlet.http", "HttpServletResponse", False, "addHeader", "", "", "Argument[0..1]", "header-splitting", "manual"] + - ["javax.servlet.http", "HttpServletResponse", False, "addCookie", "", "", "Argument[0]", "response-splitting", "manual"] + - ["javax.servlet.http", "HttpServletResponse", False, "addHeader", "", "", "Argument[0..1]", "response-splitting", "manual"] - ["javax.servlet.http", "HttpServletResponse", False, "sendError", "(int,String)", "", "Argument[1]", "information-leak", "manual"] - - ["javax.servlet.http", "HttpServletResponse", False, "setHeader", "", "", "Argument[0..1]", "header-splitting", "manual"] + - ["javax.servlet.http", "HttpServletResponse", False, "setHeader", "", "", "Argument[0..1]", "response-splitting", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/javax.servlet.model.yml b/java/ql/lib/ext/javax.servlet.model.yml index fae0bd6f2b3..7d7f432d2bd 100644 --- a/java/ql/lib/ext/javax.servlet.model.yml +++ b/java/ql/lib/ext/javax.servlet.model.yml @@ -14,4 +14,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["javax.servlet", "ServletContext", True, "getResourceAsStream", "(String)", "", "Argument[0]", "read-file", "ai-manual"] + - ["javax.servlet", "ServletContext", True, "getResourceAsStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/javax.ws.rs.client.model.yml b/java/ql/lib/ext/javax.ws.rs.client.model.yml index 0a5a01c3338..e9855623951 100644 --- a/java/ql/lib/ext/javax.ws.rs.client.model.yml +++ b/java/ql/lib/ext/javax.ws.rs.client.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["javax.ws.rs.client", "Client", True, "target", "", "", "Argument[0]", "open-url", "manual"] + - ["javax.ws.rs.client", "Client", True, "target", "", "", "Argument[0]", "request-forgery", "manual"] diff --git a/java/ql/lib/ext/javax.ws.rs.core.model.yml b/java/ql/lib/ext/javax.ws.rs.core.model.yml index b73078a5ae5..dfdf2ee6fd0 100644 --- a/java/ql/lib/ext/javax.ws.rs.core.model.yml +++ b/java/ql/lib/ext/javax.ws.rs.core.model.yml @@ -3,9 +3,9 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["javax.ws.rs.core", "Response", True, "seeOther", "", "", "Argument[0]", "url-redirect", "manual"] - - ["javax.ws.rs.core", "Response", True, "temporaryRedirect", "", "", "Argument[0]", "url-redirect", "manual"] - - ["javax.ws.rs.core", "ResponseBuilder", False, "header", "", "", "Argument[1]", "header-splitting", "manual"] + - ["javax.ws.rs.core", "Response", True, "seeOther", "", "", "Argument[0]", "url-redirection", "manual"] + - ["javax.ws.rs.core", "Response", True, "temporaryRedirect", "", "", "Argument[0]", "url-redirection", "manual"] + - ["javax.ws.rs.core", "ResponseBuilder", False, "header", "", "", "Argument[1]", "response-splitting", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/javax.xml.transform.model.yml b/java/ql/lib/ext/javax.xml.transform.model.yml index ffc321b004f..62a66a3d7ae 100644 --- a/java/ql/lib/ext/javax.xml.transform.model.yml +++ b/java/ql/lib/ext/javax.xml.transform.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["javax.xml.transform", "Transformer", False, "transform", "", "", "Argument[this]", "xslt", "manual"] + - ["javax.xml.transform", "Transformer", False, "transform", "", "", "Argument[this]", "xslt-injection", "manual"] diff --git a/java/ql/lib/ext/javax.xml.transform.stream.model.yml b/java/ql/lib/ext/javax.xml.transform.stream.model.yml index c058a88f337..8cb96b4c775 100644 --- a/java/ql/lib/ext/javax.xml.transform.stream.model.yml +++ b/java/ql/lib/ext/javax.xml.transform.stream.model.yml @@ -9,4 +9,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["javax.xml.transform.stream", "StreamResult", True, "StreamResult", "(File)", "", "Argument[0]", "create-file", "ai-manual"] + - ["javax.xml.transform.stream", "StreamResult", True, "StreamResult", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/javax.xml.xpath.model.yml b/java/ql/lib/ext/javax.xml.xpath.model.yml index 68f51a34a2e..6cad83433b6 100644 --- a/java/ql/lib/ext/javax.xml.xpath.model.yml +++ b/java/ql/lib/ext/javax.xml.xpath.model.yml @@ -3,6 +3,6 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["javax.xml.xpath", "XPath", True, "compile", "", "", "Argument[0]", "xpath", "manual"] - - ["javax.xml.xpath", "XPath", True, "evaluate", "", "", "Argument[0]", "xpath", "manual"] - - ["javax.xml.xpath", "XPath", True, "evaluateExpression", "", "", "Argument[0]", "xpath", "manual"] + - ["javax.xml.xpath", "XPath", True, "compile", "", "", "Argument[0]", "xpath-injection", "manual"] + - ["javax.xml.xpath", "XPath", True, "evaluate", "", "", "Argument[0]", "xpath-injection", "manual"] + - ["javax.xml.xpath", "XPath", True, "evaluateExpression", "", "", "Argument[0]", "xpath-injection", "manual"] diff --git a/java/ql/lib/ext/kotlin.io.model.yml b/java/ql/lib/ext/kotlin.io.model.yml index 335457a48a0..b748e04a292 100644 --- a/java/ql/lib/ext/kotlin.io.model.yml +++ b/java/ql/lib/ext/kotlin.io.model.yml @@ -3,14 +3,16 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["kotlin.io", "FilesKt", False, "deleteRecursively", "(File)", "", "Argument[0]", "create-file", "ai-manual"] # should be delete-file - - ["kotlin.io", "FilesKt", False, "inputStream", "(File)", "", "Argument[0]", "read-file", "ai-manual"] - - ["kotlin.io", "FilesKt", False, "readBytes", "(File)", "", "Argument[0]", "read-file", "ai-manual"] - - ["kotlin.io", "FilesKt", False, "readText", "(File,Charset)", "", "Argument[0]", "read-file", "ai-manual"] + - ["kotlin.io", "FilesKt", False, "deleteRecursively", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["kotlin.io", "FilesKt", False, "inputStream", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["kotlin.io", "FilesKt", False, "readBytes", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["kotlin.io", "FilesKt", False, "readText", "(File,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - addsTo: pack: codeql/java-all extensible: summaryModel data: + - ["kotlin.io", "CloseableKt", False, "use", "", "", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"] + - ["kotlin.io", "CloseableKt", False, "use", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] - ["kotlin.io", "FilesKt", False, "normalize", "(File)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["kotlin.io", "FilesKt", False, "relativeTo", "(File,File)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] - ["kotlin.io", "FilesKt", False, "relativeTo", "(File,File)", "", "Argument[1]", "ReturnValue", "taint", "ai-manual"] diff --git a/java/ql/lib/ext/kotlin.model.yml b/java/ql/lib/ext/kotlin.model.yml new file mode 100644 index 00000000000..ea275a78515 --- /dev/null +++ b/java/ql/lib/ext/kotlin.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["kotlin", "StandardKt", False, "with", "", "", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"] + - ["kotlin", "StandardKt", False, "with", "", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] diff --git a/java/ql/lib/ext/net.sf.saxon.s9api.model.yml b/java/ql/lib/ext/net.sf.saxon.s9api.model.yml index 1559092f535..aa0e3eba5a9 100644 --- a/java/ql/lib/ext/net.sf.saxon.s9api.model.yml +++ b/java/ql/lib/ext/net.sf.saxon.s9api.model.yml @@ -3,8 +3,8 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["net.sf.saxon.s9api", "Xslt30Transformer", False, "applyTemplates", "", "", "Argument[this]", "xslt", "manual"] - - ["net.sf.saxon.s9api", "Xslt30Transformer", False, "callFunction", "", "", "Argument[this]", "xslt", "manual"] - - ["net.sf.saxon.s9api", "Xslt30Transformer", False, "callTemplate", "", "", "Argument[this]", "xslt", "manual"] - - ["net.sf.saxon.s9api", "Xslt30Transformer", False, "transform", "", "", "Argument[this]", "xslt", "manual"] - - ["net.sf.saxon.s9api", "XsltTransformer", False, "transform", "", "", "Argument[this]", "xslt", "manual"] + - ["net.sf.saxon.s9api", "Xslt30Transformer", False, "applyTemplates", "", "", "Argument[this]", "xslt-injection", "manual"] + - ["net.sf.saxon.s9api", "Xslt30Transformer", False, "callFunction", "", "", "Argument[this]", "xslt-injection", "manual"] + - ["net.sf.saxon.s9api", "Xslt30Transformer", False, "callTemplate", "", "", "Argument[this]", "xslt-injection", "manual"] + - ["net.sf.saxon.s9api", "Xslt30Transformer", False, "transform", "", "", "Argument[this]", "xslt-injection", "manual"] + - ["net.sf.saxon.s9api", "XsltTransformer", False, "transform", "", "", "Argument[this]", "xslt-injection", "manual"] diff --git a/java/ql/lib/ext/okhttp3.model.yml b/java/ql/lib/ext/okhttp3.model.yml index 21563331656..a0662408708 100644 --- a/java/ql/lib/ext/okhttp3.model.yml +++ b/java/ql/lib/ext/okhttp3.model.yml @@ -3,8 +3,10 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["okhttp3", "Request", True, "Request", "", "", "Argument[0]", "open-url", "manual"] - - ["okhttp3", "Request$Builder", True, "url", "", "", "Argument[0]", "open-url", "manual"] + - ["okhttp3", "OkHttpClient", True, "newCall", "(Request)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["okhttp3", "OkHttpClient", True, "newWebSocket", "(Request,WebSocketListener)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["okhttp3", "Request", True, "Request", "", "", "Argument[0]", "request-forgery", "manual"] + - ["okhttp3", "Request$Builder", True, "url", "", "", "Argument[0]", "request-forgery", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel @@ -56,3 +58,4 @@ extensions: - ["okhttp3", "HttpUrl$Builder", False, "setQueryParameter", "", "", "Argument[this]", "ReturnValue", "value", "manual"] - ["okhttp3", "HttpUrl$Builder", False, "setQueryParameter", "", "", "Argument[0]", "Argument[this]", "taint", "manual"] - ["okhttp3", "HttpUrl$Builder", False, "username", "", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["okhttp3", "Request$Builder", True, "build", "()", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] diff --git a/java/ql/lib/ext/org.antlr.runtime.model.yml b/java/ql/lib/ext/org.antlr.runtime.model.yml new file mode 100644 index 00000000000..db66062c682 --- /dev/null +++ b/java/ql/lib/ext/org.antlr.runtime.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["org.antlr.runtime", "ANTLRFileStream", True, "ANTLRFileStream", "(String,String)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.commons.io.model.yml b/java/ql/lib/ext/org.apache.commons.io.model.yml index e23dd5fca44..e80bc525883 100644 --- a/java/ql/lib/ext/org.apache.commons.io.model.yml +++ b/java/ql/lib/ext/org.apache.commons.io.model.yml @@ -16,8 +16,8 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.commons.io", "FileUtils", True, "copyInputStreamToFile", "(InputStream,File)", "", "Argument[0]", "write-file", "ai-manual"] - - ["org.apache.commons.io", "FileUtils", True, "copyInputStreamToFile", "(InputStream,File)", "", "Argument[1]", "create-file", "manual"] - - ["org.apache.commons.io", "FileUtils", True, "copyToFile", "(InputStream,File)", "", "Argument[0]", "write-file", "ai-manual"] - - ["org.apache.commons.io", "FileUtils", True, "copyToFile", "(InputStream,File)", "", "Argument[1]", "create-file", "manual"] - - ["org.apache.commons.io", "FileUtils", True, "openInputStream", "(File)", "", "Argument[0]", "read-file", "ai-manual"] + - ["org.apache.commons.io", "FileUtils", True, "copyInputStreamToFile", "(InputStream,File)", "", "Argument[0]", "file-content-store", "ai-manual"] + - ["org.apache.commons.io", "FileUtils", True, "copyInputStreamToFile", "(InputStream,File)", "", "Argument[1]", "path-injection", "manual"] + - ["org.apache.commons.io", "FileUtils", True, "copyToFile", "(InputStream,File)", "", "Argument[0]", "file-content-store", "ai-manual"] + - ["org.apache.commons.io", "FileUtils", True, "copyToFile", "(InputStream,File)", "", "Argument[1]", "path-injection", "manual"] + - ["org.apache.commons.io", "FileUtils", True, "openInputStream", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.commons.jelly.model.yml b/java/ql/lib/ext/org.apache.commons.jelly.model.yml index 0669f6744b9..ef9e48d041a 100644 --- a/java/ql/lib/ext/org.apache.commons.jelly.model.yml +++ b/java/ql/lib/ext/org.apache.commons.jelly.model.yml @@ -3,9 +3,9 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.commons.jelly", "JellyContext", True, "JellyContext", "(JellyContext,URL,URL)", "", "Argument[1]", "open-url", "ai-manual"] - - ["org.apache.commons.jelly", "JellyContext", True, "JellyContext", "(JellyContext,URL,URL)", "", "Argument[2]", "open-url", "ai-manual"] - - ["org.apache.commons.jelly", "JellyContext", True, "JellyContext", "(JellyContext,URL)", "", "Argument[1]", "open-url", "ai-manual"] - - ["org.apache.commons.jelly", "JellyContext", True, "JellyContext", "(URL,URL)", "", "Argument[0]", "open-url", "ai-manual"] - - ["org.apache.commons.jelly", "JellyContext", True, "JellyContext", "(URL,URL)", "", "Argument[1]", "open-url", "ai-manual"] - - ["org.apache.commons.jelly", "JellyContext", True, "JellyContext", "(URL)", "", "Argument[0]", "open-url", "ai-manual"] + - ["org.apache.commons.jelly", "JellyContext", True, "JellyContext", "(JellyContext,URL,URL)", "", "Argument[1]", "request-forgery", "ai-manual"] + - ["org.apache.commons.jelly", "JellyContext", True, "JellyContext", "(JellyContext,URL,URL)", "", "Argument[2]", "request-forgery", "ai-manual"] + - ["org.apache.commons.jelly", "JellyContext", True, "JellyContext", "(JellyContext,URL)", "", "Argument[1]", "request-forgery", "ai-manual"] + - ["org.apache.commons.jelly", "JellyContext", True, "JellyContext", "(URL,URL)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["org.apache.commons.jelly", "JellyContext", True, "JellyContext", "(URL,URL)", "", "Argument[1]", "request-forgery", "ai-manual"] + - ["org.apache.commons.jelly", "JellyContext", True, "JellyContext", "(URL)", "", "Argument[0]", "request-forgery", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.commons.jexl2.model.yml b/java/ql/lib/ext/org.apache.commons.jexl2.model.yml index f7ad474114e..8e224f5f20f 100644 --- a/java/ql/lib/ext/org.apache.commons.jexl2.model.yml +++ b/java/ql/lib/ext/org.apache.commons.jexl2.model.yml @@ -3,18 +3,18 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.commons.jexl2", "Expression", False, "callable", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl2", "Expression", False, "evaluate", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl2", "JexlEngine", False, "getProperty", "(JexlContext,Object,String)", "", "Argument[2]", "jexl", "manual"] - - ["org.apache.commons.jexl2", "JexlEngine", False, "getProperty", "(Object,String)", "", "Argument[1]", "jexl", "manual"] - - ["org.apache.commons.jexl2", "JexlEngine", False, "setProperty", "(JexlContext,Object,String,Object)", "", "Argument[2]", "jexl", "manual"] - - ["org.apache.commons.jexl2", "JexlEngine", False, "setProperty", "(Object,String,Object)", "", "Argument[1]", "jexl", "manual"] - - ["org.apache.commons.jexl2", "JexlExpression", False, "callable", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl2", "JexlExpression", False, "evaluate", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl2", "JexlScript", False, "callable", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl2", "JexlScript", False, "execute", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl2", "Script", False, "callable", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl2", "Script", False, "execute", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl2", "UnifiedJEXL$Expression", False, "evaluate", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl2", "UnifiedJEXL$Expression", False, "prepare", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl2", "UnifiedJEXL$Template", False, "evaluate", "", "", "Argument[this]", "jexl", "manual"] + - ["org.apache.commons.jexl2", "Expression", False, "callable", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl2", "Expression", False, "evaluate", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl2", "JexlEngine", False, "getProperty", "(JexlContext,Object,String)", "", "Argument[2]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl2", "JexlEngine", False, "getProperty", "(Object,String)", "", "Argument[1]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl2", "JexlEngine", False, "setProperty", "(JexlContext,Object,String,Object)", "", "Argument[2]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl2", "JexlEngine", False, "setProperty", "(Object,String,Object)", "", "Argument[1]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl2", "JexlExpression", False, "callable", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl2", "JexlExpression", False, "evaluate", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl2", "JexlScript", False, "callable", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl2", "JexlScript", False, "execute", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl2", "Script", False, "callable", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl2", "Script", False, "execute", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl2", "UnifiedJEXL$Expression", False, "evaluate", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl2", "UnifiedJEXL$Expression", False, "prepare", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl2", "UnifiedJEXL$Template", False, "evaluate", "", "", "Argument[this]", "jexl-injection", "manual"] diff --git a/java/ql/lib/ext/org.apache.commons.jexl3.model.yml b/java/ql/lib/ext/org.apache.commons.jexl3.model.yml index cbe04fc3e60..e2fee2fcb3d 100644 --- a/java/ql/lib/ext/org.apache.commons.jexl3.model.yml +++ b/java/ql/lib/ext/org.apache.commons.jexl3.model.yml @@ -3,18 +3,18 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.commons.jexl3", "Expression", False, "callable", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl3", "Expression", False, "evaluate", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl3", "JexlEngine", False, "getProperty", "(JexlContext,Object,String)", "", "Argument[2]", "jexl", "manual"] - - ["org.apache.commons.jexl3", "JexlEngine", False, "getProperty", "(Object,String)", "", "Argument[1]", "jexl", "manual"] - - ["org.apache.commons.jexl3", "JexlEngine", False, "setProperty", "(JexlContext,Object,String)", "", "Argument[2]", "jexl", "manual"] - - ["org.apache.commons.jexl3", "JexlEngine", False, "setProperty", "(Object,String,Object)", "", "Argument[1]", "jexl", "manual"] - - ["org.apache.commons.jexl3", "JexlExpression", False, "callable", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl3", "JexlExpression", False, "evaluate", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl3", "JexlScript", False, "callable", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl3", "JexlScript", False, "execute", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl3", "JxltEngine$Expression", False, "evaluate", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl3", "JxltEngine$Expression", False, "prepare", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl3", "JxltEngine$Template", False, "evaluate", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl3", "Script", False, "callable", "", "", "Argument[this]", "jexl", "manual"] - - ["org.apache.commons.jexl3", "Script", False, "execute", "", "", "Argument[this]", "jexl", "manual"] + - ["org.apache.commons.jexl3", "Expression", False, "callable", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl3", "Expression", False, "evaluate", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl3", "JexlEngine", False, "getProperty", "(JexlContext,Object,String)", "", "Argument[2]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl3", "JexlEngine", False, "getProperty", "(Object,String)", "", "Argument[1]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl3", "JexlEngine", False, "setProperty", "(JexlContext,Object,String)", "", "Argument[2]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl3", "JexlEngine", False, "setProperty", "(Object,String,Object)", "", "Argument[1]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl3", "JexlExpression", False, "callable", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl3", "JexlExpression", False, "evaluate", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl3", "JexlScript", False, "callable", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl3", "JexlScript", False, "execute", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl3", "JxltEngine$Expression", False, "evaluate", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl3", "JxltEngine$Expression", False, "prepare", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl3", "JxltEngine$Template", False, "evaluate", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl3", "Script", False, "callable", "", "", "Argument[this]", "jexl-injection", "manual"] + - ["org.apache.commons.jexl3", "Script", False, "execute", "", "", "Argument[this]", "jexl-injection", "manual"] diff --git a/java/ql/lib/ext/org.apache.commons.logging.model.yml b/java/ql/lib/ext/org.apache.commons.logging.model.yml index 8f40e26f2a1..7e2be01c522 100644 --- a/java/ql/lib/ext/org.apache.commons.logging.model.yml +++ b/java/ql/lib/ext/org.apache.commons.logging.model.yml @@ -3,9 +3,9 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.commons.logging", "Log", True, "debug", "", "", "Argument[0]", "logging", "manual"] - - ["org.apache.commons.logging", "Log", True, "error", "", "", "Argument[0]", "logging", "manual"] - - ["org.apache.commons.logging", "Log", True, "fatal", "", "", "Argument[0]", "logging", "manual"] - - ["org.apache.commons.logging", "Log", True, "info", "", "", "Argument[0]", "logging", "manual"] - - ["org.apache.commons.logging", "Log", True, "trace", "", "", "Argument[0]", "logging", "manual"] - - ["org.apache.commons.logging", "Log", True, "warn", "", "", "Argument[0]", "logging", "manual"] + - ["org.apache.commons.logging", "Log", True, "debug", "", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.commons.logging", "Log", True, "error", "", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.commons.logging", "Log", True, "fatal", "", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.commons.logging", "Log", True, "info", "", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.commons.logging", "Log", True, "trace", "", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.commons.logging", "Log", True, "warn", "", "", "Argument[0]", "log-injection", "manual"] diff --git a/java/ql/lib/ext/org.apache.commons.net.model.yml b/java/ql/lib/ext/org.apache.commons.net.model.yml index 1ea8876a4e1..0a4c46e6a3c 100644 --- a/java/ql/lib/ext/org.apache.commons.net.model.yml +++ b/java/ql/lib/ext/org.apache.commons.net.model.yml @@ -3,15 +3,15 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.commons.net", "SocketClient", true, "connect", "(InetAddress)", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.commons.net", "SocketClient", true, "connect", "(InetAddress,int)", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.commons.net", "SocketClient", true, "connect", "(InetAddress,int,InetAddress,int)", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.commons.net", "SocketClient", true, "connect", "(String)", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.commons.net", "SocketClient", true, "connect", "(String,int)", "", "Argument[0]", "open-url", "df-manual"] - - ["org.apache.commons.net", "SocketClient", true, "connect", "(String,int,InetAddress,int)", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.commons.net.util", "KeyManagerUtils", false, "createClientKeyManager", "(File,String)", "", "Argument[0]", "read-file", "df-manual"] - - ["org.apache.commons.net.util", "KeyManagerUtils", false, "createClientKeyManager", "(File,String,String)", "", "Argument[0]", "read-file", "df-manual"] - - ["org.apache.commons.net.util", "KeyManagerUtils", false, "createClientKeyManager", "(String,File,String,String,String)", "", "Argument[1]", "read-file", "df-manual"] + - ["org.apache.commons.net", "SocketClient", true, "connect", "(InetAddress)", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.commons.net", "SocketClient", true, "connect", "(InetAddress,int)", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.commons.net", "SocketClient", true, "connect", "(InetAddress,int,InetAddress,int)", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.commons.net", "SocketClient", true, "connect", "(String)", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.commons.net", "SocketClient", true, "connect", "(String,int)", "", "Argument[0]", "request-forgery", "df-manual"] + - ["org.apache.commons.net", "SocketClient", true, "connect", "(String,int,InetAddress,int)", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.commons.net.util", "KeyManagerUtils", false, "createClientKeyManager", "(File,String)", "", "Argument[0]", "path-injection", "df-manual"] + - ["org.apache.commons.net.util", "KeyManagerUtils", false, "createClientKeyManager", "(File,String,String)", "", "Argument[0]", "path-injection", "df-manual"] + - ["org.apache.commons.net.util", "KeyManagerUtils", false, "createClientKeyManager", "(String,File,String,String,String)", "", "Argument[1]", "path-injection", "df-manual"] - addsTo: pack: codeql/java-all extensible: sourceModel diff --git a/java/ql/lib/ext/org.apache.directory.ldap.client.api.model.yml b/java/ql/lib/ext/org.apache.directory.ldap.client.api.model.yml index 14b580383d3..57b1655d944 100644 --- a/java/ql/lib/ext/org.apache.directory.ldap.client.api.model.yml +++ b/java/ql/lib/ext/org.apache.directory.ldap.client.api.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.directory.ldap.client.api", "LdapConnection", True, "search", "", "", "Argument[0..2]", "ldap", "manual"] + - ["org.apache.directory.ldap.client.api", "LdapConnection", True, "search", "", "", "Argument[0..2]", "ldap-injection", "manual"] diff --git a/java/ql/lib/ext/org.apache.hadoop.hive.metastore.api.model.yml b/java/ql/lib/ext/org.apache.hadoop.hive.metastore.api.model.yml index 9189c6ab1fd..60d2d0c0153 100644 --- a/java/ql/lib/ext/org.apache.hadoop.hive.metastore.api.model.yml +++ b/java/ql/lib/ext/org.apache.hadoop.hive.metastore.api.model.yml @@ -3,5 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.hadoop.hive.metastore.api", "DefaultConstraintsRequest", True, "DefaultConstraintsRequest", "(String,String,String)", "", "Argument[1]", "sql", "ai-manual"] - + - ["org.apache.hadoop.hive.metastore.api", "DefaultConstraintsRequest", True, "DefaultConstraintsRequest", "(String,String,String)", "", "Argument[1]", "sql-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.hadoop.hive.metastore.model.yml b/java/ql/lib/ext/org.apache.hadoop.hive.metastore.model.yml index da335795194..bc902f548fd 100644 --- a/java/ql/lib/ext/org.apache.hadoop.hive.metastore.model.yml +++ b/java/ql/lib/ext/org.apache.hadoop.hive.metastore.model.yml @@ -3,6 +3,5 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.hadoop.hive.metastore", "ObjectStore", True, "updatePartitionColumnStatistics", "(ColumnStatistics,List,String,long)", "", "Argument[0]", "sql", "ai-manual"] - - ["org.apache.hadoop.hive.metastore", "ObjectStore", True, "updatePartitionColumnStatistics", "(ColumnStatistics,List)", "", "Argument[0]", "sql", "ai-manual"] - + - ["org.apache.hadoop.hive.metastore", "ObjectStore", True, "updatePartitionColumnStatistics", "(ColumnStatistics,List,String,long)", "", "Argument[0]", "sql-injection", "ai-manual"] + - ["org.apache.hadoop.hive.metastore", "ObjectStore", True, "updatePartitionColumnStatistics", "(ColumnStatistics,List)", "", "Argument[0]", "sql-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.hc.client5.http.async.methods.model.yml b/java/ql/lib/ext/org.apache.hc.client5.http.async.methods.model.yml index 0b0e040c054..17498977d8d 100644 --- a/java/ql/lib/ext/org.apache.hc.client5.http.async.methods.model.yml +++ b/java/ql/lib/ext/org.apache.hc.client5.http.async.methods.model.yml @@ -3,87 +3,87 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "create", "(Method,HttpHost,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "create", "(Method,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "create", "(Method,URI)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "create", "(String,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "create", "(String,URI)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "delete", "(HttpHost,String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "delete", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "delete", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "get", "(HttpHost,String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "get", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "get", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "head", "(HttpHost,String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "head", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "head", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "options", "(HttpHost,String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "options", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "options", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "patch", "(HttpHost,String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "patch", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "patch", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "post", "(HttpHost,String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "post", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "post", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "put", "(HttpHost,String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "put", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "put", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "trace", "(HttpHost,String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "trace", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "trace", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "ConfigurableHttpRequest", True, "ConfigurableHttpRequest", "(String,HttpHost,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "ConfigurableHttpRequest", True, "ConfigurableHttpRequest", "(String,URI)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequest", True, "SimpleHttpRequest", "(Method,HttpHost,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequest", True, "SimpleHttpRequest", "(Method,URI)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequest", True, "SimpleHttpRequest", "(String,HttpHost,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequest", True, "SimpleHttpRequest", "(String,URI)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequest", True, "create", "(Method,HttpHost,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequest", True, "create", "(Method,URI)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequest", True, "create", "(String,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequest", True, "create", "(String,URI)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "create", "(Method,HttpHost,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "create", "(Method,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "create", "(Method,URI)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "create", "(String,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "create", "(String,URI)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "delete", "(HttpHost,String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "delete", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "delete", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "get", "(HttpHost,String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "get", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "get", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "head", "(HttpHost,String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "head", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "head", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "options", "(HttpHost,String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "options", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "options", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "patch", "(HttpHost,String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "patch", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "patch", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "post", "(HttpHost,String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "post", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "post", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "put", "(HttpHost,String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "put", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "put", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "trace", "(HttpHost,String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "trace", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "trace", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "delete", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "delete", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "get", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "get", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "head", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "head", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "options", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "options", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "patch", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "patch", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "post", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "post", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "put", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "put", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "trace", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "trace", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "create", "(Method,HttpHost,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "create", "(Method,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "create", "(Method,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "create", "(String,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "create", "(String,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "delete", "(HttpHost,String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "delete", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "delete", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "get", "(HttpHost,String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "get", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "get", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "head", "(HttpHost,String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "head", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "head", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "options", "(HttpHost,String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "options", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "options", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "patch", "(HttpHost,String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "patch", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "patch", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "post", "(HttpHost,String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "post", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "post", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "put", "(HttpHost,String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "put", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "put", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "trace", "(HttpHost,String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "trace", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "BasicHttpRequests", True, "trace", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "ConfigurableHttpRequest", True, "ConfigurableHttpRequest", "(String,HttpHost,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "ConfigurableHttpRequest", True, "ConfigurableHttpRequest", "(String,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequest", True, "SimpleHttpRequest", "(Method,HttpHost,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequest", True, "SimpleHttpRequest", "(Method,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequest", True, "SimpleHttpRequest", "(String,HttpHost,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequest", True, "SimpleHttpRequest", "(String,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequest", True, "create", "(Method,HttpHost,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequest", True, "create", "(Method,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequest", True, "create", "(String,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequest", True, "create", "(String,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "create", "(Method,HttpHost,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "create", "(Method,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "create", "(Method,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "create", "(String,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "create", "(String,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "delete", "(HttpHost,String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "delete", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "delete", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "get", "(HttpHost,String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "get", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "get", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "head", "(HttpHost,String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "head", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "head", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "options", "(HttpHost,String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "options", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "options", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "patch", "(HttpHost,String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "patch", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "patch", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "post", "(HttpHost,String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "post", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "post", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "put", "(HttpHost,String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "put", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "put", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "trace", "(HttpHost,String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "trace", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleHttpRequests", True, "trace", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "delete", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "delete", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "get", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "get", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "head", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "head", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "options", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "options", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "patch", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "patch", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "post", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "post", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "put", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "put", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "trace", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.async.methods", "SimpleRequestBuilder", True, "trace", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] diff --git a/java/ql/lib/ext/org.apache.hc.client5.http.classic.methods.model.yml b/java/ql/lib/ext/org.apache.hc.client5.http.classic.methods.model.yml index 513a4e7eb7a..8b360282cec 100644 --- a/java/ql/lib/ext/org.apache.hc.client5.http.classic.methods.model.yml +++ b/java/ql/lib/ext/org.apache.hc.client5.http.classic.methods.model.yml @@ -3,40 +3,40 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "create", "(Method,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "create", "(Method,URI)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "create", "(String,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "create", "(String,URI)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "delete", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "delete", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "get", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "get", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "head", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "head", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "options", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "options", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "patch", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "patch", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "post", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "post", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "put", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "put", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "trace", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "trace", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "HttpDelete", True, "HttpDelete", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "HttpDelete", True, "HttpDelete", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "HttpGet", True, "HttpGet", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "HttpGet", True, "HttpGet", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "HttpHead", True, "HttpHead", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "HttpHead", True, "HttpHead", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "HttpOptions", True, "HttpOptions", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "HttpOptions", True, "HttpOptions", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "HttpPatch", True, "HttpPatch", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "HttpPatch", True, "HttpPatch", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "HttpPost", True, "HttpPost", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "HttpPost", True, "HttpPost", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "HttpPut", True, "HttpPut", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "HttpPut", True, "HttpPut", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "HttpTrace", True, "HttpTrace", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "HttpTrace", True, "HttpTrace", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.classic.methods", "HttpUriRequestBase", True, "HttpUriRequestBase", "(String,URI)", "", "Argument[1]", "open-url", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "create", "(Method,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "create", "(Method,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "create", "(String,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "create", "(String,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "delete", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "delete", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "get", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "get", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "head", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "head", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "options", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "options", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "patch", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "patch", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "post", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "post", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "put", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "put", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "trace", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "ClassicHttpRequests", True, "trace", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "HttpDelete", True, "HttpDelete", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "HttpDelete", True, "HttpDelete", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "HttpGet", True, "HttpGet", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "HttpGet", True, "HttpGet", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "HttpHead", True, "HttpHead", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "HttpHead", True, "HttpHead", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "HttpOptions", True, "HttpOptions", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "HttpOptions", True, "HttpOptions", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "HttpPatch", True, "HttpPatch", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "HttpPatch", True, "HttpPatch", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "HttpPost", True, "HttpPost", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "HttpPost", True, "HttpPost", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "HttpPut", True, "HttpPut", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "HttpPut", True, "HttpPut", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "HttpTrace", True, "HttpTrace", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "HttpTrace", True, "HttpTrace", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.classic.methods", "HttpUriRequestBase", True, "HttpUriRequestBase", "(String,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] diff --git a/java/ql/lib/ext/org.apache.hc.client5.http.fluent.model.yml b/java/ql/lib/ext/org.apache.hc.client5.http.fluent.model.yml index ce3b5567b7b..ff25f6c43a3 100644 --- a/java/ql/lib/ext/org.apache.hc.client5.http.fluent.model.yml +++ b/java/ql/lib/ext/org.apache.hc.client5.http.fluent.model.yml @@ -3,22 +3,22 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.hc.client5.http.fluent", "Request", True, "create", "(Method,URI)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.fluent", "Request", True, "create", "(String,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.fluent", "Request", True, "create", "(String,URI)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.fluent", "Request", True, "delete", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.fluent", "Request", True, "delete", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.fluent", "Request", True, "get", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.fluent", "Request", True, "get", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.fluent", "Request", True, "head", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.fluent", "Request", True, "head", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.fluent", "Request", True, "options", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.fluent", "Request", True, "options", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.fluent", "Request", True, "patch", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.fluent", "Request", True, "patch", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.fluent", "Request", True, "post", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.fluent", "Request", True, "post", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.fluent", "Request", True, "put", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.fluent", "Request", True, "put", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.fluent", "Request", True, "trace", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.client5.http.fluent", "Request", True, "trace", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "create", "(Method,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "create", "(String,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "create", "(String,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "delete", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "delete", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "get", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "get", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "head", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "head", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "options", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "options", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "patch", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "patch", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "post", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "post", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "put", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "put", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "trace", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.client5.http.fluent", "Request", True, "trace", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] diff --git a/java/ql/lib/ext/org.apache.hc.client5.http.protocol.model.yml b/java/ql/lib/ext/org.apache.hc.client5.http.protocol.model.yml new file mode 100644 index 00000000000..b5f46643f2f --- /dev/null +++ b/java/ql/lib/ext/org.apache.hc.client5.http.protocol.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + # sink neutrals + - ["org.apache.hc.client5.http.protocol", "RedirectLocations", "contains", "", "sink", "hq-manual"] diff --git a/java/ql/lib/ext/org.apache.hc.core5.benchmark.model.yml b/java/ql/lib/ext/org.apache.hc.core5.benchmark.model.yml index 450a46cd1ec..0143a0a68ab 100644 --- a/java/ql/lib/ext/org.apache.hc.core5.benchmark.model.yml +++ b/java/ql/lib/ext/org.apache.hc.core5.benchmark.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.hc.core5.benchmark", "BenchmarkConfig$Builder", True, "setUri", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] + - ["org.apache.hc.core5.benchmark", "BenchmarkConfig$Builder", True, "setUri", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] diff --git a/java/ql/lib/ext/org.apache.hc.core5.http.impl.bootstrap.model.yml b/java/ql/lib/ext/org.apache.hc.core5.http.impl.bootstrap.model.yml index a2789520908..280cf49b175 100644 --- a/java/ql/lib/ext/org.apache.hc.core5.http.impl.bootstrap.model.yml +++ b/java/ql/lib/ext/org.apache.hc.core5.http.impl.bootstrap.model.yml @@ -1,7 +1,7 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.hc.core5.http.impl.bootstrap", "HttpAsyncRequester", True, "connect", "(HttpHost,Timeout)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.impl.bootstrap", "HttpAsyncRequester", True, "connect", "(HttpHost,Timeout,Object,FutureCallback)", "", "Argument[0]", "open-url", "hq-manual"] + - ["org.apache.hc.core5.http.impl.bootstrap", "HttpAsyncRequester", True, "connect", "(HttpHost,Timeout)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.impl.bootstrap", "HttpAsyncRequester", True, "connect", "(HttpHost,Timeout,Object,FutureCallback)", "", "Argument[0]", "request-forgery", "hq-manual"] diff --git a/java/ql/lib/ext/org.apache.hc.core5.http.io.support.model.yml b/java/ql/lib/ext/org.apache.hc.core5.http.io.support.model.yml index 86d55853d8f..1f602d987cc 100644 --- a/java/ql/lib/ext/org.apache.hc.core5.http.io.support.model.yml +++ b/java/ql/lib/ext/org.apache.hc.core5.http.io.support.model.yml @@ -3,19 +3,19 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "delete", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "delete", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "get", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "get", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "head", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "head", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "options", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "options", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "patch", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "patch", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "post", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "post", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "put", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "put", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "trace", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "trace", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] + - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "delete", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "delete", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "get", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "get", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "head", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "head", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "options", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "options", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "patch", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "patch", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "post", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "post", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "put", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "put", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "trace", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.io.support", "ClassicRequestBuilder", True, "trace", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] diff --git a/java/ql/lib/ext/org.apache.hc.core5.http.message.model.yml b/java/ql/lib/ext/org.apache.hc.core5.http.message.model.yml index e8cc56f35a5..44ed7ac03c1 100644 --- a/java/ql/lib/ext/org.apache.hc.core5.http.message.model.yml +++ b/java/ql/lib/ext/org.apache.hc.core5.http.message.model.yml @@ -3,14 +3,14 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.hc.core5.http.message", "BasicClassicHttpRequest", True, "BasicClassicHttpRequest", "(Method,HttpHost,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.message", "BasicClassicHttpRequest", True, "BasicClassicHttpRequest", "(Method,URI)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.message", "BasicClassicHttpRequest", True, "BasicClassicHttpRequest", "(String,HttpHost,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.message", "BasicClassicHttpRequest", True, "BasicClassicHttpRequest", "(String,URI)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.message", "BasicHttpRequest", True, "BasicHttpRequest", "(Method,HttpHost,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.message", "BasicHttpRequest", True, "BasicHttpRequest", "(Method,URI)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.message", "BasicHttpRequest", True, "BasicHttpRequest", "(String,HttpHost,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.message", "BasicHttpRequest", True, "BasicHttpRequest", "(String,URI)", "", "Argument[1]", "open-url", "hq-manual"] + - ["org.apache.hc.core5.http.message", "BasicClassicHttpRequest", True, "BasicClassicHttpRequest", "(Method,HttpHost,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.message", "BasicClassicHttpRequest", True, "BasicClassicHttpRequest", "(Method,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.message", "BasicClassicHttpRequest", True, "BasicClassicHttpRequest", "(String,HttpHost,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.message", "BasicClassicHttpRequest", True, "BasicClassicHttpRequest", "(String,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.message", "BasicHttpRequest", True, "BasicHttpRequest", "(Method,HttpHost,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.message", "BasicHttpRequest", True, "BasicHttpRequest", "(Method,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.message", "BasicHttpRequest", True, "BasicHttpRequest", "(String,HttpHost,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.message", "BasicHttpRequest", True, "BasicHttpRequest", "(String,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] - addsTo: pack: codeql/java-all diff --git a/java/ql/lib/ext/org.apache.hc.core5.http.model.yml b/java/ql/lib/ext/org.apache.hc.core5.http.model.yml index 6c1c6d63efe..321b4235ea8 100644 --- a/java/ql/lib/ext/org.apache.hc.core5.http.model.yml +++ b/java/ql/lib/ext/org.apache.hc.core5.http.model.yml @@ -3,10 +3,10 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.hc.core5.http", "HttpEntityContainer", True, "setEntity", "(HttpEntity)", "", "Argument[0]", "xss", "manual"] - - ["org.apache.hc.core5.http", "HttpRequest", True, "setUri", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http", "HttpRequestFactory", True, "newHttpRequest", "(String,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http", "HttpRequestFactory", True, "newHttpRequest", "(String,URI)", "", "Argument[1]", "open-url", "hq-manual"] + - ["org.apache.hc.core5.http", "HttpEntityContainer", True, "setEntity", "(HttpEntity)", "", "Argument[0]", "html-injection", "manual"] + - ["org.apache.hc.core5.http", "HttpRequest", True, "setUri", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http", "HttpRequestFactory", True, "newHttpRequest", "(String,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http", "HttpRequestFactory", True, "newHttpRequest", "(String,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/org.apache.hc.core5.http.nio.support.model.yml b/java/ql/lib/ext/org.apache.hc.core5.http.nio.support.model.yml index 263ca830720..9d896b593c9 100644 --- a/java/ql/lib/ext/org.apache.hc.core5.http.nio.support.model.yml +++ b/java/ql/lib/ext/org.apache.hc.core5.http.nio.support.model.yml @@ -3,27 +3,27 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "delete", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "delete", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "get", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "get", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "head", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "head", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "options", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "options", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "patch", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "patch", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "post", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "post", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "put", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "put", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "trace", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "trace", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "BasicRequestProducer", True, "BasicRequestProducer", "(Method,HttpHost,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "BasicRequestProducer", True, "BasicRequestProducer", "(Method,HttpHost,String,AsyncEntityProducer)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "BasicRequestProducer", True, "BasicRequestProducer", "(Method,URI)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "BasicRequestProducer", True, "BasicRequestProducer", "(Method,URI,AsyncEntityProducer)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "BasicRequestProducer", True, "BasicRequestProducer", "(String,HttpHost,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "BasicRequestProducer", True, "BasicRequestProducer", "(String,HttpHost,String,AsyncEntityProducer)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "BasicRequestProducer", True, "BasicRequestProducer", "(String,URI)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.nio.support", "BasicRequestProducer", True, "BasicRequestProducer", "(String,URI,AsyncEntityProducer)", "", "Argument[1]", "open-url", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "delete", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "delete", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "get", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "get", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "head", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "head", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "options", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "options", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "patch", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "patch", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "post", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "post", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "put", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "put", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "trace", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "AsyncRequestBuilder", True, "trace", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "BasicRequestProducer", True, "BasicRequestProducer", "(Method,HttpHost,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "BasicRequestProducer", True, "BasicRequestProducer", "(Method,HttpHost,String,AsyncEntityProducer)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "BasicRequestProducer", True, "BasicRequestProducer", "(Method,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "BasicRequestProducer", True, "BasicRequestProducer", "(Method,URI,AsyncEntityProducer)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "BasicRequestProducer", True, "BasicRequestProducer", "(String,HttpHost,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "BasicRequestProducer", True, "BasicRequestProducer", "(String,HttpHost,String,AsyncEntityProducer)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "BasicRequestProducer", True, "BasicRequestProducer", "(String,URI)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.nio.support", "BasicRequestProducer", True, "BasicRequestProducer", "(String,URI,AsyncEntityProducer)", "", "Argument[1]", "request-forgery", "hq-manual"] diff --git a/java/ql/lib/ext/org.apache.hc.core5.http.support.model.yml b/java/ql/lib/ext/org.apache.hc.core5.http.support.model.yml index eee42d496f3..cb8d17d283a 100644 --- a/java/ql/lib/ext/org.apache.hc.core5.http.support.model.yml +++ b/java/ql/lib/ext/org.apache.hc.core5.http.support.model.yml @@ -3,22 +3,22 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.hc.core5.http.support", "AbstractRequestBuilder", True, "setHttpHost", "(HttpHost)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.support", "AbstractRequestBuilder", True, "setUri", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.support", "AbstractRequestBuilder", True, "setUri", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "delete", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "delete", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "get", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "get", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "head", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "head", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "options", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "options", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "patch", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "patch", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "post", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "post", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "put", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "put", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "trace", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "trace", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] + - ["org.apache.hc.core5.http.support", "AbstractRequestBuilder", True, "setHttpHost", "(HttpHost)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.support", "AbstractRequestBuilder", True, "setUri", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.support", "AbstractRequestBuilder", True, "setUri", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "delete", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "delete", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "get", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "get", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "head", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "head", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "options", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "options", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "patch", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "patch", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "post", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "post", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "put", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "put", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "trace", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.hc.core5.http.support", "BasicRequestBuilder", True, "trace", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] diff --git a/java/ql/lib/ext/org.apache.hive.hcatalog.templeton.model.yml b/java/ql/lib/ext/org.apache.hive.hcatalog.templeton.model.yml index 3f980bdbb3f..35c0e9f27a3 100644 --- a/java/ql/lib/ext/org.apache.hive.hcatalog.templeton.model.yml +++ b/java/ql/lib/ext/org.apache.hive.hcatalog.templeton.model.yml @@ -3,5 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.hive.hcatalog.templeton", "HcatDelegator", True, "addOneColumn", "(String,String,String,ColumnDesc)", "", "Argument[3]", "sql", "ai-manual"] - + - ["org.apache.hive.hcatalog.templeton", "HcatDelegator", True, "addOneColumn", "(String,String,String,ColumnDesc)", "", "Argument[3]", "sql-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.http.client.fluent.model.yml b/java/ql/lib/ext/org.apache.http.client.fluent.model.yml index 924ab14fc5e..dad428e4d1a 100644 --- a/java/ql/lib/ext/org.apache.http.client.fluent.model.yml +++ b/java/ql/lib/ext/org.apache.http.client.fluent.model.yml @@ -3,19 +3,19 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.http.client.fluent", "Request", True, "Delete", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.http.client.fluent", "Request", True, "Delete", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.http.client.fluent", "Request", True, "Get", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.http.client.fluent", "Request", True, "Get", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.http.client.fluent", "Request", True, "Head", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.http.client.fluent", "Request", True, "Head", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.http.client.fluent", "Request", True, "Options", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.http.client.fluent", "Request", True, "Options", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.http.client.fluent", "Request", True, "Patch", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.http.client.fluent", "Request", True, "Patch", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.http.client.fluent", "Request", True, "Post", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.http.client.fluent", "Request", True, "Post", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.http.client.fluent", "Request", True, "Put", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.http.client.fluent", "Request", True, "Put", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.http.client.fluent", "Request", True, "Trace", "(String)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.http.client.fluent", "Request", True, "Trace", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] + - ["org.apache.http.client.fluent", "Request", True, "Delete", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.http.client.fluent", "Request", True, "Delete", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.http.client.fluent", "Request", True, "Get", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.http.client.fluent", "Request", True, "Get", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.http.client.fluent", "Request", True, "Head", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.http.client.fluent", "Request", True, "Head", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.http.client.fluent", "Request", True, "Options", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.http.client.fluent", "Request", True, "Options", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.http.client.fluent", "Request", True, "Patch", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.http.client.fluent", "Request", True, "Patch", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.http.client.fluent", "Request", True, "Post", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.http.client.fluent", "Request", True, "Post", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.http.client.fluent", "Request", True, "Put", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.http.client.fluent", "Request", True, "Put", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.http.client.fluent", "Request", True, "Trace", "(String)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.http.client.fluent", "Request", True, "Trace", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] diff --git a/java/ql/lib/ext/org.apache.http.client.methods.model.yml b/java/ql/lib/ext/org.apache.http.client.methods.model.yml index 5db791422c8..4eccb08eb8c 100644 --- a/java/ql/lib/ext/org.apache.http.client.methods.model.yml +++ b/java/ql/lib/ext/org.apache.http.client.methods.model.yml @@ -3,22 +3,22 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.http.client.methods", "HttpDelete", False, "HttpDelete", "", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.client.methods", "HttpGet", False, "HttpGet", "", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.client.methods", "HttpHead", False, "HttpHead", "", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.client.methods", "HttpOptions", False, "HttpOptions", "", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.client.methods", "HttpPatch", False, "HttpPatch", "", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.client.methods", "HttpPost", False, "HttpPost", "", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.client.methods", "HttpPut", False, "HttpPut", "", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.client.methods", "HttpRequestBase", True, "setURI", "", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.client.methods", "HttpRequestWrapper", True, "setURI", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] - - ["org.apache.http.client.methods", "HttpTrace", False, "HttpTrace", "", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.client.methods", "RequestBuilder", False, "delete", "", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.client.methods", "RequestBuilder", False, "get", "", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.client.methods", "RequestBuilder", False, "head", "", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.client.methods", "RequestBuilder", False, "options", "", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.client.methods", "RequestBuilder", False, "patch", "", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.client.methods", "RequestBuilder", False, "post", "", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.client.methods", "RequestBuilder", False, "put", "", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.client.methods", "RequestBuilder", False, "setUri", "", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.client.methods", "RequestBuilder", False, "trace", "", "", "Argument[0]", "open-url", "manual"] + - ["org.apache.http.client.methods", "HttpDelete", False, "HttpDelete", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.client.methods", "HttpGet", False, "HttpGet", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.client.methods", "HttpHead", False, "HttpHead", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.client.methods", "HttpOptions", False, "HttpOptions", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.client.methods", "HttpPatch", False, "HttpPatch", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.client.methods", "HttpPost", False, "HttpPost", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.client.methods", "HttpPut", False, "HttpPut", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.client.methods", "HttpRequestBase", True, "setURI", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.client.methods", "HttpRequestWrapper", True, "setURI", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] + - ["org.apache.http.client.methods", "HttpTrace", False, "HttpTrace", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.client.methods", "RequestBuilder", False, "delete", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.client.methods", "RequestBuilder", False, "get", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.client.methods", "RequestBuilder", False, "head", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.client.methods", "RequestBuilder", False, "options", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.client.methods", "RequestBuilder", False, "patch", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.client.methods", "RequestBuilder", False, "post", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.client.methods", "RequestBuilder", False, "put", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.client.methods", "RequestBuilder", False, "setUri", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.client.methods", "RequestBuilder", False, "trace", "", "", "Argument[0]", "request-forgery", "manual"] diff --git a/java/ql/lib/ext/org.apache.http.client.model.yml b/java/ql/lib/ext/org.apache.http.client.model.yml index abdfb6ed91d..681efdf32e7 100644 --- a/java/ql/lib/ext/org.apache.http.client.model.yml +++ b/java/ql/lib/ext/org.apache.http.client.model.yml @@ -3,6 +3,6 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.http.client", "HttpClient", True, "execute", "(HttpUriRequest,HttpContext)", "", "Argument[0]", "open-url", "ai-manual"] - - ["org.apache.http.client", "HttpClient", True, "execute", "(HttpUriRequest,ResponseHandler,HttpContext)", "", "Argument[0]", "open-url", "ai-manual"] - - ["org.apache.http.client", "HttpClient", True, "execute", "(HttpUriRequest)", "", "Argument[0]", "open-url", "ai-manual"] + - ["org.apache.http.client", "HttpClient", True, "execute", "(HttpUriRequest,HttpContext)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["org.apache.http.client", "HttpClient", True, "execute", "(HttpUriRequest,ResponseHandler,HttpContext)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["org.apache.http.client", "HttpClient", True, "execute", "(HttpUriRequest)", "", "Argument[0]", "request-forgery", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.http.impl.client.model.yml b/java/ql/lib/ext/org.apache.http.impl.client.model.yml index 5cc1aca7498..be517e5344f 100644 --- a/java/ql/lib/ext/org.apache.http.impl.client.model.yml +++ b/java/ql/lib/ext/org.apache.http.impl.client.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.http.impl.client", "RequestWrapper", True, "setURI", "(URI)", "", "Argument[0]", "open-url", "hq-manual"] + - ["org.apache.http.impl.client", "RequestWrapper", True, "setURI", "(URI)", "", "Argument[0]", "request-forgery", "hq-manual"] diff --git a/java/ql/lib/ext/org.apache.http.message.model.yml b/java/ql/lib/ext/org.apache.http.message.model.yml index c727b57b210..4ee0d13d8c1 100644 --- a/java/ql/lib/ext/org.apache.http.message.model.yml +++ b/java/ql/lib/ext/org.apache.http.message.model.yml @@ -3,12 +3,12 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.http.message", "BasicHttpEntityEnclosingRequest", False, "BasicHttpEntityEnclosingRequest", "(RequestLine)", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.message", "BasicHttpEntityEnclosingRequest", False, "BasicHttpEntityEnclosingRequest", "(String,String)", "", "Argument[1]", "open-url", "manual"] - - ["org.apache.http.message", "BasicHttpEntityEnclosingRequest", False, "BasicHttpEntityEnclosingRequest", "(String,String,ProtocolVersion)", "", "Argument[1]", "open-url", "manual"] - - ["org.apache.http.message", "BasicHttpRequest", False, "BasicHttpRequest", "(RequestLine)", "", "Argument[0]", "open-url", "manual"] - - ["org.apache.http.message", "BasicHttpRequest", False, "BasicHttpRequest", "(String,String)", "", "Argument[1]", "open-url", "manual"] - - ["org.apache.http.message", "BasicHttpRequest", False, "BasicHttpRequest", "(String,String,ProtocolVersion)", "", "Argument[1]", "open-url", "manual"] + - ["org.apache.http.message", "BasicHttpEntityEnclosingRequest", False, "BasicHttpEntityEnclosingRequest", "(RequestLine)", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.message", "BasicHttpEntityEnclosingRequest", False, "BasicHttpEntityEnclosingRequest", "(String,String)", "", "Argument[1]", "request-forgery", "manual"] + - ["org.apache.http.message", "BasicHttpEntityEnclosingRequest", False, "BasicHttpEntityEnclosingRequest", "(String,String,ProtocolVersion)", "", "Argument[1]", "request-forgery", "manual"] + - ["org.apache.http.message", "BasicHttpRequest", False, "BasicHttpRequest", "(RequestLine)", "", "Argument[0]", "request-forgery", "manual"] + - ["org.apache.http.message", "BasicHttpRequest", False, "BasicHttpRequest", "(String,String)", "", "Argument[1]", "request-forgery", "manual"] + - ["org.apache.http.message", "BasicHttpRequest", False, "BasicHttpRequest", "(String,String,ProtocolVersion)", "", "Argument[1]", "request-forgery", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/org.apache.http.model.yml b/java/ql/lib/ext/org.apache.http.model.yml index 466fe9d15a4..ff0bd813d83 100644 --- a/java/ql/lib/ext/org.apache.http.model.yml +++ b/java/ql/lib/ext/org.apache.http.model.yml @@ -9,8 +9,8 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.http", "HttpRequestFactory", True, "newHttpRequest", "(String,String)", "", "Argument[1]", "open-url", "hq-manual"] - - ["org.apache.http", "HttpResponse", True, "setEntity", "(HttpEntity)", "", "Argument[0]", "xss", "manual"] + - ["org.apache.http", "HttpRequestFactory", True, "newHttpRequest", "(String,String)", "", "Argument[1]", "request-forgery", "hq-manual"] + - ["org.apache.http", "HttpResponse", True, "setEntity", "(HttpEntity)", "", "Argument[0]", "html-injection", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/org.apache.http.util.model.yml b/java/ql/lib/ext/org.apache.http.util.model.yml index d5469664ab6..7e4fd9dde25 100644 --- a/java/ql/lib/ext/org.apache.http.util.model.yml +++ b/java/ql/lib/ext/org.apache.http.util.model.yml @@ -3,7 +3,7 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.http.util", "EntityUtils", True, "updateEntity", "(HttpResponse,HttpEntity)", "", "Argument[1]", "xss", "manual"] + - ["org.apache.http.util", "EntityUtils", True, "updateEntity", "(HttpResponse,HttpEntity)", "", "Argument[1]", "html-injection", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/org.apache.ibatis.jdbc.model.yml b/java/ql/lib/ext/org.apache.ibatis.jdbc.model.yml index e966d7bd735..e1b37b8f851 100644 --- a/java/ql/lib/ext/org.apache.ibatis.jdbc.model.yml +++ b/java/ql/lib/ext/org.apache.ibatis.jdbc.model.yml @@ -3,12 +3,12 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.ibatis.jdbc", "SqlRunner", False, "delete", "(String,Object[])", "", "Argument[0]", "sql", "manual"] - - ["org.apache.ibatis.jdbc", "SqlRunner", False, "insert", "(String,Object[])", "", "Argument[0]", "sql", "manual"] - - ["org.apache.ibatis.jdbc", "SqlRunner", False, "run", "(String)", "", "Argument[0]", "sql", "manual"] - - ["org.apache.ibatis.jdbc", "SqlRunner", False, "selectAll", "(String,Object[])", "", "Argument[0]", "sql", "manual"] - - ["org.apache.ibatis.jdbc", "SqlRunner", False, "selectOne", "(String,Object[])", "", "Argument[0]", "sql", "manual"] - - ["org.apache.ibatis.jdbc", "SqlRunner", False, "update", "(String,Object[])", "", "Argument[0]", "sql", "manual"] + - ["org.apache.ibatis.jdbc", "SqlRunner", False, "delete", "(String,Object[])", "", "Argument[0]", "sql-injection", "manual"] + - ["org.apache.ibatis.jdbc", "SqlRunner", False, "insert", "(String,Object[])", "", "Argument[0]", "sql-injection", "manual"] + - ["org.apache.ibatis.jdbc", "SqlRunner", False, "run", "(String)", "", "Argument[0]", "sql-injection", "manual"] + - ["org.apache.ibatis.jdbc", "SqlRunner", False, "selectAll", "(String,Object[])", "", "Argument[0]", "sql-injection", "manual"] + - ["org.apache.ibatis.jdbc", "SqlRunner", False, "selectOne", "(String,Object[])", "", "Argument[0]", "sql-injection", "manual"] + - ["org.apache.ibatis.jdbc", "SqlRunner", False, "update", "(String,Object[])", "", "Argument[0]", "sql-injection", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/org.apache.log4j.model.yml b/java/ql/lib/ext/org.apache.log4j.model.yml index 309f238111b..e27bdef0fbf 100644 --- a/java/ql/lib/ext/org.apache.log4j.model.yml +++ b/java/ql/lib/ext/org.apache.log4j.model.yml @@ -3,14 +3,14 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.log4j", "Category", True, "assertLog", "", "", "Argument[1]", "logging", "manual"] - - ["org.apache.log4j", "Category", True, "debug", "", "", "Argument[0]", "logging", "manual"] - - ["org.apache.log4j", "Category", True, "error", "", "", "Argument[0]", "logging", "manual"] - - ["org.apache.log4j", "Category", True, "fatal", "", "", "Argument[0]", "logging", "manual"] - - ["org.apache.log4j", "Category", True, "forcedLog", "", "", "Argument[2]", "logging", "manual"] - - ["org.apache.log4j", "Category", True, "info", "", "", "Argument[0]", "logging", "manual"] - - ["org.apache.log4j", "Category", True, "l7dlog", "(Priority,String,Object[],Throwable)", "", "Argument[2]", "logging", "manual"] - - ["org.apache.log4j", "Category", True, "log", "(Priority,Object)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.log4j", "Category", True, "log", "(Priority,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.log4j", "Category", True, "log", "(String,Priority,Object,Throwable)", "", "Argument[2]", "logging", "manual"] - - ["org.apache.log4j", "Category", True, "warn", "", "", "Argument[0]", "logging", "manual"] + - ["org.apache.log4j", "Category", True, "assertLog", "", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.log4j", "Category", True, "debug", "", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.log4j", "Category", True, "error", "", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.log4j", "Category", True, "fatal", "", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.log4j", "Category", True, "forcedLog", "", "", "Argument[2]", "log-injection", "manual"] + - ["org.apache.log4j", "Category", True, "info", "", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.log4j", "Category", True, "l7dlog", "(Priority,String,Object[],Throwable)", "", "Argument[2]", "log-injection", "manual"] + - ["org.apache.log4j", "Category", True, "log", "(Priority,Object)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.log4j", "Category", True, "log", "(Priority,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.log4j", "Category", True, "log", "(String,Priority,Object,Throwable)", "", "Argument[2]", "log-injection", "manual"] + - ["org.apache.log4j", "Category", True, "warn", "", "", "Argument[0]", "log-injection", "manual"] diff --git a/java/ql/lib/ext/org.apache.logging.log4j.model.yml b/java/ql/lib/ext/org.apache.logging.log4j.model.yml index 5ffe10450a0..2c48df24365 100644 --- a/java/ql/lib/ext/org.apache.logging.log4j.model.yml +++ b/java/ql/lib/ext/org.apache.logging.log4j.model.yml @@ -3,365 +3,365 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(CharSequence)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(Message)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object,Object,Object,Object,Object)", "", "Argument[0..5]", "logging", "manual"] - - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object,Object,Object,Object,Object,Object)", "", "Argument[0..6]", "logging", "manual"] - - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..7]", "logging", "manual"] - - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..8]", "logging", "manual"] - - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..9]", "logging", "manual"] - - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..10]", "logging", "manual"] - - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Supplier)", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(Supplier)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(CharSequence)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(CharSequence,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,CharSequence)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,CharSequence,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,Message)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,MessageSupplier)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,MessageSupplier,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,Object)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object,Object,Object,Object)", "", "Argument[1..5]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object,Object,Object,Object,Object)", "", "Argument[1..6]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object,Object,Object,Object,Object,Object)", "", "Argument[1..7]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..8]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..9]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..10]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..11]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Supplier)", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,Supplier)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,Supplier,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Message)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Message,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(MessageSupplier)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(MessageSupplier,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(String)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object,Object,Object,Object,Object)", "", "Argument[0..5]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object,Object,Object,Object,Object,Object)", "", "Argument[0..6]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..7]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..8]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..9]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..10]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Supplier)", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Supplier)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "debug", "(Supplier,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "entry", "(Object[])", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(CharSequence)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(CharSequence,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,CharSequence)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,CharSequence,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,Message)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,MessageSupplier)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,MessageSupplier,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,Object)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object,Object,Object,Object)", "", "Argument[1..5]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object,Object,Object,Object,Object)", "", "Argument[1..6]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object,Object,Object,Object,Object,Object)", "", "Argument[1..7]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..8]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..9]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..10]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..11]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Supplier)", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,Supplier)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,Supplier,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Message)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Message,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(MessageSupplier)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(MessageSupplier,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(String)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object,Object,Object,Object,Object)", "", "Argument[0..5]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object,Object,Object,Object,Object,Object)", "", "Argument[0..6]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..7]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..8]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..9]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..10]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Supplier)", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Supplier)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "error", "(Supplier,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(CharSequence)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(CharSequence,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,CharSequence)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,CharSequence,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,Message)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,MessageSupplier)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,MessageSupplier,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,Object)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object,Object,Object,Object)", "", "Argument[1..5]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object,Object,Object,Object,Object)", "", "Argument[1..6]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object,Object,Object,Object,Object,Object)", "", "Argument[1..7]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..8]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..9]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..10]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..11]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Supplier)", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,Supplier)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,Supplier,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Message)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Message,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(MessageSupplier)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(MessageSupplier,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object,Object,Object,Object,Object)", "", "Argument[0..5]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object,Object,Object,Object,Object,Object)", "", "Argument[0..6]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..7]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..8]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..9]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..10]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Supplier)", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Supplier)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Supplier,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(CharSequence)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(CharSequence,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,CharSequence)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,CharSequence,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,Message)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,MessageSupplier)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,MessageSupplier,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,Object)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object,Object,Object,Object)", "", "Argument[1..5]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object,Object,Object,Object,Object)", "", "Argument[1..6]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object,Object,Object,Object,Object,Object)", "", "Argument[1..7]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..8]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..9]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..10]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..11]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Supplier)", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,Supplier)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,Supplier,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Message)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Message,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(MessageSupplier)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(MessageSupplier,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(String)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object,Object,Object,Object,Object)", "", "Argument[0..5]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object,Object,Object,Object,Object,Object)", "", "Argument[0..6]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..7]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..8]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..9]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..10]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Supplier)", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Supplier)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "info", "(Supplier,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,CharSequence)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,CharSequence,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,CharSequence)", "", "Argument[2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,CharSequence,Throwable)", "", "Argument[2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,Message)", "", "Argument[2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,MessageSupplier)", "", "Argument[2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,MessageSupplier,Throwable)", "", "Argument[2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,Object)", "", "Argument[2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,Object,Throwable)", "", "Argument[2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String)", "", "Argument[2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object)", "", "Argument[2..3]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object,Object)", "", "Argument[2..4]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object,Object,Object)", "", "Argument[2..5]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object,Object,Object,Object)", "", "Argument[2..6]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object,Object,Object,Object,Object)", "", "Argument[2..7]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object,Object,Object,Object,Object,Object)", "", "Argument[2..8]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[2..9]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[2..10]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[2..11]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[2..12]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object[])", "", "Argument[2..3]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Supplier)", "", "Argument[2..3]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Throwable)", "", "Argument[2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,Supplier)", "", "Argument[2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,Supplier,Throwable)", "", "Argument[2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Message)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Message,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,MessageSupplier)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,MessageSupplier,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Object)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object,Object,Object)", "", "Argument[1..4]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object,Object,Object,Object)", "", "Argument[1..5]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object,Object,Object,Object,Object)", "", "Argument[1..6]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object,Object,Object,Object,Object,Object)", "", "Argument[1..7]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..8]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..9]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..10]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..11]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Supplier)", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Supplier)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Supplier,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "logMessage", "(Level,Marker,String,StackTraceElement,Message,Throwable)", "", "Argument[4]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "printf", "(Level,Marker,String,Object[])", "", "Argument[2..3]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "printf", "(Level,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(CharSequence)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(CharSequence,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,CharSequence)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,CharSequence,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,Message)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,MessageSupplier)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,MessageSupplier,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,Object)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object,Object,Object,Object)", "", "Argument[1..5]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object,Object,Object,Object,Object)", "", "Argument[1..6]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object,Object,Object,Object,Object,Object)", "", "Argument[1..7]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..8]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..9]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..10]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..11]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Supplier)", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,Supplier)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,Supplier,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Message)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Message,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(MessageSupplier)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(MessageSupplier,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(String)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object,Object,Object,Object,Object)", "", "Argument[0..5]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object,Object,Object,Object,Object,Object)", "", "Argument[0..6]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..7]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..8]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..9]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..10]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Supplier)", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Supplier)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "trace", "(Supplier,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "traceEntry", "(Message)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "traceEntry", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "traceEntry", "(String,Supplier[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "traceEntry", "(Supplier[])", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "traceExit", "(EntryMessage)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "traceExit", "(EntryMessage,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "traceExit", "(Message,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "traceExit", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "traceExit", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(CharSequence)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(CharSequence,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,CharSequence)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,CharSequence,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,Message)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,MessageSupplier)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,MessageSupplier,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,Object)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object,Object,Object,Object)", "", "Argument[1..5]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object,Object,Object,Object,Object)", "", "Argument[1..6]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object,Object,Object,Object,Object,Object)", "", "Argument[1..7]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..8]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..9]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..10]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..11]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Supplier)", "", "Argument[1..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,Supplier)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,Supplier,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Message)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Message,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(MessageSupplier)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(MessageSupplier,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(String)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object,Object,Object,Object,Object)", "", "Argument[0..5]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object,Object,Object,Object,Object,Object)", "", "Argument[0..6]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..7]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..8]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..9]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..10]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Supplier)", "", "Argument[0..1]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Supplier)", "", "Argument[0]", "logging", "manual"] - - ["org.apache.logging.log4j", "Logger", True, "warn", "(Supplier,Throwable)", "", "Argument[0]", "logging", "manual"] + - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(CharSequence)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(Message)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object,Object,Object,Object,Object)", "", "Argument[0..5]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object,Object,Object,Object,Object,Object)", "", "Argument[0..6]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..7]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..8]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..9]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..10]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(String,Supplier)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "LogBuilder", True, "log", "(Supplier)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(CharSequence)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(CharSequence,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,CharSequence)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,CharSequence,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,Message)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,MessageSupplier)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,MessageSupplier,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,Object)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object,Object,Object,Object)", "", "Argument[1..5]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object,Object,Object,Object,Object)", "", "Argument[1..6]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object,Object,Object,Object,Object,Object)", "", "Argument[1..7]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..8]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..9]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..10]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..11]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Supplier)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,String,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,Supplier)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Marker,Supplier,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Message)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Message,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(MessageSupplier)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(MessageSupplier,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(String)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object,Object,Object,Object,Object)", "", "Argument[0..5]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object,Object,Object,Object,Object,Object)", "", "Argument[0..6]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..7]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..8]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..9]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..10]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Supplier)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(String,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Supplier)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "debug", "(Supplier,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "entry", "(Object[])", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(CharSequence)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(CharSequence,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,CharSequence)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,CharSequence,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,Message)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,MessageSupplier)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,MessageSupplier,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,Object)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object,Object,Object,Object)", "", "Argument[1..5]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object,Object,Object,Object,Object)", "", "Argument[1..6]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object,Object,Object,Object,Object,Object)", "", "Argument[1..7]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..8]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..9]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..10]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..11]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Supplier)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,String,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,Supplier)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Marker,Supplier,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Message)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Message,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(MessageSupplier)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(MessageSupplier,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(String)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object,Object,Object,Object,Object)", "", "Argument[0..5]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object,Object,Object,Object,Object,Object)", "", "Argument[0..6]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..7]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..8]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..9]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..10]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Supplier)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(String,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Supplier)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "error", "(Supplier,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(CharSequence)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(CharSequence,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,CharSequence)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,CharSequence,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,Message)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,MessageSupplier)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,MessageSupplier,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,Object)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object,Object,Object,Object)", "", "Argument[1..5]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object,Object,Object,Object,Object)", "", "Argument[1..6]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object,Object,Object,Object,Object,Object)", "", "Argument[1..7]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..8]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..9]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..10]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..11]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Supplier)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,String,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,Supplier)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Marker,Supplier,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Message)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Message,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(MessageSupplier)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(MessageSupplier,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object,Object,Object,Object,Object)", "", "Argument[0..5]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object,Object,Object,Object,Object,Object)", "", "Argument[0..6]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..7]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..8]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..9]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..10]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Supplier)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(String,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Supplier)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "fatal", "(Supplier,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(CharSequence)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(CharSequence,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,CharSequence)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,CharSequence,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,Message)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,MessageSupplier)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,MessageSupplier,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,Object)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object,Object,Object,Object)", "", "Argument[1..5]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object,Object,Object,Object,Object)", "", "Argument[1..6]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object,Object,Object,Object,Object,Object)", "", "Argument[1..7]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..8]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..9]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..10]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..11]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Supplier)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,String,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,Supplier)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Marker,Supplier,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Message)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Message,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(MessageSupplier)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(MessageSupplier,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(String)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object,Object,Object,Object,Object)", "", "Argument[0..5]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object,Object,Object,Object,Object,Object)", "", "Argument[0..6]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..7]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..8]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..9]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..10]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Supplier)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(String,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Supplier)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "info", "(Supplier,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,CharSequence)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,CharSequence,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,CharSequence)", "", "Argument[2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,CharSequence,Throwable)", "", "Argument[2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,Message)", "", "Argument[2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,MessageSupplier)", "", "Argument[2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,MessageSupplier,Throwable)", "", "Argument[2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,Object)", "", "Argument[2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,Object,Throwable)", "", "Argument[2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String)", "", "Argument[2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object)", "", "Argument[2..3]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object,Object)", "", "Argument[2..4]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object,Object,Object)", "", "Argument[2..5]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object,Object,Object,Object)", "", "Argument[2..6]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object,Object,Object,Object,Object)", "", "Argument[2..7]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object,Object,Object,Object,Object,Object)", "", "Argument[2..8]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[2..9]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[2..10]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[2..11]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[2..12]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Object[])", "", "Argument[2..3]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Supplier)", "", "Argument[2..3]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,String,Throwable)", "", "Argument[2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,Supplier)", "", "Argument[2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Marker,Supplier,Throwable)", "", "Argument[2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Message)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Message,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,MessageSupplier)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,MessageSupplier,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Object)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object,Object,Object)", "", "Argument[1..4]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object,Object,Object,Object)", "", "Argument[1..5]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object,Object,Object,Object,Object)", "", "Argument[1..6]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object,Object,Object,Object,Object,Object)", "", "Argument[1..7]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..8]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..9]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..10]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..11]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Supplier)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,String,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Supplier)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "log", "(Level,Supplier,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "logMessage", "(Level,Marker,String,StackTraceElement,Message,Throwable)", "", "Argument[4]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "printf", "(Level,Marker,String,Object[])", "", "Argument[2..3]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "printf", "(Level,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(CharSequence)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(CharSequence,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,CharSequence)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,CharSequence,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,Message)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,MessageSupplier)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,MessageSupplier,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,Object)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object,Object,Object,Object)", "", "Argument[1..5]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object,Object,Object,Object,Object)", "", "Argument[1..6]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object,Object,Object,Object,Object,Object)", "", "Argument[1..7]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..8]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..9]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..10]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..11]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Supplier)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,String,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,Supplier)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Marker,Supplier,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Message)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Message,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(MessageSupplier)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(MessageSupplier,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(String)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object,Object,Object,Object,Object)", "", "Argument[0..5]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object,Object,Object,Object,Object,Object)", "", "Argument[0..6]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..7]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..8]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..9]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..10]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Supplier)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(String,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Supplier)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "trace", "(Supplier,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "traceEntry", "(Message)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "traceEntry", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "traceEntry", "(String,Supplier[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "traceEntry", "(Supplier[])", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "traceExit", "(EntryMessage)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "traceExit", "(EntryMessage,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "traceExit", "(Message,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "traceExit", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "traceExit", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(CharSequence)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(CharSequence,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,CharSequence)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,CharSequence,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,Message)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,MessageSupplier)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,MessageSupplier,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,Object)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object,Object,Object,Object)", "", "Argument[1..5]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object,Object,Object,Object,Object)", "", "Argument[1..6]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object,Object,Object,Object,Object,Object)", "", "Argument[1..7]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..8]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..9]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..10]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[1..11]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Supplier)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,String,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,Supplier)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Marker,Supplier,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Message)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Message,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(MessageSupplier)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(MessageSupplier,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(String)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object,Object,Object,Object,Object)", "", "Argument[0..5]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object,Object,Object,Object,Object,Object)", "", "Argument[0..6]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..7]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..8]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..9]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object,Object,Object,Object,Object,Object,Object,Object,Object,Object)", "", "Argument[0..10]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Supplier)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(String,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Supplier)", "", "Argument[0]", "log-injection", "manual"] + - ["org.apache.logging.log4j", "Logger", True, "warn", "(Supplier,Throwable)", "", "Argument[0]", "log-injection", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/org.apache.tools.ant.model.yml b/java/ql/lib/ext/org.apache.tools.ant.model.yml index bee9b475ef7..474429db030 100644 --- a/java/ql/lib/ext/org.apache.tools.ant.model.yml +++ b/java/ql/lib/ext/org.apache.tools.ant.model.yml @@ -3,8 +3,8 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.tools.ant", "AntClassLoader", True, "addPathComponent", "(File)", "", "Argument[0]", "read-file", "ai-manual"] - - ["org.apache.tools.ant", "AntClassLoader", True, "AntClassLoader", "(ClassLoader,Project,Path,boolean)", "", "Argument[2]", "read-file", "ai-manual"] - - ["org.apache.tools.ant", "AntClassLoader", True, "AntClassLoader", "(Project,Path,boolean)", "", "Argument[1]", "read-file", "ai-manual"] - - ["org.apache.tools.ant", "AntClassLoader", True, "AntClassLoader", "(Project,Path)", "", "Argument[1]", "read-file", "ai-manual"] - - ["org.apache.tools.ant", "DirectoryScanner", True, "setBasedir", "(File)", "", "Argument[0]", "read-file", "ai-manual"] + - ["org.apache.tools.ant", "AntClassLoader", True, "addPathComponent", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.tools.ant", "AntClassLoader", True, "AntClassLoader", "(ClassLoader,Project,Path,boolean)", "", "Argument[2]", "path-injection", "ai-manual"] + - ["org.apache.tools.ant", "AntClassLoader", True, "AntClassLoader", "(Project,Path,boolean)", "", "Argument[1]", "path-injection", "ai-manual"] + - ["org.apache.tools.ant", "AntClassLoader", True, "AntClassLoader", "(Project,Path)", "", "Argument[1]", "path-injection", "ai-manual"] + - ["org.apache.tools.ant", "DirectoryScanner", True, "setBasedir", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.tools.ant.taskdefs.model.yml b/java/ql/lib/ext/org.apache.tools.ant.taskdefs.model.yml index 29b4ee0d16e..aaacf02d58c 100644 --- a/java/ql/lib/ext/org.apache.tools.ant.taskdefs.model.yml +++ b/java/ql/lib/ext/org.apache.tools.ant.taskdefs.model.yml @@ -3,9 +3,9 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.tools.ant.taskdefs", "Copy", True, "addFileset", "(FileSet)", "", "Argument[0]", "read-file", "ai-manual"] - - ["org.apache.tools.ant.taskdefs", "Copy", True, "setFile", "(File)", "", "Argument[0]", "read-file", "ai-manual"] - - ["org.apache.tools.ant.taskdefs", "Copy", True, "setTodir", "(File)", "", "Argument[0]", "create-file", "ai-manual"] - - ["org.apache.tools.ant.taskdefs", "Copy", True, "setTofile", "(File)", "", "Argument[0]", "create-file", "ai-manual"] - - ["org.apache.tools.ant.taskdefs", "Expand", True, "setDest", "(File)", "", "Argument[0]", "create-file", "ai-manual"] - - ["org.apache.tools.ant.taskdefs", "Expand", True, "setSrc", "(File)", "", "Argument[0]", "read-file", "ai-manual"] + - ["org.apache.tools.ant.taskdefs", "Copy", True, "addFileset", "(FileSet)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.tools.ant.taskdefs", "Copy", True, "setFile", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.tools.ant.taskdefs", "Copy", True, "setTodir", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.tools.ant.taskdefs", "Copy", True, "setTofile", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.tools.ant.taskdefs", "Expand", True, "setDest", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.tools.ant.taskdefs", "Expand", True, "setSrc", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.velocity.app.model.yml b/java/ql/lib/ext/org.apache.velocity.app.model.yml index 1afc328b882..307f534d3ea 100644 --- a/java/ql/lib/ext/org.apache.velocity.app.model.yml +++ b/java/ql/lib/ext/org.apache.velocity.app.model.yml @@ -3,7 +3,7 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.velocity.app", "Velocity", True, "evaluate", "", "", "Argument[3]", "ssti", "manual"] - - ["org.apache.velocity.app", "Velocity", True, "mergeTemplate", "", "", "Argument[2]", "ssti", "manual"] - - ["org.apache.velocity.app", "VelocityEngine", True, "evaluate", "", "", "Argument[3]", "ssti", "manual"] - - ["org.apache.velocity.app", "VelocityEngine", True, "mergeTemplate", "", "", "Argument[2]", "ssti", "manual"] + - ["org.apache.velocity.app", "Velocity", True, "evaluate", "", "", "Argument[3]", "template-injection", "manual"] + - ["org.apache.velocity.app", "Velocity", True, "mergeTemplate", "", "", "Argument[2]", "template-injection", "manual"] + - ["org.apache.velocity.app", "VelocityEngine", True, "evaluate", "", "", "Argument[3]", "template-injection", "manual"] + - ["org.apache.velocity.app", "VelocityEngine", True, "mergeTemplate", "", "", "Argument[2]", "template-injection", "manual"] diff --git a/java/ql/lib/ext/org.apache.velocity.runtime.model.yml b/java/ql/lib/ext/org.apache.velocity.runtime.model.yml index a8f740a2301..68f4e16fc5a 100644 --- a/java/ql/lib/ext/org.apache.velocity.runtime.model.yml +++ b/java/ql/lib/ext/org.apache.velocity.runtime.model.yml @@ -3,6 +3,6 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.velocity.runtime", "RuntimeServices", True, "evaluate", "", "", "Argument[3]", "ssti", "manual"] - - ["org.apache.velocity.runtime", "RuntimeServices", True, "parse", "", "", "Argument[0]", "ssti", "manual"] - - ["org.apache.velocity.runtime", "RuntimeSingleton", True, "parse", "", "", "Argument[0]", "ssti", "manual"] + - ["org.apache.velocity.runtime", "RuntimeServices", True, "evaluate", "", "", "Argument[3]", "template-injection", "manual"] + - ["org.apache.velocity.runtime", "RuntimeServices", True, "parse", "", "", "Argument[0]", "template-injection", "manual"] + - ["org.apache.velocity.runtime", "RuntimeSingleton", True, "parse", "", "", "Argument[0]", "template-injection", "manual"] diff --git a/java/ql/lib/ext/org.apache.velocity.runtime.resource.util.model.yml b/java/ql/lib/ext/org.apache.velocity.runtime.resource.util.model.yml index 4d3ce4c37ed..a204fb0711d 100644 --- a/java/ql/lib/ext/org.apache.velocity.runtime.resource.util.model.yml +++ b/java/ql/lib/ext/org.apache.velocity.runtime.resource.util.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.velocity.runtime.resource.util", "StringResourceRepository", True, "putStringResource", "", "", "Argument[1]", "ssti", "manual"] + - ["org.apache.velocity.runtime.resource.util", "StringResourceRepository", True, "putStringResource", "", "", "Argument[1]", "template-injection", "manual"] diff --git a/java/ql/lib/ext/org.codehaus.cargo.container.installer.model.yml b/java/ql/lib/ext/org.codehaus.cargo.container.installer.model.yml index dbb6ace53da..602a6223fe8 100644 --- a/java/ql/lib/ext/org.codehaus.cargo.container.installer.model.yml +++ b/java/ql/lib/ext/org.codehaus.cargo.container.installer.model.yml @@ -3,6 +3,6 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.codehaus.cargo.container.installer", "ZipURLInstaller", True, "ZipURLInstaller", "(URL,String,String)", "", "Argument[0]", "open-url", "ai-manual"] - - ["org.codehaus.cargo.container.installer", "ZipURLInstaller", True, "ZipURLInstaller", "(URL,String,String)", "", "Argument[1]", "create-file", "ai-manual"] - - ["org.codehaus.cargo.container.installer", "ZipURLInstaller", True, "ZipURLInstaller", "(URL,String,String)", "", "Argument[2]", "create-file", "ai-manual"] + - ["org.codehaus.cargo.container.installer", "ZipURLInstaller", True, "ZipURLInstaller", "(URL,String,String)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["org.codehaus.cargo.container.installer", "ZipURLInstaller", True, "ZipURLInstaller", "(URL,String,String)", "", "Argument[1]", "path-injection", "ai-manual"] + - ["org.codehaus.cargo.container.installer", "ZipURLInstaller", True, "ZipURLInstaller", "(URL,String,String)", "", "Argument[2]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.codehaus.groovy.control.model.yml b/java/ql/lib/ext/org.codehaus.groovy.control.model.yml index 61ec26f4482..fdccc85e6a9 100644 --- a/java/ql/lib/ext/org.codehaus.groovy.control.model.yml +++ b/java/ql/lib/ext/org.codehaus.groovy.control.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.codehaus.groovy.control", "CompilationUnit", False, "compile", "", "", "Argument[this]", "groovy", "manual"] + - ["org.codehaus.groovy.control", "CompilationUnit", False, "compile", "", "", "Argument[this]", "groovy-injection", "manual"] diff --git a/java/ql/lib/ext/org.dom4j.model.yml b/java/ql/lib/ext/org.dom4j.model.yml index b2e5c2ed379..f54c817d966 100644 --- a/java/ql/lib/ext/org.dom4j.model.yml +++ b/java/ql/lib/ext/org.dom4j.model.yml @@ -3,18 +3,18 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.dom4j", "DocumentFactory", True, "createPattern", "", "", "Argument[0]", "xpath", "manual"] - - ["org.dom4j", "DocumentFactory", True, "createXPath", "", "", "Argument[0]", "xpath", "manual"] - - ["org.dom4j", "DocumentFactory", True, "createXPathFilter", "", "", "Argument[0]", "xpath", "manual"] - - ["org.dom4j", "DocumentHelper", False, "createPattern", "", "", "Argument[0]", "xpath", "manual"] - - ["org.dom4j", "DocumentHelper", False, "createXPath", "", "", "Argument[0]", "xpath", "manual"] - - ["org.dom4j", "DocumentHelper", False, "createXPathFilter", "", "", "Argument[0]", "xpath", "manual"] - - ["org.dom4j", "DocumentHelper", False, "selectNodes", "", "", "Argument[0]", "xpath", "manual"] - - ["org.dom4j", "DocumentHelper", False, "sort", "", "", "Argument[1]", "xpath", "manual"] - - ["org.dom4j", "Node", True, "createXPath", "", "", "Argument[0]", "xpath", "manual"] - - ["org.dom4j", "Node", True, "matches", "", "", "Argument[0]", "xpath", "manual"] - - ["org.dom4j", "Node", True, "numberValueOf", "", "", "Argument[0]", "xpath", "manual"] - - ["org.dom4j", "Node", True, "selectNodes", "", "", "Argument[0..1]", "xpath", "manual"] - - ["org.dom4j", "Node", True, "selectObject", "", "", "Argument[0]", "xpath", "manual"] - - ["org.dom4j", "Node", True, "selectSingleNode", "", "", "Argument[0]", "xpath", "manual"] - - ["org.dom4j", "Node", True, "valueOf", "", "", "Argument[0]", "xpath", "manual"] + - ["org.dom4j", "DocumentFactory", True, "createPattern", "", "", "Argument[0]", "xpath-injection", "manual"] + - ["org.dom4j", "DocumentFactory", True, "createXPath", "", "", "Argument[0]", "xpath-injection", "manual"] + - ["org.dom4j", "DocumentFactory", True, "createXPathFilter", "", "", "Argument[0]", "xpath-injection", "manual"] + - ["org.dom4j", "DocumentHelper", False, "createPattern", "", "", "Argument[0]", "xpath-injection", "manual"] + - ["org.dom4j", "DocumentHelper", False, "createXPath", "", "", "Argument[0]", "xpath-injection", "manual"] + - ["org.dom4j", "DocumentHelper", False, "createXPathFilter", "", "", "Argument[0]", "xpath-injection", "manual"] + - ["org.dom4j", "DocumentHelper", False, "selectNodes", "", "", "Argument[0]", "xpath-injection", "manual"] + - ["org.dom4j", "DocumentHelper", False, "sort", "", "", "Argument[1]", "xpath-injection", "manual"] + - ["org.dom4j", "Node", True, "createXPath", "", "", "Argument[0]", "xpath-injection", "manual"] + - ["org.dom4j", "Node", True, "matches", "", "", "Argument[0]", "xpath-injection", "manual"] + - ["org.dom4j", "Node", True, "numberValueOf", "", "", "Argument[0]", "xpath-injection", "manual"] + - ["org.dom4j", "Node", True, "selectNodes", "", "", "Argument[0..1]", "xpath-injection", "manual"] + - ["org.dom4j", "Node", True, "selectObject", "", "", "Argument[0]", "xpath-injection", "manual"] + - ["org.dom4j", "Node", True, "selectSingleNode", "", "", "Argument[0]", "xpath-injection", "manual"] + - ["org.dom4j", "Node", True, "valueOf", "", "", "Argument[0]", "xpath-injection", "manual"] diff --git a/java/ql/lib/ext/org.dom4j.tree.model.yml b/java/ql/lib/ext/org.dom4j.tree.model.yml index 0896937bb16..3117806aa6e 100644 --- a/java/ql/lib/ext/org.dom4j.tree.model.yml +++ b/java/ql/lib/ext/org.dom4j.tree.model.yml @@ -3,5 +3,5 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.dom4j.tree", "AbstractNode", True, "createPattern", "", "", "Argument[0]", "xpath", "manual"] - - ["org.dom4j.tree", "AbstractNode", True, "createXPathFilter", "", "", "Argument[0]", "xpath", "manual"] + - ["org.dom4j.tree", "AbstractNode", True, "createPattern", "", "", "Argument[0]", "xpath-injection", "manual"] + - ["org.dom4j.tree", "AbstractNode", True, "createXPathFilter", "", "", "Argument[0]", "xpath-injection", "manual"] diff --git a/java/ql/lib/ext/org.dom4j.util.model.yml b/java/ql/lib/ext/org.dom4j.util.model.yml index d7dc55cd145..530652f2ede 100644 --- a/java/ql/lib/ext/org.dom4j.util.model.yml +++ b/java/ql/lib/ext/org.dom4j.util.model.yml @@ -3,6 +3,6 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.dom4j.util", "ProxyDocumentFactory", True, "createPattern", "", "", "Argument[0]", "xpath", "manual"] - - ["org.dom4j.util", "ProxyDocumentFactory", True, "createXPath", "", "", "Argument[0]", "xpath", "manual"] - - ["org.dom4j.util", "ProxyDocumentFactory", True, "createXPathFilter", "", "", "Argument[0]", "xpath", "manual"] + - ["org.dom4j.util", "ProxyDocumentFactory", True, "createPattern", "", "", "Argument[0]", "xpath-injection", "manual"] + - ["org.dom4j.util", "ProxyDocumentFactory", True, "createXPath", "", "", "Argument[0]", "xpath-injection", "manual"] + - ["org.dom4j.util", "ProxyDocumentFactory", True, "createXPathFilter", "", "", "Argument[0]", "xpath-injection", "manual"] diff --git a/java/ql/lib/ext/org.eclipse.jetty.client.model.yml b/java/ql/lib/ext/org.eclipse.jetty.client.model.yml index 23f0e2a48a8..28c3430e818 100644 --- a/java/ql/lib/ext/org.eclipse.jetty.client.model.yml +++ b/java/ql/lib/ext/org.eclipse.jetty.client.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.eclipse.jetty.client", "HttpClient", True, "newRequest", "(String)", "", "Argument[0]", "open-url", "ai-manual"] + - ["org.eclipse.jetty.client", "HttpClient", True, "newRequest", "(String)", "", "Argument[0]", "request-forgery", "ai-manual"] diff --git a/java/ql/lib/ext/org.fusesource.leveldbjni.model.yml b/java/ql/lib/ext/org.fusesource.leveldbjni.model.yml new file mode 100644 index 00000000000..2c3f221abd7 --- /dev/null +++ b/java/ql/lib/ext/org.fusesource.leveldbjni.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["org.fusesource.leveldbjni", "JniDBFactory", True, "open", "(File,Options)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.geogebra.web.full.main.model.yml b/java/ql/lib/ext/org.geogebra.web.full.main.model.yml index c6719b6a97e..914a60fe38a 100644 --- a/java/ql/lib/ext/org.geogebra.web.full.main.model.yml +++ b/java/ql/lib/ext/org.geogebra.web.full.main.model.yml @@ -4,4 +4,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.geogebra.web.full.main", "FileManager", True, "open", "(String,String)", "", "Argument[0]", "url-redirect", "ai-manual"] + - ["org.geogebra.web.full.main", "FileManager", True, "open", "(String,String)", "", "Argument[0]", "url-redirection", "ai-manual"] diff --git a/java/ql/lib/ext/org.hibernate.model.yml b/java/ql/lib/ext/org.hibernate.model.yml index ffa483ec742..c6a18bb1350 100644 --- a/java/ql/lib/ext/org.hibernate.model.yml +++ b/java/ql/lib/ext/org.hibernate.model.yml @@ -3,7 +3,7 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.hibernate", "Session", True, "createQuery", "", "", "Argument[0]", "sql", "manual"] - - ["org.hibernate", "Session", True, "createSQLQuery", "", "", "Argument[0]", "sql", "manual"] - - ["org.hibernate", "SharedSessionContract", True, "createQuery", "", "", "Argument[0]", "sql", "manual"] - - ["org.hibernate", "SharedSessionContract", True, "createSQLQuery", "", "", "Argument[0]", "sql", "manual"] + - ["org.hibernate", "Session", True, "createQuery", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.hibernate", "Session", True, "createSQLQuery", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.hibernate", "SharedSessionContract", True, "createQuery", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.hibernate", "SharedSessionContract", True, "createSQLQuery", "", "", "Argument[0]", "sql-injection", "manual"] diff --git a/java/ql/lib/ext/org.hibernate.query.model.yml b/java/ql/lib/ext/org.hibernate.query.model.yml index 6281a33caa5..bb6232c1fcd 100644 --- a/java/ql/lib/ext/org.hibernate.query.model.yml +++ b/java/ql/lib/ext/org.hibernate.query.model.yml @@ -3,6 +3,6 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.hibernate.query", "QueryProducer", True, "createNativeQuery", "", "", "Argument[0]", "sql", "manual"] - - ["org.hibernate.query", "QueryProducer", True, "createQuery", "", "", "Argument[0]", "sql", "manual"] - - ["org.hibernate.query", "QueryProducer", True, "createSQLQuery", "", "", "Argument[0]", "sql", "manual"] + - ["org.hibernate.query", "QueryProducer", True, "createNativeQuery", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.hibernate.query", "QueryProducer", True, "createQuery", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.hibernate.query", "QueryProducer", True, "createSQLQuery", "", "", "Argument[0]", "sql-injection", "manual"] diff --git a/java/ql/lib/ext/org.influxdb.model.yml b/java/ql/lib/ext/org.influxdb.model.yml new file mode 100644 index 00000000000..00dc8277407 --- /dev/null +++ b/java/ql/lib/ext/org.influxdb.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["org.influxdb", "InfluxDBFactory", False, "connect", "(String,String,String,Builder)", "", "Argument[0]", "request-forgery", "ai-manual"] diff --git a/java/ql/lib/ext/org.jboss.logging.model.yml b/java/ql/lib/ext/org.jboss.logging.model.yml index 069ae852b77..31636f1a6a3 100644 --- a/java/ql/lib/ext/org.jboss.logging.model.yml +++ b/java/ql/lib/ext/org.jboss.logging.model.yml @@ -3,327 +3,327 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.jboss.logging", "BasicLogger", True, "debug", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debug", "(Object,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debug", "(Object,Object[],Throwable)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debug", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debug", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debug", "(String,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debugf", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debugf", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debugf", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debugf", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debugf", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debugf", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debugf", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debugf", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debugv", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debugv", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debugv", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debugv", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debugv", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debugv", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debugv", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "debugv", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "error", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "error", "(Object,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "error", "(Object,Object[],Throwable)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "error", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "error", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "error", "(String,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "errorf", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "errorf", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "errorf", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "errorf", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "errorf", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "errorf", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "errorf", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "errorf", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "errorv", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "errorv", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "errorv", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "errorv", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "errorv", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "errorv", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "errorv", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "errorv", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatal", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatal", "(Object,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatal", "(Object,Object[],Throwable)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatal", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatal", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatal", "(String,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatalf", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatalf", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatalf", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatalf", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatalf", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatalf", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatalf", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatalf", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatalv", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatalv", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatalv", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatalv", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatalv", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatalv", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatalv", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "fatalv", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "info", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "info", "(Object,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "info", "(Object,Object[],Throwable)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "info", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "info", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "info", "(String,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "infof", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "infof", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "infof", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "infof", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "infof", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "infof", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "infof", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "infof", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "infov", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "infov", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "infov", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "infov", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "infov", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "infov", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "infov", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "infov", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "log", "(Level,Object)", "", "Argument[1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "log", "(Level,Object,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "log", "(Level,Object,Object[],Throwable)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "log", "(Level,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "log", "(Level,String,Object,Throwable)", "", "Argument[2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "log", "(String,Level,Object,Object[],Throwable)", "", "Argument[2..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logf", "(Level,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logf", "(Level,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logf", "(Level,String,Object,Object,Object)", "", "Argument[1..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logf", "(Level,String,Object,Object,Object,Object)", "", "Argument[1..5]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logf", "(Level,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logf", "(Level,Throwable,String,Object)", "", "Argument[2..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logf", "(Level,Throwable,String,Object,Object)", "", "Argument[2..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logf", "(Level,Throwable,String,Object,Object,Object)", "", "Argument[1..5]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logf", "(String,Level,Throwable,String,Object)", "", "Argument[3..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logf", "(String,Level,Throwable,String,Object,Object)", "", "Argument[3..5]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logf", "(String,Level,Throwable,String,Object,Object,Object)", "", "Argument[3..6]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logf", "(String,Level,Throwable,String,Object[])", "", "Argument[3..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logv", "(Level,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logv", "(Level,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logv", "(Level,String,Object,Object,Object)", "", "Argument[1..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logv", "(Level,String,Object,Object,Object,Object)", "", "Argument[1..5]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logv", "(Level,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logv", "(Level,Throwable,String,Object)", "", "Argument[2..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logv", "(Level,Throwable,String,Object,Object)", "", "Argument[2..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logv", "(Level,Throwable,String,Object,Object,Object)", "", "Argument[1..5]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logv", "(String,Level,Throwable,String,Object)", "", "Argument[3..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logv", "(String,Level,Throwable,String,Object,Object)", "", "Argument[3..5]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logv", "(String,Level,Throwable,String,Object,Object,Object)", "", "Argument[3..6]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "logv", "(String,Level,Throwable,String,Object[])", "", "Argument[3..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "trace", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "trace", "(Object,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "trace", "(Object,Object[],Throwable)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "trace", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "trace", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "trace", "(String,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "tracef", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "tracef", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "tracef", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "tracef", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "tracef", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "tracef", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "tracef", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "tracef", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "tracev", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "tracev", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "tracev", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "tracev", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "tracev", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "tracev", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "tracev", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "tracev", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warn", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warn", "(Object,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warn", "(Object,Object[],Throwable)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warn", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warn", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warn", "(String,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warnf", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warnf", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warnf", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warnf", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warnf", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warnf", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warnf", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warnf", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warnv", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warnv", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warnv", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warnv", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warnv", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warnv", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warnv", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "BasicLogger", True, "warnv", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debug", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debug", "(Object,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debug", "(Object,Object[],Throwable)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debug", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debug", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debug", "(String,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debugf", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debugf", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debugf", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debugf", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debugf", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debugf", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debugf", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debugf", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debugv", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debugv", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debugv", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debugv", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debugv", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debugv", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debugv", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "debugv", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "error", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "error", "(Object,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "error", "(Object,Object[],Throwable)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "error", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "error", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "error", "(String,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "errorf", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "errorf", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "errorf", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "errorf", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "errorf", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "errorf", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "errorf", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "errorf", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "errorv", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "errorv", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "errorv", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "errorv", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "errorv", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "errorv", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "errorv", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "errorv", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatal", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatal", "(Object,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatal", "(Object,Object[],Throwable)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatal", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatal", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatal", "(String,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatalf", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatalf", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatalf", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatalf", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatalf", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatalf", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatalf", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatalf", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatalv", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatalv", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatalv", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatalv", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatalv", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatalv", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatalv", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "fatalv", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "info", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "info", "(Object,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "info", "(Object,Object[],Throwable)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "info", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "info", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "info", "(String,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "infof", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "infof", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "infof", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "infof", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "infof", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "infof", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "infof", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "infof", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "infov", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "infov", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "infov", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "infov", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "infov", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "infov", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "infov", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "infov", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "log", "(Level,Object)", "", "Argument[1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "log", "(Level,Object,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "log", "(Level,Object,Object[],Throwable)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "log", "(Level,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "log", "(Level,String,Object,Throwable)", "", "Argument[2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "log", "(String,Level,Object,Object[],Throwable)", "", "Argument[2..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logf", "(Level,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logf", "(Level,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logf", "(Level,String,Object,Object,Object)", "", "Argument[1..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logf", "(Level,String,Object,Object,Object,Object)", "", "Argument[1..5]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logf", "(Level,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logf", "(Level,Throwable,String,Object)", "", "Argument[2..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logf", "(Level,Throwable,String,Object,Object)", "", "Argument[2..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logf", "(Level,Throwable,String,Object,Object,Object)", "", "Argument[1..5]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logf", "(String,Level,Throwable,String,Object)", "", "Argument[3..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logf", "(String,Level,Throwable,String,Object,Object)", "", "Argument[3..5]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logf", "(String,Level,Throwable,String,Object,Object,Object)", "", "Argument[3..6]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logf", "(String,Level,Throwable,String,Object[])", "", "Argument[3..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logv", "(Level,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logv", "(Level,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logv", "(Level,String,Object,Object,Object)", "", "Argument[1..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logv", "(Level,String,Object,Object,Object,Object)", "", "Argument[1..5]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logv", "(Level,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logv", "(Level,Throwable,String,Object)", "", "Argument[2..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logv", "(Level,Throwable,String,Object,Object)", "", "Argument[2..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logv", "(Level,Throwable,String,Object,Object,Object)", "", "Argument[1..5]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logv", "(String,Level,Throwable,String,Object)", "", "Argument[3..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logv", "(String,Level,Throwable,String,Object,Object)", "", "Argument[3..5]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logv", "(String,Level,Throwable,String,Object,Object,Object)", "", "Argument[3..6]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "logv", "(String,Level,Throwable,String,Object[])", "", "Argument[3..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "trace", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "trace", "(Object,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "trace", "(Object,Object[],Throwable)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "trace", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "trace", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "trace", "(String,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "tracef", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "tracef", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "tracef", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "tracef", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "tracef", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "tracef", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "tracef", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "tracef", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "tracev", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "tracev", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "tracev", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "tracev", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "tracev", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "tracev", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "tracev", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "tracev", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warn", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warn", "(Object,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warn", "(Object,Object[],Throwable)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warn", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warn", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warn", "(String,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warnf", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warnf", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warnf", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warnf", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warnf", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warnf", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warnf", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warnf", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warnv", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warnv", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warnv", "(String,Object,Object,Object)", "", "Argument[0..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warnv", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warnv", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warnv", "(Throwable,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warnv", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.jboss.logging", "Logger", True, "warnv", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "logging", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debug", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debug", "(Object,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debug", "(Object,Object[],Throwable)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debug", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debug", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debug", "(String,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debugf", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debugf", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debugf", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debugf", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debugf", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debugf", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debugf", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debugf", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debugv", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debugv", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debugv", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debugv", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debugv", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debugv", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debugv", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "debugv", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "error", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "error", "(Object,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "error", "(Object,Object[],Throwable)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "error", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "error", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "error", "(String,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "errorf", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "errorf", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "errorf", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "errorf", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "errorf", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "errorf", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "errorf", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "errorf", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "errorv", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "errorv", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "errorv", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "errorv", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "errorv", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "errorv", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "errorv", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "errorv", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatal", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatal", "(Object,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatal", "(Object,Object[],Throwable)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatal", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatal", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatal", "(String,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatalf", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatalf", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatalf", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatalf", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatalf", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatalf", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatalf", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatalf", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatalv", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatalv", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatalv", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatalv", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatalv", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatalv", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatalv", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "fatalv", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "info", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "info", "(Object,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "info", "(Object,Object[],Throwable)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "info", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "info", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "info", "(String,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "infof", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "infof", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "infof", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "infof", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "infof", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "infof", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "infof", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "infof", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "infov", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "infov", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "infov", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "infov", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "infov", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "infov", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "infov", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "infov", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "log", "(Level,Object)", "", "Argument[1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "log", "(Level,Object,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "log", "(Level,Object,Object[],Throwable)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "log", "(Level,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "log", "(Level,String,Object,Throwable)", "", "Argument[2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "log", "(String,Level,Object,Object[],Throwable)", "", "Argument[2..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logf", "(Level,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logf", "(Level,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logf", "(Level,String,Object,Object,Object)", "", "Argument[1..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logf", "(Level,String,Object,Object,Object,Object)", "", "Argument[1..5]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logf", "(Level,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logf", "(Level,Throwable,String,Object)", "", "Argument[2..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logf", "(Level,Throwable,String,Object,Object)", "", "Argument[2..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logf", "(Level,Throwable,String,Object,Object,Object)", "", "Argument[1..5]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logf", "(String,Level,Throwable,String,Object)", "", "Argument[3..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logf", "(String,Level,Throwable,String,Object,Object)", "", "Argument[3..5]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logf", "(String,Level,Throwable,String,Object,Object,Object)", "", "Argument[3..6]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logf", "(String,Level,Throwable,String,Object[])", "", "Argument[3..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logv", "(Level,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logv", "(Level,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logv", "(Level,String,Object,Object,Object)", "", "Argument[1..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logv", "(Level,String,Object,Object,Object,Object)", "", "Argument[1..5]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logv", "(Level,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logv", "(Level,Throwable,String,Object)", "", "Argument[2..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logv", "(Level,Throwable,String,Object,Object)", "", "Argument[2..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logv", "(Level,Throwable,String,Object,Object,Object)", "", "Argument[1..5]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logv", "(String,Level,Throwable,String,Object)", "", "Argument[3..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logv", "(String,Level,Throwable,String,Object,Object)", "", "Argument[3..5]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logv", "(String,Level,Throwable,String,Object,Object,Object)", "", "Argument[3..6]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "logv", "(String,Level,Throwable,String,Object[])", "", "Argument[3..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "trace", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "trace", "(Object,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "trace", "(Object,Object[],Throwable)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "trace", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "trace", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "trace", "(String,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "tracef", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "tracef", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "tracef", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "tracef", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "tracef", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "tracef", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "tracef", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "tracef", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "tracev", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "tracev", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "tracev", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "tracev", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "tracev", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "tracev", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "tracev", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "tracev", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warn", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warn", "(Object,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warn", "(Object,Object[],Throwable)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warn", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warn", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warn", "(String,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warnf", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warnf", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warnf", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warnf", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warnf", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warnf", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warnf", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warnf", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warnv", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warnv", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warnv", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warnv", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warnv", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warnv", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warnv", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "BasicLogger", True, "warnv", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debug", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debug", "(Object,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debug", "(Object,Object[],Throwable)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debug", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debug", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debug", "(String,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debugf", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debugf", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debugf", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debugf", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debugf", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debugf", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debugf", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debugf", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debugv", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debugv", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debugv", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debugv", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debugv", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debugv", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debugv", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "debugv", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "error", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "error", "(Object,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "error", "(Object,Object[],Throwable)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "error", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "error", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "error", "(String,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "errorf", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "errorf", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "errorf", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "errorf", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "errorf", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "errorf", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "errorf", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "errorf", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "errorv", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "errorv", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "errorv", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "errorv", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "errorv", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "errorv", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "errorv", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "errorv", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatal", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatal", "(Object,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatal", "(Object,Object[],Throwable)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatal", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatal", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatal", "(String,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatalf", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatalf", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatalf", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatalf", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatalf", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatalf", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatalf", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatalf", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatalv", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatalv", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatalv", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatalv", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatalv", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatalv", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatalv", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "fatalv", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "info", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "info", "(Object,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "info", "(Object,Object[],Throwable)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "info", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "info", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "info", "(String,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "infof", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "infof", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "infof", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "infof", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "infof", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "infof", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "infof", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "infof", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "infov", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "infov", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "infov", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "infov", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "infov", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "infov", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "infov", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "infov", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "log", "(Level,Object)", "", "Argument[1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "log", "(Level,Object,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "log", "(Level,Object,Object[],Throwable)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "log", "(Level,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "log", "(Level,String,Object,Throwable)", "", "Argument[2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "log", "(String,Level,Object,Object[],Throwable)", "", "Argument[2..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logf", "(Level,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logf", "(Level,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logf", "(Level,String,Object,Object,Object)", "", "Argument[1..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logf", "(Level,String,Object,Object,Object,Object)", "", "Argument[1..5]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logf", "(Level,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logf", "(Level,Throwable,String,Object)", "", "Argument[2..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logf", "(Level,Throwable,String,Object,Object)", "", "Argument[2..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logf", "(Level,Throwable,String,Object,Object,Object)", "", "Argument[1..5]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logf", "(String,Level,Throwable,String,Object)", "", "Argument[3..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logf", "(String,Level,Throwable,String,Object,Object)", "", "Argument[3..5]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logf", "(String,Level,Throwable,String,Object,Object,Object)", "", "Argument[3..6]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logf", "(String,Level,Throwable,String,Object[])", "", "Argument[3..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logv", "(Level,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logv", "(Level,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logv", "(Level,String,Object,Object,Object)", "", "Argument[1..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logv", "(Level,String,Object,Object,Object,Object)", "", "Argument[1..5]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logv", "(Level,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logv", "(Level,Throwable,String,Object)", "", "Argument[2..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logv", "(Level,Throwable,String,Object,Object)", "", "Argument[2..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logv", "(Level,Throwable,String,Object,Object,Object)", "", "Argument[1..5]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logv", "(String,Level,Throwable,String,Object)", "", "Argument[3..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logv", "(String,Level,Throwable,String,Object,Object)", "", "Argument[3..5]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logv", "(String,Level,Throwable,String,Object,Object,Object)", "", "Argument[3..6]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "logv", "(String,Level,Throwable,String,Object[])", "", "Argument[3..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "trace", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "trace", "(Object,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "trace", "(Object,Object[],Throwable)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "trace", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "trace", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "trace", "(String,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "tracef", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "tracef", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "tracef", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "tracef", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "tracef", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "tracef", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "tracef", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "tracef", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "tracev", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "tracev", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "tracev", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "tracev", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "tracev", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "tracev", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "tracev", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "tracev", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warn", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warn", "(Object,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warn", "(Object,Object[],Throwable)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warn", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warn", "(String,Object,Object[],Throwable)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warn", "(String,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warnf", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warnf", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warnf", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warnf", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warnf", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warnf", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warnf", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warnf", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warnv", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warnv", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warnv", "(String,Object,Object,Object)", "", "Argument[0..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warnv", "(String,Object,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warnv", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warnv", "(Throwable,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warnv", "(Throwable,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.jboss.logging", "Logger", True, "warnv", "(Throwable,String,Object,Object,Object)", "", "Argument[0..4]", "log-injection", "manual"] diff --git a/java/ql/lib/ext/org.jdbi.v3.core.model.yml b/java/ql/lib/ext/org.jdbi.v3.core.model.yml index fd7f4e824ac..a80c0a3d90e 100644 --- a/java/ql/lib/ext/org.jdbi.v3.core.model.yml +++ b/java/ql/lib/ext/org.jdbi.v3.core.model.yml @@ -3,9 +3,9 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.jdbi.v3.core", "Jdbi", False, "create", "(String)", "", "Argument[0]", "jdbc-url", "manual"] - - ["org.jdbi.v3.core", "Jdbi", False, "create", "(String,Properties)", "", "Argument[0]", "jdbc-url", "manual"] - - ["org.jdbi.v3.core", "Jdbi", False, "create", "(String,String,String)", "", "Argument[0]", "jdbc-url", "manual"] - - ["org.jdbi.v3.core", "Jdbi", False, "open", "(String)", "", "Argument[0]", "jdbc-url", "manual"] - - ["org.jdbi.v3.core", "Jdbi", False, "open", "(String,Properties)", "", "Argument[0]", "jdbc-url", "manual"] - - ["org.jdbi.v3.core", "Jdbi", False, "open", "(String,String,String)", "", "Argument[0]", "jdbc-url", "manual"] + - ["org.jdbi.v3.core", "Jdbi", False, "create", "(String)", "", "Argument[0]", "request-forgery", "manual"] + - ["org.jdbi.v3.core", "Jdbi", False, "create", "(String,Properties)", "", "Argument[0]", "request-forgery", "manual"] + - ["org.jdbi.v3.core", "Jdbi", False, "create", "(String,String,String)", "", "Argument[0]", "request-forgery", "manual"] + - ["org.jdbi.v3.core", "Jdbi", False, "open", "(String)", "", "Argument[0]", "request-forgery", "manual"] + - ["org.jdbi.v3.core", "Jdbi", False, "open", "(String,Properties)", "", "Argument[0]", "request-forgery", "manual"] + - ["org.jdbi.v3.core", "Jdbi", False, "open", "(String,String,String)", "", "Argument[0]", "request-forgery", "manual"] diff --git a/java/ql/lib/ext/org.jooq.model.yml b/java/ql/lib/ext/org.jooq.model.yml index cf7fc22a923..b7538263a31 100644 --- a/java/ql/lib/ext/org.jooq.model.yml +++ b/java/ql/lib/ext/org.jooq.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.jooq", "PlainSQL", False, "", "", "Annotated", "Argument[0]", "sql", "manual"] + - ["org.jooq", "PlainSQL", False, "", "", "Annotated", "Argument[0]", "sql-injection", "manual"] diff --git a/java/ql/lib/ext/org.kohsuke.stapler.bind.model.yml b/java/ql/lib/ext/org.kohsuke.stapler.bind.model.yml new file mode 100644 index 00000000000..9152eb7b55b --- /dev/null +++ b/java/ql/lib/ext/org.kohsuke.stapler.bind.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sourceModel + data: + - ["org.kohsuke.stapler.bind", "JavaScriptMethod", True, "", "", "Annotated", "Parameter", "remote", "manual"] diff --git a/java/ql/lib/ext/org.kohsuke.stapler.framework.io.model.yml b/java/ql/lib/ext/org.kohsuke.stapler.framework.io.model.yml index 514b23a9958..49cd049cdfa 100644 --- a/java/ql/lib/ext/org.kohsuke.stapler.framework.io.model.yml +++ b/java/ql/lib/ext/org.kohsuke.stapler.framework.io.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.kohsuke.stapler.framework.io", "LargeText", True, "LargeText", "(File,Charset,boolean,boolean)", "", "Argument[0]", "read-file", "ai-manual"] + - ["org.kohsuke.stapler.framework.io", "LargeText", True, "LargeText", "(File,Charset,boolean,boolean)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.kohsuke.stapler.json.model.yml b/java/ql/lib/ext/org.kohsuke.stapler.json.model.yml new file mode 100644 index 00000000000..a06683144e0 --- /dev/null +++ b/java/ql/lib/ext/org.kohsuke.stapler.json.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sourceModel + data: + - ["org.kohsuke.stapler.json", "SubmittedForm", True, "", "", "Annotated", "Parameter", "remote", "manual"] + - ["org.kohsuke.stapler.json", "JsonBody", True, "", "", "Annotated", "Parameter", "remote", "manual"] diff --git a/java/ql/lib/ext/org.kohsuke.stapler.model.yml b/java/ql/lib/ext/org.kohsuke.stapler.model.yml index a3ae44a683b..63bbdbfd52a 100644 --- a/java/ql/lib/ext/org.kohsuke.stapler.model.yml +++ b/java/ql/lib/ext/org.kohsuke.stapler.model.yml @@ -3,5 +3,47 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.kohsuke.stapler", "HttpResponses", True, "redirectTo", "(String)", "", "Argument[0]", "url-redirect", "ai-manual"] - - ["org.kohsuke.stapler", "HttpResponses", True, "staticResource", "(URL)", "", "Argument[0]", "open-url", "ai-manual"] + - ["org.kohsuke.stapler", "HttpResponses", True, "redirectTo", "(String)", "", "Argument[0]", "url-redirection", "ai-manual"] + - ["org.kohsuke.stapler", "HttpResponses", True, "redirectTo", "(int,String)", "", "Argument[1]", "url-redirection", "manual"] + - ["org.kohsuke.stapler", "HttpResponses", True, "staticResource", "(URL)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["org.kohsuke.stapler", "HttpResponses", True, "staticResource", "(URL,long)", "", "Argument[0]", "request-forgery", "manual"] + - ["org.kohsuke.stapler", "HttpResponses", True, "html", "(String)", "", "Argument[0]", "html-injection", "manual"] + - ["org.kohsuke.stapler", "HttpResponses", True, "literalHtml", "(String)", "", "Argument[0]", "html-injection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "forward", "(Object,String,StaplerRequest)", "", "Argument[1]", "request-forgery", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "sendRedirect2", "(String)", "", "Argument[0]", "url-redirection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "sendRedirect", "(int,String)", "", "Argument[1]", "url-redirection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "sendRedirect", "(String)", "", "Argument[0]", "url-redirection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "serveFile", "(StaplerRequest,URL)", "", "Argument[1]", "path-injection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "serveFile", "(StaplerRequest,URL,long)", "", "Argument[1]", "path-injection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "serveLocalizedFile", "(StaplerRequest,URL)", "", "Argument[1]", "path-injection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "serveLocalizedFile", "(StaplerRequest,URL,long)", "", "Argument[1]", "path-injection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "serveFile", "(StaplerRequest,InputStream,long,long,long,String)", "", "Argument[1]", "path-injection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "serveFile", "(StaplerRequest,InputStream,long,long,int,String)", "", "Argument[1]", "path-injection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "serveFile", "(StaplerRequest,InputStream,long,long,String)", "", "Argument[1]", "path-injection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "serveFile", "(StaplerRequest,InputStream,long,int,String)", "", "Argument[1]", "path-injection", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "reverseProxyTo", "(URL,StaplerRequest)", "", "Argument[0]", "request-forgery", "manual"] + - addsTo: + pack: codeql/java-all + extensible: sourceModel + data: + - ["org.kohsuke.stapler", "StaplerRequest", True, "getRequestURIWithQueryString", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getRequestURLWithQueryString", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getReferer", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getOriginalRequestURI", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getSubmittedForm", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getFileItem", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "bindParametersToList", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "bindParameters", "", "", "Argument[0]", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "bindParameters", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "bindJSON", "", "", "Argument[0]", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "bindJSON", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "bindJSONToList", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getParameter", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getParameterMap", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getParameterNames", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getParameterValues", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "StaplerRequest", True, "getRestOfPath", "", "", "ReturnValue", "remote", "manual"] + - ["org.kohsuke.stapler", "QueryParameter", True, "", "", "Annotated", "Parameter", "remote", "manual"] + - ["org.kohsuke.stapler", "Header", True, "", "", "Annotated", "Parameter", "remote", "manual"] + - ["org.kohsuke.stapler", "DataBoundConstructor", True, "", "", "Annotated", "Parameter", "remote", "manual"] + - ["org.kohsuke.stapler", "DataBoundSetter", True, "", "", "Annotated", "Parameter", "remote", "manual"] diff --git a/java/ql/lib/ext/org.mvel2.compiler.model.yml b/java/ql/lib/ext/org.mvel2.compiler.model.yml index 6ca33c8cdb0..0b3535a6fcf 100644 --- a/java/ql/lib/ext/org.mvel2.compiler.model.yml +++ b/java/ql/lib/ext/org.mvel2.compiler.model.yml @@ -3,7 +3,7 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.mvel2.compiler", "Accessor", False, "getValue", "", "", "Argument[this]", "mvel", "manual"] - - ["org.mvel2.compiler", "CompiledAccExpression", False, "getValue", "", "", "Argument[this]", "mvel", "manual"] - - ["org.mvel2.compiler", "CompiledExpression", False, "getDirectValue", "", "", "Argument[this]", "mvel", "manual"] - - ["org.mvel2.compiler", "ExecutableStatement", False, "getValue", "", "", "Argument[this]", "mvel", "manual"] + - ["org.mvel2.compiler", "Accessor", False, "getValue", "", "", "Argument[this]", "mvel-injection", "manual"] + - ["org.mvel2.compiler", "CompiledAccExpression", False, "getValue", "", "", "Argument[this]", "mvel-injection", "manual"] + - ["org.mvel2.compiler", "CompiledExpression", False, "getDirectValue", "", "", "Argument[this]", "mvel-injection", "manual"] + - ["org.mvel2.compiler", "ExecutableStatement", False, "getValue", "", "", "Argument[this]", "mvel-injection", "manual"] diff --git a/java/ql/lib/ext/org.mvel2.jsr223.model.yml b/java/ql/lib/ext/org.mvel2.jsr223.model.yml index 6a63bbcf57c..7dff4964cf0 100644 --- a/java/ql/lib/ext/org.mvel2.jsr223.model.yml +++ b/java/ql/lib/ext/org.mvel2.jsr223.model.yml @@ -3,6 +3,6 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.mvel2.jsr223", "MvelCompiledScript", False, "eval", "", "", "Argument[this]", "mvel", "manual"] - - ["org.mvel2.jsr223", "MvelScriptEngine", False, "eval", "", "", "Argument[0]", "mvel", "manual"] - - ["org.mvel2.jsr223", "MvelScriptEngine", False, "evaluate", "", "", "Argument[0]", "mvel", "manual"] + - ["org.mvel2.jsr223", "MvelCompiledScript", False, "eval", "", "", "Argument[this]", "mvel-injection", "manual"] + - ["org.mvel2.jsr223", "MvelScriptEngine", False, "eval", "", "", "Argument[0]", "mvel-injection", "manual"] + - ["org.mvel2.jsr223", "MvelScriptEngine", False, "evaluate", "", "", "Argument[0]", "mvel-injection", "manual"] diff --git a/java/ql/lib/ext/org.mvel2.model.yml b/java/ql/lib/ext/org.mvel2.model.yml index fd7778c89a6..28a7154df90 100644 --- a/java/ql/lib/ext/org.mvel2.model.yml +++ b/java/ql/lib/ext/org.mvel2.model.yml @@ -3,10 +3,10 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.mvel2", "MVEL", False, "eval", "", "", "Argument[0]", "mvel", "manual"] - - ["org.mvel2", "MVEL", False, "evalToBoolean", "", "", "Argument[0]", "mvel", "manual"] - - ["org.mvel2", "MVEL", False, "evalToString", "", "", "Argument[0]", "mvel", "manual"] - - ["org.mvel2", "MVEL", False, "executeAllExpression", "", "", "Argument[0]", "mvel", "manual"] - - ["org.mvel2", "MVEL", False, "executeExpression", "", "", "Argument[0]", "mvel", "manual"] - - ["org.mvel2", "MVEL", False, "executeSetExpression", "", "", "Argument[0]", "mvel", "manual"] - - ["org.mvel2", "MVELRuntime", False, "execute", "", "", "Argument[1]", "mvel", "manual"] + - ["org.mvel2", "MVEL", False, "eval", "", "", "Argument[0]", "mvel-injection", "manual"] + - ["org.mvel2", "MVEL", False, "evalToBoolean", "", "", "Argument[0]", "mvel-injection", "manual"] + - ["org.mvel2", "MVEL", False, "evalToString", "", "", "Argument[0]", "mvel-injection", "manual"] + - ["org.mvel2", "MVEL", False, "executeAllExpression", "", "", "Argument[0]", "mvel-injection", "manual"] + - ["org.mvel2", "MVEL", False, "executeExpression", "", "", "Argument[0]", "mvel-injection", "manual"] + - ["org.mvel2", "MVEL", False, "executeSetExpression", "", "", "Argument[0]", "mvel-injection", "manual"] + - ["org.mvel2", "MVELRuntime", False, "execute", "", "", "Argument[1]", "mvel-injection", "manual"] diff --git a/java/ql/lib/ext/org.mvel2.templates.model.yml b/java/ql/lib/ext/org.mvel2.templates.model.yml index 0e31cee38b0..93fdbde10ed 100644 --- a/java/ql/lib/ext/org.mvel2.templates.model.yml +++ b/java/ql/lib/ext/org.mvel2.templates.model.yml @@ -3,5 +3,5 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.mvel2.templates", "TemplateRuntime", False, "eval", "", "", "Argument[0]", "mvel", "manual"] - - ["org.mvel2.templates", "TemplateRuntime", False, "execute", "", "", "Argument[0]", "mvel", "manual"] + - ["org.mvel2.templates", "TemplateRuntime", False, "eval", "", "", "Argument[0]", "mvel-injection", "manual"] + - ["org.mvel2.templates", "TemplateRuntime", False, "execute", "", "", "Argument[0]", "mvel-injection", "manual"] diff --git a/java/ql/lib/ext/org.openjdk.jmh.runner.options.model.yml b/java/ql/lib/ext/org.openjdk.jmh.runner.options.model.yml index a4eb31084cc..1d2aa29efee 100644 --- a/java/ql/lib/ext/org.openjdk.jmh.runner.options.model.yml +++ b/java/ql/lib/ext/org.openjdk.jmh.runner.options.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.openjdk.jmh.runner.options", "ChainedOptionsBuilder", True, "result", "(String)", "", "Argument[0]", "create-file", "ai-manual"] + - ["org.openjdk.jmh.runner.options", "ChainedOptionsBuilder", True, "result", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/org.scijava.log.model.yml b/java/ql/lib/ext/org.scijava.log.model.yml index 303dbae27e2..ad53130cd07 100644 --- a/java/ql/lib/ext/org.scijava.log.model.yml +++ b/java/ql/lib/ext/org.scijava.log.model.yml @@ -3,16 +3,16 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.scijava.log", "Logger", True, "alwaysLog", "(int,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.scijava.log", "Logger", True, "debug", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.scijava.log", "Logger", True, "debug", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.scijava.log", "Logger", True, "error", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.scijava.log", "Logger", True, "error", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.scijava.log", "Logger", True, "info", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.scijava.log", "Logger", True, "info", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.scijava.log", "Logger", True, "log", "(int,Object)", "", "Argument[1]", "logging", "manual"] - - ["org.scijava.log", "Logger", True, "log", "(int,Object,Throwable)", "", "Argument[1]", "logging", "manual"] - - ["org.scijava.log", "Logger", True, "trace", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.scijava.log", "Logger", True, "trace", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.scijava.log", "Logger", True, "warn", "(Object)", "", "Argument[0]", "logging", "manual"] - - ["org.scijava.log", "Logger", True, "warn", "(Object,Throwable)", "", "Argument[0]", "logging", "manual"] + - ["org.scijava.log", "Logger", True, "alwaysLog", "(int,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.scijava.log", "Logger", True, "debug", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.scijava.log", "Logger", True, "debug", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.scijava.log", "Logger", True, "error", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.scijava.log", "Logger", True, "error", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.scijava.log", "Logger", True, "info", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.scijava.log", "Logger", True, "info", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.scijava.log", "Logger", True, "log", "(int,Object)", "", "Argument[1]", "log-injection", "manual"] + - ["org.scijava.log", "Logger", True, "log", "(int,Object,Throwable)", "", "Argument[1]", "log-injection", "manual"] + - ["org.scijava.log", "Logger", True, "trace", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.scijava.log", "Logger", True, "trace", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.scijava.log", "Logger", True, "warn", "(Object)", "", "Argument[0]", "log-injection", "manual"] + - ["org.scijava.log", "Logger", True, "warn", "(Object,Throwable)", "", "Argument[0]", "log-injection", "manual"] diff --git a/java/ql/lib/ext/org.slf4j.model.yml b/java/ql/lib/ext/org.slf4j.model.yml index 6ff2f31847d..e714155b3f2 100644 --- a/java/ql/lib/ext/org.slf4j.model.yml +++ b/java/ql/lib/ext/org.slf4j.model.yml @@ -3,53 +3,53 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.slf4j", "Logger", True, "debug", "(Marker,String)", "", "Argument[1]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "debug", "(Marker,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "debug", "(Marker,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "debug", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "debug", "(Marker,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "debug", "(String)", "", "Argument[0]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "debug", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "debug", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "debug", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "debug", "(String,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "error", "(Marker,String)", "", "Argument[1]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "error", "(Marker,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "error", "(Marker,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "error", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "error", "(Marker,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "error", "(String)", "", "Argument[0]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "error", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "error", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "error", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "error", "(String,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "info", "(Marker,String)", "", "Argument[1]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "info", "(Marker,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "info", "(Marker,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "info", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "info", "(Marker,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "info", "(String)", "", "Argument[0]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "info", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "info", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "info", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "info", "(String,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "trace", "(Marker,String)", "", "Argument[1]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "trace", "(Marker,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "trace", "(Marker,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "trace", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "trace", "(Marker,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "trace", "(String)", "", "Argument[0]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "trace", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "trace", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "trace", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "trace", "(String,Throwable)", "", "Argument[0]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "warn", "(Marker,String)", "", "Argument[1]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "warn", "(Marker,String,Object)", "", "Argument[1..2]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "warn", "(Marker,String,Object,Object)", "", "Argument[1..3]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "warn", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "warn", "(Marker,String,Object[])", "", "Argument[1..2]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "warn", "(String)", "", "Argument[0]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "warn", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "warn", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "warn", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.slf4j", "Logger", True, "warn", "(String,Throwable)", "", "Argument[0]", "logging", "manual"] + - ["org.slf4j", "Logger", True, "debug", "(Marker,String)", "", "Argument[1]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "debug", "(Marker,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "debug", "(Marker,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "debug", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "debug", "(Marker,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "debug", "(String)", "", "Argument[0]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "debug", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "debug", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "debug", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "debug", "(String,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "error", "(Marker,String)", "", "Argument[1]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "error", "(Marker,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "error", "(Marker,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "error", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "error", "(Marker,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "error", "(String)", "", "Argument[0]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "error", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "error", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "error", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "error", "(String,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "info", "(Marker,String)", "", "Argument[1]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "info", "(Marker,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "info", "(Marker,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "info", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "info", "(Marker,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "info", "(String)", "", "Argument[0]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "info", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "info", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "info", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "info", "(String,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "trace", "(Marker,String)", "", "Argument[1]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "trace", "(Marker,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "trace", "(Marker,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "trace", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "trace", "(Marker,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "trace", "(String)", "", "Argument[0]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "trace", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "trace", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "trace", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "trace", "(String,Throwable)", "", "Argument[0]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "warn", "(Marker,String)", "", "Argument[1]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "warn", "(Marker,String,Object)", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "warn", "(Marker,String,Object,Object)", "", "Argument[1..3]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "warn", "(Marker,String,Object,Object,Object)", "", "Argument[1..4]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "warn", "(Marker,String,Object[])", "", "Argument[1..2]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "warn", "(String)", "", "Argument[0]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "warn", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "warn", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "warn", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.slf4j", "Logger", True, "warn", "(String,Throwable)", "", "Argument[0]", "log-injection", "manual"] diff --git a/java/ql/lib/ext/org.slf4j.spi.model.yml b/java/ql/lib/ext/org.slf4j.spi.model.yml index 197131b6e17..a1d5c498c33 100644 --- a/java/ql/lib/ext/org.slf4j.spi.model.yml +++ b/java/ql/lib/ext/org.slf4j.spi.model.yml @@ -3,11 +3,11 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.slf4j.spi", "LoggingEventBuilder", True, "log", "", "", "Argument[0]", "logging", "manual"] - - ["org.slf4j.spi", "LoggingEventBuilder", True, "log", "(String,Object)", "", "Argument[0..1]", "logging", "manual"] - - ["org.slf4j.spi", "LoggingEventBuilder", True, "log", "(String,Object,Object)", "", "Argument[0..2]", "logging", "manual"] - - ["org.slf4j.spi", "LoggingEventBuilder", True, "log", "(String,Object[])", "", "Argument[0..1]", "logging", "manual"] - - ["org.slf4j.spi", "LoggingEventBuilder", True, "log", "(Supplier)", "", "Argument[0]", "logging", "manual"] + - ["org.slf4j.spi", "LoggingEventBuilder", True, "log", "", "", "Argument[0]", "log-injection", "manual"] + - ["org.slf4j.spi", "LoggingEventBuilder", True, "log", "(String,Object)", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.slf4j.spi", "LoggingEventBuilder", True, "log", "(String,Object,Object)", "", "Argument[0..2]", "log-injection", "manual"] + - ["org.slf4j.spi", "LoggingEventBuilder", True, "log", "(String,Object[])", "", "Argument[0..1]", "log-injection", "manual"] + - ["org.slf4j.spi", "LoggingEventBuilder", True, "log", "(Supplier)", "", "Argument[0]", "log-injection", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/org.springframework.boot.jdbc.model.yml b/java/ql/lib/ext/org.springframework.boot.jdbc.model.yml index bd7c5d8c5c1..7d61e1431c9 100644 --- a/java/ql/lib/ext/org.springframework.boot.jdbc.model.yml +++ b/java/ql/lib/ext/org.springframework.boot.jdbc.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.springframework.boot.jdbc", "DataSourceBuilder", False, "url", "(String)", "", "Argument[0]", "jdbc-url", "manual"] + - ["org.springframework.boot.jdbc", "DataSourceBuilder", False, "url", "(String)", "", "Argument[0]", "request-forgery", "manual"] diff --git a/java/ql/lib/ext/org.springframework.core.io.model.yml b/java/ql/lib/ext/org.springframework.core.io.model.yml new file mode 100644 index 00000000000..b6dd35c8096 --- /dev/null +++ b/java/ql/lib/ext/org.springframework.core.io.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["org.springframework.core.io", "ResourceLoader", True, "getResource", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.springframework.core.io", "ResourceLoader", True, "getResource", "(String)", "", "Argument[0]", "request-forgery", "manual"] diff --git a/java/ql/lib/ext/org.springframework.http.model.yml b/java/ql/lib/ext/org.springframework.http.model.yml index 8835a471c28..cb5f18a7732 100644 --- a/java/ql/lib/ext/org.springframework.http.model.yml +++ b/java/ql/lib/ext/org.springframework.http.model.yml @@ -3,20 +3,20 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.springframework.http", "RequestEntity", False, "RequestEntity", "(HttpMethod,URI)", "", "Argument[1]", "open-url", "manual"] - - ["org.springframework.http", "RequestEntity", False, "RequestEntity", "(MultiValueMap,HttpMethod,URI)", "", "Argument[2]", "open-url", "manual"] - - ["org.springframework.http", "RequestEntity", False, "RequestEntity", "(Object,HttpMethod,URI)", "", "Argument[2]", "open-url", "manual"] - - ["org.springframework.http", "RequestEntity", False, "RequestEntity", "(Object,HttpMethod,URI,Type)", "", "Argument[2]", "open-url", "manual"] - - ["org.springframework.http", "RequestEntity", False, "RequestEntity", "(Object,MultiValueMap,HttpMethod,URI)", "", "Argument[3]", "open-url", "manual"] - - ["org.springframework.http", "RequestEntity", False, "RequestEntity", "(Object,MultiValueMap,HttpMethod,URI,Type)", "", "Argument[3]", "open-url", "manual"] - - ["org.springframework.http", "RequestEntity", False, "delete", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.http", "RequestEntity", False, "get", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.http", "RequestEntity", False, "head", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.http", "RequestEntity", False, "method", "", "", "Argument[1]", "open-url", "manual"] - - ["org.springframework.http", "RequestEntity", False, "options", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.http", "RequestEntity", False, "patch", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.http", "RequestEntity", False, "post", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.http", "RequestEntity", False, "put", "", "", "Argument[0]", "open-url", "manual"] + - ["org.springframework.http", "RequestEntity", False, "RequestEntity", "(HttpMethod,URI)", "", "Argument[1]", "request-forgery", "manual"] + - ["org.springframework.http", "RequestEntity", False, "RequestEntity", "(MultiValueMap,HttpMethod,URI)", "", "Argument[2]", "request-forgery", "manual"] + - ["org.springframework.http", "RequestEntity", False, "RequestEntity", "(Object,HttpMethod,URI)", "", "Argument[2]", "request-forgery", "manual"] + - ["org.springframework.http", "RequestEntity", False, "RequestEntity", "(Object,HttpMethod,URI,Type)", "", "Argument[2]", "request-forgery", "manual"] + - ["org.springframework.http", "RequestEntity", False, "RequestEntity", "(Object,MultiValueMap,HttpMethod,URI)", "", "Argument[3]", "request-forgery", "manual"] + - ["org.springframework.http", "RequestEntity", False, "RequestEntity", "(Object,MultiValueMap,HttpMethod,URI,Type)", "", "Argument[3]", "request-forgery", "manual"] + - ["org.springframework.http", "RequestEntity", False, "delete", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.http", "RequestEntity", False, "get", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.http", "RequestEntity", False, "head", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.http", "RequestEntity", False, "method", "", "", "Argument[1]", "request-forgery", "manual"] + - ["org.springframework.http", "RequestEntity", False, "options", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.http", "RequestEntity", False, "patch", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.http", "RequestEntity", False, "post", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.http", "RequestEntity", False, "put", "", "", "Argument[0]", "request-forgery", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/org.springframework.jdbc.core.model.yml b/java/ql/lib/ext/org.springframework.jdbc.core.model.yml index 9374293d0bb..38d91bb3090 100644 --- a/java/ql/lib/ext/org.springframework.jdbc.core.model.yml +++ b/java/ql/lib/ext/org.springframework.jdbc.core.model.yml @@ -3,13 +3,13 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.springframework.jdbc.core", "JdbcTemplate", False, "batchUpdate", "", "", "Argument[0]", "sql", "manual"] - - ["org.springframework.jdbc.core", "JdbcTemplate", False, "batchUpdate", "(String[])", "", "Argument[0]", "sql", "manual"] - - ["org.springframework.jdbc.core", "JdbcTemplate", False, "execute", "", "", "Argument[0]", "sql", "manual"] - - ["org.springframework.jdbc.core", "JdbcTemplate", False, "query", "", "", "Argument[0]", "sql", "manual"] - - ["org.springframework.jdbc.core", "JdbcTemplate", False, "queryForList", "", "", "Argument[0]", "sql", "manual"] - - ["org.springframework.jdbc.core", "JdbcTemplate", False, "queryForMap", "", "", "Argument[0]", "sql", "manual"] - - ["org.springframework.jdbc.core", "JdbcTemplate", False, "queryForObject", "", "", "Argument[0]", "sql", "manual"] - - ["org.springframework.jdbc.core", "JdbcTemplate", False, "queryForRowSet", "", "", "Argument[0]", "sql", "manual"] - - ["org.springframework.jdbc.core", "JdbcTemplate", False, "queryForStream", "", "", "Argument[0]", "sql", "manual"] - - ["org.springframework.jdbc.core", "JdbcTemplate", False, "update", "", "", "Argument[0]", "sql", "manual"] + - ["org.springframework.jdbc.core", "JdbcTemplate", False, "batchUpdate", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.springframework.jdbc.core", "JdbcTemplate", False, "batchUpdate", "(String[])", "", "Argument[0]", "sql-injection", "manual"] + - ["org.springframework.jdbc.core", "JdbcTemplate", False, "execute", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.springframework.jdbc.core", "JdbcTemplate", False, "query", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.springframework.jdbc.core", "JdbcTemplate", False, "queryForList", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.springframework.jdbc.core", "JdbcTemplate", False, "queryForMap", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.springframework.jdbc.core", "JdbcTemplate", False, "queryForObject", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.springframework.jdbc.core", "JdbcTemplate", False, "queryForRowSet", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.springframework.jdbc.core", "JdbcTemplate", False, "queryForStream", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.springframework.jdbc.core", "JdbcTemplate", False, "update", "", "", "Argument[0]", "sql-injection", "manual"] diff --git a/java/ql/lib/ext/org.springframework.jdbc.core.namedparam.model.yml b/java/ql/lib/ext/org.springframework.jdbc.core.namedparam.model.yml index 9ecd0973558..a2ba27f6062 100644 --- a/java/ql/lib/ext/org.springframework.jdbc.core.namedparam.model.yml +++ b/java/ql/lib/ext/org.springframework.jdbc.core.namedparam.model.yml @@ -3,12 +3,12 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.springframework.jdbc.core.namedparam", "NamedParameterJdbcOperations", True, "batchUpdate", "", "", "Argument[0]", "sql", "manual"] - - ["org.springframework.jdbc.core.namedparam", "NamedParameterJdbcOperations", True, "execute", "", "", "Argument[0]", "sql", "manual"] - - ["org.springframework.jdbc.core.namedparam", "NamedParameterJdbcOperations", True, "query", "", "", "Argument[0]", "sql", "manual"] - - ["org.springframework.jdbc.core.namedparam", "NamedParameterJdbcOperations", True, "queryForList", "", "", "Argument[0]", "sql", "manual"] - - ["org.springframework.jdbc.core.namedparam", "NamedParameterJdbcOperations", True, "queryForMap", "", "", "Argument[0]", "sql", "manual"] - - ["org.springframework.jdbc.core.namedparam", "NamedParameterJdbcOperations", True, "queryForObject", "", "", "Argument[0]", "sql", "manual"] - - ["org.springframework.jdbc.core.namedparam", "NamedParameterJdbcOperations", True, "queryForRowSet", "", "", "Argument[0]", "sql", "manual"] - - ["org.springframework.jdbc.core.namedparam", "NamedParameterJdbcOperations", True, "queryForStream", "", "", "Argument[0]", "sql", "manual"] - - ["org.springframework.jdbc.core.namedparam", "NamedParameterJdbcOperations", True, "update", "", "", "Argument[0]", "sql", "manual"] + - ["org.springframework.jdbc.core.namedparam", "NamedParameterJdbcOperations", True, "batchUpdate", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.springframework.jdbc.core.namedparam", "NamedParameterJdbcOperations", True, "execute", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.springframework.jdbc.core.namedparam", "NamedParameterJdbcOperations", True, "query", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.springframework.jdbc.core.namedparam", "NamedParameterJdbcOperations", True, "queryForList", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.springframework.jdbc.core.namedparam", "NamedParameterJdbcOperations", True, "queryForMap", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.springframework.jdbc.core.namedparam", "NamedParameterJdbcOperations", True, "queryForObject", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.springframework.jdbc.core.namedparam", "NamedParameterJdbcOperations", True, "queryForRowSet", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.springframework.jdbc.core.namedparam", "NamedParameterJdbcOperations", True, "queryForStream", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.springframework.jdbc.core.namedparam", "NamedParameterJdbcOperations", True, "update", "", "", "Argument[0]", "sql-injection", "manual"] diff --git a/java/ql/lib/ext/org.springframework.jdbc.datasource.model.yml b/java/ql/lib/ext/org.springframework.jdbc.datasource.model.yml index 7bb84c37e2c..3c274d264f9 100644 --- a/java/ql/lib/ext/org.springframework.jdbc.datasource.model.yml +++ b/java/ql/lib/ext/org.springframework.jdbc.datasource.model.yml @@ -3,7 +3,7 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.springframework.jdbc.datasource", "AbstractDriverBasedDataSource", False, "setUrl", "(String)", "", "Argument[0]", "jdbc-url", "manual"] - - ["org.springframework.jdbc.datasource", "DriverManagerDataSource", False, "DriverManagerDataSource", "(String)", "", "Argument[0]", "jdbc-url", "manual"] - - ["org.springframework.jdbc.datasource", "DriverManagerDataSource", False, "DriverManagerDataSource", "(String,Properties)", "", "Argument[0]", "jdbc-url", "manual"] - - ["org.springframework.jdbc.datasource", "DriverManagerDataSource", False, "DriverManagerDataSource", "(String,String,String)", "", "Argument[0]", "jdbc-url", "manual"] + - ["org.springframework.jdbc.datasource", "AbstractDriverBasedDataSource", False, "setUrl", "(String)", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.jdbc.datasource", "DriverManagerDataSource", False, "DriverManagerDataSource", "(String)", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.jdbc.datasource", "DriverManagerDataSource", False, "DriverManagerDataSource", "(String,Properties)", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.jdbc.datasource", "DriverManagerDataSource", False, "DriverManagerDataSource", "(String,String,String)", "", "Argument[0]", "request-forgery", "manual"] diff --git a/java/ql/lib/ext/org.springframework.jdbc.object.model.yml b/java/ql/lib/ext/org.springframework.jdbc.object.model.yml index 413e29e2631..192e9263f0a 100644 --- a/java/ql/lib/ext/org.springframework.jdbc.object.model.yml +++ b/java/ql/lib/ext/org.springframework.jdbc.object.model.yml @@ -3,12 +3,12 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.springframework.jdbc.object", "BatchSqlUpdate", False, "BatchSqlUpdate", "", "", "Argument[1]", "sql", "manual"] - - ["org.springframework.jdbc.object", "MappingSqlQuery", False, "MappingSqlQuery", "", "", "Argument[1]", "sql", "manual"] - - ["org.springframework.jdbc.object", "MappingSqlQueryWithParameters", False, "MappingSqlQueryWithParameters", "", "", "Argument[1]", "sql", "manual"] - - ["org.springframework.jdbc.object", "RdbmsOperation", True, "setSql", "", "", "Argument[0]", "sql", "manual"] - - ["org.springframework.jdbc.object", "SqlCall", False, "SqlCall", "", "", "Argument[1]", "sql", "manual"] - - ["org.springframework.jdbc.object", "SqlFunction", False, "SqlFunction", "", "", "Argument[1]", "sql", "manual"] - - ["org.springframework.jdbc.object", "SqlQuery", False, "SqlQuery", "", "", "Argument[1]", "sql", "manual"] - - ["org.springframework.jdbc.object", "SqlUpdate", False, "SqlUpdate", "", "", "Argument[1]", "sql", "manual"] - - ["org.springframework.jdbc.object", "UpdatableSqlQuery", False, "UpdatableSqlQuery", "", "", "Argument[1]", "sql", "manual"] + - ["org.springframework.jdbc.object", "BatchSqlUpdate", False, "BatchSqlUpdate", "", "", "Argument[1]", "sql-injection", "manual"] + - ["org.springframework.jdbc.object", "MappingSqlQuery", False, "MappingSqlQuery", "", "", "Argument[1]", "sql-injection", "manual"] + - ["org.springframework.jdbc.object", "MappingSqlQueryWithParameters", False, "MappingSqlQueryWithParameters", "", "", "Argument[1]", "sql-injection", "manual"] + - ["org.springframework.jdbc.object", "RdbmsOperation", True, "setSql", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.springframework.jdbc.object", "SqlCall", False, "SqlCall", "", "", "Argument[1]", "sql-injection", "manual"] + - ["org.springframework.jdbc.object", "SqlFunction", False, "SqlFunction", "", "", "Argument[1]", "sql-injection", "manual"] + - ["org.springframework.jdbc.object", "SqlQuery", False, "SqlQuery", "", "", "Argument[1]", "sql-injection", "manual"] + - ["org.springframework.jdbc.object", "SqlUpdate", False, "SqlUpdate", "", "", "Argument[1]", "sql-injection", "manual"] + - ["org.springframework.jdbc.object", "UpdatableSqlQuery", False, "UpdatableSqlQuery", "", "", "Argument[1]", "sql-injection", "manual"] diff --git a/java/ql/lib/ext/org.springframework.ldap.core.model.yml b/java/ql/lib/ext/org.springframework.ldap.core.model.yml index 962dec40c59..ce4ef72e283 100644 --- a/java/ql/lib/ext/org.springframework.ldap.core.model.yml +++ b/java/ql/lib/ext/org.springframework.ldap.core.model.yml @@ -22,17 +22,17 @@ extensions: - ["org.springframework.ldap.core", "LdapOperations", True, "search", "(String,String,int,String[],ContextMapper)", "", "Argument[0]", "jndi-injection", "manual"] - ["org.springframework.ldap.core", "LdapOperations", True, "searchForObject", "(Name,String,ContextMapper)", "", "Argument[0]", "jndi-injection", "manual"] - ["org.springframework.ldap.core", "LdapOperations", True, "searchForObject", "(String,String,ContextMapper)", "", "Argument[0]", "jndi-injection", "manual"] - - ["org.springframework.ldap.core", "LdapTemplate", False, "authenticate", "(LdapQuery,String)", "", "Argument[0]", "ldap", "manual"] - - ["org.springframework.ldap.core", "LdapTemplate", False, "authenticate", "(Name,String,String)", "", "Argument[0..1]", "ldap", "manual"] - - ["org.springframework.ldap.core", "LdapTemplate", False, "authenticate", "(Name,String,String,AuthenticatedLdapEntryContextCallback)", "", "Argument[0..1]", "ldap", "manual"] - - ["org.springframework.ldap.core", "LdapTemplate", False, "authenticate", "(Name,String,String,AuthenticatedLdapEntryContextCallback,AuthenticationErrorCallback)", "", "Argument[0..1]", "ldap", "manual"] - - ["org.springframework.ldap.core", "LdapTemplate", False, "authenticate", "(Name,String,String,AuthenticationErrorCallback)", "", "Argument[0..1]", "ldap", "manual"] - - ["org.springframework.ldap.core", "LdapTemplate", False, "authenticate", "(String,String,String)", "", "Argument[0..1]", "ldap", "manual"] - - ["org.springframework.ldap.core", "LdapTemplate", False, "authenticate", "(String,String,String,AuthenticatedLdapEntryContextCallback)", "", "Argument[0..1]", "ldap", "manual"] - - ["org.springframework.ldap.core", "LdapTemplate", False, "authenticate", "(String,String,String,AuthenticatedLdapEntryContextCallback,AuthenticationErrorCallback)", "", "Argument[0..1]", "ldap", "manual"] - - ["org.springframework.ldap.core", "LdapTemplate", False, "authenticate", "(String,String,String,AuthenticationErrorCallback)", "", "Argument[0..1]", "ldap", "manual"] - - ["org.springframework.ldap.core", "LdapTemplate", False, "find", "", "", "Argument[0..1]", "ldap", "manual"] - - ["org.springframework.ldap.core", "LdapTemplate", False, "findOne", "", "", "Argument[0..1]", "ldap", "manual"] - - ["org.springframework.ldap.core", "LdapTemplate", False, "search", "", "", "Argument[0..1]", "ldap", "manual"] - - ["org.springframework.ldap.core", "LdapTemplate", False, "searchForContext", "", "", "Argument[0..1]", "ldap", "manual"] - - ["org.springframework.ldap.core", "LdapTemplate", False, "searchForObject", "", "", "Argument[0..1]", "ldap", "manual"] + - ["org.springframework.ldap.core", "LdapTemplate", False, "authenticate", "(LdapQuery,String)", "", "Argument[0]", "ldap-injection", "manual"] + - ["org.springframework.ldap.core", "LdapTemplate", False, "authenticate", "(Name,String,String)", "", "Argument[0..1]", "ldap-injection", "manual"] + - ["org.springframework.ldap.core", "LdapTemplate", False, "authenticate", "(Name,String,String,AuthenticatedLdapEntryContextCallback)", "", "Argument[0..1]", "ldap-injection", "manual"] + - ["org.springframework.ldap.core", "LdapTemplate", False, "authenticate", "(Name,String,String,AuthenticatedLdapEntryContextCallback,AuthenticationErrorCallback)", "", "Argument[0..1]", "ldap-injection", "manual"] + - ["org.springframework.ldap.core", "LdapTemplate", False, "authenticate", "(Name,String,String,AuthenticationErrorCallback)", "", "Argument[0..1]", "ldap-injection", "manual"] + - ["org.springframework.ldap.core", "LdapTemplate", False, "authenticate", "(String,String,String)", "", "Argument[0..1]", "ldap-injection", "manual"] + - ["org.springframework.ldap.core", "LdapTemplate", False, "authenticate", "(String,String,String,AuthenticatedLdapEntryContextCallback)", "", "Argument[0..1]", "ldap-injection", "manual"] + - ["org.springframework.ldap.core", "LdapTemplate", False, "authenticate", "(String,String,String,AuthenticatedLdapEntryContextCallback,AuthenticationErrorCallback)", "", "Argument[0..1]", "ldap-injection", "manual"] + - ["org.springframework.ldap.core", "LdapTemplate", False, "authenticate", "(String,String,String,AuthenticationErrorCallback)", "", "Argument[0..1]", "ldap-injection", "manual"] + - ["org.springframework.ldap.core", "LdapTemplate", False, "find", "", "", "Argument[0..1]", "ldap-injection", "manual"] + - ["org.springframework.ldap.core", "LdapTemplate", False, "findOne", "", "", "Argument[0..1]", "ldap-injection", "manual"] + - ["org.springframework.ldap.core", "LdapTemplate", False, "search", "", "", "Argument[0..1]", "ldap-injection", "manual"] + - ["org.springframework.ldap.core", "LdapTemplate", False, "searchForContext", "", "", "Argument[0..1]", "ldap-injection", "manual"] + - ["org.springframework.ldap.core", "LdapTemplate", False, "searchForObject", "", "", "Argument[0..1]", "ldap-injection", "manual"] diff --git a/java/ql/lib/ext/org.springframework.util.model.yml b/java/ql/lib/ext/org.springframework.util.model.yml index a0203a0ce9e..a868638c4df 100644 --- a/java/ql/lib/ext/org.springframework.util.model.yml +++ b/java/ql/lib/ext/org.springframework.util.model.yml @@ -3,9 +3,9 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.springframework.util", "FileCopyUtils", False, "copy", "(byte[],File)", "", "Argument[1]", "create-file", "manual"] - - ["org.springframework.util", "FileCopyUtils", False, "copy", "(File,File)", "", "Argument[0]", "read-file", "manual"] - - ["org.springframework.util", "FileCopyUtils", False, "copy", "(File,File)", "", "Argument[1]", "create-file", "manual"] + - ["org.springframework.util", "FileCopyUtils", False, "copy", "(byte[],File)", "", "Argument[1]", "path-injection", "manual"] + - ["org.springframework.util", "FileCopyUtils", False, "copy", "(File,File)", "", "Argument[0]", "path-injection", "manual"] + - ["org.springframework.util", "FileCopyUtils", False, "copy", "(File,File)", "", "Argument[1]", "path-injection", "manual"] - addsTo: pack: codeql/java-all diff --git a/java/ql/lib/ext/org.springframework.web.client.model.yml b/java/ql/lib/ext/org.springframework.web.client.model.yml index 69f4cb64fc6..79a7f577c3d 100644 --- a/java/ql/lib/ext/org.springframework.web.client.model.yml +++ b/java/ql/lib/ext/org.springframework.web.client.model.yml @@ -10,16 +10,16 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.springframework.web.client", "RestTemplate", False, "delete", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.web.client", "RestTemplate", False, "doExecute", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.web.client", "RestTemplate", False, "exchange", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.web.client", "RestTemplate", False, "execute", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.web.client", "RestTemplate", False, "getForEntity", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.web.client", "RestTemplate", False, "getForObject", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.web.client", "RestTemplate", False, "headForHeaders", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.web.client", "RestTemplate", False, "optionsForAllow", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.web.client", "RestTemplate", False, "patchForObject", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.web.client", "RestTemplate", False, "postForEntity", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.web.client", "RestTemplate", False, "postForLocation", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.web.client", "RestTemplate", False, "postForObject", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.web.client", "RestTemplate", False, "put", "", "", "Argument[0]", "open-url", "manual"] + - ["org.springframework.web.client", "RestTemplate", False, "delete", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.web.client", "RestTemplate", False, "doExecute", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.web.client", "RestTemplate", False, "exchange", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.web.client", "RestTemplate", False, "execute", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.web.client", "RestTemplate", False, "getForEntity", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.web.client", "RestTemplate", False, "getForObject", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.web.client", "RestTemplate", False, "headForHeaders", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.web.client", "RestTemplate", False, "optionsForAllow", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.web.client", "RestTemplate", False, "patchForObject", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.web.client", "RestTemplate", False, "postForEntity", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.web.client", "RestTemplate", False, "postForLocation", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.web.client", "RestTemplate", False, "postForObject", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.web.client", "RestTemplate", False, "put", "", "", "Argument[0]", "request-forgery", "manual"] diff --git a/java/ql/lib/ext/org.springframework.web.reactive.function.client.model.yml b/java/ql/lib/ext/org.springframework.web.reactive.function.client.model.yml index cb2d1db4444..a76582b5e80 100644 --- a/java/ql/lib/ext/org.springframework.web.reactive.function.client.model.yml +++ b/java/ql/lib/ext/org.springframework.web.reactive.function.client.model.yml @@ -3,5 +3,5 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.springframework.web.reactive.function.client", "WebClient", False, "create", "", "", "Argument[0]", "open-url", "manual"] - - ["org.springframework.web.reactive.function.client", "WebClient$Builder", False, "baseUrl", "", "", "Argument[0]", "open-url", "manual"] + - ["org.springframework.web.reactive.function.client", "WebClient", False, "create", "", "", "Argument[0]", "request-forgery", "manual"] + - ["org.springframework.web.reactive.function.client", "WebClient$Builder", False, "baseUrl", "", "", "Argument[0]", "request-forgery", "manual"] diff --git a/java/ql/lib/ext/org.thymeleaf.model.yml b/java/ql/lib/ext/org.thymeleaf.model.yml index 66361b05836..2556cad8314 100644 --- a/java/ql/lib/ext/org.thymeleaf.model.yml +++ b/java/ql/lib/ext/org.thymeleaf.model.yml @@ -3,8 +3,8 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.thymeleaf", "ITemplateEngine", True, "process", "", "", "Argument[0]", "ssti", "manual"] - - ["org.thymeleaf", "ITemplateEngine", True, "processThrottled", "", "", "Argument[0]", "ssti", "manual"] + - ["org.thymeleaf", "ITemplateEngine", True, "process", "", "", "Argument[0]", "template-injection", "manual"] + - ["org.thymeleaf", "ITemplateEngine", True, "processThrottled", "", "", "Argument[0]", "template-injection", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/org.yaml.snakeyaml.model.yml b/java/ql/lib/ext/org.yaml.snakeyaml.model.yml new file mode 100644 index 00000000000..e52ef0679bc --- /dev/null +++ b/java/ql/lib/ext/org.yaml.snakeyaml.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["org.yaml.snakeyaml", "Yaml", True, "load", "(String)", "", "Argument[0]", "ReturnValue", "taint", "ai-manual"] diff --git a/java/ql/lib/ext/play.libs.ws.model.yml b/java/ql/lib/ext/play.libs.ws.model.yml new file mode 100644 index 00000000000..3547414a7ad --- /dev/null +++ b/java/ql/lib/ext/play.libs.ws.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["play.libs.ws", "WSClient", True, "url", "", "", "Argument[0]", "request-forgery", "manual"] + - ["play.libs.ws", "StandaloneWSClient", True, "url", "", "", "Argument[0]", "request-forgery", "manual"] diff --git a/java/ql/lib/ext/play.mvc.model.yml b/java/ql/lib/ext/play.mvc.model.yml index a1f8dc60fe0..ba9a11c3f78 100644 --- a/java/ql/lib/ext/play.mvc.model.yml +++ b/java/ql/lib/ext/play.mvc.model.yml @@ -3,7 +3,44 @@ extensions: pack: codeql/java-all extensible: sourceModel data: - - ["play.mvc", "Http$RequestHeader", False, "getHeader", "", "", "ReturnValue", "remote", "manual"] - - ["play.mvc", "Http$RequestHeader", False, "getQueryString", "", "", "ReturnValue", "remote", "manual"] - - ["play.mvc", "Http$RequestHeader", False, "header", "", "", "ReturnValue", "remote", "manual"] - - ["play.mvc", "Http$RequestHeader", False, "queryString", "", "", "ReturnValue", "remote", "manual"] + - ["play.mvc", "Http$Request", True, "body", "", "", "ReturnValue", "remote", "manual"] + - ["play.mvc", "Http$RequestHeader", True, "cookie", "", "", "ReturnValue", "remote", "manual"] + - ["play.mvc", "Http$RequestHeader", True, "cookies", "", "", "ReturnValue", "remote", "manual"] + - ["play.mvc", "Http$RequestHeader", True, "getHeader", "", "", "ReturnValue", "remote", "manual"] # v2.4.x + - ["play.mvc", "Http$RequestHeader", True, "getHeaders", "", "", "ReturnValue", "remote", "manual"] # v2.7.x + - ["play.mvc", "Http$RequestHeader", True, "getQueryString", "", "", "ReturnValue", "remote", "manual"] + - ["play.mvc", "Http$RequestHeader", True, "header", "", "", "ReturnValue", "remote", "manual"] # v2.7.x + - ["play.mvc", "Http$RequestHeader", True, "headers", "", "", "ReturnValue", "remote", "manual"] # v2.4.x + - ["play.mvc", "Http$RequestHeader", True, "host", "", "", "ReturnValue", "remote", "manual"] + - ["play.mvc", "Http$RequestHeader", True, "path", "", "", "ReturnValue", "remote", "manual"] + - ["play.mvc", "Http$RequestHeader", True, "queryString", "", "", "ReturnValue", "remote", "manual"] + - ["play.mvc", "Http$RequestHeader", True, "remoteAddress", "", "", "ReturnValue", "remote", "manual"] + - ["play.mvc", "Http$RequestHeader", True, "uri", "", "", "ReturnValue", "remote", "manual"] + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["play.mvc", "Http$RequestBody", True, "as", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["play.mvc", "Http$RequestBody", True, "asBytes", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] # v2.7.x + - ["play.mvc", "Http$RequestBody", True, "asFormUrlEncoded", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["play.mvc", "Http$RequestBody", True, "asJson", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["play.mvc", "Http$RequestBody", True, "asMultipartFormData", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["play.mvc", "Http$RequestBody", True, "asRaw", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["play.mvc", "Http$RequestBody", True, "asText", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["play.mvc", "Http$RequestBody", True, "asXml", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["play.mvc", "Http$RequestBody", True, "parseJson", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] # v2.7.x + - ["play.mvc", "Http$MultipartFormData", True, "asFormUrlEncoded", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["play.mvc", "Http$MultipartFormData", True, "getFile", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["play.mvc", "Http$MultipartFormData", True, "getFiles", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["play.mvc", "Http$MultipartFormData$FilePart", True, "getContentType", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["play.mvc", "Http$MultipartFormData$FilePart", True, "getDispositionType", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] # v2.7.x + - ["play.mvc", "Http$MultipartFormData$FilePart", True, "getFile", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] # v2.4.x + - ["play.mvc", "Http$MultipartFormData$FilePart", True, "getFilename", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["play.mvc", "Http$MultipartFormData$FilePart", True, "getKey", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["play.mvc", "Http$MultipartFormData$FilePart", True, "getRef", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] # v2.7.x + - ["play.mvc", "Http$RawBuffer", True, "asBytes", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["play.mvc", "Http$RawBuffer", True, "asFile", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["play.mvc", "Http$Cookie", True, "name", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["play.mvc", "Http$Cookie", True, "value", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["play.mvc", "Http$Cookies", True, "get", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["play.mvc", "Http$Cookies", True, "getCookie", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] # v2.7.x diff --git a/java/ql/lib/ext/retrofit2.model.yml b/java/ql/lib/ext/retrofit2.model.yml index 51c4c0eed83..4ea997169a9 100644 --- a/java/ql/lib/ext/retrofit2.model.yml +++ b/java/ql/lib/ext/retrofit2.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["retrofit2", "Retrofit$Builder", True, "baseUrl", "", "", "Argument[0]", "open-url", "manual"] + - ["retrofit2", "Retrofit$Builder", True, "baseUrl", "", "", "Argument[0]", "request-forgery", "manual"] diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index c48db63b34d..699c78730fd 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,11 +1,12 @@ name: codeql/java-all -version: 0.6.2-dev +version: 0.6.4-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java library: true upgrades: upgrades dependencies: + codeql/mad: ${workspace} codeql/regex: ${workspace} codeql/tutorial: ${workspace} codeql/typetracking: ${workspace} diff --git a/java/ql/lib/semmle/code/java/Expr.qll b/java/ql/lib/semmle/code/java/Expr.qll index 0e0d0acea3f..92c81650bc3 100644 --- a/java/ql/lib/semmle/code/java/Expr.qll +++ b/java/ql/lib/semmle/code/java/Expr.qll @@ -1809,9 +1809,6 @@ class LValue extends VarAccess { * are source expressions of the assignment. */ Expr getRhs() { exists(Assignment e | e.getDest() = this and e.getSource() = result) } - - /** DEPRECATED: Alias for getRhs */ - deprecated Expr getRHS() { result = this.getRhs() } } /** diff --git a/java/ql/lib/semmle/code/java/Serializability.qll b/java/ql/lib/semmle/code/java/Serializability.qll index fc8a19040f0..72490118020 100644 --- a/java/ql/lib/semmle/code/java/Serializability.qll +++ b/java/ql/lib/semmle/code/java/Serializability.qll @@ -4,6 +4,7 @@ import java private import frameworks.jackson.JacksonSerializability +private import frameworks.google.GsonSerializability private import frameworks.google.GoogleHttpClientApi /** diff --git a/java/ql/lib/semmle/code/java/Type.qll b/java/ql/lib/semmle/code/java/Type.qll index f60fdcc8e5d..fcf31e3be0d 100644 --- a/java/ql/lib/semmle/code/java/Type.qll +++ b/java/ql/lib/semmle/code/java/Type.qll @@ -987,6 +987,17 @@ private string getAPublicObjectMethodSignature() { ) } +pragma[nomagic] +private predicate interfaceInheritsOverridingNonAbstractMethod(Interface interface, Method m) { + interface.inherits(m) and + not m.isAbstract() and + m.overrides(_) +} + +bindingset[m] +pragma[inline_late] +private Method getAnOverridden(Method m) { m.overrides(result) } + private Method getAnAbstractMethod(Interface interface) { interface.inherits(result) and result.isAbstract() and @@ -995,9 +1006,8 @@ private Method getAnAbstractMethod(Interface interface) { // Make sure that there is no other non-abstract method // (e.g. `default`) which overrides the abstract one not exists(Method m | - interface.inherits(m) and - not m.isAbstract() and - m.overrides(result) + interfaceInheritsOverridingNonAbstractMethod(interface, m) and + result = getAnOverridden(m) ) } diff --git a/java/ql/lib/semmle/code/java/controlflow/internal/Preconditions.qll b/java/ql/lib/semmle/code/java/controlflow/internal/Preconditions.qll index 6b7736cb70d..3563176f4b0 100644 --- a/java/ql/lib/semmle/code/java/controlflow/internal/Preconditions.qll +++ b/java/ql/lib/semmle/code/java/controlflow/internal/Preconditions.qll @@ -6,15 +6,6 @@ import java -/** - * DEPRECATED: Use `conditionCheckMethodArgument` instead. - * Holds if `m` is a non-overridable method that checks that its first argument - * is equal to `checkTrue` and throws otherwise. - */ -deprecated predicate conditionCheckMethod(Method m, boolean checkTrue) { - conditionCheckMethodArgument(m, 0, checkTrue) -} - /** * Holds if `m` is a non-overridable method that checks that its zero-indexed `argument` * is equal to `checkTrue` and throws otherwise. diff --git a/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll b/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll index 4cb21496f5f..c04126d5f7f 100644 --- a/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll @@ -87,6 +87,7 @@ private import internal.FlowSummaryImplSpecific as FlowSummaryImplSpecific private import internal.AccessPathSyntax private import ExternalFlowExtensions as Extensions private import FlowSummary +private import codeql.mad.ModelValidation as SharedModelVal /** * A class for activating additional model rows. @@ -265,38 +266,18 @@ module ModelValidation { ) } - private string getInvalidModelKind() { - exists(string kind | summaryModel(_, _, _, _, _, _, _, _, kind, _) | - not kind = ["taint", "value"] and - result = "Invalid kind \"" + kind + "\" in summary model." - ) - or - exists(string kind | sinkModel(_, _, _, _, _, _, _, kind, _) | - not kind = - [ - "open-url", "jndi-injection", "ldap", "sql", "jdbc-url", "logging", "mvel", "xpath", - "groovy", "xss", "ognl-injection", "intent-start", "pending-intent-sent", "url-redirect", - "create-file", "read-file", "write-file", "set-hostname-verifier", "header-splitting", - "information-leak", "xslt", "jexl", "bean-validation", "ssti", "fragment-injection", - "command-injection" - ] and - not kind.matches("regex-use%") and - not kind.matches("qltest%") and - result = "Invalid kind \"" + kind + "\" in sink model." - ) - or - exists(string kind | sourceModel(_, _, _, _, _, _, _, kind, _) | - not kind = ["remote", "contentprovider", "android-widget", "android-external-storage-dir"] and - not kind.matches("qltest%") and - result = "Invalid kind \"" + kind + "\" in source model." - ) - or - exists(string kind | neutralModel(_, _, _, _, kind, _) | - not kind = ["summary", "source", "sink"] and - result = "Invalid kind \"" + kind + "\" in neutral model." - ) + private module KindValConfig implements SharedModelVal::KindValidationConfigSig { + predicate summaryKind(string kind) { summaryModel(_, _, _, _, _, _, _, _, kind, _) } + + predicate sinkKind(string kind) { sinkModel(_, _, _, _, _, _, _, kind, _) } + + predicate sourceKind(string kind) { sourceModel(_, _, _, _, _, _, _, kind, _) } + + predicate neutralKind(string kind) { neutralModel(_, _, _, _, kind, _) } } + private module KindVal = SharedModelVal::KindValidation; + private string getInvalidModelSignature() { exists( string pred, string package, string type, string name, string signature, string ext, @@ -338,7 +319,7 @@ module ModelValidation { msg = [ getInvalidModelSignature(), getInvalidModelInput(), getInvalidModelOutput(), - getInvalidModelKind() + KindVal::getInvalidModelKind() ] } } diff --git a/java/ql/lib/semmle/code/java/dataflow/FlowSources.qll b/java/ql/lib/semmle/code/java/dataflow/FlowSources.qll index e10cd0db708..f049a0cb37b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/FlowSources.qll +++ b/java/ql/lib/semmle/code/java/dataflow/FlowSources.qll @@ -37,10 +37,11 @@ abstract class RemoteFlowSource extends DataFlow::Node { } /** - * A module for importing frameworks that define remote flow sources. + * A module for importing frameworks that define flow sources. */ -private module RemoteFlowSources { - private import semmle.code.java.frameworks.android.Widget +private module FlowSources { + private import semmle.code.java.frameworks.hudson.Hudson + private import semmle.code.java.frameworks.stapler.Stapler } private class ExternalRemoteFlowSource extends RemoteFlowSource { diff --git a/java/ql/lib/semmle/code/java/dataflow/FlowSteps.qll b/java/ql/lib/semmle/code/java/dataflow/FlowSteps.qll index 9a187c027ff..1619965f0f0 100644 --- a/java/ql/lib/semmle/code/java/dataflow/FlowSteps.qll +++ b/java/ql/lib/semmle/code/java/dataflow/FlowSteps.qll @@ -23,6 +23,7 @@ private module Frameworks { private import semmle.code.java.frameworks.Properties private import semmle.code.java.frameworks.Protobuf private import semmle.code.java.frameworks.ratpack.RatpackExec + private import semmle.code.java.frameworks.stapler.Stapler private import semmle.code.java.JDK } diff --git a/java/ql/lib/semmle/code/java/dataflow/FlowSummary.qll b/java/ql/lib/semmle/code/java/dataflow/FlowSummary.qll index 6d6af4f82b4..e45ba0be27e 100644 --- a/java/ql/lib/semmle/code/java/dataflow/FlowSummary.qll +++ b/java/ql/lib/semmle/code/java/dataflow/FlowSummary.qll @@ -149,8 +149,9 @@ class SummarizedCallableBase extends TSummarizedCallableBase { or result = this.asSyntheticCallable().getParameterType(pos) or - exists(SyntheticCallable sc | sc = this.asSyntheticCallable() | - Impl::Private::summaryParameterNodeRange(this, pos) and + exists(SyntheticCallable sc, Impl::Private::SummaryNode p | sc = this.asSyntheticCallable() | + Impl::Private::summaryParameterNode(p, pos) and + this = p.getSummarizedCallable() and not exists(sc.getParameterType(pos)) and result instanceof TypeObject ) diff --git a/java/ql/lib/semmle/code/java/dataflow/SSA.qll b/java/ql/lib/semmle/code/java/dataflow/SSA.qll index d4ff7ed0ac7..dd478b2a869 100644 --- a/java/ql/lib/semmle/code/java/dataflow/SSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/SSA.qll @@ -931,9 +931,6 @@ class SsaVariable extends TSsaVariable { this = TSsaUntracked(_, result) } - /** DEPRECATED: Alias for getCfgNode */ - deprecated ControlFlowNode getCFGNode() { result = this.getCfgNode() } - /** Gets a textual representation of this SSA variable. */ string toString() { none() } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll b/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll index 6f53dbd02c1..6e41c803553 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/BaseSSA.qll @@ -483,9 +483,6 @@ class BaseSsaVariable extends TBaseSsaVariable { this = TSsaEntryDef(_, result) } - /** DEPRECATED: Alias for getCfgNode */ - deprecated ControlFlowNode getCFGNode() { result = this.getCfgNode() } - string toString() { none() } Location getLocation() { result = this.getCfgNode().getLocation() } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll index ddf98ac0f2f..284fff191ae 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll @@ -1135,8 +1135,8 @@ module Impl { DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow ); - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap); + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t); bindingset[typ, contentType] predicate typecheckStore(Typ typ, DataFlowType contentType); @@ -1199,17 +1199,21 @@ module Impl { NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, ApOption argAp, Typ t, Ap ap, ApApprox apa ) { - fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t, ap, apa) and - PrevStage::revFlow(node, state, apa) and - filter(node, state, t, ap) + fwdFlow1(node, state, cc, summaryCtx, argT, argAp, _, t, ap, apa) } - pragma[inline] - additional predicate fwdFlow( + private predicate fwdFlow1( NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap + ApOption argAp, Typ t0, Typ t, Ap ap, ApApprox apa ) { - fwdFlow(node, state, cc, summaryCtx, argT, argAp, t, ap, _) + fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t0, ap, apa) and + PrevStage::revFlow(node, state, apa) and + filter(node, state, t0, ap, t) + } + + pragma[nomagic] + private predicate typeStrengthen(Typ t0, Ap ap, Typ t) { + fwdFlow1(_, _, _, _, _, _, t0, t, ap, _) and t0 != t } pragma[assume_small_delta] @@ -1339,6 +1343,11 @@ module Impl { private predicate fwdFlowConsCand(Typ t2, Ap cons, Content c, Typ t1, Ap tail) { fwdFlowStore(_, t1, tail, c, t2, _, _, _, _, _, _) and cons = apCons(c, t1, tail) + or + exists(Typ t0 | + typeStrengthen(t0, cons, t2) and + fwdFlowConsCand(t0, cons, c, t1, tail) + ) } pragma[nomagic] @@ -1359,7 +1368,7 @@ module Impl { ParamNodeOption summaryCtx, TypOption argT, ApOption argAp ) { exists(ApHeadContent apc | - fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap) and + fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap, _) and apc = getHeadContent(ap) and readStepCand0(node1, apc, c, node2) ) @@ -1520,14 +1529,14 @@ module Impl { NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { revFlow0(node, state, returnCtx, returnAp, ap) and - fwdFlow(node, state, _, _, _, _, _, ap) + fwdFlow(node, state, _, _, _, _, _, ap, _) } pragma[nomagic] private predicate revFlow0( NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { - fwdFlow(node, state, _, _, _, _, _, ap) and + fwdFlow(node, state, _, _, _, _, _, ap, _) and sinkNode(node, state) and ( if hasSinkCallCtx() @@ -1780,13 +1789,13 @@ module Impl { boolean fwd, int nodes, int fields, int conscand, int states, int tuples ) { fwd = true and - nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _)) and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _, _)) and fields = count(Content f0 | fwdConsCand(f0, _, _)) and conscand = count(Content f0, Typ t, Ap ap | fwdConsCand(f0, t, ap)) and - states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _)) and + states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _, _)) and tuples = count(NodeEx n, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap)) + ApOption argAp, Typ t, Ap ap | fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap, _)) or fwd = false and nodes = count(NodeEx node | revFlow(node, _, _, _, _)) and @@ -1963,10 +1972,10 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { PrevStage::revFlowState(state) and - exists(t) and + t0 = t and exists(ap) and not stateBarrier(node, state) and ( @@ -2012,7 +2021,8 @@ module Impl { FlowCheckNode() { castNode(this.asNode()) or clearsContentCached(this.asNode(), _) or - expectsContentCached(this.asNode(), _) + expectsContentCached(this.asNode(), _) or + neverSkipInPathGraph(this.asNode()) } } @@ -2197,8 +2207,8 @@ module Impl { import BooleanCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and exists(lcc) @@ -2218,10 +2228,16 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + // We can get away with not using type strengthening here, since we aren't + // going to use the tracked types in the construction of Stage 4 access + // paths. For Stage 4 and onwards, the tracked types must be consistent as + // the cons candidates including types are used to construct subsequent + // access path approximations. + t0 = t and + (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t0) else any()) and ( notExpectsContent(node) or @@ -2241,6 +2257,16 @@ module Impl { import MkStage::Stage } + bindingset[node, t0] + private predicate strengthenType(NodeEx node, DataFlowType t0, DataFlowType t) { + if castingNodeEx(node) + then + exists(DataFlowType nt | nt = node.getDataFlowType() | + if typeStrongerThan(nt, t0) then t = nt else (compatibleTypes(nt, t0) and t = t0) + ) + else t = t0 + } + private module Stage4Param implements MkStage::StageParam { private module PrevStage = Stage3; @@ -2274,8 +2300,8 @@ module Impl { pragma[nomagic] predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2333,11 +2359,11 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { exists(state) and not clear(node, ap) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + strengthenType(node, t0, t) and ( notExpectsContent(node) or @@ -2365,7 +2391,7 @@ module Impl { exists(AccessPathFront apf | Stage4::revFlow(node, state, TReturnCtxMaybeFlowThrough(_), _, apf) and Stage4::fwdFlow(node, state, any(Stage4::CcCall ccc), _, _, TAccessPathFrontSome(argApf), _, - apf) + apf, _) ) } @@ -2579,8 +2605,8 @@ module Impl { import LocalCallContext predicate localStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCc lcc + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, + LocalCc lcc ) { localFlowBigStep(node1, state1, node2, state2, preservesValue, t, lcc) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and @@ -2609,9 +2635,9 @@ module Impl { ) } - bindingset[node, state, t, ap] - predicate filter(NodeEx node, FlowState state, Typ t, Ap ap) { - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) and + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { + strengthenType(node, t0, t) and exists(state) and exists(ap) } @@ -2632,7 +2658,7 @@ module Impl { Stage5::parameterMayFlowThrough(p, _) and Stage5::revFlow(n, state, TReturnCtxMaybeFlowThrough(_), _, apa0) and Stage5::fwdFlow(n, state, any(CallContextCall ccc), TParamNodeSome(p.asNode()), _, - TAccessPathApproxSome(apa), _, apa0) + TAccessPathApproxSome(apa), _, apa0, _) ) } @@ -2649,7 +2675,7 @@ module Impl { TSummaryCtxSome(ParamNodeEx p, FlowState state, DataFlowType t, AccessPath ap) { exists(AccessPathApprox apa | ap.getApprox() = apa | Stage5::parameterMayFlowThrough(p, apa) and - Stage5::fwdFlow(p, state, _, _, _, _, t, apa) and + Stage5::fwdFlow(p, state, _, _, Option::some(t), _, _, apa, _) and Stage5::revFlow(p, state, _) ) } @@ -2820,9 +2846,7 @@ module Impl { ap = TAccessPathNil() or // ... or a step from an existing PathNode to another node. - pathStep(_, node, state, cc, sc, t, ap) and - Stage5::revFlow(node, state, ap.getApprox()) and - (if castingNodeEx(node) then compatibleTypes(node.getDataFlowType(), t) else any()) + pathStep(_, node, state, cc, sc, t, ap) } or TPathNodeSink(NodeEx node, FlowState state) { exists(PathNodeMid sink | @@ -3340,13 +3364,24 @@ module Impl { ap = mid.getAp() } + private predicate pathStep( + PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, + AccessPath ap + ) { + exists(DataFlowType t0 | + pathStep0(mid, node, state, cc, sc, t0, ap) and + Stage5::revFlow(node, state, ap.getApprox()) and + strengthenType(node, t0, t) + ) + } + /** * Holds if data may flow from `mid` to `node`. The last step in or out of * a callable is recorded by `cc`. */ pragma[assume_small_delta] pragma[nomagic] - private predicate pathStep( + private predicate pathStep0( PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, AccessPath ap ) { @@ -3964,7 +3999,7 @@ module Impl { ap = TPartialNil() and exists(explorationLimit()) or - partialPathNodeMk0(node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and distSrc(node.getEnclosingCallable()) <= explorationLimit() } or TPartialPathNodeRev( @@ -3990,11 +4025,20 @@ module Impl { } pragma[nomagic] - private predicate partialPathNodeMk0( - NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, - TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap + private predicate partialPathStep( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { - partialPathStep(_, node, state, cc, sc1, sc2, sc3, sc4, t, ap) and + partialPathStep1(mid, node, state, cc, sc1, sc2, sc3, sc4, _, t, ap) + } + + pragma[nomagic] + private predicate partialPathStep1( + PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, + TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t0, DataFlowType t, + PartialAccessPath ap + ) { + partialPathStep0(mid, node, state, cc, sc1, sc2, sc3, sc4, t0, ap) and not fullBarrier(node) and not stateBarrier(node, state) and not clearsContentEx(node, ap.getHead()) and @@ -4002,9 +4046,14 @@ module Impl { notExpectsContent(node) or expectsContentEx(node, ap.getHead()) ) and - if node.asNode() instanceof CastingNode - then compatibleTypes(node.getDataFlowType(), t) - else any() + strengthenType(node, t0, t) + } + + pragma[nomagic] + private predicate partialPathTypeStrengthen( + DataFlowType t0, PartialAccessPath ap, DataFlowType t + ) { + partialPathStep1(_, _, _, _, _, _, _, _, t0, t, ap) and t0 != t } /** @@ -4183,7 +4232,8 @@ module Impl { } } - private predicate partialPathStep( + pragma[nomagic] + private predicate partialPathStep0( PartialPathNodeFwd mid, NodeEx node, FlowState state, CallContext cc, TSummaryCtx1 sc1, TSummaryCtx2 sc2, TSummaryCtx3 sc3, TSummaryCtx4 sc4, DataFlowType t, PartialAccessPath ap ) { @@ -4309,6 +4359,11 @@ module Impl { DataFlowType t1, PartialAccessPath ap1, Content c, DataFlowType t2, PartialAccessPath ap2 ) { partialPathStoreStep(_, t1, ap1, c, _, t2, ap2) + or + exists(DataFlowType t0 | + partialPathTypeStrengthen(t0, ap2, t2) and + apConsFwd(t1, ap1, c, t0, ap2) + ) } pragma[nomagic] diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll index 22d79d7da15..8c44e7df5b0 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll @@ -54,12 +54,7 @@ private module Cached { fa.getField() instanceof InstanceField and ia.isImplicitFieldQualifier(fa) ) } or - TSummaryInternalNode(SummarizedCallable c, FlowSummaryImpl::Private::SummaryNodeState state) { - FlowSummaryImpl::Private::summaryNodeRange(c, state) - } or - TSummaryParameterNode(SummarizedCallable c, int pos) { - FlowSummaryImpl::Private::summaryParameterNodeRange(c, pos) - } or + TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) or TFieldValueNode(Field f) cached @@ -132,8 +127,6 @@ module Public { or result = this.(ImplicitPostUpdateNode).getPreUpdateNode().getType() or - result = this.(SummaryParameterNode).getTypeImpl() - or result = this.(FieldValueNode).getField().getType() } @@ -378,8 +371,7 @@ module Private { result.asCallable() = n.(ImplicitInstanceAccess).getInstanceAccess().getEnclosingCallable() or result.asCallable() = n.(MallocNode).getClassInstanceExpr().getEnclosingCallable() or result = nodeGetEnclosingCallable(n.(ImplicitPostUpdateNode).getPreUpdateNode()) or - n = TSummaryInternalNode(result.asSummarizedCallable(), _) or - n = TSummaryParameterNode(result.asSummarizedCallable(), _) or + result.asSummarizedCallable() = n.(FlowSummaryNode).getSummarizedCallable() or result.asFieldScope() = n.(FieldValueNode).getField() } @@ -407,7 +399,7 @@ module Private { or this = getInstanceArgument(_) or - this.(SummaryNode).isArgumentOf(_, _) + this.(FlowSummaryNode).isArgumentOf(_, _) } /** @@ -424,7 +416,7 @@ module Private { or pos = -1 and this = getInstanceArgument(call.asCall()) or - this.(SummaryNode).isArgumentOf(call, pos) + this.(FlowSummaryNode).isArgumentOf(call, pos) } /** Gets the call in which this node is an argument. */ @@ -435,7 +427,7 @@ module Private { class ReturnNode extends Node { ReturnNode() { exists(ReturnStmt ret | this.asExpr() = ret.getResult()) or - this.(SummaryNode).isReturn() + this.(FlowSummaryNode).isReturn() } /** Gets the kind of this returned value. */ @@ -447,61 +439,57 @@ module Private { OutNode() { this.asExpr() instanceof MethodAccess or - this.(SummaryNode).isOut(_) + this.(FlowSummaryNode).isOut(_) } /** Gets the underlying call. */ DataFlowCall getCall() { result.asCall() = this.asExpr() or - this.(SummaryNode).isOut(result) + this.(FlowSummaryNode).isOut(result) } } /** * A data-flow node used to model flow summaries. */ - class SummaryNode extends Node, TSummaryInternalNode { - private SummarizedCallable c; - private FlowSummaryImpl::Private::SummaryNodeState state; + class FlowSummaryNode extends Node, TFlowSummaryNode { + FlowSummaryImpl::Private::SummaryNode getSummaryNode() { this = TFlowSummaryNode(result) } - SummaryNode() { this = TSummaryInternalNode(c, state) } + SummarizedCallable getSummarizedCallable() { + result = this.getSummaryNode().getSummarizedCallable() + } - override Location getLocation() { result = c.getLocation() } + override Location getLocation() { result = this.getSummarizedCallable().getLocation() } - override string toString() { result = "[summary] " + state + " in " + c } + override string toString() { result = this.getSummaryNode().toString() } /** Holds if this summary node is the `i`th argument of `call`. */ predicate isArgumentOf(DataFlowCall call, int i) { - FlowSummaryImpl::Private::summaryArgumentNode(call, this, i) + FlowSummaryImpl::Private::summaryArgumentNode(call, this.getSummaryNode(), i) } /** Holds if this summary node is a return node. */ - predicate isReturn() { FlowSummaryImpl::Private::summaryReturnNode(this, _) } + predicate isReturn() { FlowSummaryImpl::Private::summaryReturnNode(this.getSummaryNode(), _) } /** Holds if this summary node is an out node for `call`. */ - predicate isOut(DataFlowCall call) { FlowSummaryImpl::Private::summaryOutNode(call, this, _) } + predicate isOut(DataFlowCall call) { + FlowSummaryImpl::Private::summaryOutNode(call, this.getSummaryNode(), _) + } } - SummaryNode getSummaryNode(SummarizedCallable c, FlowSummaryImpl::Private::SummaryNodeState state) { - result = TSummaryInternalNode(c, state) - } - - class SummaryParameterNode extends ParameterNode, TSummaryParameterNode { - private SummarizedCallable sc; - private int pos_; - - SummaryParameterNode() { this = TSummaryParameterNode(sc, pos_) } - - override Location getLocation() { result = sc.getLocation() } - - override string toString() { result = "[summary param] " + pos_ + " in " + sc } - - override predicate isParameterOf(DataFlowCallable c, int pos) { - c.asSummarizedCallable() = sc and pos = pos_ + class SummaryParameterNode extends ParameterNode, FlowSummaryNode { + SummaryParameterNode() { + FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), _) } - Type getTypeImpl() { result = sc.getParameterType(pos_) } + private int getPosition() { + FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), result) + } + + override predicate isParameterOf(DataFlowCallable c, int pos) { + c.asSummarizedCallable() = this.getSummarizedCallable() and pos = this.getPosition() + } } } @@ -523,10 +511,12 @@ private class MallocNode extends Node, TMallocNode { ClassInstanceExpr getClassInstanceExpr() { result = cie } } -private class SummaryPostUpdateNode extends SummaryNode, PostUpdateNode { - private Node pre; +private class SummaryPostUpdateNode extends FlowSummaryNode, PostUpdateNode { + private FlowSummaryNode pre; - SummaryPostUpdateNode() { FlowSummaryImpl::Private::summaryPostUpdateNode(this, pre) } + SummaryPostUpdateNode() { + FlowSummaryImpl::Private::summaryPostUpdateNode(this.getSummaryNode(), pre.getSummaryNode()) + } override Node getPreUpdateNode() { result = pre } } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll index 22f84241c96..216523023d9 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll @@ -85,7 +85,8 @@ predicate jumpStep(Node node1, Node node2) { any(AdditionalValueStep a).step(node1, node2) and node1.getEnclosingCallable() != node2.getEnclosingCallable() or - FlowSummaryImpl::Private::Steps::summaryJumpStep(node1, node2) + FlowSummaryImpl::Private::Steps::summaryJumpStep(node1.(FlowSummaryNode).getSummaryNode(), + node2.(FlowSummaryNode).getSummaryNode()) } /** @@ -114,7 +115,8 @@ predicate storeStep(Node node1, Content f, Node node2) { or f instanceof ArrayContent and arrayStoreStep(node1, node2) or - FlowSummaryImpl::Private::Steps::summaryStoreStep(node1, f, node2) + FlowSummaryImpl::Private::Steps::summaryStoreStep(node1.(FlowSummaryNode).getSummaryNode(), f, + node2.(FlowSummaryNode).getSummaryNode()) } /** @@ -145,7 +147,8 @@ predicate readStep(Node node1, Content f, Node node2) { or f instanceof CollectionContent and collectionReadStep(node1, node2) or - FlowSummaryImpl::Private::Steps::summaryReadStep(node1, f, node2) + FlowSummaryImpl::Private::Steps::summaryReadStep(node1.(FlowSummaryNode).getSummaryNode(), f, + node2.(FlowSummaryNode).getSummaryNode()) } /** @@ -160,7 +163,7 @@ predicate clearsContent(Node n, Content c) { c.(FieldContent).getField() = fa.getField() ) or - FlowSummaryImpl::Private::Steps::summaryClearsContent(n, c) + FlowSummaryImpl::Private::Steps::summaryClearsContent(n.(FlowSummaryNode).getSummaryNode(), c) } /** @@ -168,7 +171,7 @@ predicate clearsContent(Node n, Content c) { * at node `n`. */ predicate expectsContent(Node n, ContentSet c) { - FlowSummaryImpl::Private::Steps::summaryExpectsContent(n, c) + FlowSummaryImpl::Private::Steps::summaryExpectsContent(n.(FlowSummaryNode).getSummaryNode(), c) } /** @@ -176,7 +179,7 @@ predicate expectsContent(Node n, ContentSet c) { * possible flow. A single type is used for all numeric types to account for * numeric conversions, and otherwise the erasure is used. */ -DataFlowType getErasedRepr(Type t) { +RefType getErasedRepr(Type t) { exists(Type e | e = t.getErasure() | if e instanceof NumericOrCharType then result.(BoxedType).getPrimitiveType().getName() = "double" @@ -189,11 +192,18 @@ DataFlowType getErasedRepr(Type t) { t instanceof NullType and result instanceof TypeObject } +class DataFlowType extends SrcRefType { + DataFlowType() { this = getErasedRepr(_) } +} + +pragma[nomagic] +predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { t1.getASourceSupertype+() = t2 } + pragma[noinline] DataFlowType getNodeType(Node n) { result = getErasedRepr(n.getTypeBound()) or - result = FlowSummaryImpl::Private::summaryNodeType(n) + result = FlowSummaryImpl::Private::summaryNodeType(n.(FlowSummaryNode).getSummaryNode()) } /** Gets a string representation of a type returned by `getErasedRepr`. */ @@ -232,6 +242,12 @@ class CastNode extends ExprNode { CastNode() { this.getExpr() instanceof CastingExpr } } +/** + * Holds if `n` should never be skipped over in the `PathGraph` and in path + * explanations. + */ +predicate neverSkipInPathGraph(Node n) { none() } + private newtype TDataFlowCallable = TSrcCallable(Callable c) or TSummarizedCallable(SummarizedCallable c) or @@ -259,11 +275,9 @@ class DataFlowCallable extends TDataFlowCallable { class DataFlowExpr = Expr; -class DataFlowType = RefType; - private newtype TDataFlowCall = TCall(Call c) or - TSummaryCall(SummarizedCallable c, Node receiver) { + TSummaryCall(SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver) { FlowSummaryImpl::Private::summaryCallbackRange(c, receiver) } @@ -313,12 +327,12 @@ class SrcCall extends DataFlowCall, TCall { /** A synthesized call inside a `SummarizedCallable`. */ class SummaryCall extends DataFlowCall, TSummaryCall { private SummarizedCallable c; - private Node receiver; + private FlowSummaryImpl::Private::SummaryNode receiver; SummaryCall() { this = TSummaryCall(c, receiver) } /** Gets the data flow node that this call targets. */ - Node getReceiver() { result = receiver } + FlowSummaryImpl::Private::SummaryNode getReceiver() { result = receiver } override DataFlowCallable getEnclosingCallable() { result.asSummarizedCallable() = c } @@ -378,10 +392,7 @@ predicate forceHighPrecision(Content c) { } /** Holds if `n` should be hidden from path explanations. */ -predicate nodeIsHidden(Node n) { - n instanceof SummaryNode or - n instanceof SummaryParameterNode -} +predicate nodeIsHidden(Node n) { n instanceof FlowSummaryNode } class LambdaCallKind = Method; // the "apply" method in the functional interface @@ -399,7 +410,7 @@ predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) /** Holds if `call` is a lambda call of kind `kind` where `receiver` is the lambda expression. */ predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { - receiver = call.(SummaryCall).getReceiver() and + receiver.(FlowSummaryNode).getSummaryNode() = call.(SummaryCall).getReceiver() and getNodeDataFlowType(receiver) .getSourceDeclaration() .(FunctionalInterface) diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll index ff064cc8405..29758d4b972 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll @@ -183,7 +183,8 @@ private predicate simpleLocalFlowStep0(Node node1, Node node2) { node1.(ArgumentNode).argumentOf(any(DataFlowCall c | c.asCall() = ma), argNo) ) or - FlowSummaryImpl::Private::Steps::summaryLocalStep(node1, node2, true) + FlowSummaryImpl::Private::Steps::summaryLocalStep(node1.(FlowSummaryNode).getSummaryNode(), + node2.(FlowSummaryNode).getSummaryNode(), true) } /** diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll index 034c6101de3..9ea7c44c50c 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll @@ -166,28 +166,26 @@ module Public { SummaryComponentStack return(ReturnKind rk) { result = singleton(SummaryComponent::return(rk)) } } - private predicate noComponentSpecific(SummaryComponent sc) { - not exists(getComponentSpecific(sc)) - } - /** Gets a textual representation of this component used for flow summaries. */ private string getComponent(SummaryComponent sc) { result = getComponentSpecific(sc) or - noComponentSpecific(sc) and - ( - exists(ArgumentPosition pos | - sc = TParameterSummaryComponent(pos) and - result = "Parameter[" + getArgumentPosition(pos) + "]" - ) - or - exists(ParameterPosition pos | - sc = TArgumentSummaryComponent(pos) and - result = "Argument[" + getParameterPosition(pos) + "]" - ) - or - sc = TReturnSummaryComponent(getReturnValueKind()) and result = "ReturnValue" + exists(ArgumentPosition pos | + sc = TParameterSummaryComponent(pos) and + result = "Parameter[" + getArgumentPosition(pos) + "]" ) + or + exists(ParameterPosition pos | + sc = TArgumentSummaryComponent(pos) and + result = "Argument[" + getParameterPosition(pos) + "]" + ) + or + exists(string synthetic | + sc = TSyntheticGlobalSummaryComponent(synthetic) and + result = "SyntheticGlobal[" + synthetic + "]" + ) + or + sc = TReturnSummaryComponent(getReturnValueKind()) and result = "ReturnValue" } /** Gets a textual representation of this stack used for flow summaries. */ @@ -512,6 +510,9 @@ module Private { or // Add the post-update node corresponding to the requested argument node outputState(c, s) and isCallbackParameter(s) + or + // Add the parameter node for parameter side-effects + outputState(c, s) and s = SummaryComponentStack::argument(_) } private newtype TSummaryNodeState = @@ -537,7 +538,7 @@ module Private { * this state represents that the components in `s` _remain to be written_ to * the output. */ - class SummaryNodeState extends TSummaryNodeState { + private class SummaryNodeState extends TSummaryNodeState { /** Holds if this state is a valid input state for `c`. */ pragma[nomagic] predicate isInputState(SummarizedCallable c, SummaryComponentStack s) { @@ -566,6 +567,42 @@ module Private { } } + private newtype TSummaryNode = + TSummaryInternalNode(SummarizedCallable c, SummaryNodeState state) { + summaryNodeRange(c, state) + } or + TSummaryParameterNode(SummarizedCallable c, ParameterPosition pos) { + summaryParameterNodeRange(c, pos) + } + + abstract class SummaryNode extends TSummaryNode { + abstract string toString(); + + abstract SummarizedCallable getSummarizedCallable(); + } + + private class SummaryInternalNode extends SummaryNode, TSummaryInternalNode { + private SummarizedCallable c; + private SummaryNodeState state; + + SummaryInternalNode() { this = TSummaryInternalNode(c, state) } + + override string toString() { result = "[summary] " + state + " in " + c } + + override SummarizedCallable getSummarizedCallable() { result = c } + } + + private class SummaryParamNode extends SummaryNode, TSummaryParameterNode { + private SummarizedCallable c; + private ParameterPosition pos; + + SummaryParamNode() { this = TSummaryParameterNode(c, pos) } + + override string toString() { result = "[summary param] " + pos + " in " + c } + + override SummarizedCallable getSummarizedCallable() { result = c } + } + /** * Holds if `state` represents having read from a parameter at position * `pos` in `c`. In this case we are not synthesizing a data-flow node, @@ -581,7 +618,7 @@ module Private { * Holds if a synthesized summary node is needed for the state `state` in summarized * callable `c`. */ - predicate summaryNodeRange(SummarizedCallable c, SummaryNodeState state) { + private predicate summaryNodeRange(SummarizedCallable c, SummaryNodeState state) { state.isInputState(c, _) and not parameterReadState(c, state, _) or @@ -589,22 +626,22 @@ module Private { } pragma[noinline] - private Node summaryNodeInputState(SummarizedCallable c, SummaryComponentStack s) { + private SummaryNode summaryNodeInputState(SummarizedCallable c, SummaryComponentStack s) { exists(SummaryNodeState state | state.isInputState(c, s) | - result = summaryNode(c, state) + result = TSummaryInternalNode(c, state) or exists(ParameterPosition pos | parameterReadState(c, state, pos) and - result.(ParamNode).isParameterOf(inject(c), pos) + result = TSummaryParameterNode(c, pos) ) ) } pragma[noinline] - private Node summaryNodeOutputState(SummarizedCallable c, SummaryComponentStack s) { + private SummaryNode summaryNodeOutputState(SummarizedCallable c, SummaryComponentStack s) { exists(SummaryNodeState state | state.isOutputState(c, s) and - result = summaryNode(c, state) + result = TSummaryInternalNode(c, state) ) } @@ -612,12 +649,14 @@ module Private { * Holds if a write targets `post`, which is a post-update node for a * parameter at position `pos` in `c`. */ - private predicate isParameterPostUpdate(Node post, SummarizedCallable c, ParameterPosition pos) { + private predicate isParameterPostUpdate( + SummaryNode post, SummarizedCallable c, ParameterPosition pos + ) { post = summaryNodeOutputState(c, SummaryComponentStack::argument(pos)) } /** Holds if a parameter node at position `pos` is required for `c`. */ - predicate summaryParameterNodeRange(SummarizedCallable c, ParameterPosition pos) { + private predicate summaryParameterNodeRange(SummarizedCallable c, ParameterPosition pos) { parameterReadState(c, _, pos) or // Same as `isParameterPostUpdate(_, c, pos)`, but can be used in a negative context @@ -625,7 +664,7 @@ module Private { } private predicate callbackOutput( - SummarizedCallable c, SummaryComponentStack s, Node receiver, ReturnKind rk + SummarizedCallable c, SummaryComponentStack s, SummaryNode receiver, ReturnKind rk ) { any(SummaryNodeState state).isInputState(c, s) and s.head() = TReturnSummaryComponent(rk) and @@ -633,7 +672,7 @@ module Private { } private predicate callbackInput( - SummarizedCallable c, SummaryComponentStack s, Node receiver, ArgumentPosition pos + SummarizedCallable c, SummaryComponentStack s, SummaryNode receiver, ArgumentPosition pos ) { any(SummaryNodeState state).isOutputState(c, s) and s.head() = TParameterSummaryComponent(pos) and @@ -641,7 +680,7 @@ module Private { } /** Holds if a call targeting `receiver` should be synthesized inside `c`. */ - predicate summaryCallbackRange(SummarizedCallable c, Node receiver) { + predicate summaryCallbackRange(SummarizedCallable c, SummaryNode receiver) { callbackOutput(c, _, receiver, _) or callbackInput(c, _, receiver, _) @@ -654,10 +693,10 @@ module Private { * `getContentType()`, `getReturnType()`, `getCallbackParameterType()`, and * `getCallbackReturnType()`. */ - DataFlowType summaryNodeType(Node n) { - exists(Node pre | + DataFlowType summaryNodeType(SummaryNode n) { + exists(SummaryNode pre | summaryPostUpdateNode(n, pre) and - result = getNodeType(pre) + result = summaryNodeType(pre) ) or exists(SummarizedCallable c, SummaryComponentStack s, SummaryComponent head | head = s.head() | @@ -669,12 +708,12 @@ module Private { ) or head = TWithoutContentSummaryComponent(_) and - result = getNodeType(summaryNodeInputState(c, s.tail())) + result = summaryNodeType(summaryNodeInputState(c, s.tail())) or exists(ReturnKind rk | head = TReturnSummaryComponent(rk) and result = - getCallbackReturnType(getNodeType(summaryNodeInputState(pragma[only_bind_out](c), + getCallbackReturnType(summaryNodeType(summaryNodeInputState(pragma[only_bind_out](c), s.tail())), rk) ) or @@ -682,6 +721,11 @@ module Private { head = TSyntheticGlobalSummaryComponent(sg) and result = getSyntheticGlobalType(sg) ) + or + exists(ParameterPosition pos | + head = TArgumentSummaryComponent(pos) and + result = getParameterType(c, pos) + ) ) or n = summaryNodeOutputState(c, s) and @@ -698,7 +742,7 @@ module Private { or exists(ArgumentPosition pos | head = TParameterSummaryComponent(pos) | result = - getCallbackParameterType(getNodeType(summaryNodeInputState(pragma[only_bind_out](c), + getCallbackParameterType(summaryNodeType(summaryNodeInputState(pragma[only_bind_out](c), s.tail())), pos) ) or @@ -710,9 +754,14 @@ module Private { ) } + /** Holds if summary node `p` is a parameter with position `pos`. */ + predicate summaryParameterNode(SummaryNode p, ParameterPosition pos) { + p = TSummaryParameterNode(_, pos) + } + /** Holds if summary node `out` contains output of kind `rk` from call `c`. */ - predicate summaryOutNode(DataFlowCall c, Node out, ReturnKind rk) { - exists(SummarizedCallable callable, SummaryComponentStack s, Node receiver | + predicate summaryOutNode(DataFlowCall c, SummaryNode out, ReturnKind rk) { + exists(SummarizedCallable callable, SummaryComponentStack s, SummaryNode receiver | callbackOutput(callable, s, receiver, rk) and out = summaryNodeInputState(callable, s) and c = summaryDataFlowCall(receiver) @@ -720,8 +769,8 @@ module Private { } /** Holds if summary node `arg` is at position `pos` in the call `c`. */ - predicate summaryArgumentNode(DataFlowCall c, Node arg, ArgumentPosition pos) { - exists(SummarizedCallable callable, SummaryComponentStack s, Node receiver | + predicate summaryArgumentNode(DataFlowCall c, SummaryNode arg, ArgumentPosition pos) { + exists(SummarizedCallable callable, SummaryComponentStack s, SummaryNode receiver | callbackInput(callable, s, receiver, pos) and arg = summaryNodeOutputState(callable, s) and c = summaryDataFlowCall(receiver) @@ -729,10 +778,10 @@ module Private { } /** Holds if summary node `post` is a post-update node with pre-update node `pre`. */ - predicate summaryPostUpdateNode(Node post, Node pre) { + predicate summaryPostUpdateNode(SummaryNode post, SummaryNode pre) { exists(SummarizedCallable c, ParameterPosition pos | isParameterPostUpdate(post, c, pos) and - pre.(ParamNode).isParameterOf(inject(c), pos) + pre = TSummaryParameterNode(c, pos) ) or exists(SummarizedCallable callable, SummaryComponentStack s | @@ -743,7 +792,7 @@ module Private { } /** Holds if summary node `ret` is a return node of kind `rk`. */ - predicate summaryReturnNode(Node ret, ReturnKind rk) { + predicate summaryReturnNode(SummaryNode ret, ReturnKind rk) { exists(SummaryComponentStack s | ret = summaryNodeOutputState(_, s) and s = TSingletonSummaryComponentStack(TReturnSummaryComponent(rk)) @@ -755,7 +804,9 @@ module Private { * node, and back out to `p`. */ predicate summaryAllowParameterReturnInSelf(ParamNode p) { - exists(SummarizedCallable c, ParameterPosition ppos | p.isParameterOf(inject(c), ppos) | + exists(SummarizedCallable c, ParameterPosition ppos | + p.isParameterOf(inject(c), pragma[only_bind_into](ppos)) + | exists(SummaryComponentStack inputContents, SummaryComponentStack outputContents | summary(c, inputContents, outputContents, _) and inputContents.bottom() = pragma[only_bind_into](TArgumentSummaryComponent(ppos)) and @@ -770,7 +821,7 @@ module Private { * Holds if there is a local step from `pred` to `succ`, which is synthesized * from a flow summary. */ - predicate summaryLocalStep(Node pred, Node succ, boolean preservesValue) { + predicate summaryLocalStep(SummaryNode pred, SummaryNode succ, boolean preservesValue) { exists( SummarizedCallable c, SummaryComponentStack inputContents, SummaryComponentStack outputContents @@ -796,7 +847,7 @@ module Private { * Holds if there is a read step of content `c` from `pred` to `succ`, which * is synthesized from a flow summary. */ - predicate summaryReadStep(Node pred, ContentSet c, Node succ) { + predicate summaryReadStep(SummaryNode pred, ContentSet c, SummaryNode succ) { exists(SummarizedCallable sc, SummaryComponentStack s | pred = summaryNodeInputState(sc, s.tail()) and succ = summaryNodeInputState(sc, s) and @@ -808,7 +859,7 @@ module Private { * Holds if there is a store step of content `c` from `pred` to `succ`, which * is synthesized from a flow summary. */ - predicate summaryStoreStep(Node pred, ContentSet c, Node succ) { + predicate summaryStoreStep(SummaryNode pred, ContentSet c, SummaryNode succ) { exists(SummarizedCallable sc, SummaryComponentStack s | pred = summaryNodeOutputState(sc, s) and succ = summaryNodeOutputState(sc, s.tail()) and @@ -820,7 +871,7 @@ module Private { * Holds if there is a jump step from `pred` to `succ`, which is synthesized * from a flow summary. */ - predicate summaryJumpStep(Node pred, Node succ) { + predicate summaryJumpStep(SummaryNode pred, SummaryNode succ) { exists(SummaryComponentStack s | s = SummaryComponentStack::singleton(SummaryComponent::syntheticGlobal(_)) and pred = summaryNodeOutputState(_, s) and @@ -847,9 +898,9 @@ module Private { * `a` on line 2 to the post-update node for `a` on that line (via an intermediate * node where field `b` is cleared). */ - predicate summaryClearsContent(Node n, ContentSet c) { + predicate summaryClearsContent(SummaryNode n, ContentSet c) { exists(SummarizedCallable sc, SummaryNodeState state, SummaryComponentStack stack | - n = summaryNode(sc, state) and + n = TSummaryInternalNode(sc, state) and state.isInputState(sc, stack) and stack.head() = SummaryComponent::withoutContent(c) ) @@ -859,9 +910,9 @@ module Private { * Holds if the value that is being tracked is expected to be stored inside * content `c` at `n`. */ - predicate summaryExpectsContent(Node n, ContentSet c) { + predicate summaryExpectsContent(SummaryNode n, ContentSet c) { exists(SummarizedCallable sc, SummaryNodeState state, SummaryComponentStack stack | - n = summaryNode(sc, state) and + n = TSummaryInternalNode(sc, state) and state.isInputState(sc, stack) and stack.head() = SummaryComponent::withContent(c) ) @@ -869,17 +920,17 @@ module Private { pragma[noinline] private predicate viableParam( - DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos, ParamNode p + DataFlowCall call, SummarizedCallable sc, ParameterPosition ppos, SummaryParamNode p ) { exists(DataFlowCallable c | c = inject(sc) and - p.isParameterOf(c, ppos) and + p = TSummaryParameterNode(sc, ppos) and c = viableCallable(call) ) } pragma[nomagic] - private ParamNode summaryArgParam0(DataFlowCall call, ArgNode arg, SummarizedCallable sc) { + private SummaryParamNode summaryArgParam(DataFlowCall call, ArgNode arg, SummarizedCallable sc) { exists(ParameterPosition ppos | argumentPositionMatch(call, arg, ppos) and viableParam(call, sc, ppos, result) @@ -891,12 +942,12 @@ module Private { * local steps. `clearsOrExpects` records whether any node on the path from `p` to * `n` either clears or expects contents. */ - private predicate paramReachesLocal(ParamNode p, Node n, boolean clearsOrExpects) { + private predicate paramReachesLocal(SummaryParamNode p, SummaryNode n, boolean clearsOrExpects) { viableParam(_, _, _, p) and n = p and clearsOrExpects = false or - exists(Node mid, boolean clearsOrExpectsMid | + exists(SummaryNode mid, boolean clearsOrExpectsMid | paramReachesLocal(p, mid, clearsOrExpectsMid) and summaryLocalStep(mid, n, true) and if @@ -916,21 +967,33 @@ module Private { */ pragma[nomagic] predicate prohibitsUseUseFlow(ArgNode arg, SummarizedCallable sc) { - exists(ParamNode p, ParameterPosition ppos, Node ret | + exists(SummaryParamNode p, ParameterPosition ppos, SummaryNode ret | paramReachesLocal(p, ret, true) and - p = summaryArgParam0(_, arg, sc) and - p.isParameterOf(_, pragma[only_bind_into](ppos)) and + p = summaryArgParam(_, arg, sc) and + p = TSummaryParameterNode(_, pragma[only_bind_into](ppos)) and isParameterPostUpdate(ret, _, pragma[only_bind_into](ppos)) ) } + pragma[nomagic] + private predicate summaryReturnNodeExt(SummaryNode ret, ReturnKindExt rk) { + summaryReturnNode(ret, rk.(ValueReturnKind).getKind()) + or + exists(SummaryParamNode p, SummaryNode pre, ParameterPosition pos | + paramReachesLocal(p, pre, _) and + summaryPostUpdateNode(ret, pre) and + p = TSummaryParameterNode(_, pos) and + rk.(ParamUpdateReturnKind).getPosition() = pos + ) + } + bindingset[ret] - private ParamNode summaryArgParam( - ArgNode arg, ReturnNodeExt ret, OutNodeExt out, SummarizedCallable sc + private SummaryParamNode summaryArgParamRetOut( + ArgNode arg, SummaryNode ret, OutNodeExt out, SummarizedCallable sc ) { exists(DataFlowCall call, ReturnKindExt rk | - result = summaryArgParam0(call, arg, sc) and - ret.getKind() = pragma[only_bind_into](rk) and + result = summaryArgParam(call, arg, sc) and + summaryReturnNodeExt(ret, pragma[only_bind_into](rk)) and out = pragma[only_bind_into](rk).getAnOutNode(call) ) } @@ -943,9 +1006,9 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summaryThroughStepValue(ArgNode arg, Node out, SummarizedCallable sc) { - exists(ReturnKind rk, ReturnNode ret, DataFlowCall call | - summaryLocalStep(summaryArgParam0(call, arg, sc), ret, true) and - ret.getKind() = pragma[only_bind_into](rk) and + exists(ReturnKind rk, SummaryNode ret, DataFlowCall call | + summaryLocalStep(summaryArgParam(call, arg, sc), ret, true) and + summaryReturnNode(ret, pragma[only_bind_into](rk)) and out = getAnOutNode(call, pragma[only_bind_into](rk)) ) } @@ -958,7 +1021,9 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summaryThroughStepTaint(ArgNode arg, Node out, SummarizedCallable sc) { - exists(ReturnNodeExt ret | summaryLocalStep(summaryArgParam(arg, ret, out, sc), ret, false)) + exists(SummaryNode ret | + summaryLocalStep(summaryArgParamRetOut(arg, ret, out, sc), ret, false) + ) } /** @@ -969,8 +1034,8 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summaryGetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { - exists(Node mid, ReturnNodeExt ret | - summaryReadStep(summaryArgParam(arg, ret, out, sc), c, mid) and + exists(SummaryNode mid, SummaryNode ret | + summaryReadStep(summaryArgParamRetOut(arg, ret, out, sc), c, mid) and summaryLocalStep(mid, ret, _) ) } @@ -983,8 +1048,8 @@ module Private { * be useful to include in the exposed local data-flow/taint-tracking relations. */ predicate summarySetterStep(ArgNode arg, ContentSet c, Node out, SummarizedCallable sc) { - exists(Node mid, ReturnNodeExt ret | - summaryLocalStep(summaryArgParam(arg, ret, out, sc), mid, _) and + exists(SummaryNode mid, SummaryNode ret | + summaryLocalStep(summaryArgParamRetOut(arg, ret, out, sc), mid, _) and summaryStoreStep(mid, c, ret) ) } @@ -1351,11 +1416,11 @@ module Private { } private newtype TNodeOrCall = - MkNode(Node n) { + MkNode(SummaryNode n) { exists(RelevantSummarizedCallable c | - n = summaryNode(c, _) + n = TSummaryInternalNode(c, _) or - n.(ParamNode).isParameterOf(inject(c), _) + n = TSummaryParameterNode(c, _) ) } or MkCall(DataFlowCall call) { @@ -1364,7 +1429,7 @@ module Private { } private class NodeOrCall extends TNodeOrCall { - Node asNode() { this = MkNode(result) } + SummaryNode asNode() { this = MkNode(result) } DataFlowCall asCall() { this = MkCall(result) } @@ -1384,9 +1449,11 @@ module Private { predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { - this.asNode().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - or - this.asCall().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + filepath = "" and + startline = 0 and + startcolumn = 0 and + endline = 0 and + endcolumn = 0 } } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImplSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImplSpecific.qll index 1a0e06553d4..77780aa3a46 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImplSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImplSpecific.qll @@ -26,15 +26,17 @@ DataFlowCallable inject(SummarizedCallable c) { result.asSummarizedCallable() = /** Gets the parameter position of the instance parameter. */ ArgumentPosition callbackSelfParameterPosition() { result = -1 } -/** Gets the synthesized summary data-flow node for the given values. */ -Node summaryNode(SummarizedCallable c, SummaryNodeState state) { result = getSummaryNode(c, state) } - /** Gets the synthesized data-flow call for `receiver`. */ -SummaryCall summaryDataFlowCall(Node receiver) { result.getReceiver() = receiver } +SummaryCall summaryDataFlowCall(SummaryNode receiver) { result.getReceiver() = receiver } /** Gets the type of content `c`. */ DataFlowType getContentType(Content c) { result = c.getType() } +/** Gets the type of the parameter at the given position. */ +DataFlowType getParameterType(SummarizedCallable c, ParameterPosition pos) { + result = getErasedRepr(c.getParameterType(pos)) +} + /** Gets the return type of kind `rk` for callable `c`. */ DataFlowType getReturnType(SummarizedCallable c, ReturnKind rk) { result = getErasedRepr(c.getReturnType()) and diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll b/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll index af8f2273cbe..a43aa5be4f1 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingUtil.qll @@ -86,6 +86,7 @@ module LocalTaintFlow { cached private module Cached { private import DataFlowImplCommon as DataFlowImplCommon + private import DataFlowPrivate as DataFlowPrivate cached predicate forceCachingInSameStage() { DataFlowImplCommon::forceCachingInSameStage() } @@ -136,7 +137,8 @@ private module Cached { ) ) or - FlowSummaryImpl::Private::Steps::summaryLocalStep(src, sink, false) + FlowSummaryImpl::Private::Steps::summaryLocalStep(src.(DataFlowPrivate::FlowSummaryNode) + .getSummaryNode(), sink.(DataFlowPrivate::FlowSummaryNode).getSummaryNode(), false) } /** diff --git a/java/ql/lib/semmle/code/java/deadcode/EntryPoints.qll b/java/ql/lib/semmle/code/java/deadcode/EntryPoints.qll index 2213960222e..5c037258309 100644 --- a/java/ql/lib/semmle/code/java/deadcode/EntryPoints.qll +++ b/java/ql/lib/semmle/code/java/deadcode/EntryPoints.qll @@ -456,9 +456,6 @@ class ArbitraryXmlEntryPoint extends ReflectivelyConstructedClass { } } -/** DEPRECATED: Alias for ArbitraryXmlEntryPoint */ -deprecated class ArbitraryXMLEntryPoint = ArbitraryXmlEntryPoint; - /** A Selenium PageObject, created by a call to PageFactory.initElements(..). */ class SeleniumPageObjectEntryPoint extends ReflectivelyConstructedClass instanceof SeleniumPageObject { } diff --git a/java/ql/lib/semmle/code/java/frameworks/Networking.qll b/java/ql/lib/semmle/code/java/frameworks/Networking.qll index 8f86c8f75e7..c473cc9fc09 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Networking.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Networking.qll @@ -38,9 +38,6 @@ class UrlConnectionGetInputStreamMethod extends Method { } } -/** DEPRECATED: Alias for UrlConnectionGetInputStreamMethod */ -deprecated class URLConnectionGetInputStreamMethod = UrlConnectionGetInputStreamMethod; - /** The method `java.net.Socket::getInputStream`. */ class SocketGetInputStreamMethod extends Method { SocketGetInputStreamMethod() { diff --git a/java/ql/lib/semmle/code/java/frameworks/Servlets.qll b/java/ql/lib/semmle/code/java/frameworks/Servlets.qll index 82e837862be..f2de51b2aab 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Servlets.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Servlets.qll @@ -128,9 +128,6 @@ class HttpServletRequestGetRequestUrlMethod extends Method { } } -/** DEPRECATED: Alias for HttpServletRequestGetRequestUrlMethod */ -deprecated class HttpServletRequestGetRequestURLMethod = HttpServletRequestGetRequestUrlMethod; - /** * The method `getRequestURI()` declared in `javax.servlet.http.HttpServletRequest`. */ @@ -339,9 +336,6 @@ class ServletWebXmlListenerType extends RefType { } } -/** DEPRECATED: Alias for ServletWebXmlListenerType */ -deprecated class ServletWebXMLListenerType = ServletWebXmlListenerType; - /** Holds if `m` is a request handler method (for example `doGet` or `doPost`). */ predicate isServletRequestMethod(Method m) { m.getDeclaringType() instanceof ServletClass and diff --git a/java/ql/lib/semmle/code/java/frameworks/UnboundId.qll b/java/ql/lib/semmle/code/java/frameworks/UnboundId.qll index e19a6b43019..8bab6dfe581 100644 --- a/java/ql/lib/semmle/code/java/frameworks/UnboundId.qll +++ b/java/ql/lib/semmle/code/java/frameworks/UnboundId.qll @@ -29,9 +29,6 @@ class TypeUnboundIdLdapConnection extends Class { } } -/** DEPRECATED: Alias for TypeUnboundIdLdapConnection */ -deprecated class TypeUnboundIdLDAPConnection = TypeUnboundIdLdapConnection; - /*--- Methods ---*/ /** A method with the name `setBaseDN` declared in `com.unboundid.ldap.sdk.SearchRequest`. */ class MethodUnboundIdSearchRequestSetBaseDN extends Method { @@ -103,9 +100,6 @@ class MethodUnboundIdLdapConnectionSearch extends Method { } } -/** DEPRECATED: Alias for MethodUnboundIdLdapConnectionSearch */ -deprecated class MethodUnboundIdLDAPConnectionSearch = MethodUnboundIdLdapConnectionSearch; - /** A method with the name `asyncSearch` declared in `com.unboundid.ldap.sdk.LDAPConnection`. */ class MethodUnboundIdLdapConnectionAsyncSearch extends Method { MethodUnboundIdLdapConnectionAsyncSearch() { @@ -114,10 +108,6 @@ class MethodUnboundIdLdapConnectionAsyncSearch extends Method { } } -/** DEPRECATED: Alias for MethodUnboundIdLdapConnectionAsyncSearch */ -deprecated class MethodUnboundIdLDAPConnectionAsyncSearch = - MethodUnboundIdLdapConnectionAsyncSearch; - /** A method with the name `searchForEntry` declared in `com.unboundid.ldap.sdk.LDAPConnection`. */ class MethodUnboundIdLdapConnectionSearchForEntry extends Method { MethodUnboundIdLdapConnectionSearchForEntry() { @@ -125,7 +115,3 @@ class MethodUnboundIdLdapConnectionSearchForEntry extends Method { this.hasName("searchForEntry") } } - -/** DEPRECATED: Alias for MethodUnboundIdLdapConnectionSearchForEntry */ -deprecated class MethodUnboundIdLDAPConnectionSearchForEntry = - MethodUnboundIdLdapConnectionSearchForEntry; diff --git a/java/ql/lib/semmle/code/java/frameworks/android/Widget.qll b/java/ql/lib/semmle/code/java/frameworks/android/Widget.qll index 81c34179c15..9cb39ed83a7 100644 --- a/java/ql/lib/semmle/code/java/frameworks/android/Widget.qll +++ b/java/ql/lib/semmle/code/java/frameworks/android/Widget.qll @@ -4,12 +4,6 @@ import java private import semmle.code.java.dataflow.ExternalFlow private import semmle.code.java.dataflow.FlowSources -private class DefaultAndroidWidgetSources extends RemoteFlowSource { - DefaultAndroidWidgetSources() { sourceNode(this, "android-widget") } - - override string getSourceType() { result = "Android widget source" } -} - private class EditableToStringStep extends AdditionalTaintStep { override predicate step(DataFlow::Node n1, DataFlow::Node n2) { exists(MethodAccess ma | diff --git a/java/ql/lib/semmle/code/java/frameworks/google/GsonSerializability.qll b/java/ql/lib/semmle/code/java/frameworks/google/GsonSerializability.qll new file mode 100644 index 00000000000..f7de80daaf4 --- /dev/null +++ b/java/ql/lib/semmle/code/java/frameworks/google/GsonSerializability.qll @@ -0,0 +1,60 @@ +/** + * Provides classes and predicates for working with Java Serialization in the context of + * the `com.google.gson` JSON processing framework. + */ + +import java +private import semmle.code.java.Serializability +private import semmle.code.java.dataflow.DataFlow +private import semmle.code.java.dataflow.FlowSteps + +/** + * A method used for deserializing objects using Gson. The first parameter is the object to be + * deserialized. + */ +private class GsonReadValueMethod extends Method { + GsonReadValueMethod() { this.hasQualifiedName("com.google.gson", "Gson", "fromJson") } +} + +/** A type whose values may be deserialized by the Gson JSON framework. */ +abstract class GsonDeserializableType extends Type { } + +/** A type whose values are explicitly deserialized in a call to a Gson method. */ +private class ExplicitlyReadGsonDeserializableType extends GsonDeserializableType { + ExplicitlyReadGsonDeserializableType() { + exists(MethodAccess ma | + // A call to a Gson read method... + ma.getMethod() instanceof GsonReadValueMethod and + // ...where `this` is used in the final argument, indicating that this type will be deserialized. + // TODO: find a way to get the type represented by java.lang.reflect.Type and com.google.gson.reflect.TypeToken + // fromJson(String json, TypeToken typeOfT) + // fromJson(String json, Type typeOfT) + usesType(ma.getArgument(1).getType(), this) and + not this instanceof TypeClass and + not this instanceof TypeObject + ) + } +} + +/** A type used in a `GsonDeserializableField` declaration. */ +private class FieldReferencedGsonDeserializableType extends GsonDeserializableType { + FieldReferencedGsonDeserializableType() { + exists(GsonDeserializableField f | usesType(f.getType(), this)) + } +} + +/** A field that may be deserialized using the Gson JSON framework. */ +private class GsonDeserializableField extends DeserializableField { + pragma[assume_small_delta] + GsonDeserializableField() { + exists(GsonDeserializableType superType | + superType = this.getDeclaringType().getAnAncestor() and + not superType instanceof TypeObject and + superType.fromSource() + ) + } +} + +private class GsonInheritTaint extends DataFlow::FieldContent, TaintInheritingContent { + GsonInheritTaint() { this.getField() instanceof GsonDeserializableField } +} diff --git a/java/ql/lib/semmle/code/java/frameworks/hudson/Hudson.qll b/java/ql/lib/semmle/code/java/frameworks/hudson/Hudson.qll new file mode 100644 index 00000000000..c283c23a046 --- /dev/null +++ b/java/ql/lib/semmle/code/java/frameworks/hudson/Hudson.qll @@ -0,0 +1,38 @@ +/** Provides classes and predicates related to the Hudson framework. */ + +import java +private import semmle.code.java.dataflow.FlowSources +private import semmle.code.java.frameworks.stapler.Stapler +private import semmle.code.java.security.XSS + +/** A method declared in a subtype of `hudson.model.Descriptor` that returns an `HttpResponse`. */ +class HudsonWebMethod extends Method { + HudsonWebMethod() { + this.getReturnType().(RefType).getASourceSupertype*() instanceof HttpResponse and + this.getDeclaringType().getASourceSupertype*().hasQualifiedName("hudson.model", "Descriptor") + } +} + +private class FilePathRead extends LocalUserInput { + FilePathRead() { + this.asExpr() + .(MethodAccess) + .getMethod() + .hasQualifiedName("hudson", "FilePath", + [ + "newInputStreamDenyingSymlinkAsNeeded", "openInputStream", "read", "readFromOffset", + "readToString" + ]) + } +} + +private class HudsonUtilXssSanitizer extends XssSanitizer { + HudsonUtilXssSanitizer() { + this.asExpr() + .(MethodAccess) + .getMethod() + // Not including xmlEscape because it only accounts for >, <, and &. + // It does not account for ", or ', which makes it an incomplete XSS sanitizer. + .hasQualifiedName("hudson", "Util", "escape") + } +} diff --git a/java/ql/lib/semmle/code/java/frameworks/jackson/JacksonSerializability.qll b/java/ql/lib/semmle/code/java/frameworks/jackson/JacksonSerializability.qll index 79fd19f4ef2..f1395431a3c 100644 --- a/java/ql/lib/semmle/code/java/frameworks/jackson/JacksonSerializability.qll +++ b/java/ql/lib/semmle/code/java/frameworks/jackson/JacksonSerializability.qll @@ -20,9 +20,6 @@ class JacksonJsonIgnoreAnnotation extends NonReflectiveAnnotation { } } -/** DEPRECATED: Alias for JacksonJsonIgnoreAnnotation */ -deprecated class JacksonJSONIgnoreAnnotation = JacksonJsonIgnoreAnnotation; - /** A type whose values may be serialized using the Jackson JSON framework. */ abstract class JacksonSerializableType extends Type { } diff --git a/java/ql/lib/semmle/code/java/frameworks/javaee/PersistenceXML.qll b/java/ql/lib/semmle/code/java/frameworks/javaee/PersistenceXML.qll index faca537d171..7564dafa37e 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javaee/PersistenceXML.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javaee/PersistenceXML.qll @@ -26,9 +26,6 @@ class PersistenceXmlFile extends XmlFile { } } -/** DEPRECATED: Alias for PersistenceXmlFile */ -deprecated class PersistenceXMLFile = PersistenceXmlFile; - /** The root `persistence` XML element in a `persistence.xml` file. */ class PersistenceXmlRoot extends XmlElement { PersistenceXmlRoot() { diff --git a/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJBJarXML.qll b/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJBJarXML.qll index 9323b3852b4..f44d77d89bd 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJBJarXML.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javaee/ejb/EJBJarXML.qll @@ -35,9 +35,6 @@ class EjbJarXmlFile extends XmlFile { } } -/** DEPRECATED: Alias for EjbJarXmlFile */ -deprecated class EjbJarXMLFile = EjbJarXmlFile; - /** The root `ejb-jar` XML element in an `ejb-jar.xml` file. */ class EjbJarRootElement extends XmlElement { EjbJarRootElement() { diff --git a/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFFacesContextXML.qll b/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFFacesContextXML.qll index f85f36c37a3..13ed765638d 100644 --- a/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFFacesContextXML.qll +++ b/java/ql/lib/semmle/code/java/frameworks/javaee/jsf/JSFFacesContextXML.qll @@ -16,9 +16,6 @@ class FacesConfigXmlFile extends XmlFile { } } -/** DEPRECATED: Alias for FacesConfigXmlFile */ -deprecated class FacesConfigXMLFile = FacesConfigXmlFile; - /** * An XML element in a `FacesConfigXMLFile`. */ @@ -31,9 +28,6 @@ class FacesConfigXmlElement extends XmlElement { string getValue() { result = this.allCharactersString().trim() } } -/** DEPRECATED: Alias for FacesConfigXmlElement */ -deprecated class FacesConfigXMLElement = FacesConfigXmlElement; - /** * An element in a JSF config file that declares a managed bean. */ diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringAutowire.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringAutowire.qll index 1dd6dfd292f..966db95afce 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringAutowire.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringAutowire.qll @@ -100,9 +100,6 @@ class SpringBeanXmlAutowiredSetterMethod extends Method { } } -/** DEPRECATED: Alias for SpringBeanXmlAutowiredSetterMethod */ -deprecated class SpringBeanXMLAutowiredSetterMethod = SpringBeanXmlAutowiredSetterMethod; - /** * A callable that is annotated with `@Autowired`. * diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringCamel.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringCamel.qll index 9bbdaad9687..985565255b6 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringCamel.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringCamel.qll @@ -13,9 +13,6 @@ class SpringCamelXmlElement extends SpringXmlElement { SpringCamelXmlElement() { this.getNamespace().getUri() = "http://camel.apache.org/schema/spring" } } -/** DEPRECATED: Alias for SpringCamelXmlElement */ -deprecated class SpringCamelXMLElement = SpringCamelXmlElement; - /** * An element in a Spring beans file that defines an Apache Camel context. * @@ -25,9 +22,6 @@ class SpringCamelXmlContext extends SpringCamelXmlElement { SpringCamelXmlContext() { this.getName() = "camelContext" } } -/** DEPRECATED: Alias for SpringCamelXmlContext */ -deprecated class SpringCamelXMLContext = SpringCamelXmlContext; - /** * An element in a Spring beans file that defines an Apache Camel route context. * @@ -38,9 +32,6 @@ class SpringCamelXmlRouteContext extends SpringCamelXmlElement { SpringCamelXmlRouteContext() { this.getName() = "routeContext" } } -/** DEPRECATED: Alias for SpringCamelXmlRouteContext */ -deprecated class SpringCamelXMLRouteContext = SpringCamelXmlRouteContext; - /** * An element in a Spring beans files that defines an Apache Camel route. * @@ -58,9 +49,6 @@ class SpringCamelXmlRoute extends SpringCamelXmlElement { } } -/** DEPRECATED: Alias for SpringCamelXmlRoute */ -deprecated class SpringCamelXMLRoute = SpringCamelXmlRoute; - /** * An element in a Spring bean file that is logically contained in an Apache Camel route. */ @@ -71,9 +59,6 @@ class SpringCamelXmlRouteElement extends SpringCamelXmlElement { } } -/** DEPRECATED: Alias for SpringCamelXmlRouteElement */ -deprecated class SpringCamelXMLRouteElement = SpringCamelXmlRouteElement; - /** * A reference to a Spring bean in an Apache Camel route defined in a Spring beans file. * @@ -98,9 +83,6 @@ class SpringCamelXmlBeanRef extends SpringCamelXmlRouteElement { RefType getBeanType() { result.getQualifiedName() = this.getAttribute("beanType").getValue() } } -/** DEPRECATED: Alias for SpringCamelXmlBeanRef */ -deprecated class SpringCamelXMLBeanRef = SpringCamelXmlBeanRef; - /** * A declaration of a target in an Apache Camel route defined in a Spring beans file. * @@ -120,9 +102,6 @@ class SpringCamelXmlToElement extends SpringCamelXmlRouteElement { deprecated string getURI() { result = this.getUri() } } -/** DEPRECATED: Alias for SpringCamelXmlToElement */ -deprecated class SpringCamelXMLToElement = SpringCamelXmlToElement; - /** * A declaration of a Apache Camel "method" expression defined in a Spring beans file. * @@ -147,6 +126,3 @@ class SpringCamelXmlMethodElement extends SpringCamelXmlElement { */ RefType getBeanType() { result.getQualifiedName() = this.getAttribute("beanType").getValue() } } - -/** DEPRECATED: Alias for SpringCamelXmlMethodElement */ -deprecated class SpringCamelXMLMethodElement = SpringCamelXmlMethodElement; diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringComponentScan.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringComponentScan.qll index f3380c45458..d285e9d0e6a 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringComponentScan.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringComponentScan.qll @@ -23,9 +23,6 @@ class SpringXmlComponentScan extends SpringXmlElement { string getAProfileExpr() { result = this.getSpringBeanFile().getAProfileExpr() } } -/** DEPRECATED: Alias for SpringXmlComponentScan */ -deprecated class SpringXMLComponentScan = SpringXmlComponentScan; - /** * An annotation of a class that configures which packages are considered to be "base" packages * when performing the Spring component scan. diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringFlex.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringFlex.qll index 0d18749a63e..af0afa91f4c 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringFlex.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringFlex.qll @@ -57,11 +57,6 @@ class SpringRemotingDestinationClass extends Class { */ SpringRemotingDestination getRemotingDestinationXml() { this = result.getSpringBean().getClass() } - /** DEPRECATED: Alias for getRemotingDestinationXml */ - deprecated SpringRemotingDestination getRemotingDestinationXML() { - result = this.getRemotingDestinationXml() - } - /** * Holds if the class is operating on an "include" or "exclude" basis. * diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringXMLElement.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringXMLElement.qll index efc7dfdaaf2..312cd659b39 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringXMLElement.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringXMLElement.qll @@ -37,6 +37,3 @@ class SpringXmlElement extends XmlElement { string getContentString() { result = this.allCharactersString() } } - -/** DEPRECATED: Alias for SpringXmlElement */ -deprecated class SpringXMLElement = SpringXmlElement; diff --git a/java/ql/lib/semmle/code/java/frameworks/stapler/Stapler.qll b/java/ql/lib/semmle/code/java/frameworks/stapler/Stapler.qll new file mode 100644 index 00000000000..f17090ed307 --- /dev/null +++ b/java/ql/lib/semmle/code/java/frameworks/stapler/Stapler.qll @@ -0,0 +1,124 @@ +/** Provides classes and predicates related to the Stapler framework. */ + +import java +private import semmle.code.java.dataflow.DataFlow +private import semmle.code.java.dataflow.FlowSources +private import semmle.code.java.dataflow.FlowSteps +private import semmle.code.java.dataflow.TypeFlow +private import semmle.code.java.frameworks.hudson.Hudson +private import semmle.code.java.frameworks.JavaxAnnotations + +/** + * A callable annotated with a Stapler `DataBound` annotation, + * or that has the `@stapler-constructor` Javadoc annotation. + */ +class DataBoundAnnotated extends Callable { + DataBoundAnnotated() { + exists(Annotation an | + an.getType() + .hasQualifiedName("org.kohsuke.stapler", ["DataBoundConstructor", "DataBoundSetter"]) + | + this = an.getAnnotatedElement() + ) + or + exists(Javadoc doc | doc.getAChild().getText().matches("%@stapler-constructor%") | + doc.getCommentedElement() = this + ) + } +} + +/** The interface `org.kohsuke.stapler.HttpResponse`. */ +class HttpResponse extends Interface { + HttpResponse() { this.hasQualifiedName("org.kohsuke.stapler", "HttpResponse") } +} + +/** + * A remote flow source for parameters annotated with an annotation + * that is itself annotated with `InjectedParameter`. + * + * Such parameters are populated with user-provided data by Stapler. + */ +private class InjectedParameterSource extends RemoteFlowSource { + InjectedParameterSource() { + this.asParameter().getAnAnnotation().getType() instanceof InjectedParameterAnnotatedType + } + + override string getSourceType() { result = "Stapler injected parameter" } +} + +/** + * A dataflow step from the `HttpResponse` return value of a `HudsonWebMethod` + * to the instance parameter of the `generateResponse` method of the appropriate subtype of `HttpResponse`. + * + * This models the rendering process of an `HttpResponse` by Stapler. + */ +private class HttpResponseGetDescriptionStep extends AdditionalValueStep { + override predicate step(DataFlow::Node n1, DataFlow::Node n2) { + exists(ReturnStmt s, GenerateResponseMethod m | + s.getEnclosingCallable() instanceof HudsonWebMethod and + boundOrStaticType(s.getResult(), m.getDeclaringType().getADescendant()) + | + n1.asExpr() = s.getResult() and + n2.(DataFlow::InstanceParameterNode).getCallable() = m + ) + } +} + +/** + * A dataflow step from the post-update node of an instance access in a `DataBoundAnnotated` method + * to the instance parameter of a `PostConstruct` method of the same type. + * + * This models the construction process of a `DataBound` object in Stapler. + */ +private class PostConstructDataBoundAdditionalStep extends AdditionalValueStep { + override predicate step(DataFlow::Node n1, DataFlow::Node n2) { + exists(PostConstructDataBoundMethod postConstruct, DataBoundAnnotated input | + postConstruct.getDeclaringType() = input.getDeclaringType() + | + n1.(DataFlow::PostUpdateNode) + .getPreUpdateNode() + .(DataFlow::InstanceAccessNode) + .getEnclosingCallable() = input and + n2.(DataFlow::InstanceParameterNode).getCallable() = postConstruct + ) + } +} + +/** An annotation type annotated with the `InjectedParameter` annotation. */ +private class InjectedParameterAnnotatedType extends AnnotationType { + InjectedParameterAnnotatedType() { + this.getAnAnnotation().getType().hasQualifiedName("org.kohsuke.stapler", "InjectedParameter") + } +} + +/** The `generateResponse` method of `org.kohsuke.stapler.HttpResponse` or its subtypes. */ +private class GenerateResponseMethod extends Method { + GenerateResponseMethod() { + this.getDeclaringType().getASourceSupertype*() instanceof HttpResponse and + this.hasName("generateResponse") + } +} + +/** Holds if `t` is the static type of `e`, or an upper bound of the runtime type of `e`. */ +private predicate boundOrStaticType(Expr e, RefType t) { + exprTypeFlow(e, t, false) + or + t = e.getType() +} + +/** + * A method called after the construction of a `DataBound` object. + * + * That is, either the `bindResolve` method of a subtype of `org.kohsuke.stapler.DataBoundResolvable`, + * or a method annotated with `javax.annotation.PostConstruct`. + */ +private class PostConstructDataBoundMethod extends Method { + PostConstructDataBoundMethod() { + this.getDeclaringType() + .getASourceSupertype*() + .hasQualifiedName("org.kohsuke.stapler", "DataBoundResolvable") and + this.hasName("bindResolve") + or + this.getAnAnnotation() instanceof PostConstructAnnotation + } +} diff --git a/java/ql/lib/semmle/code/java/frameworks/struts/StrutsConventions.qll b/java/ql/lib/semmle/code/java/frameworks/struts/StrutsConventions.qll index fd9f14d4c6f..b3adfa8d80e 100644 --- a/java/ql/lib/semmle/code/java/frameworks/struts/StrutsConventions.qll +++ b/java/ql/lib/semmle/code/java/frameworks/struts/StrutsConventions.qll @@ -77,9 +77,6 @@ StrutsXmlFile getRootXmlFile(RefType refType) { ) } -/** DEPRECATED: Alias for getRootXmlFile */ -deprecated StrutsXMLFile getRootXMLFile(RefType refType) { result = getRootXmlFile(refType) } - /** * Gets the suffix used for automatically identifying actions when using the convention plugin. * diff --git a/java/ql/lib/semmle/code/java/frameworks/struts/StrutsXML.qll b/java/ql/lib/semmle/code/java/frameworks/struts/StrutsXML.qll index 3009056cce3..273034978d1 100644 --- a/java/ql/lib/semmle/code/java/frameworks/struts/StrutsXML.qll +++ b/java/ql/lib/semmle/code/java/frameworks/struts/StrutsXML.qll @@ -5,9 +5,6 @@ import java */ predicate isStrutsXmlIncluded() { exists(StrutsXmlFile strutsXml) } -/** DEPRECATED: Alias for isStrutsXmlIncluded */ -deprecated predicate isStrutsXMLIncluded = isStrutsXmlIncluded/0; - /** * A struts 2 configuration file. */ @@ -51,9 +48,6 @@ abstract class StrutsXmlFile extends XmlFile { } } -/** DEPRECATED: Alias for StrutsXmlFile */ -deprecated class StrutsXMLFile = StrutsXmlFile; - /** * A Struts 2 "root" configuration XML file directly read by struts. * @@ -66,9 +60,6 @@ class StrutsRootXmlFile extends StrutsXmlFile { } } -/** DEPRECATED: Alias for StrutsRootXmlFile */ -deprecated class StrutsRootXMLFile = StrutsRootXmlFile; - /** * A Struts 2 configuration XML file included, directly or indirectly, by a root Struts configuration. */ @@ -76,9 +67,6 @@ class StrutsIncludedXmlFile extends StrutsXmlFile { StrutsIncludedXmlFile() { exists(StrutsXmlInclude include | this = include.getIncludedFile()) } } -/** DEPRECATED: Alias for StrutsIncludedXmlFile */ -deprecated class StrutsIncludedXMLFile = StrutsIncludedXmlFile; - /** * A Folder which has one or more Struts 2 root configurations. */ @@ -116,9 +104,6 @@ class StrutsXmlElement extends XmlElement { string getValue() { result = this.allCharactersString().trim() } } -/** DEPRECATED: Alias for StrutsXmlElement */ -deprecated class StrutsXMLElement = StrutsXmlElement; - /** * A `` element within a `struts.xml` file. * @@ -141,9 +126,6 @@ class StrutsXmlInclude extends StrutsXmlElement { } } -/** DEPRECATED: Alias for StrutsXmlInclude */ -deprecated class StrutsXMLInclude = StrutsXmlInclude; - /** * Escape a string for use as the matcher in a string.match(..) call. */ @@ -192,9 +174,6 @@ class StrutsXmlAction extends StrutsXmlElement { } } -/** DEPRECATED: Alias for StrutsXmlAction */ -deprecated class StrutsXMLAction = StrutsXmlAction; - /** * A `` property, representing a configuration parameter to struts. */ @@ -205,6 +184,3 @@ class StrutsXmlConstant extends StrutsXmlElement { string getConstantValue() { result = this.getAttribute("value").getValue() } } - -/** DEPRECATED: Alias for StrutsXmlConstant */ -deprecated class StrutsXMLConstant = StrutsXmlConstant; diff --git a/java/ql/lib/semmle/code/java/security/AndroidIntentRedirection.qll b/java/ql/lib/semmle/code/java/security/AndroidIntentRedirection.qll index 993c2941733..ef5f84001f0 100644 --- a/java/ql/lib/semmle/code/java/security/AndroidIntentRedirection.qll +++ b/java/ql/lib/semmle/code/java/security/AndroidIntentRedirection.qll @@ -30,7 +30,7 @@ class IntentRedirectionAdditionalTaintStep extends Unit { /** Default sink for Intent redirection vulnerabilities. */ private class DefaultIntentRedirectionSink extends IntentRedirectionSink { - DefaultIntentRedirectionSink() { sinkNode(this, "intent-start") } + DefaultIntentRedirectionSink() { sinkNode(this, "intent-redirection") } } /** diff --git a/java/ql/lib/semmle/code/java/security/CleartextStorageAndroidFilesystemQuery.qll b/java/ql/lib/semmle/code/java/security/CleartextStorageAndroidFilesystemQuery.qll index 2641a3ab0df..d7097f1ecf2 100644 --- a/java/ql/lib/semmle/code/java/security/CleartextStorageAndroidFilesystemQuery.qll +++ b/java/ql/lib/semmle/code/java/security/CleartextStorageAndroidFilesystemQuery.qll @@ -20,7 +20,7 @@ private class AndroidFilesystemCleartextStorageSink extends CleartextStorageSink /** A call to a method or constructor that may write to files to the local filesystem. */ class LocalFileOpenCall extends Storable { LocalFileOpenCall() { - this = any(DataFlow::Node sink | sinkNode(sink, "create-file")).asExpr().(Argument).getCall() + this = any(DataFlow::Node sink | sinkNode(sink, "path-injection")).asExpr().(Argument).getCall() } override Expr getAnInput() { @@ -40,7 +40,7 @@ class LocalFileOpenCall extends Storable { /** Holds if `input` is written into `file`. */ private predicate filesystemInput(DataFlow::Node file, Argument input) { - exists(DataFlow::Node write | sinkNode(write, "write-file") | + exists(DataFlow::Node write | sinkNode(write, "file-content-store") | input = write.asExpr() or isVarargs(input, write) ) and diff --git a/java/ql/lib/semmle/code/java/security/Encryption.qll b/java/ql/lib/semmle/code/java/security/Encryption.qll index c0c35103331..88a1996ffd9 100644 --- a/java/ql/lib/semmle/code/java/security/Encryption.qll +++ b/java/ql/lib/semmle/code/java/security/Encryption.qll @@ -25,9 +25,6 @@ class HttpsUrlConnection extends RefType { HttpsUrlConnection() { this.hasQualifiedName("javax.net.ssl", "HttpsURLConnection") } } -/** DEPRECATED: Alias for HttpsUrlConnection */ -deprecated class HttpsURLConnection = HttpsUrlConnection; - class SslSocketFactory extends RefType { SslSocketFactory() { this.hasQualifiedName("javax.net.ssl", "SSLSocketFactory") } } diff --git a/java/ql/lib/semmle/code/java/security/ExternalAPIs.qll b/java/ql/lib/semmle/code/java/security/ExternalAPIs.qll index 89b24006475..beef024eb15 100644 --- a/java/ql/lib/semmle/code/java/security/ExternalAPIs.qll +++ b/java/ql/lib/semmle/code/java/security/ExternalAPIs.qll @@ -12,9 +12,6 @@ import semmle.code.java.dataflow.TaintTracking */ abstract class SafeExternalApiMethod extends Method { } -/** DEPRECATED: Alias for SafeExternalApiMethod */ -deprecated class SafeExternalAPIMethod = SafeExternalApiMethod; - /** The default set of "safe" external APIs. */ private class DefaultSafeExternalApiMethod extends SafeExternalApiMethod { DefaultSafeExternalApiMethod() { @@ -95,9 +92,6 @@ class ExternalApiDataNode extends DataFlow::Node { string getMethodDescription() { result = this.getMethod().getQualifiedName() } } -/** DEPRECATED: Alias for ExternalApiDataNode */ -deprecated class ExternalAPIDataNode = ExternalApiDataNode; - /** * DEPRECATED: Use `UntrustedDataToExternalApiFlow` instead. * @@ -125,9 +119,6 @@ module UntrustedDataToExternalApiConfig implements DataFlow::ConfigSig { */ module UntrustedDataToExternalApiFlow = TaintTracking::Global; -/** DEPRECATED: Alias for UntrustedDataToExternalApiConfig */ -deprecated class UntrustedDataToExternalAPIConfig = UntrustedDataToExternalApiConfig; - /** A node representing untrusted data being passed to an external API. */ class UntrustedExternalApiDataNode extends ExternalApiDataNode { UntrustedExternalApiDataNode() { UntrustedDataToExternalApiFlow::flowTo(this) } @@ -136,9 +127,6 @@ class UntrustedExternalApiDataNode extends ExternalApiDataNode { DataFlow::Node getAnUntrustedSource() { UntrustedDataToExternalApiFlow::flow(result, this) } } -/** DEPRECATED: Alias for UntrustedExternalApiDataNode */ -deprecated class UntrustedExternalAPIDataNode = UntrustedExternalApiDataNode; - /** An external API which is used with untrusted data. */ private newtype TExternalApi = /** An untrusted API method `m` where untrusted data is passed at `index`. */ @@ -172,6 +160,3 @@ class ExternalApiUsedWithUntrustedData extends TExternalApi { ) } } - -/** DEPRECATED: Alias for ExternalApiUsedWithUntrustedData */ -deprecated class ExternalAPIUsedWithUntrustedData = ExternalApiUsedWithUntrustedData; diff --git a/java/ql/lib/semmle/code/java/security/GroovyInjection.qll b/java/ql/lib/semmle/code/java/security/GroovyInjection.qll index 54ea8afce91..b4fe2fd5e84 100644 --- a/java/ql/lib/semmle/code/java/security/GroovyInjection.qll +++ b/java/ql/lib/semmle/code/java/security/GroovyInjection.qll @@ -21,7 +21,7 @@ class GroovyInjectionAdditionalTaintStep extends Unit { } private class DefaultGroovyInjectionSink extends GroovyInjectionSink { - DefaultGroovyInjectionSink() { sinkNode(this, "groovy") } + DefaultGroovyInjectionSink() { sinkNode(this, "groovy-injection") } } /** A set of additional taint steps to consider when taint tracking Groovy related data flows. */ diff --git a/java/ql/lib/semmle/code/java/security/HttpsUrls.qll b/java/ql/lib/semmle/code/java/security/HttpsUrls.qll index a2b144a3833..07435889fd9 100644 --- a/java/ql/lib/semmle/code/java/security/HttpsUrls.qll +++ b/java/ql/lib/semmle/code/java/security/HttpsUrls.qll @@ -30,7 +30,8 @@ class HttpStringLiteral extends StringLiteral { abstract class UrlOpenSink extends DataFlow::Node { } private class DefaultUrlOpenSink extends UrlOpenSink { - DefaultUrlOpenSink() { sinkNode(this, "open-url") } + // request-forgery sinks control the URL of a request + DefaultUrlOpenSink() { sinkNode(this, "request-forgery") } } /** diff --git a/java/ql/lib/semmle/code/java/security/ImplicitPendingIntents.qll b/java/ql/lib/semmle/code/java/security/ImplicitPendingIntents.qll index 308b8037554..41985affc0e 100644 --- a/java/ql/lib/semmle/code/java/security/ImplicitPendingIntents.qll +++ b/java/ql/lib/semmle/code/java/security/ImplicitPendingIntents.qll @@ -54,7 +54,8 @@ private class IntentCreationSource extends ImplicitPendingIntentSource { private class SendPendingIntent extends ImplicitPendingIntentSink { SendPendingIntent() { - sinkNode(this, "intent-start") and + // intent redirection sinks are method calls that start Android components + sinkNode(this, "intent-redirection") and // implicit intents can't be started as services since API 21 not exists(MethodAccess ma, Method m | ma.getMethod() = m and @@ -63,7 +64,7 @@ private class SendPendingIntent extends ImplicitPendingIntentSink { this.asExpr() = ma.getArgument(0) ) or - sinkNode(this, "pending-intent-sent") + sinkNode(this, "pending-intents") } override predicate hasState(DataFlow::FlowState state) { state = "MutablePendingIntent" } diff --git a/java/ql/lib/semmle/code/java/security/JexlInjectionQuery.qll b/java/ql/lib/semmle/code/java/security/JexlInjectionQuery.qll index 4138b851e85..dd877720495 100644 --- a/java/ql/lib/semmle/code/java/security/JexlInjectionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/JexlInjectionQuery.qll @@ -13,7 +13,7 @@ abstract class JexlEvaluationSink extends DataFlow::ExprNode { } /** Default sink for JXEL injection vulnerabilities. */ private class DefaultJexlEvaluationSink extends JexlEvaluationSink { - DefaultJexlEvaluationSink() { sinkNode(this, "jexl") } + DefaultJexlEvaluationSink() { sinkNode(this, "jexl-injection") } } /** diff --git a/java/ql/lib/semmle/code/java/security/LdapInjection.qll b/java/ql/lib/semmle/code/java/security/LdapInjection.qll index d78bd2f7ae1..0e2a35c764e 100644 --- a/java/ql/lib/semmle/code/java/security/LdapInjection.qll +++ b/java/ql/lib/semmle/code/java/security/LdapInjection.qll @@ -29,7 +29,7 @@ class LdapInjectionAdditionalTaintStep extends Unit { /** Default sink for LDAP injection vulnerabilities. */ private class DefaultLdapInjectionSink extends LdapInjectionSink { - DefaultLdapInjectionSink() { sinkNode(this, "ldap") } + DefaultLdapInjectionSink() { sinkNode(this, "ldap-injection") } } /** A sanitizer that clears the taint on (boxed) primitive types. */ diff --git a/java/ql/lib/semmle/code/java/security/LogInjection.qll b/java/ql/lib/semmle/code/java/security/LogInjection.qll index e60e6ed9a7f..7fb85f6d8f1 100644 --- a/java/ql/lib/semmle/code/java/security/LogInjection.qll +++ b/java/ql/lib/semmle/code/java/security/LogInjection.qll @@ -27,7 +27,7 @@ class LogInjectionAdditionalTaintStep extends Unit { } private class DefaultLogInjectionSink extends LogInjectionSink { - DefaultLogInjectionSink() { sinkNode(this, "logging") } + DefaultLogInjectionSink() { sinkNode(this, "log-injection") } } private class DefaultLogInjectionSanitizer extends LogInjectionSanitizer { @@ -46,16 +46,33 @@ private class LineBreaksLogInjectionSanitizer extends LogInjectionSanitizer { } } +private predicate stringMethodAccess( + MethodAccess ma, CompileTimeConstantExpr arg0, CompileTimeConstantExpr arg1 +) { + ma.getMethod().getDeclaringType() instanceof TypeString and + arg0 = ma.getArgument(0) and + arg1 = ma.getArgument(1) +} + +private predicate stringMethodArgument(CompileTimeConstantExpr arg) { + stringMethodAccess(_, arg, _) or stringMethodAccess(_, _, arg) +} + +bindingset[match] +pragma[inline_late] +private predicate stringMethodArgumentValueMatches(CompileTimeConstantExpr const, string match) { + stringMethodArgument(const) and + const.getStringValue().matches(match) +} + /** * Holds if the return value of `ma` is sanitized against log injection attacks * by removing line breaks from it. */ private predicate logInjectionSanitizer(MethodAccess ma) { exists(CompileTimeConstantExpr target, CompileTimeConstantExpr replacement | - ma.getMethod().getDeclaringType() instanceof TypeString and - target = ma.getArgument(0) and - replacement = ma.getArgument(1) and - not replacement.getStringValue().matches(["%\n%", "%\r%"]) + stringMethodAccess(ma, target, replacement) and + not stringMethodArgumentValueMatches(replacement, ["%\n%", "%\r%"]) | ma.getMethod().hasName("replace") and not replacement.getIntValue() = [10, 13] and @@ -68,7 +85,7 @@ private predicate logInjectionSanitizer(MethodAccess ma) { ( // Replace anything not in an allow list target.getStringValue().matches("[^%]") and - not target.getStringValue().matches("%" + ["\n", "\r", "\\n", "\\r", "\\R"] + "%") + not stringMethodArgumentValueMatches(target, "%" + ["\n", "\r", "\\n", "\\r", "\\R"] + "%") or // Replace line breaks target.getStringValue() = ["\n", "\r", "\\n", "\\r", "\\R"] diff --git a/java/ql/lib/semmle/code/java/security/MvelInjection.qll b/java/ql/lib/semmle/code/java/security/MvelInjection.qll index a0ada3d91a1..803c6ad0cf9 100644 --- a/java/ql/lib/semmle/code/java/security/MvelInjection.qll +++ b/java/ql/lib/semmle/code/java/security/MvelInjection.qll @@ -25,7 +25,7 @@ class MvelInjectionAdditionalTaintStep extends Unit { /** Default sink for MVEL injection vulnerabilities. */ private class DefaultMvelEvaluationSink extends MvelEvaluationSink { - DefaultMvelEvaluationSink() { sinkNode(this, "mvel") } + DefaultMvelEvaluationSink() { sinkNode(this, "mvel-injection") } } /** A default sanitizer that considers numeric and boolean typed data safe for building MVEL expressions */ diff --git a/java/ql/lib/semmle/code/java/security/QueryInjection.qll b/java/ql/lib/semmle/code/java/security/QueryInjection.qll index fda91647bcd..217d80bf170 100644 --- a/java/ql/lib/semmle/code/java/security/QueryInjection.qll +++ b/java/ql/lib/semmle/code/java/security/QueryInjection.qll @@ -25,7 +25,7 @@ class AdditionalQueryInjectionTaintStep extends Unit { /** A sink for SQL injection vulnerabilities. */ private class SqlInjectionSink extends QueryInjectionSink { - SqlInjectionSink() { sinkNode(this, "sql") } + SqlInjectionSink() { sinkNode(this, "sql-injection") } } /** A sink for Java Persistence Query Language injection vulnerabilities. */ diff --git a/java/ql/lib/semmle/code/java/security/RequestForgery.qll b/java/ql/lib/semmle/code/java/security/RequestForgery.qll index f9b98490dfa..0eeea1c2afd 100644 --- a/java/ql/lib/semmle/code/java/security/RequestForgery.qll +++ b/java/ql/lib/semmle/code/java/security/RequestForgery.qll @@ -52,12 +52,8 @@ private class TypePropertiesRequestForgeryAdditionalTaintStep extends RequestFor /** A data flow sink for server-side request forgery (SSRF) vulnerabilities. */ abstract class RequestForgerySink extends DataFlow::Node { } -private class UrlOpenSinkAsRequestForgerySink extends RequestForgerySink { - UrlOpenSinkAsRequestForgerySink() { sinkNode(this, "open-url") } -} - -private class JdbcUrlSinkAsRequestForgerySink extends RequestForgerySink { - JdbcUrlSinkAsRequestForgerySink() { sinkNode(this, "jdbc-url") } +private class DefaultRequestForgerySink extends RequestForgerySink { + DefaultRequestForgerySink() { sinkNode(this, "request-forgery") } } /** A sanitizer for request forgery vulnerabilities. */ diff --git a/java/ql/lib/semmle/code/java/security/ResponseSplitting.qll b/java/ql/lib/semmle/code/java/security/ResponseSplitting.qll index 916b6df4372..2e2033443a5 100644 --- a/java/ql/lib/semmle/code/java/security/ResponseSplitting.qll +++ b/java/ql/lib/semmle/code/java/security/ResponseSplitting.qll @@ -11,7 +11,7 @@ private import semmle.code.java.dataflow.ExternalFlow abstract class HeaderSplittingSink extends DataFlow::Node { } private class DefaultHeaderSplittingSink extends HeaderSplittingSink { - DefaultHeaderSplittingSink() { sinkNode(this, "header-splitting") } + DefaultHeaderSplittingSink() { sinkNode(this, "response-splitting") } } /** A source that introduces data considered safe to use by a header splitting source. */ diff --git a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll index d9ed2b970b0..eb40a045c1f 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll @@ -5,7 +5,6 @@ private import semmle.code.java.dataflow.ExternalFlow import semmle.code.java.dataflow.TaintTracking import semmle.code.java.security.SensitiveActions import semmle.code.java.frameworks.android.Compose -import DataFlow /** A variable that may hold sensitive information, judging by its name. */ class CredentialExpr extends Expr { @@ -35,7 +34,7 @@ deprecated class SensitiveLoggerConfiguration extends TaintTracking::Configurati override predicate isSource(DataFlow::Node source) { source.asExpr() instanceof CredentialExpr } - override predicate isSink(DataFlow::Node sink) { sinkNode(sink, "logging") } + override predicate isSink(DataFlow::Node sink) { sinkNode(sink, "log-injection") } override predicate isSanitizer(DataFlow::Node sanitizer) { sanitizer.asExpr() instanceof LiveLiteral or @@ -45,14 +44,14 @@ deprecated class SensitiveLoggerConfiguration extends TaintTracking::Configurati sanitizer.getType() instanceof TypeType } - override predicate isSanitizerIn(Node node) { this.isSource(node) } + override predicate isSanitizerIn(DataFlow::Node node) { this.isSource(node) } } /** A data-flow configuration for identifying potentially-sensitive data flowing to a log output. */ module SensitiveLoggerConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source.asExpr() instanceof CredentialExpr } - predicate isSink(DataFlow::Node sink) { sinkNode(sink, "logging") } + predicate isSink(DataFlow::Node sink) { sinkNode(sink, "log-injection") } predicate isBarrier(DataFlow::Node sanitizer) { sanitizer.asExpr() instanceof LiveLiteral or @@ -62,7 +61,7 @@ module SensitiveLoggerConfig implements DataFlow::ConfigSig { sanitizer.getType() instanceof TypeType } - predicate isBarrierIn(Node node) { isSource(node) } + predicate isBarrierIn(DataFlow::Node node) { isSource(node) } } module SensitiveLoggerFlow = TaintTracking::Global; diff --git a/java/ql/lib/semmle/code/java/security/TaintedPathQuery.qll b/java/ql/lib/semmle/code/java/security/TaintedPathQuery.qll index 27a54d0ecfa..a90a23c2165 100644 --- a/java/ql/lib/semmle/code/java/security/TaintedPathQuery.qll +++ b/java/ql/lib/semmle/code/java/security/TaintedPathQuery.qll @@ -5,7 +5,6 @@ import semmle.code.java.frameworks.Networking import semmle.code.java.dataflow.DataFlow import semmle.code.java.dataflow.FlowSources private import semmle.code.java.dataflow.ExternalFlow -import semmle.code.java.security.PathCreation import semmle.code.java.security.PathSanitizer /** @@ -55,11 +54,7 @@ private class TaintPreservingUriCtorParam extends Parameter { module TaintedPathConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - predicate isSink(DataFlow::Node sink) { - sink.asExpr() = any(PathCreation p).getAnInput() - or - sinkNode(sink, ["create-file", "read-file"]) - } + predicate isSink(DataFlow::Node sink) { sinkNode(sink, "path-injection") } predicate isBarrier(DataFlow::Node sanitizer) { sanitizer.getType() instanceof BoxedType or @@ -82,11 +77,7 @@ module TaintedPathFlow = TaintTracking::Global; module TaintedPathLocalConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof LocalUserInput } - predicate isSink(DataFlow::Node sink) { - sink.asExpr() = any(PathCreation p).getAnInput() - or - sinkNode(sink, "create-file") - } + predicate isSink(DataFlow::Node sink) { sinkNode(sink, "path-injection") } predicate isBarrier(DataFlow::Node sanitizer) { sanitizer.getType() instanceof BoxedType or diff --git a/java/ql/lib/semmle/code/java/security/TemplateInjection.qll b/java/ql/lib/semmle/code/java/security/TemplateInjection.qll index b8625556c7a..bd568355886 100644 --- a/java/ql/lib/semmle/code/java/security/TemplateInjection.qll +++ b/java/ql/lib/semmle/code/java/security/TemplateInjection.qll @@ -66,7 +66,7 @@ private class DefaultTemplateInjectionSource extends TemplateInjectionSource ins { } private class DefaultTemplateInjectionSink extends TemplateInjectionSink { - DefaultTemplateInjectionSink() { sinkNode(this, "ssti") } + DefaultTemplateInjectionSink() { sinkNode(this, "template-injection") } } private class DefaultTemplateInjectionSanitizer extends TemplateInjectionSanitizer { diff --git a/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll b/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll index 7e995e5cbaf..550b778d8db 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeDeserializationQuery.qll @@ -28,6 +28,20 @@ private class ObjectInputStreamReadObjectMethod extends Method { } } +/** + * A type extending `ObjectInputStream` that makes it safe to deserialize untrusted data. + * + * * See https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/serialization/ValidatingObjectInputStream.html + * * See https://github.com/ikkisoft/SerialKiller + */ +private class SafeObjectInputStreamType extends RefType { + SafeObjectInputStreamType() { + this.getASourceSupertype*() + .hasQualifiedName("org.apache.commons.io.serialization", "ValidatingObjectInputStream") or + this.getASourceSupertype*().hasQualifiedName("org.nibblesec.tools", "SerialKiller") + } +} + private class XmlDecoderReadObjectMethod extends Method { XmlDecoderReadObjectMethod() { this.getDeclaringType().hasQualifiedName("java.beans", "XMLDecoder") and @@ -135,9 +149,7 @@ predicate unsafeDeserialization(MethodAccess ma, Expr sink) { sink = ma.getQualifier() and not exists(DataFlow::ExprNode node | node.getExpr() = sink and - node.getTypeBound() - .(RefType) - .hasQualifiedName("org.apache.commons.io.serialization", "ValidatingObjectInputStream") + node.getTypeBound() instanceof SafeObjectInputStreamType ) or m instanceof XmlDecoderReadObjectMethod and diff --git a/java/ql/lib/semmle/code/java/security/UnsafeHostnameVerificationQuery.qll b/java/ql/lib/semmle/code/java/security/UnsafeHostnameVerificationQuery.qll index 1fc60e3494e..1b44121591c 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeHostnameVerificationQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeHostnameVerificationQuery.qll @@ -74,7 +74,7 @@ module TrustAllHostnameVerifierFlow = DataFlow::Global; * A sink that represents a file creation, such as a file write, copy or move operation. */ private class FileCreationSink extends DataFlow::Node { - FileCreationSink() { sinkNode(this, "create-file") } + FileCreationSink() { + sinkNode(this, "path-injection") and + not isPathCreation(this) + } +} + +/** + * Holds if `sink` is a path creation node that doesn't imply a read/write filesystem operation. + * This is to avoid creating new spurious alerts, since `PathCreation` sinks weren't + * previously part of this query. + */ +private predicate isPathCreation(DataFlow::Node sink) { + exists(PathCreation pc | + pc.getAnInput() = sink.asExpr() + or + pc.getAnInput().(Argument).isVararg() and sink.(DataFlow::ImplicitVarargsArray).getCall() = pc + | + // exclude actual read/write operations included in `PathCreation` + not pc.(Call) + .getCallee() + .getDeclaringType() + .hasQualifiedName("java.io", + ["FileInputStream", "FileOutputStream", "FileReader", "FileWriter"]) + ) } diff --git a/java/ql/lib/semmle/code/xml/WebXML.qll b/java/ql/lib/semmle/code/xml/WebXML.qll index c15793b58a4..c356081c95f 100644 --- a/java/ql/lib/semmle/code/xml/WebXML.qll +++ b/java/ql/lib/semmle/code/xml/WebXML.qll @@ -5,9 +5,6 @@ import java */ predicate isWebXmlIncluded() { exists(WebXmlFile webXml) } -/** DEPRECATED: Alias for isWebXmlIncluded */ -deprecated predicate isWebXMLIncluded = isWebXmlIncluded/0; - /** * A deployment descriptor file, typically called `web.xml`. */ @@ -31,9 +28,6 @@ class WebXmlFile extends XmlFile { } } -/** DEPRECATED: Alias for WebXmlFile */ -deprecated class WebXMLFile = WebXmlFile; - /** * An XML element in a `WebXMLFile`. */ @@ -46,9 +40,6 @@ class WebXmlElement extends XmlElement { string getValue() { result = this.allCharactersString().trim() } } -/** DEPRECATED: Alias for WebXmlElement */ -deprecated class WebXMLElement = WebXmlElement; - /** * A `` element in a `web.xml` file. */ diff --git a/java/ql/lib/upgrades/7cbc85b1f3ecda39661ad4806dedbd0973d2c4c0/old.dbscheme b/java/ql/lib/upgrades/7cbc85b1f3ecda39661ad4806dedbd0973d2c4c0/old.dbscheme new file mode 100644 index 00000000000..7cbc85b1f3e --- /dev/null +++ b/java/ql/lib/upgrades/7cbc85b1f3ecda39661ad4806dedbd0973d2c4c0/old.dbscheme @@ -0,0 +1,1255 @@ +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * javac A.java B.java C.java + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * javac A.java B.java C.java + */ + unique int id : @compilation, + int kind: int ref, + string cwd : string ref, + string name : string ref +); + +case @compilation.kind of + 1 = @javacompilation +| 2 = @kotlincompilation +; + +compilation_started( + int id : @compilation ref +) + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--javac-args` + * 2 | A.java + * 3 | B.java + * 4 | C.java + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@@@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | A.java + * 1 | B.java + * 2 | C.java + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * For each file recorded in `compilation_compiling_files`, + * there will be a corresponding row in + * `compilation_compiling_files_completed` once extraction + * of that file is complete. The `result` will indicate the + * extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +#keyset[id, num] +compilation_compiling_files_completed( + int id : @compilation ref, + int num : int ref, + int result : int ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * The `cpu_seconds` and `elapsed_seconds` are the CPU time and elapsed + * time (respectively) that the original compilation (not the extraction) + * took for compiler invocation `id`. + */ +compilation_compiler_times( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + * The `result` will indicate the extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref, + int result : int ref +); + +diagnostics( + unique int id: @diagnostic, + string generated_by: string ref, // TODO: Sync this with the other languages? + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/* + * External artifacts + */ + +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +snapshotDate( + unique date snapshotDate : date ref +); + +sourceLocationPrefix( + string prefix : string ref +); + +/* + * Duplicate code + */ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string relativePath : string ref, + int equivClass : int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref +); + +/* + * SMAP + */ + +smap_header( + int outputFileId: @file ref, + string outputFilename: string ref, + string defaultStratum: string ref +); + +smap_files( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + string inputFileName: string ref, + int inputFileId: @file ref +); + +smap_lines( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + int inputStartLine: int ref, + int inputLineCount: int ref, + int outputStartLine: int ref, + int outputLineIncrement: int ref +); + +/* + * Locations and files + */ + +@location = @location_default ; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +hasLocation( + int locatableid: @locatable ref, + int id: @location ref +); + +@sourceline = @locatable ; + +#keyset[element_id] +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/* + * Java + */ + +cupackage( + unique int id: @file ref, + int packageid: @package ref +); + +#keyset[fileid,keyName] +jarManifestMain( + int fileid: @file ref, + string keyName: string ref, + string value: string ref +); + +#keyset[fileid,entryName,keyName] +jarManifestEntries( + int fileid: @file ref, + string entryName: string ref, + string keyName: string ref, + string value: string ref +); + +packages( + unique int id: @package, + string nodeName: string ref +); + +primitives( + unique int id: @primitive, + string nodeName: string ref +); + +modifiers( + unique int id: @modifier, + string nodeName: string ref +); + +/** + * An errortype is used when the extractor is unable to extract a type + * correctly for some reason. + */ +error_type( + unique int id: @errortype +); + +classes_or_interfaces( + unique int id: @classorinterface, + string nodeName: string ref, + int parentid: @package ref, + int sourceid: @classorinterface ref +); + +file_class( + int id: @classorinterface ref +); + +class_object( + unique int id: @classorinterface ref, + unique int instance: @field ref +); + +type_companion_object( + unique int id: @classorinterface ref, + unique int instance: @field ref, + unique int companion_object: @classorinterface ref +); + +kt_nullable_types( + unique int id: @kt_nullable_type, + int classid: @reftype ref +) + +kt_notnull_types( + unique int id: @kt_notnull_type, + int classid: @reftype ref +) + +kt_type_alias( + unique int id: @kt_type_alias, + string name: string ref, + int kttypeid: @kt_type ref +) + +@kt_type = @kt_nullable_type | @kt_notnull_type + +isInterface( + unique int id: @classorinterface ref +); + +isRecord( + unique int id: @classorinterface ref +); + +fielddecls( + unique int id: @fielddecl, + int parentid: @reftype ref +); + +#keyset[fieldId] #keyset[fieldDeclId,pos] +fieldDeclaredIn( + int fieldId: @field ref, + int fieldDeclId: @fielddecl ref, + int pos: int ref +); + +fields( + unique int id: @field, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @field ref +); + +fieldsKotlinType( + unique int id: @field ref, + int kttypeid: @kt_type ref +); + +constrs( + unique int id: @constructor, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @constructor ref +); + +constrsKotlinType( + unique int id: @constructor ref, + int kttypeid: @kt_type ref +); + +methods( + unique int id: @method, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @method ref +); + +methodsKotlinType( + unique int id: @method ref, + int kttypeid: @kt_type ref +); + +#keyset[parentid,pos] +params( + unique int id: @param, + int typeid: @type ref, + int pos: int ref, + int parentid: @callable ref, + int sourceid: @param ref +); + +paramsKotlinType( + unique int id: @param ref, + int kttypeid: @kt_type ref +); + +paramName( + unique int id: @param ref, + string nodeName: string ref +); + +isVarargsParam( + int param: @param ref +); + +exceptions( + unique int id: @exception, + int typeid: @type ref, + int parentid: @callable ref +); + +isAnnotType( + int interfaceid: @classorinterface ref +); + +isAnnotElem( + int methodid: @method ref +); + +annotValue( + int parentid: @annotation ref, + int id2: @method ref, + unique int value: @expr ref +); + +isEnumType( + int classid: @classorinterface ref +); + +isEnumConst( + int fieldid: @field ref +); + +#keyset[parentid,pos] +typeVars( + unique int id: @typevariable, + string nodeName: string ref, + int pos: int ref, + int kind: int ref, // deprecated + int parentid: @classorinterfaceorcallable ref +); + +wildcards( + unique int id: @wildcard, + string nodeName: string ref, + int kind: int ref +); + +#keyset[parentid,pos] +typeBounds( + unique int id: @typebound, + int typeid: @reftype ref, + int pos: int ref, + int parentid: @boundedtype ref +); + +#keyset[parentid,pos] +typeArgs( + int argumentid: @reftype ref, + int pos: int ref, + int parentid: @classorinterfaceorcallable ref +); + +isParameterized( + int memberid: @member ref +); + +isRaw( + int memberid: @member ref +); + +erasure( + unique int memberid: @member ref, + int erasureid: @member ref +); + +#keyset[classid] #keyset[parent] +isAnonymClass( + int classid: @classorinterface ref, + int parent: @classinstancexpr ref +); + +#keyset[typeid] #keyset[parent] +isLocalClassOrInterface( + int typeid: @classorinterface ref, + int parent: @localtypedeclstmt ref +); + +isDefConstr( + int constructorid: @constructor ref +); + +#keyset[exprId] +lambdaKind( + int exprId: @lambdaexpr ref, + int bodyKind: int ref +); + +arrays( + unique int id: @array, + string nodeName: string ref, + int elementtypeid: @type ref, + int dimension: int ref, + int componenttypeid: @type ref +); + +enclInReftype( + unique int child: @reftype ref, + int parent: @reftype ref +); + +extendsReftype( + int id1: @reftype ref, + int id2: @classorinterface ref +); + +implInterface( + int id1: @classorarray ref, + int id2: @classorinterface ref +); + +permits( + int id1: @classorinterface ref, + int id2: @classorinterface ref +); + +hasModifier( + int id1: @modifiable ref, + int id2: @modifier ref +); + +imports( + unique int id: @import, + int holder: @classorinterfaceorpackage ref, + string name: string ref, + int kind: int ref +); + +#keyset[parent,idx] +stmts( + unique int id: @stmt, + int kind: int ref, + int parent: @stmtparent ref, + int idx: int ref, + int bodydecl: @callable ref +); + +@stmtparent = @callable | @stmt | @switchexpr | @whenexpr| @stmtexpr; + +case @stmt.kind of + 0 = @block +| 1 = @ifstmt +| 2 = @forstmt +| 3 = @enhancedforstmt +| 4 = @whilestmt +| 5 = @dostmt +| 6 = @trystmt +| 7 = @switchstmt +| 8 = @synchronizedstmt +| 9 = @returnstmt +| 10 = @throwstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @emptystmt +| 14 = @exprstmt +| 15 = @labeledstmt +| 16 = @assertstmt +| 17 = @localvariabledeclstmt +| 18 = @localtypedeclstmt +| 19 = @constructorinvocationstmt +| 20 = @superconstructorinvocationstmt +| 21 = @case +| 22 = @catchclause +| 23 = @yieldstmt +| 24 = @errorstmt +| 25 = @whenbranch +; + +#keyset[parent,idx] +exprs( + unique int id: @expr, + int kind: int ref, + int typeid: @type ref, + int parent: @exprparent ref, + int idx: int ref +); + +exprsKotlinType( + unique int id: @expr ref, + int kttypeid: @kt_type ref +); + +callableEnclosingExpr( + unique int id: @expr ref, + int callable_id: @callable ref +); + +statementEnclosingExpr( + unique int id: @expr ref, + int statement_id: @stmt ref +); + +isParenthesized( + unique int id: @expr ref, + int parentheses: int ref +); + +case @expr.kind of + 1 = @arrayaccess +| 2 = @arraycreationexpr +| 3 = @arrayinit +| 4 = @assignexpr +| 5 = @assignaddexpr +| 6 = @assignsubexpr +| 7 = @assignmulexpr +| 8 = @assigndivexpr +| 9 = @assignremexpr +| 10 = @assignandexpr +| 11 = @assignorexpr +| 12 = @assignxorexpr +| 13 = @assignlshiftexpr +| 14 = @assignrshiftexpr +| 15 = @assignurshiftexpr +| 16 = @booleanliteral +| 17 = @integerliteral +| 18 = @longliteral +| 19 = @floatingpointliteral +| 20 = @doubleliteral +| 21 = @characterliteral +| 22 = @stringliteral +| 23 = @nullliteral +| 24 = @mulexpr +| 25 = @divexpr +| 26 = @remexpr +| 27 = @addexpr +| 28 = @subexpr +| 29 = @lshiftexpr +| 30 = @rshiftexpr +| 31 = @urshiftexpr +| 32 = @andbitexpr +| 33 = @orbitexpr +| 34 = @xorbitexpr +| 35 = @andlogicalexpr +| 36 = @orlogicalexpr +| 37 = @ltexpr +| 38 = @gtexpr +| 39 = @leexpr +| 40 = @geexpr +| 41 = @eqexpr +| 42 = @neexpr +| 43 = @postincexpr +| 44 = @postdecexpr +| 45 = @preincexpr +| 46 = @predecexpr +| 47 = @minusexpr +| 48 = @plusexpr +| 49 = @bitnotexpr +| 50 = @lognotexpr +| 51 = @castexpr +| 52 = @newexpr +| 53 = @conditionalexpr +| 54 = @parexpr // deprecated +| 55 = @instanceofexpr +| 56 = @localvariabledeclexpr +| 57 = @typeliteral +| 58 = @thisaccess +| 59 = @superaccess +| 60 = @varaccess +| 61 = @methodaccess +| 62 = @unannotatedtypeaccess +| 63 = @arraytypeaccess +| 64 = @packageaccess +| 65 = @wildcardtypeaccess +| 66 = @declannotation +| 67 = @uniontypeaccess +| 68 = @lambdaexpr +| 69 = @memberref +| 70 = @annotatedtypeaccess +| 71 = @typeannotation +| 72 = @intersectiontypeaccess +| 73 = @switchexpr +| 74 = @errorexpr +| 75 = @whenexpr +| 76 = @getclassexpr +| 77 = @safecastexpr +| 78 = @implicitcastexpr +| 79 = @implicitnotnullexpr +| 80 = @implicitcoerciontounitexpr +| 81 = @notinstanceofexpr +| 82 = @stmtexpr +| 83 = @stringtemplateexpr +| 84 = @notnullexpr +| 85 = @unsafecoerceexpr +| 86 = @valueeqexpr +| 87 = @valueneexpr +| 88 = @propertyref +; + +/** Holds if this `when` expression was written as an `if` expression. */ +when_if(unique int id: @whenexpr ref); + +/** Holds if this `when` branch was written as an `else` branch. */ +when_branch_else(unique int id: @whenbranch ref); + +@classinstancexpr = @newexpr | @lambdaexpr | @memberref | @propertyref + +@annotation = @declannotation | @typeannotation +@typeaccess = @unannotatedtypeaccess | @annotatedtypeaccess + +@assignment = @assignexpr + | @assignop; + +@unaryassignment = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr; + +@assignop = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + | @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignurshiftexpr; + +@literal = @booleanliteral + | @integerliteral + | @longliteral + | @floatingpointliteral + | @doubleliteral + | @characterliteral + | @stringliteral + | @nullliteral; + +@binaryexpr = @mulexpr + | @divexpr + | @remexpr + | @addexpr + | @subexpr + | @lshiftexpr + | @rshiftexpr + | @urshiftexpr + | @andbitexpr + | @orbitexpr + | @xorbitexpr + | @andlogicalexpr + | @orlogicalexpr + | @ltexpr + | @gtexpr + | @leexpr + | @geexpr + | @eqexpr + | @neexpr + | @valueeqexpr + | @valueneexpr; + +@unaryexpr = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr + | @minusexpr + | @plusexpr + | @bitnotexpr + | @lognotexpr + | @notnullexpr; + +@caller = @classinstancexpr + | @methodaccess + | @constructorinvocationstmt + | @superconstructorinvocationstmt; + +callableBinding( + unique int callerid: @caller ref, + int callee: @callable ref +); + +memberRefBinding( + unique int id: @expr ref, + int callable: @callable ref +); + +propertyRefGetBinding( + unique int id: @expr ref, + int getter: @callable ref +); + +propertyRefFieldBinding( + unique int id: @expr ref, + int field: @field ref +); + +propertyRefSetBinding( + unique int id: @expr ref, + int setter: @callable ref +); + +@exprparent = @stmt | @expr | @whenbranch | @callable | @field | @fielddecl | @classorinterface | @param | @localvar | @typevariable; + +variableBinding( + unique int expr: @varaccess ref, + int variable: @variable ref +); + +@variable = @localscopevariable | @field; + +@localscopevariable = @localvar | @param; + +localvars( + unique int id: @localvar, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @localvariabledeclexpr ref +); + +localvarsKotlinType( + unique int id: @localvar ref, + int kttypeid: @kt_type ref +); + +@namedexprorstmt = @breakstmt + | @continuestmt + | @labeledstmt + | @literal; + +namestrings( + string name: string ref, + string value: string ref, + unique int parent: @namedexprorstmt ref +); + +/* + * Modules + */ + +#keyset[name] +modules( + unique int id: @module, + string name: string ref +); + +isOpen( + int id: @module ref +); + +#keyset[fileId] +cumodule( + int fileId: @file ref, + int moduleId: @module ref +); + +@directive = @requires + | @exports + | @opens + | @uses + | @provides + +#keyset[directive] +directives( + int id: @module ref, + int directive: @directive ref +); + +requires( + unique int id: @requires, + int target: @module ref +); + +isTransitive( + int id: @requires ref +); + +isStatic( + int id: @requires ref +); + +exports( + unique int id: @exports, + int target: @package ref +); + +exportsTo( + int id: @exports ref, + int target: @module ref +); + +opens( + unique int id: @opens, + int target: @package ref +); + +opensTo( + int id: @opens ref, + int target: @module ref +); + +uses( + unique int id: @uses, + string serviceInterface: string ref +); + +provides( + unique int id: @provides, + string serviceInterface: string ref +); + +providesWith( + int id: @provides ref, + string serviceImpl: string ref +); + +/* + * Javadoc + */ + +javadoc( + unique int id: @javadoc +); + +isNormalComment( + int commentid : @javadoc ref +); + +isEolComment( + int commentid : @javadoc ref +); + +hasJavadoc( + int documentableid: @member ref, + int javadocid: @javadoc ref +); + +#keyset[parentid,idx] +javadocTag( + unique int id: @javadocTag, + string name: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +#keyset[parentid,idx] +javadocText( + unique int id: @javadocText, + string text: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +@javadocParent = @javadoc | @javadocTag; +@javadocElement = @javadocTag | @javadocText; + +@classorinterfaceorpackage = @classorinterface | @package; +@classorinterfaceorcallable = @classorinterface | @callable; +@boundedtype = @typevariable | @wildcard; +@reftype = @classorinterface | @array | @boundedtype | @errortype; +@classorarray = @classorinterface | @array; +@type = @primitive | @reftype; +@callable = @method | @constructor; + +/** A program element that has a name. */ +@element = @package | @modifier | @annotation | @errortype | + @locatableElement; + +@locatableElement = @file | @primitive | @classorinterface | @method | @constructor | @param | @exception | @field | + @boundedtype | @array | @localvar | @expr | @stmt | @import | @fielddecl | @kt_type | @kt_type_alias | + @kt_property; + +@modifiable = @member_modifiable| @param | @localvar | @typevariable; + +@member_modifiable = @classorinterface | @method | @constructor | @field | @kt_property; + +@member = @method | @constructor | @field | @reftype ; + +/** A program element that has a location. */ +@locatable = @typebound | @javadoc | @javadocTag | @javadocText | @xmllocatable | @ktcomment | + @locatableElement; + +@top = @element | @locatable | @folder; + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* + * configuration files with key value pairs + */ + +configs( + unique int id: @config +); + +configNames( + unique int id: @configName, + int config: @config ref, + string name: string ref +); + +configValues( + unique int id: @configValue, + int config: @config ref, + string value: string ref +); + +configLocations( + int locatable: @configLocatable ref, + int location: @location_default ref +); + +@configLocatable = @config | @configName | @configValue; + +ktComments( + unique int id: @ktcomment, + int kind: int ref, + string text : string ref +) + +ktCommentSections( + unique int id: @ktcommentsection, + int comment: @ktcomment ref, + string content : string ref +) + +ktCommentSectionNames( + unique int id: @ktcommentsection ref, + string name : string ref +) + +ktCommentSectionSubjectNames( + unique int id: @ktcommentsection ref, + string subjectname : string ref +) + +#keyset[id, owner] +ktCommentOwners( + int id: @ktcomment ref, + int owner: @top ref +) + +ktExtensionFunctions( + unique int id: @method ref, + int typeid: @type ref, + int kttypeid: @kt_type ref +) + +ktProperties( + unique int id: @kt_property, + string nodeName: string ref +) + +ktPropertyGetters( + unique int id: @kt_property ref, + int getter: @method ref +) + +ktPropertySetters( + unique int id: @kt_property ref, + int setter: @method ref +) + +ktPropertyBackingFields( + unique int id: @kt_property ref, + int backingField: @field ref +) + +ktSyntheticBody( + unique int id: @callable ref, + int kind: int ref + // 1: ENUM_VALUES + // 2: ENUM_VALUEOF +) + +ktLocalFunction( + unique int id: @method ref +) + +ktInitializerAssignment( + unique int id: @assignexpr ref +) + +ktPropertyDelegates( + unique int id: @kt_property ref, + unique int variableId: @variable ref +) + +/** + * If `id` is a compiler generated element, then the kind indicates the + * reason that the compiler generated it. + * See `Element.compilerGeneratedReason()` for an explanation of what + * each `kind` means. + */ +compiler_generated( + unique int id: @element ref, + int kind: int ref +) + +ktFunctionOriginalNames( + unique int id: @method ref, + string name: string ref +) + +ktDataClasses( + unique int id: @classorinterface ref +) diff --git a/java/ql/lib/upgrades/7cbc85b1f3ecda39661ad4806dedbd0973d2c4c0/semmlecode.dbscheme b/java/ql/lib/upgrades/7cbc85b1f3ecda39661ad4806dedbd0973d2c4c0/semmlecode.dbscheme new file mode 100644 index 00000000000..ecfcf050952 --- /dev/null +++ b/java/ql/lib/upgrades/7cbc85b1f3ecda39661ad4806dedbd0973d2c4c0/semmlecode.dbscheme @@ -0,0 +1,1256 @@ +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * javac A.java B.java C.java + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * javac A.java B.java C.java + */ + unique int id : @compilation, + int kind: int ref, + string cwd : string ref, + string name : string ref +); + +case @compilation.kind of + 1 = @javacompilation +| 2 = @kotlincompilation +; + +compilation_started( + int id : @compilation ref +) + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--javac-args` + * 2 | A.java + * 3 | B.java + * 4 | C.java + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@@@someFile` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * javac A.java B.java C.java + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | A.java + * 1 | B.java + * 2 | C.java + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * For each file recorded in `compilation_compiling_files`, + * there will be a corresponding row in + * `compilation_compiling_files_completed` once extraction + * of that file is complete. The `result` will indicate the + * extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +#keyset[id, num] +compilation_compiling_files_completed( + int id : @compilation ref, + int num : int ref, + int result : int ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * The `cpu_seconds` and `elapsed_seconds` are the CPU time and elapsed + * time (respectively) that the original compilation (not the extraction) + * took for compiler invocation `id`. + */ +compilation_compiler_times( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + * The `result` will indicate the extraction result: + * + * 0: Successfully extracted + * 1: Errors were encountered, but extraction recovered + * 2: Errors were encountered, and extraction could not recover + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref, + int result : int ref +); + +diagnostics( + unique int id: @diagnostic, + string generated_by: string ref, // TODO: Sync this with the other languages? + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/* + * External artifacts + */ + +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +snapshotDate( + unique date snapshotDate : date ref +); + +sourceLocationPrefix( + string prefix : string ref +); + +/* + * Duplicate code + */ + +duplicateCode( + unique int id : @duplication, + string relativePath : string ref, + int equivClass : int ref +); + +similarCode( + unique int id : @similarity, + string relativePath : string ref, + int equivClass : int ref +); + +@duplication_or_similarity = @duplication | @similarity + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref +); + +/* + * SMAP + */ + +smap_header( + int outputFileId: @file ref, + string outputFilename: string ref, + string defaultStratum: string ref +); + +smap_files( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + string inputFileName: string ref, + int inputFileId: @file ref +); + +smap_lines( + int outputFileId: @file ref, + string stratum: string ref, + int inputFileNum: int ref, + int inputStartLine: int ref, + int inputLineCount: int ref, + int outputStartLine: int ref, + int outputLineIncrement: int ref +); + +/* + * Locations and files + */ + +@location = @location_default ; + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +hasLocation( + int locatableid: @locatable ref, + int id: @location ref +); + +@sourceline = @locatable ; + +#keyset[element_id] +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/* + * Java + */ + +cupackage( + unique int id: @file ref, + int packageid: @package ref +); + +#keyset[fileid,keyName] +jarManifestMain( + int fileid: @file ref, + string keyName: string ref, + string value: string ref +); + +#keyset[fileid,entryName,keyName] +jarManifestEntries( + int fileid: @file ref, + string entryName: string ref, + string keyName: string ref, + string value: string ref +); + +packages( + unique int id: @package, + string nodeName: string ref +); + +primitives( + unique int id: @primitive, + string nodeName: string ref +); + +modifiers( + unique int id: @modifier, + string nodeName: string ref +); + +/** + * An errortype is used when the extractor is unable to extract a type + * correctly for some reason. + */ +error_type( + unique int id: @errortype +); + +classes_or_interfaces( + unique int id: @classorinterface, + string nodeName: string ref, + int parentid: @package ref, + int sourceid: @classorinterface ref +); + +file_class( + int id: @classorinterface ref +); + +class_object( + unique int id: @classorinterface ref, + unique int instance: @field ref +); + +type_companion_object( + unique int id: @classorinterface ref, + unique int instance: @field ref, + unique int companion_object: @classorinterface ref +); + +kt_nullable_types( + unique int id: @kt_nullable_type, + int classid: @reftype ref +) + +kt_notnull_types( + unique int id: @kt_notnull_type, + int classid: @reftype ref +) + +kt_type_alias( + unique int id: @kt_type_alias, + string name: string ref, + int kttypeid: @kt_type ref +) + +@kt_type = @kt_nullable_type | @kt_notnull_type + +isInterface( + unique int id: @classorinterface ref +); + +isRecord( + unique int id: @classorinterface ref +); + +fielddecls( + unique int id: @fielddecl, + int parentid: @reftype ref +); + +#keyset[fieldId] #keyset[fieldDeclId,pos] +fieldDeclaredIn( + int fieldId: @field ref, + int fieldDeclId: @fielddecl ref, + int pos: int ref +); + +fields( + unique int id: @field, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @field ref +); + +fieldsKotlinType( + unique int id: @field ref, + int kttypeid: @kt_type ref +); + +constrs( + unique int id: @constructor, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @constructor ref +); + +constrsKotlinType( + unique int id: @constructor ref, + int kttypeid: @kt_type ref +); + +methods( + unique int id: @method, + string nodeName: string ref, + string signature: string ref, + int typeid: @type ref, + int parentid: @reftype ref, + int sourceid: @method ref +); + +methodsKotlinType( + unique int id: @method ref, + int kttypeid: @kt_type ref +); + +#keyset[parentid,pos] +params( + unique int id: @param, + int typeid: @type ref, + int pos: int ref, + int parentid: @callable ref, + int sourceid: @param ref +); + +paramsKotlinType( + unique int id: @param ref, + int kttypeid: @kt_type ref +); + +paramName( + unique int id: @param ref, + string nodeName: string ref +); + +isVarargsParam( + int param: @param ref +); + +exceptions( + unique int id: @exception, + int typeid: @type ref, + int parentid: @callable ref +); + +isAnnotType( + int interfaceid: @classorinterface ref +); + +isAnnotElem( + int methodid: @method ref +); + +annotValue( + int parentid: @annotation ref, + int id2: @method ref, + unique int value: @expr ref +); + +isEnumType( + int classid: @classorinterface ref +); + +isEnumConst( + int fieldid: @field ref +); + +#keyset[parentid,pos] +typeVars( + unique int id: @typevariable, + string nodeName: string ref, + int pos: int ref, + int kind: int ref, // deprecated + int parentid: @classorinterfaceorcallable ref +); + +wildcards( + unique int id: @wildcard, + string nodeName: string ref, + int kind: int ref +); + +#keyset[parentid,pos] +typeBounds( + unique int id: @typebound, + int typeid: @reftype ref, + int pos: int ref, + int parentid: @boundedtype ref +); + +#keyset[parentid,pos] +typeArgs( + int argumentid: @reftype ref, + int pos: int ref, + int parentid: @classorinterfaceorcallable ref +); + +isParameterized( + int memberid: @member ref +); + +isRaw( + int memberid: @member ref +); + +erasure( + unique int memberid: @member ref, + int erasureid: @member ref +); + +#keyset[classid] #keyset[parent] +isAnonymClass( + int classid: @classorinterface ref, + int parent: @classinstancexpr ref +); + +#keyset[typeid] #keyset[parent] +isLocalClassOrInterface( + int typeid: @classorinterface ref, + int parent: @localtypedeclstmt ref +); + +isDefConstr( + int constructorid: @constructor ref +); + +#keyset[exprId] +lambdaKind( + int exprId: @lambdaexpr ref, + int bodyKind: int ref +); + +arrays( + unique int id: @array, + string nodeName: string ref, + int elementtypeid: @type ref, + int dimension: int ref, + int componenttypeid: @type ref +); + +enclInReftype( + unique int child: @reftype ref, + int parent: @reftype ref +); + +extendsReftype( + int id1: @reftype ref, + int id2: @classorinterface ref +); + +implInterface( + int id1: @classorarray ref, + int id2: @classorinterface ref +); + +permits( + int id1: @classorinterface ref, + int id2: @classorinterface ref +); + +hasModifier( + int id1: @modifiable ref, + int id2: @modifier ref +); + +imports( + unique int id: @import, + int holder: @classorinterfaceorpackage ref, + string name: string ref, + int kind: int ref +); + +#keyset[parent,idx] +stmts( + unique int id: @stmt, + int kind: int ref, + int parent: @stmtparent ref, + int idx: int ref, + int bodydecl: @callable ref +); + +@stmtparent = @callable | @stmt | @switchexpr | @whenexpr| @stmtexpr; + +case @stmt.kind of + 0 = @block +| 1 = @ifstmt +| 2 = @forstmt +| 3 = @enhancedforstmt +| 4 = @whilestmt +| 5 = @dostmt +| 6 = @trystmt +| 7 = @switchstmt +| 8 = @synchronizedstmt +| 9 = @returnstmt +| 10 = @throwstmt +| 11 = @breakstmt +| 12 = @continuestmt +| 13 = @emptystmt +| 14 = @exprstmt +| 15 = @labeledstmt +| 16 = @assertstmt +| 17 = @localvariabledeclstmt +| 18 = @localtypedeclstmt +| 19 = @constructorinvocationstmt +| 20 = @superconstructorinvocationstmt +| 21 = @case +| 22 = @catchclause +| 23 = @yieldstmt +| 24 = @errorstmt +| 25 = @whenbranch +; + +#keyset[parent,idx] +exprs( + unique int id: @expr, + int kind: int ref, + int typeid: @type ref, + int parent: @exprparent ref, + int idx: int ref +); + +exprsKotlinType( + unique int id: @expr ref, + int kttypeid: @kt_type ref +); + +callableEnclosingExpr( + unique int id: @expr ref, + int callable_id: @callable ref +); + +statementEnclosingExpr( + unique int id: @expr ref, + int statement_id: @stmt ref +); + +isParenthesized( + unique int id: @expr ref, + int parentheses: int ref +); + +case @expr.kind of + 1 = @arrayaccess +| 2 = @arraycreationexpr +| 3 = @arrayinit +| 4 = @assignexpr +| 5 = @assignaddexpr +| 6 = @assignsubexpr +| 7 = @assignmulexpr +| 8 = @assigndivexpr +| 9 = @assignremexpr +| 10 = @assignandexpr +| 11 = @assignorexpr +| 12 = @assignxorexpr +| 13 = @assignlshiftexpr +| 14 = @assignrshiftexpr +| 15 = @assignurshiftexpr +| 16 = @booleanliteral +| 17 = @integerliteral +| 18 = @longliteral +| 19 = @floatingpointliteral +| 20 = @doubleliteral +| 21 = @characterliteral +| 22 = @stringliteral +| 23 = @nullliteral +| 24 = @mulexpr +| 25 = @divexpr +| 26 = @remexpr +| 27 = @addexpr +| 28 = @subexpr +| 29 = @lshiftexpr +| 30 = @rshiftexpr +| 31 = @urshiftexpr +| 32 = @andbitexpr +| 33 = @orbitexpr +| 34 = @xorbitexpr +| 35 = @andlogicalexpr +| 36 = @orlogicalexpr +| 37 = @ltexpr +| 38 = @gtexpr +| 39 = @leexpr +| 40 = @geexpr +| 41 = @eqexpr +| 42 = @neexpr +| 43 = @postincexpr +| 44 = @postdecexpr +| 45 = @preincexpr +| 46 = @predecexpr +| 47 = @minusexpr +| 48 = @plusexpr +| 49 = @bitnotexpr +| 50 = @lognotexpr +| 51 = @castexpr +| 52 = @newexpr +| 53 = @conditionalexpr +| 54 = @parexpr // deprecated +| 55 = @instanceofexpr +| 56 = @localvariabledeclexpr +| 57 = @typeliteral +| 58 = @thisaccess +| 59 = @superaccess +| 60 = @varaccess +| 61 = @methodaccess +| 62 = @unannotatedtypeaccess +| 63 = @arraytypeaccess +| 64 = @packageaccess +| 65 = @wildcardtypeaccess +| 66 = @declannotation +| 67 = @uniontypeaccess +| 68 = @lambdaexpr +| 69 = @memberref +| 70 = @annotatedtypeaccess +| 71 = @typeannotation +| 72 = @intersectiontypeaccess +| 73 = @switchexpr +| 74 = @errorexpr +| 75 = @whenexpr +| 76 = @getclassexpr +| 77 = @safecastexpr +| 78 = @implicitcastexpr +| 79 = @implicitnotnullexpr +| 80 = @implicitcoerciontounitexpr +| 81 = @notinstanceofexpr +| 82 = @stmtexpr +| 83 = @stringtemplateexpr +| 84 = @notnullexpr +| 85 = @unsafecoerceexpr +| 86 = @valueeqexpr +| 87 = @valueneexpr +| 88 = @propertyref +; + +/** Holds if this `when` expression was written as an `if` expression. */ +when_if(unique int id: @whenexpr ref); + +/** Holds if this `when` branch was written as an `else` branch. */ +when_branch_else(unique int id: @whenbranch ref); + +@classinstancexpr = @newexpr | @lambdaexpr | @memberref | @propertyref + +@annotation = @declannotation | @typeannotation +@typeaccess = @unannotatedtypeaccess | @annotatedtypeaccess + +@assignment = @assignexpr + | @assignop; + +@unaryassignment = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr; + +@assignop = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + | @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + | @assignurshiftexpr; + +@literal = @booleanliteral + | @integerliteral + | @longliteral + | @floatingpointliteral + | @doubleliteral + | @characterliteral + | @stringliteral + | @nullliteral; + +@binaryexpr = @mulexpr + | @divexpr + | @remexpr + | @addexpr + | @subexpr + | @lshiftexpr + | @rshiftexpr + | @urshiftexpr + | @andbitexpr + | @orbitexpr + | @xorbitexpr + | @andlogicalexpr + | @orlogicalexpr + | @ltexpr + | @gtexpr + | @leexpr + | @geexpr + | @eqexpr + | @neexpr + | @valueeqexpr + | @valueneexpr; + +@unaryexpr = @postincexpr + | @postdecexpr + | @preincexpr + | @predecexpr + | @minusexpr + | @plusexpr + | @bitnotexpr + | @lognotexpr + | @notnullexpr; + +@caller = @classinstancexpr + | @methodaccess + | @constructorinvocationstmt + | @superconstructorinvocationstmt; + +callableBinding( + unique int callerid: @caller ref, + int callee: @callable ref +); + +memberRefBinding( + unique int id: @expr ref, + int callable: @callable ref +); + +propertyRefGetBinding( + unique int id: @expr ref, + int getter: @callable ref +); + +propertyRefFieldBinding( + unique int id: @expr ref, + int field: @field ref +); + +propertyRefSetBinding( + unique int id: @expr ref, + int setter: @callable ref +); + +@exprparent = @stmt | @expr | @whenbranch | @callable | @field | @fielddecl | @classorinterface | @param | @localvar | @typevariable; + +variableBinding( + unique int expr: @varaccess ref, + int variable: @variable ref +); + +@variable = @localscopevariable | @field; + +@localscopevariable = @localvar | @param; + +localvars( + unique int id: @localvar, + string nodeName: string ref, + int typeid: @type ref, + int parentid: @localvariabledeclexpr ref +); + +localvarsKotlinType( + unique int id: @localvar ref, + int kttypeid: @kt_type ref +); + +@namedexprorstmt = @breakstmt + | @continuestmt + | @labeledstmt + | @literal; + +namestrings( + string name: string ref, + string value: string ref, + unique int parent: @namedexprorstmt ref +); + +/* + * Modules + */ + +#keyset[name] +modules( + unique int id: @module, + string name: string ref +); + +isOpen( + int id: @module ref +); + +#keyset[fileId] +cumodule( + int fileId: @file ref, + int moduleId: @module ref +); + +@directive = @requires + | @exports + | @opens + | @uses + | @provides + +#keyset[directive] +directives( + int id: @module ref, + int directive: @directive ref +); + +requires( + unique int id: @requires, + int target: @module ref +); + +isTransitive( + int id: @requires ref +); + +isStatic( + int id: @requires ref +); + +exports( + unique int id: @exports, + int target: @package ref +); + +exportsTo( + int id: @exports ref, + int target: @module ref +); + +opens( + unique int id: @opens, + int target: @package ref +); + +opensTo( + int id: @opens ref, + int target: @module ref +); + +uses( + unique int id: @uses, + string serviceInterface: string ref +); + +provides( + unique int id: @provides, + string serviceInterface: string ref +); + +providesWith( + int id: @provides ref, + string serviceImpl: string ref +); + +/* + * Javadoc + */ + +javadoc( + unique int id: @javadoc +); + +isNormalComment( + int commentid : @javadoc ref +); + +isEolComment( + int commentid : @javadoc ref +); + +hasJavadoc( + int documentableid: @member ref, + int javadocid: @javadoc ref +); + +#keyset[parentid,idx] +javadocTag( + unique int id: @javadocTag, + string name: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +#keyset[parentid,idx] +javadocText( + unique int id: @javadocText, + string text: string ref, + int parentid: @javadocParent ref, + int idx: int ref +); + +@javadocParent = @javadoc | @javadocTag; +@javadocElement = @javadocTag | @javadocText; + +@classorinterfaceorpackage = @classorinterface | @package; +@classorinterfaceorcallable = @classorinterface | @callable; +@boundedtype = @typevariable | @wildcard; +@reftype = @classorinterface | @array | @boundedtype | @errortype; +@classorarray = @classorinterface | @array; +@type = @primitive | @reftype; +@callable = @method | @constructor; + +/** A program element that has a name. */ +@element = @package | @modifier | @annotation | @errortype | + @locatableElement; + +@locatableElement = @file | @primitive | @classorinterface | @method | @constructor | @param | @exception | @field | + @boundedtype | @array | @localvar | @expr | @stmt | @import | @fielddecl | @kt_type | @kt_type_alias | + @kt_property; + +@modifiable = @member_modifiable| @param | @localvar | @typevariable; + +@member_modifiable = @classorinterface | @method | @constructor | @field | @kt_property; + +@member = @method | @constructor | @field | @reftype ; + +/** A program element that has a location. */ +@locatable = @typebound | @javadoc | @javadocTag | @javadocText | @xmllocatable | @ktcomment | + @locatableElement; + +@top = @element | @locatable | @folder; + +/* + * XML Files + */ + +xmlEncoding( + unique int id: @file ref, + string encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* + * configuration files with key value pairs + */ + +configs( + unique int id: @config +); + +configNames( + unique int id: @configName, + int config: @config ref, + string name: string ref +); + +configValues( + unique int id: @configValue, + int config: @config ref, + string value: string ref +); + +configLocations( + int locatable: @configLocatable ref, + int location: @location_default ref +); + +@configLocatable = @config | @configName | @configValue; + +ktComments( + unique int id: @ktcomment, + int kind: int ref, + string text : string ref +) + +ktCommentSections( + unique int id: @ktcommentsection, + int comment: @ktcomment ref, + string content : string ref +) + +ktCommentSectionNames( + unique int id: @ktcommentsection ref, + string name : string ref +) + +ktCommentSectionSubjectNames( + unique int id: @ktcommentsection ref, + string subjectname : string ref +) + +#keyset[id, owner] +ktCommentOwners( + int id: @ktcomment ref, + int owner: @top ref +) + +ktExtensionFunctions( + unique int id: @method ref, + int typeid: @type ref, + int kttypeid: @kt_type ref +) + +ktProperties( + unique int id: @kt_property, + string nodeName: string ref +) + +ktPropertyGetters( + unique int id: @kt_property ref, + int getter: @method ref +) + +ktPropertySetters( + unique int id: @kt_property ref, + int setter: @method ref +) + +ktPropertyBackingFields( + unique int id: @kt_property ref, + int backingField: @field ref +) + +ktSyntheticBody( + unique int id: @callable ref, + int kind: int ref + // 1: ENUM_VALUES + // 2: ENUM_VALUEOF + // 3: ENUM_ENTRIES +) + +ktLocalFunction( + unique int id: @method ref +) + +ktInitializerAssignment( + unique int id: @assignexpr ref +) + +ktPropertyDelegates( + unique int id: @kt_property ref, + unique int variableId: @variable ref +) + +/** + * If `id` is a compiler generated element, then the kind indicates the + * reason that the compiler generated it. + * See `Element.compilerGeneratedReason()` for an explanation of what + * each `kind` means. + */ +compiler_generated( + unique int id: @element ref, + int kind: int ref +) + +ktFunctionOriginalNames( + unique int id: @method ref, + string name: string ref +) + +ktDataClasses( + unique int id: @classorinterface ref +) diff --git a/java/ql/lib/upgrades/7cbc85b1f3ecda39661ad4806dedbd0973d2c4c0/upgrade.properties b/java/ql/lib/upgrades/7cbc85b1f3ecda39661ad4806dedbd0973d2c4c0/upgrade.properties new file mode 100644 index 00000000000..47074bcc8ab --- /dev/null +++ b/java/ql/lib/upgrades/7cbc85b1f3ecda39661ad4806dedbd0973d2c4c0/upgrade.properties @@ -0,0 +1,2 @@ +description: Add ENUM_ENTRIES +compatibility: full diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 744ac866083..4852323b9b8 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,17 @@ +## 0.6.3 + +### Minor Analysis Improvements + +* The `java/summary/lines-of-code` query now only counts lines of Java code. The new `java/summary/lines-of-code-kotlin` counts lines of Kotlin code. + +## 0.6.2 + +### Minor Analysis Improvements + +* The query `java/groovy-injection` now recognizes `groovy.text.TemplateEngine.createTemplate` as a sink. +* The queries `java/xxe` and `java/xxe-local` now recognize the second argument of calls to `XPath.evaluate` as a sink. +* Experimental sinks for the query "Resolving XML external entity in user-controlled data" (`java/xxe`) have been promoted to the main query pack. These sinks were originally [submitted as part of an experimental query by @haby0](https://github.com/github/codeql/pull/6564). + ## 0.6.1 No user-facing changes. diff --git a/java/ql/src/Metrics/Summaries/LinesOfCode.ql b/java/ql/src/Metrics/Summaries/LinesOfCode.ql index c1b43c2a3d9..62c19d1b932 100644 --- a/java/ql/src/Metrics/Summaries/LinesOfCode.ql +++ b/java/ql/src/Metrics/Summaries/LinesOfCode.ql @@ -1,8 +1,8 @@ /** * @id java/summary/lines-of-code * @name Total lines of Java code in the database - * @description The total number of lines of code across all files. This is a useful metric of the size of a database. - * For all files that were seen during the build, this query counts the lines of code, excluding whitespace + * @description The total number of lines of code across all Java files. This is a useful metric of the size of a database. + * For all Java files that were seen during the build, this query counts the lines of code, excluding whitespace * or comments. * @kind metric * @tags summary @@ -11,4 +11,4 @@ import java -select sum(CompilationUnit f | f.fromSource() | f.getNumberOfLinesOfCode()) +select sum(CompilationUnit f | f.fromSource() and f.isJavaSourceFile() | f.getNumberOfLinesOfCode()) diff --git a/java/ql/src/Metrics/Summaries/LinesOfCodeKotlin.ql b/java/ql/src/Metrics/Summaries/LinesOfCodeKotlin.ql new file mode 100644 index 00000000000..0093bc0a98f --- /dev/null +++ b/java/ql/src/Metrics/Summaries/LinesOfCodeKotlin.ql @@ -0,0 +1,18 @@ +/** + * @id java/summary/lines-of-code-kotlin + * @name Total lines of Kotlin code in the database + * @description The total number of lines of code across all Kotlin files. This is a useful metric of the size of a database. + * For all Kotlin files that were seen during the build, this query counts the lines of code, excluding whitespace + * or comments. + * @kind metric + * @tags summary + * lines-of-code + */ + +import java + +select sum(CompilationUnit f | + f.fromSource() and f.isKotlinSourceFile() + | + f.getNumberOfLinesOfCode() + ) diff --git a/java/ql/src/Security/CWE/CWE-022/TaintedPath.ql b/java/ql/src/Security/CWE/CWE-022/TaintedPath.ql index 2d73514d97b..96e8e66c7cd 100644 --- a/java/ql/src/Security/CWE/CWE-022/TaintedPath.ql +++ b/java/ql/src/Security/CWE/CWE-022/TaintedPath.ql @@ -14,6 +14,7 @@ */ import java +import semmle.code.java.security.PathCreation import semmle.code.java.security.TaintedPathQuery import TaintedPathFlow::PathGraph diff --git a/java/ql/src/Security/CWE/CWE-022/TaintedPathLocal.ql b/java/ql/src/Security/CWE/CWE-022/TaintedPathLocal.ql index c017b8a3aa9..8e56121883f 100644 --- a/java/ql/src/Security/CWE/CWE-022/TaintedPathLocal.ql +++ b/java/ql/src/Security/CWE/CWE-022/TaintedPathLocal.ql @@ -14,6 +14,7 @@ */ import java +import semmle.code.java.security.PathCreation import semmle.code.java.security.TaintedPathQuery import TaintedPathLocalFlow::PathGraph diff --git a/java/ql/src/Security/CWE/CWE-022/ZipSlip.qhelp b/java/ql/src/Security/CWE/CWE-022/ZipSlip.qhelp index adea1b89c49..2caf0ccc8b0 100644 --- a/java/ql/src/Security/CWE/CWE-022/ZipSlip.qhelp +++ b/java/ql/src/Security/CWE/CWE-022/ZipSlip.qhelp @@ -3,17 +3,15 @@ "qhelp.dtd"> -

    Extracting files from a malicious zip archive (or another archive format) -without validating that the destination file path -is within the destination directory can cause files outside the destination directory to be -overwritten, due to the possible presence of directory traversal elements (..) in -archive paths.

    +

    Extracting files from a malicious zip file, or similar type of archive, +is at risk of directory traversal attacks if filenames from the archive are +not properly validated.

    Zip archives contain archive entries representing each file in the archive. These entries include a file path for the entry, but these file paths are not restricted and may contain unexpected special elements such as the directory traversal element (..). If these -file paths are used to determine an output file to write the contents of the archive item to, then -the file may be written to an unexpected location. This can result in sensitive information being +file paths are used to create a filesystem path, then a file operation may happen in an +unexpected location. This can result in sensitive information being revealed or deleted, or an attacker being able to influence behavior by modifying unexpected files.

    diff --git a/java/ql/src/Security/CWE/CWE-022/ZipSlip.ql b/java/ql/src/Security/CWE/CWE-022/ZipSlip.ql index 3488c97c057..0d165a73521 100644 --- a/java/ql/src/Security/CWE/CWE-022/ZipSlip.ql +++ b/java/ql/src/Security/CWE/CWE-022/ZipSlip.ql @@ -1,8 +1,8 @@ /** - * @name Arbitrary file write during archive extraction ("Zip Slip") - * @description Extracting files from a malicious archive without validating that the - * destination file path is within the destination directory can cause files outside - * the destination directory to be overwritten. + * @name Arbitrary file access during archive extraction ("Zip Slip") + * @description Extracting files from a malicious ZIP file, or similar type of archive, without + * validating that the destination file path is within the destination directory + * can allow an attacker to unexpectedly gain access to resources. * @kind path-problem * @id java/zipslip * @problem.severity error diff --git a/java/ql/src/Security/CWE/CWE-730/ReDoS.qhelp b/java/ql/src/Security/CWE/CWE-730/ReDoS.qhelp index 08b67acb638..7fcdb97535b 100644 --- a/java/ql/src/Security/CWE/CWE-730/ReDoS.qhelp +++ b/java/ql/src/Security/CWE/CWE-730/ReDoS.qhelp @@ -11,8 +11,7 @@ Consider this regular expression:

    - ^_(__|.)+_$ - +^_(__|.)+_$

    Its sub-expression "(__|.)+?" can match the string "__" either by the first alternative "__" to the left of the "|" operator, or by two @@ -25,8 +24,7 @@ the two branches of the alternative inside the repetition:

    - ^_(__|[^_])+_$ - +^_(__|[^_])+_$ diff --git a/java/ql/src/Telemetry/AutomodelApplicationModeCharacteristics.qll b/java/ql/src/Telemetry/AutomodelApplicationModeCharacteristics.qll new file mode 100644 index 00000000000..51e786eebdc --- /dev/null +++ b/java/ql/src/Telemetry/AutomodelApplicationModeCharacteristics.qll @@ -0,0 +1,444 @@ +/** + * For internal use only. + */ + +private import java +private import semmle.code.Location as Location +private import semmle.code.java.dataflow.DataFlow +private import semmle.code.java.dataflow.TaintTracking +private import semmle.code.java.security.PathCreation +private import semmle.code.java.dataflow.ExternalFlow as ExternalFlow +private import semmle.code.java.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl +private import semmle.code.java.security.ExternalAPIs as ExternalAPIs +private import semmle.code.java.Expr as Expr +private import semmle.code.java.security.QueryInjection +private import semmle.code.java.security.RequestForgery +private import semmle.code.java.dataflow.internal.ModelExclusions as ModelExclusions +private import AutomodelJavaUtil as AutomodelJavaUtil +private import semmle.code.java.security.PathSanitizer as PathSanitizer +private import AutomodelSharedGetCallable as AutomodelSharedGetCallable +import AutomodelSharedCharacteristics as SharedCharacteristics +import AutomodelEndpointTypes as AutomodelEndpointTypes + +newtype JavaRelatedLocationType = CallContext() + +/** + * A class representing nodes that are arguments to calls. + */ +private class ArgumentNode extends DataFlow::Node { + ArgumentNode() { this.asExpr() = [any(Call c).getAnArgument(), any(Call c).getQualifier()] } +} + +/** + * A candidates implementation. + * + * Some important notes: + * - This mode is using arguments as endpoints. + * - We use the `CallContext` (the surrounding call expression) as related location. + */ +module ApplicationCandidatesImpl implements SharedCharacteristics::CandidateSig { + // for documentation of the implementations here, see the QLDoc in the CandidateSig signature module. + class Endpoint = ArgumentNode; + + class EndpointType = AutomodelEndpointTypes::EndpointType; + + class NegativeEndpointType = AutomodelEndpointTypes::NegativeSinkType; + + class RelatedLocation = Location::Top; + + class RelatedLocationType = JavaRelatedLocationType; + + // Sanitizers are currently not modeled in MaD. TODO: check if this has large negative impact. + predicate isSanitizer(Endpoint e, EndpointType t) { + exists(t) and + ( + e.getType() instanceof BoxedType + or + e.getType() instanceof PrimitiveType + or + e.getType() instanceof NumberType + ) + or + t instanceof AutomodelEndpointTypes::PathInjectionSinkType and + e instanceof PathSanitizer::PathInjectionSanitizer + } + + RelatedLocation asLocation(Endpoint e) { result = e.asExpr() } + + predicate isKnownKind = AutomodelJavaUtil::isKnownKind/2; + + predicate isSink(Endpoint e, string kind) { + exists(string package, string type, string name, string signature, string ext, string input | + sinkSpec(e, package, type, name, signature, ext, input) and + ExternalFlow::sinkModel(package, type, _, name, [signature, ""], ext, input, kind, _) + ) + or + isCustomSink(e, kind) + } + + predicate isNeutral(Endpoint e) { + exists(string package, string type, string name, string signature | + sinkSpec(e, package, type, name, signature, _, _) and + ExternalFlow::neutralModel(package, type, name, [signature, ""], "sink", _) + ) + } + + additional predicate sinkSpec( + Endpoint e, string package, string type, string name, string signature, string ext, string input + ) { + ApplicationModeGetCallable::getCallable(e).hasQualifiedName(package, type, name) and + signature = ExternalFlow::paramsString(ApplicationModeGetCallable::getCallable(e)) and + ext = "" and + ( + exists(Call c, int argIdx | + e.asExpr() = c.getArgument(argIdx) and + input = AutomodelJavaUtil::getArgumentForIndex(argIdx) + ) + or + exists(Call c | + e.asExpr() = c.getQualifier() and input = AutomodelJavaUtil::getArgumentForIndex(-1) + ) + ) + } + + /** + * Gets the related location for the given endpoint. + * + * The only related location we model is the the call expression surrounding to + * which the endpoint is either argument or qualifier (known as the call context). + */ + RelatedLocation getRelatedLocation(Endpoint e, RelatedLocationType type) { + type = CallContext() and + result = any(Call c | e.asExpr() = [c.getAnArgument(), c.getQualifier()]) + } +} + +private class JavaCallable = Callable; + +private module ApplicationModeGetCallable implements AutomodelSharedGetCallable::GetCallableSig { + class Callable = JavaCallable; + + class Endpoint = ApplicationCandidatesImpl::Endpoint; + + /** + * Returns the API callable being modeled. + */ + Callable getCallable(Endpoint e) { + exists(Call c | + e.asExpr() = [c.getAnArgument(), c.getQualifier()] and + result = c.getCallee() + ) + } +} + +/** + * Contains endpoints that are defined in QL code rather than as a MaD model. Ideally this predicate + * should be empty. + */ +private predicate isCustomSink(Endpoint e, string kind) { + e.asExpr() instanceof ArgumentToExec and kind = "command injection" + or + e instanceof RequestForgerySink and kind = "request forgery" + or + e instanceof QueryInjectionSink and kind = "sql" +} + +module CharacteristicsImpl = + SharedCharacteristics::SharedCharacteristics; + +class EndpointCharacteristic = CharacteristicsImpl::EndpointCharacteristic; + +class Endpoint = ApplicationCandidatesImpl::Endpoint; + +/* + * Predicates that are used to surface prompt examples and candidates for classification with an ML model. + */ + +/** + * A MetadataExtractor that extracts metadata for application mode. + */ +class ApplicationModeMetadataExtractor extends string { + ApplicationModeMetadataExtractor() { this = "ApplicationModeMetadataExtractor" } + + predicate hasMetadata( + Endpoint e, string package, string type, string subtypes, string name, string signature, + string input + ) { + exists(Call call, Callable callable, int argIdx | + call.getCallee() = callable and + ( + e.asExpr() = call.getArgument(argIdx) + or + e.asExpr() = call.getQualifier() and argIdx = -1 + ) and + input = AutomodelJavaUtil::getArgumentForIndex(argIdx) and + package = callable.getDeclaringType().getPackage().getName() and + // we're using the erased types because the MaD convention is to not specify type parameters. + // Whether something is or isn't a sink doesn't usually depend on the type parameters. + type = callable.getDeclaringType().getErasure().(RefType).nestedName() and + subtypes = AutomodelJavaUtil::considerSubtypes(callable).toString() and + name = callable.getName() and + signature = ExternalFlow::paramsString(callable) + ) + } +} + +/* + * EndpointCharacteristic classes that are specific to Automodel for Java. + */ + +/** + * A negative characteristic that indicates that an is-style boolean method is unexploitable even if it is a sink. + * + * A sink is highly unlikely to be exploitable if its callable's name starts with `is` and the callable has a boolean return + * type (e.g. `isDirectory`). These kinds of calls normally do only checks, and appear before the proper call that does + * the dangerous/interesting thing, so we want the latter to be modeled as the sink. + * + * TODO: this might filter too much, it's possible that methods with more than one parameter contain interesting sinks + */ +private class UnexploitableIsCharacteristic extends CharacteristicsImpl::NotASinkCharacteristic { + UnexploitableIsCharacteristic() { this = "unexploitable (is-style boolean method)" } + + override predicate appliesToEndpoint(Endpoint e) { + not ApplicationCandidatesImpl::isSink(e, _) and + ApplicationModeGetCallable::getCallable(e).getName().matches("is%") and + ApplicationModeGetCallable::getCallable(e).getReturnType() instanceof BooleanType + } +} + +/** + * A negative characteristic that indicates that an existence-checking boolean method is unexploitable even if it is a + * sink. + * + * A sink is highly unlikely to be exploitable if its callable's name is `exists` or `notExists` and the callable has a + * boolean return type. These kinds of calls normally do only checks, and appear before the proper call that does the + * dangerous/interesting thing, so we want the latter to be modeled as the sink. + */ +private class UnexploitableExistsCharacteristic extends CharacteristicsImpl::NotASinkCharacteristic { + UnexploitableExistsCharacteristic() { this = "unexploitable (existence-checking boolean method)" } + + override predicate appliesToEndpoint(Endpoint e) { + not ApplicationCandidatesImpl::isSink(e, _) and + exists(Callable callable | + callable = ApplicationModeGetCallable::getCallable(e) and + callable.getName().toLowerCase() = ["exists", "notexists"] and + callable.getReturnType() instanceof BooleanType + ) + } +} + +/** + * A negative characteristic that indicates that an endpoint is an argument to an exception, which is not a sink. + */ +private class ExceptionCharacteristic extends CharacteristicsImpl::NotASinkCharacteristic { + ExceptionCharacteristic() { this = "exception" } + + override predicate appliesToEndpoint(Endpoint e) { + ApplicationModeGetCallable::getCallable(e).getDeclaringType().getASupertype*() instanceof + TypeThrowable + } +} + +/** + * A negative characteristic that indicates that an endpoint is a MaD taint step. MaD modeled taint steps are global, + * so they are not sinks for any query. Non-MaD taint steps might be specific to a particular query, so we don't + * filter those out. + */ +private class IsMaDTaintStepCharacteristic extends CharacteristicsImpl::NotASinkCharacteristic { + IsMaDTaintStepCharacteristic() { this = "taint step" } + + override predicate appliesToEndpoint(Endpoint e) { + FlowSummaryImpl::Private::Steps::summaryThroughStepValue(e, _, _) or + FlowSummaryImpl::Private::Steps::summaryThroughStepTaint(e, _, _) or + FlowSummaryImpl::Private::Steps::summaryGetterStep(e, _, _, _) or + FlowSummaryImpl::Private::Steps::summarySetterStep(e, _, _, _) + } +} + +/** + * A negative characteristic that filters out qualifiers that are classes (i.e. static calls). These + * are unlikely to have any non-trivial flow going into them. + * + * Technically, an accessed type _could_ come from outside of the source code, but there's not + * much likelihood of that being user-controlled. + */ +private class ClassQualifierCharacteristic extends CharacteristicsImpl::NotASinkCharacteristic { + ClassQualifierCharacteristic() { this = "class qualifier" } + + override predicate appliesToEndpoint(Endpoint e) { + exists(Call c | + e.asExpr() = c.getQualifier() and + c.getQualifier() instanceof TypeAccess + ) + } +} + +/** + * A call to a method that's known locally will not be considered as a candidate to model. + * + * The reason is that we would expect data/taint flow into the method implementation to uncover + * any sinks that are present there. + */ +private class ArgumentToLocalCall extends CharacteristicsImpl::UninterestingToModelCharacteristic { + ArgumentToLocalCall() { this = "argument to local call" } + + override predicate appliesToEndpoint(Endpoint e) { + ApplicationModeGetCallable::getCallable(e).fromSource() + } +} + +/** + * A Characteristic that marks endpoints as uninteresting to model, according to the Java ModelExclusions module. + */ +private class ExcludedFromModeling extends CharacteristicsImpl::UninterestingToModelCharacteristic { + ExcludedFromModeling() { this = "excluded from modeling" } + + override predicate appliesToEndpoint(Endpoint e) { + ModelExclusions::isUninterestingForModels(ApplicationModeGetCallable::getCallable(e)) + } +} + +/** + * A negative characteristic that filters out non-public methods. Non-public methods are not interesting to include in + * the standard Java modeling, because they cannot be called from outside the package. + */ +private class NonPublicMethodCharacteristic extends CharacteristicsImpl::UninterestingToModelCharacteristic +{ + NonPublicMethodCharacteristic() { this = "non-public method" } + + override predicate appliesToEndpoint(Endpoint e) { + not ApplicationModeGetCallable::getCallable(e).isPublic() + } +} + +/** + * A negative characteristic that indicates that an endpoint is a non-sink argument to a method whose sinks have already + * been modeled. + * + * WARNING: These endpoints should not be used as negative samples for training, because some sinks may have been missed + * when the method was modeled. Specifically, as we start using ATM to merge in new declarations, we can be less sure + * that a method with one argument modeled as a MaD sink has also had its remaining arguments manually reviewed. The + * ML model might have predicted argument 0 of some method to be a sink but not argument 1, when in fact argument 1 is + * also a sink. + */ +private class OtherArgumentToModeledMethodCharacteristic extends CharacteristicsImpl::LikelyNotASinkCharacteristic +{ + OtherArgumentToModeledMethodCharacteristic() { + this = "other argument to a method that has already been modeled" + } + + override predicate appliesToEndpoint(Endpoint e) { + not ApplicationCandidatesImpl::isSink(e, _) and + exists(DataFlow::Node otherSink | + ApplicationCandidatesImpl::isSink(otherSink, _) and + e.asExpr() = otherSink.asExpr().(Argument).getCall().getAnArgument() and + e != otherSink + ) + } +} + +/** + * A characteristic that marks functional expression as likely not sinks. + * + * These expressions may well _contain_ sinks, but rarely are sinks themselves. + */ +private class FunctionValueCharacteristic extends CharacteristicsImpl::LikelyNotASinkCharacteristic { + FunctionValueCharacteristic() { this = "function value" } + + override predicate appliesToEndpoint(Endpoint e) { e.asExpr() instanceof FunctionalExpr } +} + +/** + * A negative characteristic that indicates that an endpoint is not a `to` node for any known taint step. Such a node + * cannot be tainted, because taint can't flow into it. + * + * WARNING: These endpoints should not be used as negative samples for training, because they may include sinks for + * which our taint tracking modeling is incomplete. + */ +private class CannotBeTaintedCharacteristic extends CharacteristicsImpl::LikelyNotASinkCharacteristic +{ + CannotBeTaintedCharacteristic() { this = "cannot be tainted" } + + override predicate appliesToEndpoint(Endpoint e) { not this.isKnownOutNodeForStep(e) } + + /** + * Holds if the node `n` is known as the predecessor in a modeled flow step. + */ + private predicate isKnownOutNodeForStep(Endpoint e) { + e.asExpr() instanceof Call or // we just assume flow in that case + TaintTracking::localTaintStep(_, e) or + FlowSummaryImpl::Private::Steps::summaryThroughStepValue(_, e, _) or + FlowSummaryImpl::Private::Steps::summaryThroughStepTaint(_, e, _) or + FlowSummaryImpl::Private::Steps::summaryGetterStep(_, _, e, _) or + FlowSummaryImpl::Private::Steps::summarySetterStep(_, _, e, _) + } +} + +/** + * Holds if the given endpoint has a self-contradictory combination of characteristics. Detects errors in our endpoint + * characteristics. Lists the problematic characteristics and their implications for all such endpoints, together with + * an error message indicating why this combination is problematic. + * + * Copied from + * javascript/ql/experimental/adaptivethreatmodeling/test/endpoint_large_scale/ContradictoryEndpointCharacteristics.ql + */ +predicate erroneousEndpoints( + Endpoint endpoint, EndpointCharacteristic characteristic, + AutomodelEndpointTypes::EndpointType endpointType, float confidence, string errorMessage, + boolean ignoreKnownModelingErrors +) { + // An endpoint's characteristics should not include positive indicators with medium/high confidence for more than one + // sink/source type (including the negative type). + exists( + EndpointCharacteristic characteristic2, AutomodelEndpointTypes::EndpointType endpointClass2, + float confidence2 + | + endpointType != endpointClass2 and + ( + endpointType instanceof AutomodelEndpointTypes::SinkType and + endpointClass2 instanceof AutomodelEndpointTypes::SinkType + or + endpointType instanceof AutomodelEndpointTypes::SourceType and + endpointClass2 instanceof AutomodelEndpointTypes::SourceType + ) and + characteristic.appliesToEndpoint(endpoint) and + characteristic2.appliesToEndpoint(endpoint) and + characteristic.hasImplications(endpointType, true, confidence) and + characteristic2.hasImplications(endpointClass2, true, confidence2) and + confidence > SharedCharacteristics::mediumConfidence() and + confidence2 > SharedCharacteristics::mediumConfidence() and + ( + ignoreKnownModelingErrors = true and + not knownOverlappingCharacteristics(characteristic, characteristic2) + or + ignoreKnownModelingErrors = false + ) + ) and + errorMessage = "Endpoint has high-confidence positive indicators for multiple classes" + or + // An endpoint's characteristics should not include positive indicators with medium/high confidence for some class and + // also include negative indicators with medium/high confidence for this same class. + exists(EndpointCharacteristic characteristic2, float confidence2 | + characteristic.appliesToEndpoint(endpoint) and + characteristic2.appliesToEndpoint(endpoint) and + characteristic.hasImplications(endpointType, true, confidence) and + characteristic2.hasImplications(endpointType, false, confidence2) and + confidence > SharedCharacteristics::mediumConfidence() and + confidence2 > SharedCharacteristics::mediumConfidence() + ) and + ignoreKnownModelingErrors = false and + errorMessage = "Endpoint has high-confidence positive and negative indicators for the same class" +} + +/** + * Holds if `characteristic1` and `characteristic2` are among the pairs of currently known positive characteristics that + * have some overlap in their results. This indicates a problem with the underlying Java modeling. Specifically, + * `PathCreation` is prone to FPs. + */ +private predicate knownOverlappingCharacteristics( + EndpointCharacteristic characteristic1, EndpointCharacteristic characteristic2 +) { + characteristic1 != characteristic2 and + characteristic1 = ["mad taint step", "create path", "read file", "known non-sink"] and + characteristic2 = ["mad taint step", "create path", "read file", "known non-sink"] +} diff --git a/java/ql/src/Telemetry/AutomodelApplicationModeExtractCandidates.ql b/java/ql/src/Telemetry/AutomodelApplicationModeExtractCandidates.ql new file mode 100644 index 00000000000..1e4c9c7e248 --- /dev/null +++ b/java/ql/src/Telemetry/AutomodelApplicationModeExtractCandidates.ql @@ -0,0 +1,49 @@ +/** + * Surfaces the endpoints that are not already known to be sinks, and are therefore used as candidates for + * classification with an ML model. + * + * Note: This query does not actually classify the endpoints using the model. + * + * @name Automodel candidates (application mode) + * @description A query to extract automodel candidates in application mode. + * @kind problem + * @problem.severity recommendation + * @id java/ml/extract-automodel-application-candidates + * @tags internal extract automodel application-mode candidates + */ + +private import AutomodelApplicationModeCharacteristics +private import AutomodelJavaUtil + +from + Endpoint endpoint, string message, ApplicationModeMetadataExtractor meta, DollarAtString package, + DollarAtString type, DollarAtString subtypes, DollarAtString name, DollarAtString signature, + DollarAtString input +where + not exists(CharacteristicsImpl::UninterestingToModelCharacteristic u | + u.appliesToEndpoint(endpoint) + ) and + // If a node is already a known sink for any of our existing ATM queries and is already modeled as a MaD sink, we + // don't include it as a candidate. Otherwise, we might include it as a candidate for query A, but the model will + // label it as a sink for one of the sink types of query B, for which it's already a known sink. This would result in + // overlap between our detected sinks and the pre-existing modeling. We assume that, if a sink has already been + // modeled in a MaD model, then it doesn't belong to any additional sink types, and we don't need to reexamine it. + not CharacteristicsImpl::isSink(endpoint, _) and + meta.hasMetadata(endpoint, package, type, subtypes, name, signature, input) and + // The message is the concatenation of all sink types for which this endpoint is known neither to be a sink nor to be + // a non-sink, and we surface only endpoints that have at least one such sink type. + message = + strictconcat(AutomodelEndpointTypes::SinkType sinkType | + not CharacteristicsImpl::isKnownSink(endpoint, sinkType) and + CharacteristicsImpl::isSinkCandidate(endpoint, sinkType) + | + sinkType, ", " + ) +select endpoint, message + "\nrelated locations: $@." + "\nmetadata: $@, $@, $@, $@, $@, $@.", // + CharacteristicsImpl::getRelatedLocationOrCandidate(endpoint, CallContext()), "CallContext", // + package, "package", // + type, "type", // + subtypes, "subtypes", // + name, "name", // method name + signature, "signature", // + input, "input" // diff --git a/java/ql/src/Telemetry/AutomodelApplicationModeExtractNegativeExamples.ql b/java/ql/src/Telemetry/AutomodelApplicationModeExtractNegativeExamples.ql new file mode 100644 index 00000000000..e8a284dd6c0 --- /dev/null +++ b/java/ql/src/Telemetry/AutomodelApplicationModeExtractNegativeExamples.ql @@ -0,0 +1,73 @@ +/** + * Surfaces endpoints that are non-sinks with high confidence, for use as negative examples in the prompt. + * + * @name Negative examples (application mode) + * @kind problem + * @problem.severity recommendation + * @id java/ml/extract-automodel-application-negative-examples + * @tags internal extract automodel application-mode negative examples + */ + +private import java +private import AutomodelApplicationModeCharacteristics +private import AutomodelEndpointTypes +private import AutomodelJavaUtil + +/** + * Gets a sample of endpoints (of at most `limit` samples) for which the given characteristic applies. + * + * The main purpose of this helper predicate is to avoid selecting too many samples, as this may + * cause the SARIF file to exceed the maximum size limit. + */ +bindingset[limit] +Endpoint getSampleForCharacteristic(EndpointCharacteristic c, int limit) { + exists(int n, int num_endpoints | num_endpoints = count(Endpoint e | c.appliesToEndpoint(e)) | + result = + rank[n](Endpoint e, Location loc | + loc = e.getLocation() and c.appliesToEndpoint(e) + | + e + order by + loc.getFile().getAbsolutePath(), loc.getStartLine(), loc.getStartColumn(), + loc.getEndLine(), loc.getEndColumn() + ) and + // To avoid selecting samples that are too close together (as the ranking above goes by file + // path first), we select `limit` evenly spaced samples from the ranked list of endpoints. By + // default this would always include the first sample, so we add a random-chosen prime offset + // to the first sample index, and reduce modulo the number of endpoints. + // Finally, we add 1 to the result, as ranking results in a 1-indexed relation. + n = 1 + (([0 .. limit - 1] * (num_endpoints / limit).floor() + 46337) % num_endpoints) + ) +} + +from + Endpoint endpoint, EndpointCharacteristic characteristic, float confidence, string message, + ApplicationModeMetadataExtractor meta, DollarAtString package, DollarAtString type, + DollarAtString subtypes, DollarAtString name, DollarAtString signature, DollarAtString input +where + endpoint = getSampleForCharacteristic(characteristic, 100) and + confidence >= SharedCharacteristics::highConfidence() and + characteristic.hasImplications(any(NegativeSinkType negative), true, confidence) and + // Exclude endpoints that have contradictory endpoint characteristics, because we only want examples we're highly + // certain about in the prompt. + not erroneousEndpoints(endpoint, _, _, _, _, false) and + meta.hasMetadata(endpoint, package, type, subtypes, name, signature, input) and + // It's valid for a node to satisfy the logic for both `isSink` and `isSanitizer`, but in that case it will be + // treated by the actual query as a sanitizer, since the final logic is something like + // `isSink(n) and not isSanitizer(n)`. We don't want to include such nodes as negative examples in the prompt, because + // they're ambiguous and might confuse the model, so we explicitly exclude all known sinks from the negative examples. + not exists(EndpointCharacteristic characteristic2, float confidence2, SinkType positiveType | + not positiveType instanceof NegativeSinkType and + characteristic2.appliesToEndpoint(endpoint) and + confidence2 >= SharedCharacteristics::maximalConfidence() and + characteristic2.hasImplications(positiveType, true, confidence2) + ) and + message = characteristic +select endpoint, message + "\nrelated locations: $@." + "\nmetadata: $@, $@, $@, $@, $@, $@.", // + CharacteristicsImpl::getRelatedLocationOrCandidate(endpoint, CallContext()), "CallContext", // + package, "package", // + type, "type", // + subtypes, "subtypes", // + name, "name", // + signature, "signature", // + input, "input" // diff --git a/java/ql/src/Telemetry/AutomodelApplicationModeExtractPositiveExamples.ql b/java/ql/src/Telemetry/AutomodelApplicationModeExtractPositiveExamples.ql new file mode 100644 index 00000000000..c62476377db --- /dev/null +++ b/java/ql/src/Telemetry/AutomodelApplicationModeExtractPositiveExamples.ql @@ -0,0 +1,33 @@ +/** + * Surfaces endpoints that are sinks with high confidence, for use as positive examples in the prompt. + * + * @name Positive examples (application mode) + * @kind problem + * @problem.severity recommendation + * @id java/ml/extract-automodel-application-positive-examples + * @tags internal extract automodel application-mode positive examples + */ + +private import AutomodelApplicationModeCharacteristics +private import AutomodelEndpointTypes +private import AutomodelJavaUtil + +from + Endpoint endpoint, SinkType sinkType, ApplicationModeMetadataExtractor meta, + DollarAtString package, DollarAtString type, DollarAtString subtypes, DollarAtString name, + DollarAtString signature, DollarAtString input +where + // Exclude endpoints that have contradictory endpoint characteristics, because we only want examples we're highly + // certain about in the prompt. + not erroneousEndpoints(endpoint, _, _, _, _, false) and + meta.hasMetadata(endpoint, package, type, subtypes, name, signature, input) and + // Extract positive examples of sinks belonging to the existing ATM query configurations. + CharacteristicsImpl::isKnownSink(endpoint, sinkType) +select endpoint, sinkType + "\nrelated locations: $@." + "\nmetadata: $@, $@, $@, $@, $@, $@.", // + CharacteristicsImpl::getRelatedLocationOrCandidate(endpoint, CallContext()), "CallContext", // + package, "package", // + type, "type", // + subtypes, "subtypes", // + name, "name", // + signature, "signature", // + input, "input" // diff --git a/java/ql/src/Telemetry/AutomodelEndpointTypes.qll b/java/ql/src/Telemetry/AutomodelEndpointTypes.qll index 7414837b605..618fa4bc7dd 100644 --- a/java/ql/src/Telemetry/AutomodelEndpointTypes.qll +++ b/java/ql/src/Telemetry/AutomodelEndpointTypes.qll @@ -40,18 +40,18 @@ class NegativeSinkType extends SinkType { } /** A sink relevant to the SQL injection query */ -class SqlSinkType extends SinkType { - SqlSinkType() { this = "sql" } +class SqlInjectionSinkType extends SinkType { + SqlInjectionSinkType() { this = "sql-injection" } } /** A sink relevant to the tainted path injection query. */ -class TaintedPathSinkType extends SinkType { - TaintedPathSinkType() { this = "tainted-path" } +class PathInjectionSinkType extends SinkType { + PathInjectionSinkType() { this = "path-injection" } } /** A sink relevant to the SSRF query. */ class RequestForgerySinkType extends SinkType { - RequestForgerySinkType() { this = "ssrf" } + RequestForgerySinkType() { this = "request-forgery" } } /** A sink relevant to the command injection query. */ diff --git a/java/ql/src/Telemetry/AutomodelFrameworkModeCharacteristics.qll b/java/ql/src/Telemetry/AutomodelFrameworkModeCharacteristics.qll index 57bd397f7a8..bc5c3b59a91 100644 --- a/java/ql/src/Telemetry/AutomodelFrameworkModeCharacteristics.qll +++ b/java/ql/src/Telemetry/AutomodelFrameworkModeCharacteristics.qll @@ -14,23 +14,11 @@ private import semmle.code.java.Expr as Expr private import semmle.code.java.security.QueryInjection private import semmle.code.java.security.RequestForgery private import semmle.code.java.dataflow.internal.ModelExclusions as ModelExclusions +private import AutomodelJavaUtil as AutomodelJavaUtil +private import AutomodelSharedGetCallable as AutomodelSharedGetCallable import AutomodelSharedCharacteristics as SharedCharacteristics import AutomodelEndpointTypes as AutomodelEndpointTypes -/** - * A meta data extractor. Any Java extraction mode needs to implement exactly - * one instance of this class. - */ -abstract class MetadataExtractor extends string { - bindingset[this] - MetadataExtractor() { any() } - - abstract predicate hasMetadata( - DataFlow::ParameterNode e, string package, string type, boolean subtypes, string name, - string signature, int input, string parameterName - ); -} - newtype JavaRelatedLocationType = MethodDoc() or ClassDoc() @@ -60,31 +48,7 @@ module FrameworkCandidatesImpl implements SharedCharacteristics::CandidateSig { RelatedLocation asLocation(Endpoint e) { result = e.asParameter() } - predicate isKnownKind(string kind, string humanReadableKind, EndpointType type) { - kind = "read-file" and - humanReadableKind = "read file" and - type instanceof AutomodelEndpointTypes::TaintedPathSinkType - or - kind = "create-file" and - humanReadableKind = "create file" and - type instanceof AutomodelEndpointTypes::TaintedPathSinkType - or - kind = "sql" and - humanReadableKind = "mad modeled sql" and - type instanceof AutomodelEndpointTypes::SqlSinkType - or - kind = "open-url" and - humanReadableKind = "open url" and - type instanceof AutomodelEndpointTypes::RequestForgerySinkType - or - kind = "jdbc-url" and - humanReadableKind = "jdbc url" and - type instanceof AutomodelEndpointTypes::RequestForgerySinkType - or - kind = "command-injection" and - humanReadableKind = "command injection" and - type instanceof AutomodelEndpointTypes::CommandInjectionSinkType - } + predicate isKnownKind = AutomodelJavaUtil::isKnownKind/2; predicate isSink(Endpoint e, string kind) { exists(string package, string type, string name, string signature, string ext, string input | @@ -96,40 +60,48 @@ module FrameworkCandidatesImpl implements SharedCharacteristics::CandidateSig { predicate isNeutral(Endpoint e) { exists(string package, string type, string name, string signature | sinkSpec(e, package, type, name, signature, _, _) and - ExternalFlow::neutralModel(package, type, name, [signature, ""], _, _) + ExternalFlow::neutralModel(package, type, name, [signature, ""], "sink", _) ) } additional predicate sinkSpec( Endpoint e, string package, string type, string name, string signature, string ext, string input ) { - FrameworkCandidatesImpl::getCallable(e).hasQualifiedName(package, type, name) and - signature = ExternalFlow::paramsString(getCallable(e)) and + FrameworkModeGetCallable::getCallable(e).hasQualifiedName(package, type, name) and + signature = ExternalFlow::paramsString(FrameworkModeGetCallable::getCallable(e)) and ext = "" and exists(int paramIdx | e.isParameterOf(_, paramIdx) | - if paramIdx = -1 then input = "Argument[this]" else input = "Argument[" + paramIdx + "]" + input = AutomodelJavaUtil::getArgumentForIndex(paramIdx) ) } /** - * Returns the related location for the given endpoint. + * Gets the related location for the given endpoint. * * Related locations can be JavaDoc comments of the class or the method. */ RelatedLocation getRelatedLocation(Endpoint e, RelatedLocationType type) { type = MethodDoc() and - result = FrameworkCandidatesImpl::getCallable(e).(Documentable).getJavadoc() + result = FrameworkModeGetCallable::getCallable(e).(Documentable).getJavadoc() or type = ClassDoc() and - result = FrameworkCandidatesImpl::getCallable(e).getDeclaringType().(Documentable).getJavadoc() + result = FrameworkModeGetCallable::getCallable(e).getDeclaringType().(Documentable).getJavadoc() } +} + +private class JavaCallable = Callable; + +private module FrameworkModeGetCallable implements AutomodelSharedGetCallable::GetCallableSig { + class Callable = JavaCallable; + + class Endpoint = FrameworkCandidatesImpl::Endpoint; /** * Returns the callable that contains the given endpoint. * * Each Java mode should implement this predicate. */ - additional Callable getCallable(Endpoint e) { result = e.getEnclosingCallable() } + Callable getCallable(Endpoint e) { result = e.getEnclosingCallable() } } module CharacteristicsImpl = SharedCharacteristics::SharedCharacteristics; @@ -145,35 +117,19 @@ class Endpoint = FrameworkCandidatesImpl::Endpoint; /** * A MetadataExtractor that extracts metadata for framework mode. */ -class FrameworkModeMetadataExtractor extends MetadataExtractor { +class FrameworkModeMetadataExtractor extends string { FrameworkModeMetadataExtractor() { this = "FrameworkModeMetadataExtractor" } - /** - * By convention, the subtypes property of the MaD declaration should only be - * true when there _can_ exist any subtypes with a different implementation. - * - * It would technically be ok to always use the value 'true', but this would - * break convention. - */ - boolean considerSubtypes(Callable callable) { - if - callable.isStatic() or - callable.getDeclaringType().isStatic() or - callable.isFinal() or - callable.getDeclaringType().isFinal() - then result = false - else result = true - } - - override predicate hasMetadata( - Endpoint e, string package, string type, boolean subtypes, string name, string signature, - int input, string parameterName + predicate hasMetadata( + Endpoint e, string package, string type, string subtypes, string name, string signature, + string input, string parameterName ) { - exists(Callable callable | - e.asParameter() = callable.getParameter(input) and + exists(Callable callable, int paramIdx | + e.asParameter() = callable.getParameter(paramIdx) and + input = AutomodelJavaUtil::getArgumentForIndex(paramIdx) and package = callable.getDeclaringType().getPackage().getName() and type = callable.getDeclaringType().getErasure().(RefType).nestedName() and - subtypes = this.considerSubtypes(callable) and + subtypes = AutomodelJavaUtil::considerSubtypes(callable).toString() and name = callable.getName() and parameterName = e.asParameter().getName() and signature = ExternalFlow::paramsString(callable) @@ -199,8 +155,8 @@ private class UnexploitableIsCharacteristic extends CharacteristicsImpl::NotASin override predicate appliesToEndpoint(Endpoint e) { not FrameworkCandidatesImpl::isSink(e, _) and - FrameworkCandidatesImpl::getCallable(e).getName().matches("is%") and - FrameworkCandidatesImpl::getCallable(e).getReturnType() instanceof BooleanType + FrameworkModeGetCallable::getCallable(e).getName().matches("is%") and + FrameworkModeGetCallable::getCallable(e).getReturnType() instanceof BooleanType } } @@ -218,7 +174,7 @@ private class UnexploitableExistsCharacteristic extends CharacteristicsImpl::Not override predicate appliesToEndpoint(Endpoint e) { not FrameworkCandidatesImpl::isSink(e, _) and exists(Callable callable | - callable = FrameworkCandidatesImpl::getCallable(e) and + callable = FrameworkModeGetCallable::getCallable(e) and callable.getName().toLowerCase() = ["exists", "notexists"] and callable.getReturnType() instanceof BooleanType ) @@ -232,7 +188,7 @@ private class ExceptionCharacteristic extends CharacteristicsImpl::NotASinkChara ExceptionCharacteristic() { this = "exception" } override predicate appliesToEndpoint(Endpoint e) { - FrameworkCandidatesImpl::getCallable(e).getDeclaringType().getASupertype*() instanceof + FrameworkModeGetCallable::getCallable(e).getDeclaringType().getASupertype*() instanceof TypeThrowable } } @@ -258,7 +214,7 @@ private class NonPublicMethodCharacteristic extends CharacteristicsImpl::Uninter NonPublicMethodCharacteristic() { this = "non-public method" } override predicate appliesToEndpoint(Endpoint e) { - not FrameworkCandidatesImpl::getCallable(e).isPublic() + not FrameworkModeGetCallable::getCallable(e).isPublic() } } diff --git a/java/ql/src/Telemetry/AutomodelFrameworkModeExtractCandidates.ql b/java/ql/src/Telemetry/AutomodelFrameworkModeExtractCandidates.ql index a64327422a0..4186d1c17b9 100644 --- a/java/ql/src/Telemetry/AutomodelFrameworkModeExtractCandidates.ql +++ b/java/ql/src/Telemetry/AutomodelFrameworkModeExtractCandidates.ql @@ -4,20 +4,21 @@ * * Note: This query does not actually classify the endpoints using the model. * - * @name Automodel candidates - * @description A query to extract automodel candidates. + * @name Automodel candidates (framework mode) + * @description A query to extract automodel candidates in framework mode. * @kind problem - * @severity info - * @id java/ml/extract-automodel-candidates - * @tags internal automodel extract candidates + * @problem.severity recommendation + * @id java/ml/extract-automodel-framework-candidates + * @tags internal extract automodel framework-mode candidates */ private import AutomodelFrameworkModeCharacteristics -private import AutomodelSharedUtil +private import AutomodelJavaUtil from - Endpoint endpoint, string message, MetadataExtractor meta, string package, string type, - boolean subtypes, string name, string signature, int input, string parameterName + Endpoint endpoint, string message, FrameworkModeMetadataExtractor meta, DollarAtString package, + DollarAtString type, DollarAtString subtypes, DollarAtString name, DollarAtString signature, + DollarAtString input, DollarAtString parameterName where not exists(CharacteristicsImpl::UninterestingToModelCharacteristic u | u.appliesToEndpoint(endpoint) @@ -42,10 +43,10 @@ select endpoint, message + "\nrelated locations: $@, $@." + "\nmetadata: $@, $@, $@, $@, $@, $@, $@.", // CharacteristicsImpl::getRelatedLocationOrCandidate(endpoint, MethodDoc()), "MethodDoc", // CharacteristicsImpl::getRelatedLocationOrCandidate(endpoint, ClassDoc()), "ClassDoc", // - package.(DollarAtString), "package", // - type.(DollarAtString), "type", // - subtypes.toString().(DollarAtString), "subtypes", // - name.(DollarAtString), "name", // - signature.(DollarAtString), "signature", // - input.toString().(DollarAtString), "input", // - parameterName.(DollarAtString), "parameterName" // + package, "package", // + type, "type", // + subtypes, "subtypes", // + name, "name", // + signature, "signature", // + input, "input", // + parameterName, "parameterName" // diff --git a/java/ql/src/Telemetry/AutomodelFrameworkModeExtractNegativeExamples.ql b/java/ql/src/Telemetry/AutomodelFrameworkModeExtractNegativeExamples.ql index f1ba8ee4119..10e1870984d 100644 --- a/java/ql/src/Telemetry/AutomodelFrameworkModeExtractNegativeExamples.ql +++ b/java/ql/src/Telemetry/AutomodelFrameworkModeExtractNegativeExamples.ql @@ -1,21 +1,22 @@ /** * Surfaces endpoints that are non-sinks with high confidence, for use as negative examples in the prompt. * - * @name Negative examples (experimental) + * @name Negative examples (framework mode) * @kind problem - * @severity info - * @id java/ml/non-sink - * @tags internal automodel extract examples negative + * @problem.severity recommendation + * @id java/ml/extract-automodel-framework-negative-examples + * @tags internal extract automodel framework-mode negative examples */ private import AutomodelFrameworkModeCharacteristics private import AutomodelEndpointTypes -private import AutomodelSharedUtil +private import AutomodelJavaUtil from - Endpoint endpoint, EndpointCharacteristic characteristic, float confidence, string message, - MetadataExtractor meta, string package, string type, boolean subtypes, string name, - string signature, int input, string parameterName + Endpoint endpoint, EndpointCharacteristic characteristic, float confidence, + DollarAtString message, FrameworkModeMetadataExtractor meta, DollarAtString package, + DollarAtString type, DollarAtString subtypes, DollarAtString name, DollarAtString signature, + DollarAtString input, DollarAtString parameterName where characteristic.appliesToEndpoint(endpoint) and confidence >= SharedCharacteristics::highConfidence() and @@ -39,10 +40,10 @@ select endpoint, message + "\nrelated locations: $@, $@." + "\nmetadata: $@, $@, $@, $@, $@, $@, $@.", // CharacteristicsImpl::getRelatedLocationOrCandidate(endpoint, MethodDoc()), "MethodDoc", // CharacteristicsImpl::getRelatedLocationOrCandidate(endpoint, ClassDoc()), "ClassDoc", // - package.(DollarAtString), "package", // - type.(DollarAtString), "type", // - subtypes.toString().(DollarAtString), "subtypes", // - name.(DollarAtString), "name", // - signature.(DollarAtString), "signature", // - input.toString().(DollarAtString), "input", // - parameterName.(DollarAtString), "parameterName" // + package, "package", // + type, "type", // + subtypes, "subtypes", // + name, "name", // + signature, "signature", // + input, "input", // + parameterName, "parameterName" // diff --git a/java/ql/src/Telemetry/AutomodelFrameworkModeExtractPositiveExamples.ql b/java/ql/src/Telemetry/AutomodelFrameworkModeExtractPositiveExamples.ql index e216c292538..2547239ee91 100644 --- a/java/ql/src/Telemetry/AutomodelFrameworkModeExtractPositiveExamples.ql +++ b/java/ql/src/Telemetry/AutomodelFrameworkModeExtractPositiveExamples.ql @@ -1,20 +1,21 @@ /** * Surfaces endpoints that are sinks with high confidence, for use as positive examples in the prompt. * - * @name Positive examples (experimental) + * @name Positive examples (framework mode) * @kind problem - * @severity info - * @id java/ml/known-sink - * @tags internal automodel extract examples positive + * @problem.severity recommendation + * @id java/ml/extract-automodel-framework-positive-examples + * @tags internal extract automodel framework-mode positive examples */ private import AutomodelFrameworkModeCharacteristics private import AutomodelEndpointTypes -private import AutomodelSharedUtil +private import AutomodelJavaUtil from - Endpoint endpoint, SinkType sinkType, MetadataExtractor meta, string package, string type, - boolean subtypes, string name, string signature, int input, string parameterName + Endpoint endpoint, SinkType sinkType, FrameworkModeMetadataExtractor meta, DollarAtString package, + DollarAtString type, DollarAtString subtypes, DollarAtString name, DollarAtString signature, + DollarAtString input, DollarAtString parameterName where // Exclude endpoints that have contradictory endpoint characteristics, because we only want examples we're highly // certain about in the prompt. @@ -26,10 +27,10 @@ select endpoint, sinkType + "\nrelated locations: $@, $@." + "\nmetadata: $@, $@, $@, $@, $@, $@, $@.", // CharacteristicsImpl::getRelatedLocationOrCandidate(endpoint, MethodDoc()), "MethodDoc", // CharacteristicsImpl::getRelatedLocationOrCandidate(endpoint, ClassDoc()), "ClassDoc", // - package.(DollarAtString), "package", // - type.(DollarAtString), "type", // - subtypes.toString().(DollarAtString), "subtypes", // - name.(DollarAtString), "name", // - signature.(DollarAtString), "signature", // - input.toString().(DollarAtString), "input", // - parameterName.(DollarAtString), "parameterName" // + package, "package", // + type, "type", // + subtypes, "subtypes", // + name, "name", // + signature, "signature", // + input, "input", // + parameterName, "parameterName" // diff --git a/java/ql/src/Telemetry/AutomodelJavaUtil.qll b/java/ql/src/Telemetry/AutomodelJavaUtil.qll new file mode 100644 index 00000000000..03b73da1015 --- /dev/null +++ b/java/ql/src/Telemetry/AutomodelJavaUtil.qll @@ -0,0 +1,67 @@ +private import java +private import AutomodelEndpointTypes as AutomodelEndpointTypes + +/** + * A helper class to represent a string value that can be returned by a query using $@ notation. + * + * It extends `string`, but adds a mock `hasLocationInfo` method that returns the string itself as the file name. + * + * Use this, when you want to return a string value from a query using $@ notation - the string value + * will be included in the sarif file. + * + * + * Background information on `hasLocationInfo`: + * https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/#providing-location-information + */ +class DollarAtString extends string { + bindingset[this] + DollarAtString() { any() } + + bindingset[this] + predicate hasLocationInfo(string path, int sl, int sc, int el, int ec) { + path = this and sl = 1 and sc = 1 and el = 1 and ec = 1 + } +} + +/** + * Holds for all combinations of MaD kinds (`kind`) and their human readable + * descriptions. + */ +predicate isKnownKind(string kind, AutomodelEndpointTypes::EndpointType type) { + kind = "path-injection" and + type instanceof AutomodelEndpointTypes::PathInjectionSinkType + or + kind = "sql-injection" and + type instanceof AutomodelEndpointTypes::SqlInjectionSinkType + or + kind = "request-forgery" and + type instanceof AutomodelEndpointTypes::RequestForgerySinkType + or + kind = "command-injection" and + type instanceof AutomodelEndpointTypes::CommandInjectionSinkType +} + +/** Gets the models-as-data description for the method argument with the index `index`. */ +bindingset[index] +string getArgumentForIndex(int index) { + index = -1 and result = "Argument[this]" + or + index >= 0 and result = "Argument[" + index + "]" +} + +/** + * By convention, the subtypes property of the MaD declaration should only be + * true when there _can_ exist any subtypes with a different implementation. + * + * It would technically be ok to always use the value 'true', but this would + * break convention. + */ +boolean considerSubtypes(Callable callable) { + if + callable.isStatic() or + callable.getDeclaringType().isStatic() or + callable.isFinal() or + callable.getDeclaringType().isFinal() + then result = false + else result = true +} diff --git a/java/ql/src/Telemetry/AutomodelSharedCharacteristics.qll b/java/ql/src/Telemetry/AutomodelSharedCharacteristics.qll index f23340bf34f..b077f77deb9 100644 --- a/java/ql/src/Telemetry/AutomodelSharedCharacteristics.qll +++ b/java/ql/src/Telemetry/AutomodelSharedCharacteristics.qll @@ -50,7 +50,7 @@ signature module CandidateSig { /** * Defines what MaD kinds are known, and what endpoint type they correspond to. */ - predicate isKnownKind(string kind, string humanReadableLabel, EndpointType type); + predicate isKnownKind(string kind, EndpointType type); /** * Holds if `e` is a flow sanitizer, and has type `t`. @@ -276,7 +276,11 @@ module SharedCharacteristics { string madKind; Candidate::EndpointType endpointType; - KnownSinkCharacteristic() { Candidate::isKnownKind(madKind, this, endpointType) } + KnownSinkCharacteristic() { + Candidate::isKnownKind(madKind, endpointType) and + // bind "this" to a unique string differing from that of the SinkType classes + this = madKind + "-characteristic" + } override predicate appliesToEndpoint(Candidate::Endpoint e) { Candidate::isSink(e, madKind) } diff --git a/java/ql/src/Telemetry/AutomodelSharedGetCallable.qll b/java/ql/src/Telemetry/AutomodelSharedGetCallable.qll new file mode 100644 index 00000000000..87e20969381 --- /dev/null +++ b/java/ql/src/Telemetry/AutomodelSharedGetCallable.qll @@ -0,0 +1,21 @@ +/** + * An automodel extraction mode instantiates this interface to define how to access + * the callable that's associated with an endpoint. + */ +signature module GetCallableSig { + /** + * A callable is the definition of a method, function, etc. - something that can be called. + */ + class Callable; + + /** + * An endpoint is a potential candidate for modeling. This will typically be bound to the language's + * DataFlow node class, or a subtype thereof. + */ + class Endpoint; + + /** + * Gets the callable that's associated with the given endpoint. + */ + Callable getCallable(Endpoint endpoint); +} diff --git a/java/ql/src/Telemetry/AutomodelSharedUtil.qll b/java/ql/src/Telemetry/AutomodelSharedUtil.qll deleted file mode 100644 index e03e46abd1d..00000000000 --- a/java/ql/src/Telemetry/AutomodelSharedUtil.qll +++ /dev/null @@ -1,21 +0,0 @@ -/** - * A helper class to represent a string value that can be returned by a query using $@ notation. - * - * It extends `string`, but adds a mock `hasLocationInfo` method that returns the string itself as the file name. - * - * Use this, when you want to return a string value from a query using $@ notation - the string value - * will be included in the sarif file. - * - * - * Background information on `hasLocationInfo`: - * https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/#providing-location-information - */ -class DollarAtString extends string { - bindingset[this] - DollarAtString() { any() } - - bindingset[this] - predicate hasLocationInfo(string path, int sl, int sc, int el, int ec) { - path = this and sl = 1 and sc = 1 and el = 1 and ec = 1 - } -} diff --git a/java/ql/src/Violations of Best Practice/Implementation Hiding/ExposeRepresentation.ql b/java/ql/src/Violations of Best Practice/Implementation Hiding/ExposeRepresentation.ql index 9f24744fa0c..2889de0b5cf 100644 --- a/java/ql/src/Violations of Best Practice/Implementation Hiding/ExposeRepresentation.ql +++ b/java/ql/src/Violations of Best Practice/Implementation Hiding/ExposeRepresentation.ql @@ -128,4 +128,4 @@ where not exists(Property p | p.getBackingField() = f) select c, c.getName() + " exposes the internal representation stored in field " + f.getName() + - ". The value may be modified $@.", why.getLocation(), whyText + ". The value may be modified $@.", why, whyText diff --git a/java/ql/src/change-notes/2023-05-15-xpath-xxe-sink.md b/java/ql/src/change-notes/2023-05-15-xpath-xxe-sink.md deleted file mode 100644 index 1696ffbd213..00000000000 --- a/java/ql/src/change-notes/2023-05-15-xpath-xxe-sink.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The queries `java/xxe` and `java/xxe-local` now recognize the second argument of calls to `XPath.evaluate` as a sink. diff --git a/java/ql/src/change-notes/2023-05-19-groovy-injection-sink.md b/java/ql/src/change-notes/2023-05-19-groovy-injection-sink.md deleted file mode 100644 index 7f668dd1b28..00000000000 --- a/java/ql/src/change-notes/2023-05-19-groovy-injection-sink.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The query `java/groovy-injection` now recognizes `groovy.text.TemplateEngine.createTemplate` as a sink. diff --git a/java/ql/src/change-notes/2023-06-02-unsafe-deserialization-serialkiller.md b/java/ql/src/change-notes/2023-06-02-unsafe-deserialization-serialkiller.md new file mode 100644 index 00000000000..588e83d4795 --- /dev/null +++ b/java/ql/src/change-notes/2023-06-02-unsafe-deserialization-serialkiller.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The query `java/unsafe-deserialization` has been updated to take into account `SerialKiller`, a library used to prevent deserialization of arbitrary classes. \ No newline at end of file diff --git a/java/ql/src/change-notes/2023-06-16-zipslip-rename.md b/java/ql/src/change-notes/2023-06-16-zipslip-rename.md new file mode 100644 index 00000000000..fa1343317ba --- /dev/null +++ b/java/ql/src/change-notes/2023-06-16-zipslip-rename.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* The query "Arbitrary file write during archive extraction ("Zip Slip")" (`java/zipslip`) has been renamed to "Arbitrary file access during archive extraction ("Zip Slip")." diff --git a/java/ql/src/change-notes/2023-04-26-xxe-sinks-promotion.md b/java/ql/src/change-notes/released/0.6.2.md similarity index 50% rename from java/ql/src/change-notes/2023-04-26-xxe-sinks-promotion.md rename to java/ql/src/change-notes/released/0.6.2.md index 01bbfe267bd..50a5ff81b8f 100644 --- a/java/ql/src/change-notes/2023-04-26-xxe-sinks-promotion.md +++ b/java/ql/src/change-notes/released/0.6.2.md @@ -1,4 +1,7 @@ ---- -category: minorAnalysis ---- +## 0.6.2 + +### Minor Analysis Improvements + +* The query `java/groovy-injection` now recognizes `groovy.text.TemplateEngine.createTemplate` as a sink. +* The queries `java/xxe` and `java/xxe-local` now recognize the second argument of calls to `XPath.evaluate` as a sink. * Experimental sinks for the query "Resolving XML external entity in user-controlled data" (`java/xxe`) have been promoted to the main query pack. These sinks were originally [submitted as part of an experimental query by @haby0](https://github.com/github/codeql/pull/6564). diff --git a/java/ql/src/change-notes/released/0.6.3.md b/java/ql/src/change-notes/released/0.6.3.md new file mode 100644 index 00000000000..96665727131 --- /dev/null +++ b/java/ql/src/change-notes/released/0.6.3.md @@ -0,0 +1,5 @@ +## 0.6.3 + +### Minor Analysis Improvements + +* The `java/summary/lines-of-code` query now only counts lines of Java code. The new `java/summary/lines-of-code-kotlin` counts lines of Kotlin code. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 80fb0899f64..b7dafe32c5d 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.1 +lastReleaseVersion: 0.6.3 diff --git a/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql b/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql index 8e113837bca..ba3411e4da2 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-073/FilePathInjection.ql @@ -16,7 +16,6 @@ import java import semmle.code.java.dataflow.TaintTracking import semmle.code.java.dataflow.ExternalFlow import semmle.code.java.dataflow.FlowSources -import semmle.code.java.security.PathCreation import JFinalController import semmle.code.java.security.PathSanitizer import InjectFilePathFlow::PathGraph @@ -52,7 +51,7 @@ module InjectFilePathConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } predicate isSink(DataFlow::Node sink) { - sink.asExpr() = any(PathCreation p).getAnInput() and + sinkNode(sink, "path-injection") and not sink instanceof NormalizedPathNode } diff --git a/java/ql/src/experimental/Security/CWE/CWE-089/MyBatisCommonLib.qll b/java/ql/src/experimental/Security/CWE/CWE-089/MyBatisCommonLib.qll index 85d3f36dfdf..377c7f74bd4 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-089/MyBatisCommonLib.qll +++ b/java/ql/src/experimental/Security/CWE/CWE-089/MyBatisCommonLib.qll @@ -56,9 +56,6 @@ predicate myBatisMapperXmlElementFromMethod(Method method, MyBatisMapperXmlEleme ) } -/** DEPRECATED: Alias for myBatisMapperXmlElementFromMethod */ -deprecated predicate myBatisMapperXMLElementFromMethod = myBatisMapperXmlElementFromMethod/2; - /** Holds if the specified `method` has Ibatis Sql operation annotation `isoa`. */ predicate myBatisSqlOperationAnnotationFromMethod(Method method, IbatisSqlOperationAnnotation isoa) { exists(MyBatisSqlOperationAnnotationMethod msoam | diff --git a/java/ql/src/experimental/Security/CWE/CWE-200/AndroidFileIntentSink.qll b/java/ql/src/experimental/Security/CWE/CWE-200/AndroidFileIntentSink.qll index e8795a25431..ba6c895dc8f 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-200/AndroidFileIntentSink.qll +++ b/java/ql/src/experimental/Security/CWE/CWE-200/AndroidFileIntentSink.qll @@ -8,7 +8,7 @@ import semmle.code.java.frameworks.android.Intent /** A sink representing methods creating a file in Android. */ class AndroidFileSink extends DataFlow::Node { - AndroidFileSink() { sinkNode(this, "create-file") } + AndroidFileSink() { sinkNode(this, "path-injection") } } /** diff --git a/java/ql/src/experimental/Security/CWE/CWE-200/AndroidWebResourceResponse.qll b/java/ql/src/experimental/Security/CWE/CWE-200/AndroidWebResourceResponse.qll index bd177b30213..05055bdfa84 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-200/AndroidWebResourceResponse.qll +++ b/java/ql/src/experimental/Security/CWE/CWE-200/AndroidWebResourceResponse.qll @@ -55,10 +55,14 @@ class WebResourceResponseSink extends DataFlow::Node { } /** - * A value step from the URL argument of `WebView::loadUrl` to the URL parameter of + * A taint step from the URL argument of `WebView::loadUrl` to the URL/WebResourceRequest parameter of * `WebViewClient::shouldInterceptRequest`. + * + * TODO: This ought to be a value step when it is targeting the URL parameter, + * and it ought to check the parameter type in both cases to ensure that we only + * hit the overloads we intend to. */ -private class FetchUrlStep extends AdditionalValueStep { +private class FetchUrlStep extends AdditionalTaintStep { override predicate step(DataFlow::Node pred, DataFlow::Node succ) { exists( // webview.loadUrl(url) -> webview.setWebViewClient(new WebViewClient() { shouldInterceptRequest(view, url) }); diff --git a/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qll b/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qll index bff6a0a3893..3b5a8940239 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qll +++ b/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qll @@ -89,7 +89,7 @@ class GetVirtualFileChildMethod extends Method { /** An argument to `getResource()` or `getResourceAsStream()`. */ private class GetResourceSink extends UnsafeUrlForwardSink { GetResourceSink() { - sinkNode(this, "open-url") + sinkNode(this, "request-forgery") or sinkNode(this, "get-resource") or diff --git a/java/ql/src/experimental/semmle/code/xml/StrutsXML.qll b/java/ql/src/experimental/semmle/code/xml/StrutsXML.qll index 874d8448640..8d829612d95 100644 --- a/java/ql/src/experimental/semmle/code/xml/StrutsXML.qll +++ b/java/ql/src/experimental/semmle/code/xml/StrutsXML.qll @@ -10,9 +10,6 @@ class StrutsXmlFile extends XmlFile { } } -/** DEPRECATED: Alias for StrutsXmlFile */ -deprecated class StrutsXMLFile = StrutsXmlFile; - /** * An XML element in a `StrutsXMLFile`. */ @@ -25,9 +22,6 @@ class StrutsXmlElement extends XmlElement { string getValue() { result = this.allCharactersString().trim() } } -/** DEPRECATED: Alias for StrutsXmlElement */ -deprecated class StrutsXMLElement = StrutsXmlElement; - /** * A `` element in a `StrutsXMLFile`. */ diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 3e640f9376f..b75aea1c0a0 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.6.2-dev +version: 0.6.4-dev groups: - java - queries diff --git a/java/ql/src/semmle/code/xml/MyBatisMapperXML.qll b/java/ql/src/semmle/code/xml/MyBatisMapperXML.qll index c7de1b8b945..529a627e96f 100644 --- a/java/ql/src/semmle/code/xml/MyBatisMapperXML.qll +++ b/java/ql/src/semmle/code/xml/MyBatisMapperXML.qll @@ -14,9 +14,6 @@ class MyBatisMapperXmlFile extends XmlFile { } } -/** DEPRECATED: Alias for MyBatisMapperXmlFile */ -deprecated class MyBatisMapperXMLFile = MyBatisMapperXmlFile; - /** * An XML element in a `MyBatisMapperXMLFile`. */ @@ -36,9 +33,6 @@ class MyBatisMapperXmlElement extends XmlElement { } } -/** DEPRECATED: Alias for MyBatisMapperXmlElement */ -deprecated class MyBatisMapperXMLElement = MyBatisMapperXmlElement; - /** * An MyBatis Mapper sql operation element. */ diff --git a/java/ql/src/utils/flowtestcasegenerator/GenerateFlowTestCase.py b/java/ql/src/utils/flowtestcasegenerator/GenerateFlowTestCase.py index 5e35ca52dd1..1cc943a78ec 100755 --- a/java/ql/src/utils/flowtestcasegenerator/GenerateFlowTestCase.py +++ b/java/ql/src/utils/flowtestcasegenerator/GenerateFlowTestCase.py @@ -18,7 +18,7 @@ GenerateFlowTestCase.py specsToTest projectPom.xml outdir [--force] This generates test cases exercising function model specifications found in specsToTest producing files Test.java, test.ql, test.ext.yml and test.expected in outdir. -specsToTest should either be a .csv file, a .yml file, or a directory of .yml files, containing the +specsToTest should either be a .csv file, a .yml file, or a directory of .yml files, containing the model specifications to test. projectPom.xml should be a Maven pom sufficient to resolve the classes named in specsToTest.csv. @@ -276,7 +276,7 @@ if len(supportModelRows) != 0: modelSpecRow[0].strip() for modelSpecRow in supportModelRows) dataextensions = f"""extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: summaryModel data: {models} diff --git a/java/ql/src/utils/flowtestcasegenerator/testHeader.qlfrag b/java/ql/src/utils/flowtestcasegenerator/testHeader.qlfrag index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/src/utils/flowtestcasegenerator/testHeader.qlfrag +++ b/java/ql/src/utils/flowtestcasegenerator/testHeader.qlfrag @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/src/utils/modelgenerator/internal/CaptureModelsSpecific.qll b/java/ql/src/utils/modelgenerator/internal/CaptureModelsSpecific.qll index fcc1ef97ecc..7877594519a 100644 --- a/java/ql/src/utils/modelgenerator/internal/CaptureModelsSpecific.qll +++ b/java/ql/src/utils/modelgenerator/internal/CaptureModelsSpecific.qll @@ -250,9 +250,9 @@ string asInputArgumentSpecific(DataFlow::Node source) { */ bindingset[kind] predicate isRelevantSinkKind(string kind) { - not kind = "logging" and + not kind = "log-injection" and not kind.matches("regex-use%") and - not kind = "write-file" + not kind = "file-content-store" } /** diff --git a/java/ql/src/utils/stub-generator/Stubs.qll b/java/ql/src/utils/stub-generator/Stubs.qll index 785f621cba0..889bc6b466c 100644 --- a/java/ql/src/utils/stub-generator/Stubs.qll +++ b/java/ql/src/utils/stub-generator/Stubs.qll @@ -285,15 +285,25 @@ private string stubQualifier(RefType t) { else result = "" } +pragma[nomagic] +private predicate needsPackageNameHelper(RefType t, GeneratedTopLevel top, string name) { + t.getSourceDeclaration() = + pragma[only_bind_out]([getAReferencedType(top), top].getSourceDeclaration()) and + name = t.getName() +} + +pragma[nomagic] +private predicate describesMultipleTypes(GeneratedTopLevel top, string name) { + 2 <= strictcount(RefType t | needsPackageNameHelper(t, top, name)) +} + /** * Holds if `t` may clash with another type of the same name, so should be referred to using the fully qualified name */ private predicate needsPackageName(RefType t) { - exists(GeneratedTopLevel top, RefType other | - t.getSourceDeclaration() = [getAReferencedType(top), top].getSourceDeclaration() and - other.getSourceDeclaration() = [getAReferencedType(top), top].getSourceDeclaration() and - t.getName() = other.getName() and - t != other + exists(GeneratedTopLevel top, string name | + needsPackageNameHelper(t, top, name) and + describesMultipleTypes(top, name) ) } diff --git a/java/ql/test/TestUtilities/InlineFlowTest.qll b/java/ql/test/TestUtilities/InlineFlowTest.qll index 1731b73f24e..34d7f75ee20 100644 --- a/java/ql/test/TestUtilities/InlineFlowTest.qll +++ b/java/ql/test/TestUtilities/InlineFlowTest.qll @@ -5,9 +5,15 @@ * ```ql * import java * import TestUtilities.InlineFlowTest + * import DefaultFlowTest + * import PathGraph + * + * from PathNode source, PathNode sink + * where flowPath(source, sink) + * select sink, source, sink, "$@", source, source.toString() * ``` * - * To declare expecations, you can use the $hasTaintFlow or $hasValueFlow comments within the test source files. + * To declare expectations, you can use the $hasTaintFlow or $hasValueFlow comments within the test source files. * Example of the corresponding test file, e.g. Test.java * ```java * public class Test { @@ -18,22 +24,18 @@ * * public void test() { * Object s = source(); - * sink(s); //$hasValueFlow + * sink(s); // $ hasValueFlow * String t = "foo" + taint(); - * sink(t); //$hasTaintFlow + * sink(t); // $ hasTaintFlow * } * * } * ``` * - * If you're not interested in a specific flow type, you can disable either value or taint flow expectations as follows: - * ```ql - * class HasFlowTest extends InlineFlowTest { - * override DataFlow::Configuration getTaintFlowConfig() { none() } - * - * override DataFlow::Configuration getValueFlowConfig() { none() } - * } - * ``` + * If you are only interested in value flow, then instead of importing `DefaultFlowTest`, you can import + * `ValueFlowTest`. Similarly, if you are only interested in taint flow, then instead of + * importing `DefaultFlowTest`, you can import `TaintFlowTest`. In both cases + * `DefaultFlowConfig` can be replaced by another implementation of `DataFlow::ConfigSig`. * * If you need more fine-grained tuning, consider implementing a test using `InlineExpectationsTest`. */ @@ -43,57 +45,75 @@ import semmle.code.java.dataflow.ExternalFlow import semmle.code.java.dataflow.TaintTracking import TestUtilities.InlineExpectationsTest -private predicate defaultSource(DataFlow::Node src) { - src.asExpr().(MethodAccess).getMethod().getName() = ["source", "taint"] +private predicate defaultSource(DataFlow::Node source) { + source.asExpr().(MethodAccess).getMethod().getName() = ["source", "taint"] +} + +private predicate defaultSink(DataFlow::Node sink) { + exists(MethodAccess ma | ma.getMethod().hasName("sink") | sink.asExpr() = ma.getAnArgument()) } module DefaultFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node n) { defaultSource(n) } + predicate isSource(DataFlow::Node source) { defaultSource(source) } - predicate isSink(DataFlow::Node n) { - exists(MethodAccess ma | ma.getMethod().hasName("sink") | n.asExpr() = ma.getAnArgument()) - } + predicate isSink(DataFlow::Node sink) { defaultSink(sink) } int fieldFlowBranchLimit() { result = 1000 } } -private module DefaultValueFlow = DataFlow::Global; +private module NoFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { none() } -private module DefaultTaintFlow = TaintTracking::Global; + predicate isSink(DataFlow::Node sink) { none() } +} private string getSourceArgString(DataFlow::Node src) { defaultSource(src) and src.asExpr().(MethodAccess).getAnArgument().(StringLiteral).getValue() = result } -class InlineFlowTest extends InlineExpectationsTest { - InlineFlowTest() { this = "HasFlowTest" } +module FlowTest { + module ValueFlow = DataFlow::Global; - override string getARelevantTag() { result = ["hasValueFlow", "hasTaintFlow"] } + module TaintFlow = TaintTracking::Global; - override predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasValueFlow" and - exists(DataFlow::Node src, DataFlow::Node sink | this.hasValueFlow(src, sink) | - sink.getLocation() = location and - element = sink.toString() and - if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = "" - ) - or - tag = "hasTaintFlow" and - exists(DataFlow::Node src, DataFlow::Node sink | - this.hasTaintFlow(src, sink) and not this.hasValueFlow(src, sink) - | - sink.getLocation() = location and - element = sink.toString() and - if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = "" - ) + private module InlineTest implements TestSig { + string getARelevantTag() { result = ["hasValueFlow", "hasTaintFlow"] } + + predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "hasValueFlow" and + exists(DataFlow::Node src, DataFlow::Node sink | ValueFlow::flow(src, sink) | + sink.getLocation() = location and + element = sink.toString() and + if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = "" + ) + or + tag = "hasTaintFlow" and + exists(DataFlow::Node src, DataFlow::Node sink | + TaintFlow::flow(src, sink) and not ValueFlow::flow(src, sink) + | + sink.getLocation() = location and + element = sink.toString() and + if exists(getSourceArgString(src)) then value = getSourceArgString(src) else value = "" + ) + } } - predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { - DefaultValueFlow::flow(src, sink) - } + import MakeTest + import DataFlow::MergePathGraph - predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - DefaultTaintFlow::flow(src, sink) + predicate flowPath(PathNode source, PathNode sink) { + ValueFlow::flowPath(source.asPathNode1(), sink.asPathNode1()) or + TaintFlow::flowPath(source.asPathNode2(), sink.asPathNode2()) } } + +module DefaultFlowTest = FlowTest; + +module ValueFlowTest { + import FlowTest +} + +module TaintFlowTest { + import FlowTest +} diff --git a/java/ql/test/experimental/query-tests/security/CWE-020/Log4jInjectionTest.expected b/java/ql/test/experimental/query-tests/security/CWE-020/Log4jInjectionTest.expected index f3d88d25805..93b2b060685 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-020/Log4jInjectionTest.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-020/Log4jInjectionTest.expected @@ -2075,28 +2075,28 @@ edges | Log4jJndiInjectionTest.java:1085:39:1085:46 | source(...) : String | Log4jJndiInjectionTest.java:1085:25:1085:46 | (...)... | | Log4jJndiInjectionTest.java:1088:47:1088:54 | source(...) : String | Log4jJndiInjectionTest.java:1088:38:1088:54 | (...)... | | Log4jJndiInjectionTest.java:1089:53:1089:60 | source(...) : String | Log4jJndiInjectionTest.java:1089:44:1089:60 | (...)... | -| Log4jJndiInjectionTest.java:1091:13:1091:15 | map [post update] : Map [] : String | Log4jJndiInjectionTest.java:1092:34:1092:36 | map | -| Log4jJndiInjectionTest.java:1091:28:1091:44 | (...)... : String | Log4jJndiInjectionTest.java:1091:13:1091:15 | map [post update] : Map [] : String | +| Log4jJndiInjectionTest.java:1091:13:1091:15 | map [post update] : HashMap [] : String | Log4jJndiInjectionTest.java:1092:34:1092:36 | map | +| Log4jJndiInjectionTest.java:1091:28:1091:44 | (...)... : String | Log4jJndiInjectionTest.java:1091:13:1091:15 | map [post update] : HashMap [] : String | | Log4jJndiInjectionTest.java:1091:37:1091:44 | source(...) : String | Log4jJndiInjectionTest.java:1091:28:1091:44 | (...)... : String | -| Log4jJndiInjectionTest.java:1095:31:1095:88 | with(...) : MapMessage | Log4jJndiInjectionTest.java:1096:26:1096:29 | mmsg | -| Log4jJndiInjectionTest.java:1095:71:1095:87 | (...)... : String | Log4jJndiInjectionTest.java:1095:31:1095:88 | with(...) : MapMessage | +| Log4jJndiInjectionTest.java:1095:31:1095:88 | with(...) : StringMapMessage | Log4jJndiInjectionTest.java:1096:26:1096:29 | mmsg | +| Log4jJndiInjectionTest.java:1095:71:1095:87 | (...)... : String | Log4jJndiInjectionTest.java:1095:31:1095:88 | with(...) : StringMapMessage | | Log4jJndiInjectionTest.java:1095:80:1095:87 | source(...) : String | Log4jJndiInjectionTest.java:1095:71:1095:87 | (...)... : String | -| Log4jJndiInjectionTest.java:1100:13:1100:16 | mmsg [post update] : MapMessage | Log4jJndiInjectionTest.java:1101:26:1101:29 | mmsg | -| Log4jJndiInjectionTest.java:1100:35:1100:51 | (...)... : String | Log4jJndiInjectionTest.java:1100:13:1100:16 | mmsg [post update] : MapMessage | +| Log4jJndiInjectionTest.java:1100:13:1100:16 | mmsg [post update] : StringMapMessage | Log4jJndiInjectionTest.java:1101:26:1101:29 | mmsg | +| Log4jJndiInjectionTest.java:1100:35:1100:51 | (...)... : String | Log4jJndiInjectionTest.java:1100:13:1100:16 | mmsg [post update] : StringMapMessage | | Log4jJndiInjectionTest.java:1100:44:1100:51 | source(...) : String | Log4jJndiInjectionTest.java:1100:35:1100:51 | (...)... : String | -| Log4jJndiInjectionTest.java:1105:13:1105:16 | mmsg [post update] : MapMessage | Log4jJndiInjectionTest.java:1106:26:1106:29 | mmsg | -| Log4jJndiInjectionTest.java:1105:34:1105:50 | (...)... : String | Log4jJndiInjectionTest.java:1105:13:1105:16 | mmsg [post update] : MapMessage | +| Log4jJndiInjectionTest.java:1105:13:1105:16 | mmsg [post update] : StringMapMessage | Log4jJndiInjectionTest.java:1106:26:1106:29 | mmsg | +| Log4jJndiInjectionTest.java:1105:34:1105:50 | (...)... : String | Log4jJndiInjectionTest.java:1105:13:1105:16 | mmsg [post update] : StringMapMessage | | Log4jJndiInjectionTest.java:1105:43:1105:50 | source(...) : String | Log4jJndiInjectionTest.java:1105:34:1105:50 | (...)... : String | -| Log4jJndiInjectionTest.java:1111:13:1111:15 | map [post update] : Map [] : String | Log4jJndiInjectionTest.java:1112:25:1112:27 | map : Map [] : String | -| Log4jJndiInjectionTest.java:1111:33:1111:49 | (...)... : String | Log4jJndiInjectionTest.java:1111:13:1111:15 | map [post update] : Map [] : String | +| Log4jJndiInjectionTest.java:1111:13:1111:15 | map [post update] : HashMap [] : String | Log4jJndiInjectionTest.java:1112:25:1112:27 | map : HashMap [] : String | +| Log4jJndiInjectionTest.java:1111:33:1111:49 | (...)... : String | Log4jJndiInjectionTest.java:1111:13:1111:15 | map [post update] : HashMap [] : String | | Log4jJndiInjectionTest.java:1111:42:1111:49 | source(...) : String | Log4jJndiInjectionTest.java:1111:33:1111:49 | (...)... : String | -| Log4jJndiInjectionTest.java:1112:13:1112:16 | mmsg [post update] : MapMessage | Log4jJndiInjectionTest.java:1113:26:1113:29 | mmsg | -| Log4jJndiInjectionTest.java:1112:25:1112:27 | map : Map [] : String | Log4jJndiInjectionTest.java:1112:13:1112:16 | mmsg [post update] : MapMessage | +| Log4jJndiInjectionTest.java:1112:13:1112:16 | mmsg [post update] : StringMapMessage | Log4jJndiInjectionTest.java:1113:26:1113:29 | mmsg | +| Log4jJndiInjectionTest.java:1112:25:1112:27 | map : HashMap [] : String | Log4jJndiInjectionTest.java:1112:13:1112:16 | mmsg [post update] : StringMapMessage | | Log4jJndiInjectionTest.java:1116:61:1116:68 | source(...) : String | Log4jJndiInjectionTest.java:1116:52:1116:68 | (...)... | | Log4jJndiInjectionTest.java:1117:81:1117:88 | source(...) : String | Log4jJndiInjectionTest.java:1117:72:1117:88 | (...)... | -| Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : Map [] : String | Log4jJndiInjectionTest.java:1120:43:1120:45 | map | -| Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : Map [] : String | Log4jJndiInjectionTest.java:1121:63:1121:65 | map | -| Log4jJndiInjectionTest.java:1119:33:1119:49 | (...)... : String | Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : Map [] : String | +| Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : HashMap [] : String | Log4jJndiInjectionTest.java:1120:43:1120:45 | map | +| Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : HashMap [] : String | Log4jJndiInjectionTest.java:1121:63:1121:65 | map | +| Log4jJndiInjectionTest.java:1119:33:1119:49 | (...)... : String | Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : HashMap [] : String | | Log4jJndiInjectionTest.java:1119:42:1119:49 | source(...) : String | Log4jJndiInjectionTest.java:1119:33:1119:49 | (...)... : String | nodes | Log4jJndiInjectionTest.java:24:16:24:45 | getParameter(...) : String | semmle.label | getParameter(...) : String | @@ -4168,33 +4168,33 @@ nodes | Log4jJndiInjectionTest.java:1088:47:1088:54 | source(...) : String | semmle.label | source(...) : String | | Log4jJndiInjectionTest.java:1089:44:1089:60 | (...)... | semmle.label | (...)... | | Log4jJndiInjectionTest.java:1089:53:1089:60 | source(...) : String | semmle.label | source(...) : String | -| Log4jJndiInjectionTest.java:1091:13:1091:15 | map [post update] : Map [] : String | semmle.label | map [post update] : Map [] : String | +| Log4jJndiInjectionTest.java:1091:13:1091:15 | map [post update] : HashMap [] : String | semmle.label | map [post update] : HashMap [] : String | | Log4jJndiInjectionTest.java:1091:28:1091:44 | (...)... : String | semmle.label | (...)... : String | | Log4jJndiInjectionTest.java:1091:37:1091:44 | source(...) : String | semmle.label | source(...) : String | | Log4jJndiInjectionTest.java:1092:34:1092:36 | map | semmle.label | map | -| Log4jJndiInjectionTest.java:1095:31:1095:88 | with(...) : MapMessage | semmle.label | with(...) : MapMessage | +| Log4jJndiInjectionTest.java:1095:31:1095:88 | with(...) : StringMapMessage | semmle.label | with(...) : StringMapMessage | | Log4jJndiInjectionTest.java:1095:71:1095:87 | (...)... : String | semmle.label | (...)... : String | | Log4jJndiInjectionTest.java:1095:80:1095:87 | source(...) : String | semmle.label | source(...) : String | | Log4jJndiInjectionTest.java:1096:26:1096:29 | mmsg | semmle.label | mmsg | -| Log4jJndiInjectionTest.java:1100:13:1100:16 | mmsg [post update] : MapMessage | semmle.label | mmsg [post update] : MapMessage | +| Log4jJndiInjectionTest.java:1100:13:1100:16 | mmsg [post update] : StringMapMessage | semmle.label | mmsg [post update] : StringMapMessage | | Log4jJndiInjectionTest.java:1100:35:1100:51 | (...)... : String | semmle.label | (...)... : String | | Log4jJndiInjectionTest.java:1100:44:1100:51 | source(...) : String | semmle.label | source(...) : String | | Log4jJndiInjectionTest.java:1101:26:1101:29 | mmsg | semmle.label | mmsg | -| Log4jJndiInjectionTest.java:1105:13:1105:16 | mmsg [post update] : MapMessage | semmle.label | mmsg [post update] : MapMessage | +| Log4jJndiInjectionTest.java:1105:13:1105:16 | mmsg [post update] : StringMapMessage | semmle.label | mmsg [post update] : StringMapMessage | | Log4jJndiInjectionTest.java:1105:34:1105:50 | (...)... : String | semmle.label | (...)... : String | | Log4jJndiInjectionTest.java:1105:43:1105:50 | source(...) : String | semmle.label | source(...) : String | | Log4jJndiInjectionTest.java:1106:26:1106:29 | mmsg | semmle.label | mmsg | -| Log4jJndiInjectionTest.java:1111:13:1111:15 | map [post update] : Map [] : String | semmle.label | map [post update] : Map [] : String | +| Log4jJndiInjectionTest.java:1111:13:1111:15 | map [post update] : HashMap [] : String | semmle.label | map [post update] : HashMap [] : String | | Log4jJndiInjectionTest.java:1111:33:1111:49 | (...)... : String | semmle.label | (...)... : String | | Log4jJndiInjectionTest.java:1111:42:1111:49 | source(...) : String | semmle.label | source(...) : String | -| Log4jJndiInjectionTest.java:1112:13:1112:16 | mmsg [post update] : MapMessage | semmle.label | mmsg [post update] : MapMessage | -| Log4jJndiInjectionTest.java:1112:25:1112:27 | map : Map [] : String | semmle.label | map : Map [] : String | +| Log4jJndiInjectionTest.java:1112:13:1112:16 | mmsg [post update] : StringMapMessage | semmle.label | mmsg [post update] : StringMapMessage | +| Log4jJndiInjectionTest.java:1112:25:1112:27 | map : HashMap [] : String | semmle.label | map : HashMap [] : String | | Log4jJndiInjectionTest.java:1113:26:1113:29 | mmsg | semmle.label | mmsg | | Log4jJndiInjectionTest.java:1116:52:1116:68 | (...)... | semmle.label | (...)... | | Log4jJndiInjectionTest.java:1116:61:1116:68 | source(...) : String | semmle.label | source(...) : String | | Log4jJndiInjectionTest.java:1117:72:1117:88 | (...)... | semmle.label | (...)... | | Log4jJndiInjectionTest.java:1117:81:1117:88 | source(...) : String | semmle.label | source(...) : String | -| Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : Map [] : String | semmle.label | map [post update] : Map [] : String | +| Log4jJndiInjectionTest.java:1119:13:1119:15 | map [post update] : HashMap [] : String | semmle.label | map [post update] : HashMap [] : String | | Log4jJndiInjectionTest.java:1119:33:1119:49 | (...)... : String | semmle.label | (...)... : String | | Log4jJndiInjectionTest.java:1119:42:1119:49 | source(...) : String | semmle.label | source(...) : String | | Log4jJndiInjectionTest.java:1120:43:1120:45 | map | semmle.label | map | diff --git a/java/ql/test/experimental/query-tests/security/CWE-073/FilePathInjection.expected b/java/ql/test/experimental/query-tests/security/CWE-073/FilePathInjection.expected index 5720de5c4b9..cd2b49f28c1 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-073/FilePathInjection.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-073/FilePathInjection.expected @@ -2,7 +2,12 @@ edges | FilePathInjection.java:21:21:21:34 | getPara(...) : String | FilePathInjection.java:26:47:26:59 | finalFilePath | | FilePathInjection.java:64:21:64:34 | getPara(...) : String | FilePathInjection.java:72:47:72:59 | finalFilePath | | FilePathInjection.java:87:21:87:34 | getPara(...) : String | FilePathInjection.java:95:47:95:59 | finalFilePath | +| FilePathInjection.java:177:50:177:58 | file : File | FilePathInjection.java:182:30:182:33 | file | | FilePathInjection.java:205:17:205:44 | getParameter(...) : String | FilePathInjection.java:209:24:209:31 | filePath | +| FilePathInjection.java:205:17:205:44 | getParameter(...) : String | FilePathInjection.java:209:24:209:31 | filePath : String | +| FilePathInjection.java:209:15:209:32 | new File(...) : File | FilePathInjection.java:217:19:217:22 | file : File | +| FilePathInjection.java:209:24:209:31 | filePath : String | FilePathInjection.java:209:15:209:32 | new File(...) : File | +| FilePathInjection.java:217:19:217:22 | file : File | FilePathInjection.java:177:50:177:58 | file : File | nodes | FilePathInjection.java:21:21:21:34 | getPara(...) : String | semmle.label | getPara(...) : String | | FilePathInjection.java:26:47:26:59 | finalFilePath | semmle.label | finalFilePath | @@ -10,11 +15,17 @@ nodes | FilePathInjection.java:72:47:72:59 | finalFilePath | semmle.label | finalFilePath | | FilePathInjection.java:87:21:87:34 | getPara(...) : String | semmle.label | getPara(...) : String | | FilePathInjection.java:95:47:95:59 | finalFilePath | semmle.label | finalFilePath | +| FilePathInjection.java:177:50:177:58 | file : File | semmle.label | file : File | +| FilePathInjection.java:182:30:182:33 | file | semmle.label | file | | FilePathInjection.java:205:17:205:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| FilePathInjection.java:209:15:209:32 | new File(...) : File | semmle.label | new File(...) : File | | FilePathInjection.java:209:24:209:31 | filePath | semmle.label | filePath | +| FilePathInjection.java:209:24:209:31 | filePath : String | semmle.label | filePath : String | +| FilePathInjection.java:217:19:217:22 | file : File | semmle.label | file : File | subpaths #select | FilePathInjection.java:26:47:26:59 | finalFilePath | FilePathInjection.java:21:21:21:34 | getPara(...) : String | FilePathInjection.java:26:47:26:59 | finalFilePath | External control of file name or path due to $@. | FilePathInjection.java:21:21:21:34 | getPara(...) | user-provided value | | FilePathInjection.java:72:47:72:59 | finalFilePath | FilePathInjection.java:64:21:64:34 | getPara(...) : String | FilePathInjection.java:72:47:72:59 | finalFilePath | External control of file name or path due to $@. | FilePathInjection.java:64:21:64:34 | getPara(...) | user-provided value | | FilePathInjection.java:95:47:95:59 | finalFilePath | FilePathInjection.java:87:21:87:34 | getPara(...) : String | FilePathInjection.java:95:47:95:59 | finalFilePath | External control of file name or path due to $@. | FilePathInjection.java:87:21:87:34 | getPara(...) | user-provided value | +| FilePathInjection.java:182:30:182:33 | file | FilePathInjection.java:205:17:205:44 | getParameter(...) : String | FilePathInjection.java:182:30:182:33 | file | External control of file name or path due to $@. | FilePathInjection.java:205:17:205:44 | getParameter(...) | user-provided value | | FilePathInjection.java:209:24:209:31 | filePath | FilePathInjection.java:205:17:205:44 | getParameter(...) : String | FilePathInjection.java:209:24:209:31 | filePath | External control of file name or path due to $@. | FilePathInjection.java:205:17:205:44 | getParameter(...) | user-provided value | diff --git a/java/ql/test/experimental/query-tests/security/CWE-200/InsecureWebResourceResponse.expected b/java/ql/test/experimental/query-tests/security/CWE-200/InsecureWebResourceResponse.expected index 37741e5f605..07ce59763ad 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-200/InsecureWebResourceResponse.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-200/InsecureWebResourceResponse.expected @@ -1,152 +1,152 @@ edges -| InsecureWebResourceResponse.java:28:27:28:37 | getIntent(...) : Intent | InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | InsecureWebResourceResponse.java:30:25:30:32 | inputUrl : Object | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | InsecureWebResourceResponse.java:32:25:32:32 | inputUrl : Object | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | InsecureWebResourceResponse.java:34:25:34:32 | inputUrl : Object | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | InsecureWebResourceResponse.java:36:26:36:33 | inputUrl : Object | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | InsecureWebResourceResponse.java:38:26:38:33 | inputUrl : Object | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | InsecureWebResourceResponse.java:40:25:40:32 | inputUrl : Object | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | InsecureWebResourceResponse.java:42:25:42:32 | inputUrl : Object | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | InsecureWebResourceResponse.java:44:26:44:33 | inputUrl : Object | -| InsecureWebResourceResponse.java:30:25:30:32 | inputUrl : Object | InsecureWebResourceResponse.java:59:34:59:43 | url : Object | -| InsecureWebResourceResponse.java:32:25:32:32 | inputUrl : Object | InsecureWebResourceResponse.java:80:34:80:43 | url : Object | -| InsecureWebResourceResponse.java:34:25:34:32 | inputUrl : Object | InsecureWebResourceResponse.java:106:34:106:43 | url : Object | -| InsecureWebResourceResponse.java:36:26:36:33 | inputUrl : Object | InsecureWebResourceResponse.java:131:36:131:45 | url : Object | -| InsecureWebResourceResponse.java:38:26:38:33 | inputUrl : Object | InsecureWebResourceResponse.java:156:35:156:44 | url : Object | -| InsecureWebResourceResponse.java:40:25:40:32 | inputUrl : Object | InsecureWebResourceResponse.java:181:34:181:43 | url : Object | -| InsecureWebResourceResponse.java:42:25:42:32 | inputUrl : Object | InsecureWebResourceResponse.java:188:34:188:43 | url : Object | -| InsecureWebResourceResponse.java:44:26:44:33 | inputUrl : Object | InsecureWebResourceResponse.java:217:35:217:44 | url : Object | -| InsecureWebResourceResponse.java:59:34:59:43 | url : Object | InsecureWebResourceResponse.java:75:20:75:22 | url : Object | -| InsecureWebResourceResponse.java:63:77:63:86 | url : Object | InsecureWebResourceResponse.java:65:41:65:43 | url : Object | +| InsecureWebResourceResponse.java:28:27:28:37 | getIntent(...) : Intent | InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:30:25:30:32 | inputUrl : String | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:32:25:32:32 | inputUrl : String | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:34:25:34:32 | inputUrl : String | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:36:26:36:33 | inputUrl : String | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:38:26:38:33 | inputUrl : String | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:40:25:40:32 | inputUrl : String | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:42:25:42:32 | inputUrl : String | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | InsecureWebResourceResponse.java:44:26:44:33 | inputUrl : String | +| InsecureWebResourceResponse.java:30:25:30:32 | inputUrl : String | InsecureWebResourceResponse.java:59:34:59:43 | url : String | +| InsecureWebResourceResponse.java:32:25:32:32 | inputUrl : String | InsecureWebResourceResponse.java:80:34:80:43 | url : String | +| InsecureWebResourceResponse.java:34:25:34:32 | inputUrl : String | InsecureWebResourceResponse.java:106:34:106:43 | url : String | +| InsecureWebResourceResponse.java:36:26:36:33 | inputUrl : String | InsecureWebResourceResponse.java:131:36:131:45 | url : String | +| InsecureWebResourceResponse.java:38:26:38:33 | inputUrl : String | InsecureWebResourceResponse.java:156:35:156:44 | url : String | +| InsecureWebResourceResponse.java:40:25:40:32 | inputUrl : String | InsecureWebResourceResponse.java:181:34:181:43 | url : String | +| InsecureWebResourceResponse.java:42:25:42:32 | inputUrl : String | InsecureWebResourceResponse.java:188:34:188:43 | url : String | +| InsecureWebResourceResponse.java:44:26:44:33 | inputUrl : String | InsecureWebResourceResponse.java:217:35:217:44 | url : String | +| InsecureWebResourceResponse.java:59:34:59:43 | url : String | InsecureWebResourceResponse.java:75:20:75:22 | url : String | +| InsecureWebResourceResponse.java:63:77:63:86 | url : String | InsecureWebResourceResponse.java:65:41:65:43 | url : String | | InsecureWebResourceResponse.java:65:31:65:44 | parse(...) : Uri | InsecureWebResourceResponse.java:66:71:66:73 | uri : Uri | -| InsecureWebResourceResponse.java:65:41:65:43 | url : Object | InsecureWebResourceResponse.java:65:31:65:44 | parse(...) : Uri | +| InsecureWebResourceResponse.java:65:41:65:43 | url : String | InsecureWebResourceResponse.java:65:31:65:44 | parse(...) : Uri | | InsecureWebResourceResponse.java:66:51:66:84 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:68:71:68:81 | inputStream | | InsecureWebResourceResponse.java:66:71:66:73 | uri : Uri | InsecureWebResourceResponse.java:66:71:66:83 | getPath(...) : String | | InsecureWebResourceResponse.java:66:71:66:83 | getPath(...) : String | InsecureWebResourceResponse.java:66:51:66:84 | new FileInputStream(...) : FileInputStream | -| InsecureWebResourceResponse.java:75:20:75:22 | url : Object | InsecureWebResourceResponse.java:63:77:63:86 | url : Object | -| InsecureWebResourceResponse.java:75:20:75:22 | url : Object | InsecureWebResourceResponse.java:84:77:84:86 | url : Object | -| InsecureWebResourceResponse.java:75:20:75:22 | url : Object | InsecureWebResourceResponse.java:110:77:110:86 | url : Object | -| InsecureWebResourceResponse.java:75:20:75:22 | url : Object | InsecureWebResourceResponse.java:192:77:192:102 | request : Object | -| InsecureWebResourceResponse.java:75:20:75:22 | url : Object | InsecureWebResourceResponse.java:232:69:232:78 | url : Object | -| InsecureWebResourceResponse.java:80:34:80:43 | url : Object | InsecureWebResourceResponse.java:101:20:101:22 | url : Object | -| InsecureWebResourceResponse.java:84:77:84:86 | url : Object | InsecureWebResourceResponse.java:86:41:86:43 | url : Object | +| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | +| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | +| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | +| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | +| InsecureWebResourceResponse.java:75:20:75:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | +| InsecureWebResourceResponse.java:80:34:80:43 | url : String | InsecureWebResourceResponse.java:101:20:101:22 | url : String | +| InsecureWebResourceResponse.java:84:77:84:86 | url : String | InsecureWebResourceResponse.java:86:41:86:43 | url : String | | InsecureWebResourceResponse.java:86:31:86:44 | parse(...) : Uri | InsecureWebResourceResponse.java:88:66:88:68 | uri : Uri | -| InsecureWebResourceResponse.java:86:41:86:43 | url : Object | InsecureWebResourceResponse.java:86:31:86:44 | parse(...) : Uri | +| InsecureWebResourceResponse.java:86:41:86:43 | url : String | InsecureWebResourceResponse.java:86:31:86:44 | parse(...) : Uri | | InsecureWebResourceResponse.java:88:42:88:90 | new File(...) : File | InsecureWebResourceResponse.java:89:75:89:83 | cacheFile : File | | InsecureWebResourceResponse.java:88:66:88:68 | uri : Uri | InsecureWebResourceResponse.java:88:66:88:89 | getLastPathSegment(...) : String | | InsecureWebResourceResponse.java:88:66:88:89 | getLastPathSegment(...) : String | InsecureWebResourceResponse.java:88:42:88:90 | new File(...) : File | | InsecureWebResourceResponse.java:89:55:89:84 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:91:75:91:85 | inputStream | | InsecureWebResourceResponse.java:89:75:89:83 | cacheFile : File | InsecureWebResourceResponse.java:89:55:89:84 | new FileInputStream(...) : FileInputStream | -| InsecureWebResourceResponse.java:101:20:101:22 | url : Object | InsecureWebResourceResponse.java:63:77:63:86 | url : Object | -| InsecureWebResourceResponse.java:101:20:101:22 | url : Object | InsecureWebResourceResponse.java:84:77:84:86 | url : Object | -| InsecureWebResourceResponse.java:101:20:101:22 | url : Object | InsecureWebResourceResponse.java:110:77:110:86 | url : Object | -| InsecureWebResourceResponse.java:101:20:101:22 | url : Object | InsecureWebResourceResponse.java:192:77:192:102 | request : Object | -| InsecureWebResourceResponse.java:101:20:101:22 | url : Object | InsecureWebResourceResponse.java:232:69:232:78 | url : Object | -| InsecureWebResourceResponse.java:106:34:106:43 | url : Object | InsecureWebResourceResponse.java:127:20:127:22 | url : Object | -| InsecureWebResourceResponse.java:110:77:110:86 | url : Object | InsecureWebResourceResponse.java:112:41:112:43 | url : Object | +| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | +| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | +| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | +| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | +| InsecureWebResourceResponse.java:101:20:101:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | +| InsecureWebResourceResponse.java:106:34:106:43 | url : String | InsecureWebResourceResponse.java:127:20:127:22 | url : String | +| InsecureWebResourceResponse.java:110:77:110:86 | url : String | InsecureWebResourceResponse.java:112:41:112:43 | url : String | | InsecureWebResourceResponse.java:112:31:112:44 | parse(...) : Uri | InsecureWebResourceResponse.java:113:35:113:37 | uri : Uri | -| InsecureWebResourceResponse.java:112:41:112:43 | url : Object | InsecureWebResourceResponse.java:112:31:112:44 | parse(...) : Uri | +| InsecureWebResourceResponse.java:112:41:112:43 | url : String | InsecureWebResourceResponse.java:112:31:112:44 | parse(...) : Uri | | InsecureWebResourceResponse.java:113:35:113:37 | uri : Uri | InsecureWebResourceResponse.java:113:35:113:47 | getPath(...) : String | | InsecureWebResourceResponse.java:113:35:113:47 | getPath(...) : String | InsecureWebResourceResponse.java:113:35:113:60 | substring(...) : String | | InsecureWebResourceResponse.java:113:35:113:60 | substring(...) : String | InsecureWebResourceResponse.java:115:75:115:78 | path : String | | InsecureWebResourceResponse.java:115:55:115:108 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:117:75:117:85 | inputStream | | InsecureWebResourceResponse.java:115:75:115:78 | path : String | InsecureWebResourceResponse.java:115:75:115:107 | substring(...) : String | | InsecureWebResourceResponse.java:115:75:115:107 | substring(...) : String | InsecureWebResourceResponse.java:115:55:115:108 | new FileInputStream(...) : FileInputStream | -| InsecureWebResourceResponse.java:127:20:127:22 | url : Object | InsecureWebResourceResponse.java:63:77:63:86 | url : Object | -| InsecureWebResourceResponse.java:127:20:127:22 | url : Object | InsecureWebResourceResponse.java:84:77:84:86 | url : Object | -| InsecureWebResourceResponse.java:127:20:127:22 | url : Object | InsecureWebResourceResponse.java:110:77:110:86 | url : Object | -| InsecureWebResourceResponse.java:127:20:127:22 | url : Object | InsecureWebResourceResponse.java:192:77:192:102 | request : Object | -| InsecureWebResourceResponse.java:127:20:127:22 | url : Object | InsecureWebResourceResponse.java:232:69:232:78 | url : Object | -| InsecureWebResourceResponse.java:131:36:131:45 | url : Object | InsecureWebResourceResponse.java:152:20:152:22 | url : Object | -| InsecureWebResourceResponse.java:152:20:152:22 | url : Object | InsecureWebResourceResponse.java:63:77:63:86 | url : Object | -| InsecureWebResourceResponse.java:152:20:152:22 | url : Object | InsecureWebResourceResponse.java:84:77:84:86 | url : Object | -| InsecureWebResourceResponse.java:152:20:152:22 | url : Object | InsecureWebResourceResponse.java:110:77:110:86 | url : Object | -| InsecureWebResourceResponse.java:152:20:152:22 | url : Object | InsecureWebResourceResponse.java:192:77:192:102 | request : Object | -| InsecureWebResourceResponse.java:152:20:152:22 | url : Object | InsecureWebResourceResponse.java:232:69:232:78 | url : Object | -| InsecureWebResourceResponse.java:156:35:156:44 | url : Object | InsecureWebResourceResponse.java:177:20:177:22 | url : Object | -| InsecureWebResourceResponse.java:177:20:177:22 | url : Object | InsecureWebResourceResponse.java:63:77:63:86 | url : Object | -| InsecureWebResourceResponse.java:177:20:177:22 | url : Object | InsecureWebResourceResponse.java:84:77:84:86 | url : Object | -| InsecureWebResourceResponse.java:177:20:177:22 | url : Object | InsecureWebResourceResponse.java:110:77:110:86 | url : Object | -| InsecureWebResourceResponse.java:177:20:177:22 | url : Object | InsecureWebResourceResponse.java:192:77:192:102 | request : Object | -| InsecureWebResourceResponse.java:177:20:177:22 | url : Object | InsecureWebResourceResponse.java:232:69:232:78 | url : Object | -| InsecureWebResourceResponse.java:181:34:181:43 | url : Object | InsecureWebResourceResponse.java:184:20:184:22 | url : Object | -| InsecureWebResourceResponse.java:184:20:184:22 | url : Object | InsecureWebResourceResponse.java:63:77:63:86 | url : Object | -| InsecureWebResourceResponse.java:184:20:184:22 | url : Object | InsecureWebResourceResponse.java:84:77:84:86 | url : Object | -| InsecureWebResourceResponse.java:184:20:184:22 | url : Object | InsecureWebResourceResponse.java:110:77:110:86 | url : Object | -| InsecureWebResourceResponse.java:184:20:184:22 | url : Object | InsecureWebResourceResponse.java:192:77:192:102 | request : Object | -| InsecureWebResourceResponse.java:184:20:184:22 | url : Object | InsecureWebResourceResponse.java:232:69:232:78 | url : Object | -| InsecureWebResourceResponse.java:188:34:188:43 | url : Object | InsecureWebResourceResponse.java:209:20:209:22 | url : Object | -| InsecureWebResourceResponse.java:192:77:192:102 | request : Object | InsecureWebResourceResponse.java:194:31:194:37 | request : Object | -| InsecureWebResourceResponse.java:194:31:194:37 | request : Object | InsecureWebResourceResponse.java:194:31:194:46 | getUrl(...) : Uri | +| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | +| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | +| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | +| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | +| InsecureWebResourceResponse.java:127:20:127:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | +| InsecureWebResourceResponse.java:131:36:131:45 | url : String | InsecureWebResourceResponse.java:152:20:152:22 | url : String | +| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | +| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | +| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | +| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | +| InsecureWebResourceResponse.java:152:20:152:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | +| InsecureWebResourceResponse.java:156:35:156:44 | url : String | InsecureWebResourceResponse.java:177:20:177:22 | url : String | +| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | +| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | +| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | +| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | +| InsecureWebResourceResponse.java:177:20:177:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | +| InsecureWebResourceResponse.java:181:34:181:43 | url : String | InsecureWebResourceResponse.java:184:20:184:22 | url : String | +| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | +| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | +| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | +| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | +| InsecureWebResourceResponse.java:184:20:184:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | +| InsecureWebResourceResponse.java:188:34:188:43 | url : String | InsecureWebResourceResponse.java:209:20:209:22 | url : String | +| InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | InsecureWebResourceResponse.java:194:31:194:37 | request : WebResourceRequest | +| InsecureWebResourceResponse.java:194:31:194:37 | request : WebResourceRequest | InsecureWebResourceResponse.java:194:31:194:46 | getUrl(...) : Uri | | InsecureWebResourceResponse.java:194:31:194:46 | getUrl(...) : Uri | InsecureWebResourceResponse.java:196:66:196:68 | uri : Uri | | InsecureWebResourceResponse.java:196:42:196:90 | new File(...) : File | InsecureWebResourceResponse.java:197:75:197:83 | cacheFile : File | | InsecureWebResourceResponse.java:196:66:196:68 | uri : Uri | InsecureWebResourceResponse.java:196:66:196:89 | getLastPathSegment(...) : String | | InsecureWebResourceResponse.java:196:66:196:89 | getLastPathSegment(...) : String | InsecureWebResourceResponse.java:196:42:196:90 | new File(...) : File | | InsecureWebResourceResponse.java:197:55:197:84 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:199:75:199:85 | inputStream | | InsecureWebResourceResponse.java:197:75:197:83 | cacheFile : File | InsecureWebResourceResponse.java:197:55:197:84 | new FileInputStream(...) : FileInputStream | -| InsecureWebResourceResponse.java:209:20:209:22 | url : Object | InsecureWebResourceResponse.java:63:77:63:86 | url : Object | -| InsecureWebResourceResponse.java:209:20:209:22 | url : Object | InsecureWebResourceResponse.java:84:77:84:86 | url : Object | -| InsecureWebResourceResponse.java:209:20:209:22 | url : Object | InsecureWebResourceResponse.java:110:77:110:86 | url : Object | -| InsecureWebResourceResponse.java:209:20:209:22 | url : Object | InsecureWebResourceResponse.java:192:77:192:102 | request : Object | -| InsecureWebResourceResponse.java:209:20:209:22 | url : Object | InsecureWebResourceResponse.java:232:69:232:78 | url : Object | -| InsecureWebResourceResponse.java:217:35:217:44 | url : Object | InsecureWebResourceResponse.java:226:20:226:22 | url : Object | -| InsecureWebResourceResponse.java:226:20:226:22 | url : Object | InsecureWebResourceResponse.java:63:77:63:86 | url : Object | -| InsecureWebResourceResponse.java:226:20:226:22 | url : Object | InsecureWebResourceResponse.java:84:77:84:86 | url : Object | -| InsecureWebResourceResponse.java:226:20:226:22 | url : Object | InsecureWebResourceResponse.java:110:77:110:86 | url : Object | -| InsecureWebResourceResponse.java:226:20:226:22 | url : Object | InsecureWebResourceResponse.java:192:77:192:102 | request : Object | -| InsecureWebResourceResponse.java:226:20:226:22 | url : Object | InsecureWebResourceResponse.java:232:69:232:78 | url : Object | -| InsecureWebResourceResponse.java:232:69:232:78 | url : Object | InsecureWebResourceResponse.java:234:33:234:35 | url : Object | +| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | +| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | +| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | +| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | +| InsecureWebResourceResponse.java:209:20:209:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | +| InsecureWebResourceResponse.java:217:35:217:44 | url : String | InsecureWebResourceResponse.java:226:20:226:22 | url : String | +| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:63:77:63:86 | url : String | +| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:84:77:84:86 | url : String | +| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:110:77:110:86 | url : String | +| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | +| InsecureWebResourceResponse.java:226:20:226:22 | url : String | InsecureWebResourceResponse.java:232:69:232:78 | url : String | +| InsecureWebResourceResponse.java:232:69:232:78 | url : String | InsecureWebResourceResponse.java:234:33:234:35 | url : String | | InsecureWebResourceResponse.java:234:23:234:36 | parse(...) : Uri | InsecureWebResourceResponse.java:235:63:235:65 | uri : Uri | -| InsecureWebResourceResponse.java:234:33:234:35 | url : Object | InsecureWebResourceResponse.java:234:23:234:36 | parse(...) : Uri | +| InsecureWebResourceResponse.java:234:33:234:35 | url : String | InsecureWebResourceResponse.java:234:23:234:36 | parse(...) : Uri | | InsecureWebResourceResponse.java:235:43:235:76 | new FileInputStream(...) : FileInputStream | InsecureWebResourceResponse.java:237:63:237:73 | inputStream | | InsecureWebResourceResponse.java:235:63:235:65 | uri : Uri | InsecureWebResourceResponse.java:235:63:235:75 | getPath(...) : String | | InsecureWebResourceResponse.java:235:63:235:75 | getPath(...) : String | InsecureWebResourceResponse.java:235:43:235:76 | new FileInputStream(...) : FileInputStream | -| InsecureWebViewActivity.java:27:27:27:37 | getIntent(...) : Intent | InsecureWebViewActivity.java:27:27:27:64 | getStringExtra(...) : Object | -| InsecureWebViewActivity.java:27:27:27:64 | getStringExtra(...) : Object | InsecureWebViewActivity.java:28:20:28:27 | inputUrl : Object | -| InsecureWebViewActivity.java:28:20:28:27 | inputUrl : Object | InsecureWebViewActivity.java:42:28:42:37 | url : Object | -| InsecureWebViewActivity.java:42:28:42:37 | url : Object | InsecureWebViewActivity.java:43:25:43:27 | url : Object | -| InsecureWebViewActivity.java:43:25:43:27 | url : Object | InsecureWebViewActivity.java:53:77:53:86 | url : Object | -| InsecureWebViewActivity.java:53:77:53:86 | url : Object | InsecureWebViewActivity.java:55:41:55:43 | url : Object | +| InsecureWebViewActivity.java:27:27:27:37 | getIntent(...) : Intent | InsecureWebViewActivity.java:27:27:27:64 | getStringExtra(...) : String | +| InsecureWebViewActivity.java:27:27:27:64 | getStringExtra(...) : String | InsecureWebViewActivity.java:28:20:28:27 | inputUrl : String | +| InsecureWebViewActivity.java:28:20:28:27 | inputUrl : String | InsecureWebViewActivity.java:42:28:42:37 | url : String | +| InsecureWebViewActivity.java:42:28:42:37 | url : String | InsecureWebViewActivity.java:43:25:43:27 | url : String | +| InsecureWebViewActivity.java:43:25:43:27 | url : String | InsecureWebViewActivity.java:53:77:53:86 | url : String | +| InsecureWebViewActivity.java:53:77:53:86 | url : String | InsecureWebViewActivity.java:55:41:55:43 | url : String | | InsecureWebViewActivity.java:55:31:55:44 | parse(...) : Uri | InsecureWebViewActivity.java:56:71:56:73 | uri : Uri | -| InsecureWebViewActivity.java:55:41:55:43 | url : Object | InsecureWebViewActivity.java:55:31:55:44 | parse(...) : Uri | +| InsecureWebViewActivity.java:55:41:55:43 | url : String | InsecureWebViewActivity.java:55:31:55:44 | parse(...) : Uri | | InsecureWebViewActivity.java:56:51:56:84 | new FileInputStream(...) : FileInputStream | InsecureWebViewActivity.java:58:71:58:81 | inputStream | | InsecureWebViewActivity.java:56:71:56:73 | uri : Uri | InsecureWebViewActivity.java:56:71:56:83 | getPath(...) : String | | InsecureWebViewActivity.java:56:71:56:83 | getPath(...) : String | InsecureWebViewActivity.java:56:51:56:84 | new FileInputStream(...) : FileInputStream | nodes | InsecureWebResourceResponse.java:28:27:28:37 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | -| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : Object | semmle.label | getStringExtra(...) : Object | -| InsecureWebResourceResponse.java:30:25:30:32 | inputUrl : Object | semmle.label | inputUrl : Object | -| InsecureWebResourceResponse.java:32:25:32:32 | inputUrl : Object | semmle.label | inputUrl : Object | -| InsecureWebResourceResponse.java:34:25:34:32 | inputUrl : Object | semmle.label | inputUrl : Object | -| InsecureWebResourceResponse.java:36:26:36:33 | inputUrl : Object | semmle.label | inputUrl : Object | -| InsecureWebResourceResponse.java:38:26:38:33 | inputUrl : Object | semmle.label | inputUrl : Object | -| InsecureWebResourceResponse.java:40:25:40:32 | inputUrl : Object | semmle.label | inputUrl : Object | -| InsecureWebResourceResponse.java:42:25:42:32 | inputUrl : Object | semmle.label | inputUrl : Object | -| InsecureWebResourceResponse.java:44:26:44:33 | inputUrl : Object | semmle.label | inputUrl : Object | -| InsecureWebResourceResponse.java:59:34:59:43 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:63:77:63:86 | url : Object | semmle.label | url : Object | +| InsecureWebResourceResponse.java:28:27:28:64 | getStringExtra(...) : String | semmle.label | getStringExtra(...) : String | +| InsecureWebResourceResponse.java:30:25:30:32 | inputUrl : String | semmle.label | inputUrl : String | +| InsecureWebResourceResponse.java:32:25:32:32 | inputUrl : String | semmle.label | inputUrl : String | +| InsecureWebResourceResponse.java:34:25:34:32 | inputUrl : String | semmle.label | inputUrl : String | +| InsecureWebResourceResponse.java:36:26:36:33 | inputUrl : String | semmle.label | inputUrl : String | +| InsecureWebResourceResponse.java:38:26:38:33 | inputUrl : String | semmle.label | inputUrl : String | +| InsecureWebResourceResponse.java:40:25:40:32 | inputUrl : String | semmle.label | inputUrl : String | +| InsecureWebResourceResponse.java:42:25:42:32 | inputUrl : String | semmle.label | inputUrl : String | +| InsecureWebResourceResponse.java:44:26:44:33 | inputUrl : String | semmle.label | inputUrl : String | +| InsecureWebResourceResponse.java:59:34:59:43 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:63:77:63:86 | url : String | semmle.label | url : String | | InsecureWebResourceResponse.java:65:31:65:44 | parse(...) : Uri | semmle.label | parse(...) : Uri | -| InsecureWebResourceResponse.java:65:41:65:43 | url : Object | semmle.label | url : Object | +| InsecureWebResourceResponse.java:65:41:65:43 | url : String | semmle.label | url : String | | InsecureWebResourceResponse.java:66:51:66:84 | new FileInputStream(...) : FileInputStream | semmle.label | new FileInputStream(...) : FileInputStream | | InsecureWebResourceResponse.java:66:71:66:73 | uri : Uri | semmle.label | uri : Uri | | InsecureWebResourceResponse.java:66:71:66:83 | getPath(...) : String | semmle.label | getPath(...) : String | | InsecureWebResourceResponse.java:68:71:68:81 | inputStream | semmle.label | inputStream | -| InsecureWebResourceResponse.java:75:20:75:22 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:80:34:80:43 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:84:77:84:86 | url : Object | semmle.label | url : Object | +| InsecureWebResourceResponse.java:75:20:75:22 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:80:34:80:43 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:84:77:84:86 | url : String | semmle.label | url : String | | InsecureWebResourceResponse.java:86:31:86:44 | parse(...) : Uri | semmle.label | parse(...) : Uri | -| InsecureWebResourceResponse.java:86:41:86:43 | url : Object | semmle.label | url : Object | +| InsecureWebResourceResponse.java:86:41:86:43 | url : String | semmle.label | url : String | | InsecureWebResourceResponse.java:88:42:88:90 | new File(...) : File | semmle.label | new File(...) : File | | InsecureWebResourceResponse.java:88:66:88:68 | uri : Uri | semmle.label | uri : Uri | | InsecureWebResourceResponse.java:88:66:88:89 | getLastPathSegment(...) : String | semmle.label | getLastPathSegment(...) : String | | InsecureWebResourceResponse.java:89:55:89:84 | new FileInputStream(...) : FileInputStream | semmle.label | new FileInputStream(...) : FileInputStream | | InsecureWebResourceResponse.java:89:75:89:83 | cacheFile : File | semmle.label | cacheFile : File | | InsecureWebResourceResponse.java:91:75:91:85 | inputStream | semmle.label | inputStream | -| InsecureWebResourceResponse.java:101:20:101:22 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:106:34:106:43 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:110:77:110:86 | url : Object | semmle.label | url : Object | +| InsecureWebResourceResponse.java:101:20:101:22 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:106:34:106:43 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:110:77:110:86 | url : String | semmle.label | url : String | | InsecureWebResourceResponse.java:112:31:112:44 | parse(...) : Uri | semmle.label | parse(...) : Uri | -| InsecureWebResourceResponse.java:112:41:112:43 | url : Object | semmle.label | url : Object | +| InsecureWebResourceResponse.java:112:41:112:43 | url : String | semmle.label | url : String | | InsecureWebResourceResponse.java:113:35:113:37 | uri : Uri | semmle.label | uri : Uri | | InsecureWebResourceResponse.java:113:35:113:47 | getPath(...) : String | semmle.label | getPath(...) : String | | InsecureWebResourceResponse.java:113:35:113:60 | substring(...) : String | semmle.label | substring(...) : String | @@ -154,16 +154,16 @@ nodes | InsecureWebResourceResponse.java:115:75:115:78 | path : String | semmle.label | path : String | | InsecureWebResourceResponse.java:115:75:115:107 | substring(...) : String | semmle.label | substring(...) : String | | InsecureWebResourceResponse.java:117:75:117:85 | inputStream | semmle.label | inputStream | -| InsecureWebResourceResponse.java:127:20:127:22 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:131:36:131:45 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:152:20:152:22 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:156:35:156:44 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:177:20:177:22 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:181:34:181:43 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:184:20:184:22 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:188:34:188:43 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:192:77:192:102 | request : Object | semmle.label | request : Object | -| InsecureWebResourceResponse.java:194:31:194:37 | request : Object | semmle.label | request : Object | +| InsecureWebResourceResponse.java:127:20:127:22 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:131:36:131:45 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:152:20:152:22 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:156:35:156:44 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:177:20:177:22 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:181:34:181:43 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:184:20:184:22 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:188:34:188:43 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:192:77:192:102 | request : WebResourceRequest | semmle.label | request : WebResourceRequest | +| InsecureWebResourceResponse.java:194:31:194:37 | request : WebResourceRequest | semmle.label | request : WebResourceRequest | | InsecureWebResourceResponse.java:194:31:194:46 | getUrl(...) : Uri | semmle.label | getUrl(...) : Uri | | InsecureWebResourceResponse.java:196:42:196:90 | new File(...) : File | semmle.label | new File(...) : File | | InsecureWebResourceResponse.java:196:66:196:68 | uri : Uri | semmle.label | uri : Uri | @@ -171,24 +171,24 @@ nodes | InsecureWebResourceResponse.java:197:55:197:84 | new FileInputStream(...) : FileInputStream | semmle.label | new FileInputStream(...) : FileInputStream | | InsecureWebResourceResponse.java:197:75:197:83 | cacheFile : File | semmle.label | cacheFile : File | | InsecureWebResourceResponse.java:199:75:199:85 | inputStream | semmle.label | inputStream | -| InsecureWebResourceResponse.java:209:20:209:22 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:217:35:217:44 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:226:20:226:22 | url : Object | semmle.label | url : Object | -| InsecureWebResourceResponse.java:232:69:232:78 | url : Object | semmle.label | url : Object | +| InsecureWebResourceResponse.java:209:20:209:22 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:217:35:217:44 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:226:20:226:22 | url : String | semmle.label | url : String | +| InsecureWebResourceResponse.java:232:69:232:78 | url : String | semmle.label | url : String | | InsecureWebResourceResponse.java:234:23:234:36 | parse(...) : Uri | semmle.label | parse(...) : Uri | -| InsecureWebResourceResponse.java:234:33:234:35 | url : Object | semmle.label | url : Object | +| InsecureWebResourceResponse.java:234:33:234:35 | url : String | semmle.label | url : String | | InsecureWebResourceResponse.java:235:43:235:76 | new FileInputStream(...) : FileInputStream | semmle.label | new FileInputStream(...) : FileInputStream | | InsecureWebResourceResponse.java:235:63:235:65 | uri : Uri | semmle.label | uri : Uri | | InsecureWebResourceResponse.java:235:63:235:75 | getPath(...) : String | semmle.label | getPath(...) : String | | InsecureWebResourceResponse.java:237:63:237:73 | inputStream | semmle.label | inputStream | | InsecureWebViewActivity.java:27:27:27:37 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | -| InsecureWebViewActivity.java:27:27:27:64 | getStringExtra(...) : Object | semmle.label | getStringExtra(...) : Object | -| InsecureWebViewActivity.java:28:20:28:27 | inputUrl : Object | semmle.label | inputUrl : Object | -| InsecureWebViewActivity.java:42:28:42:37 | url : Object | semmle.label | url : Object | -| InsecureWebViewActivity.java:43:25:43:27 | url : Object | semmle.label | url : Object | -| InsecureWebViewActivity.java:53:77:53:86 | url : Object | semmle.label | url : Object | +| InsecureWebViewActivity.java:27:27:27:64 | getStringExtra(...) : String | semmle.label | getStringExtra(...) : String | +| InsecureWebViewActivity.java:28:20:28:27 | inputUrl : String | semmle.label | inputUrl : String | +| InsecureWebViewActivity.java:42:28:42:37 | url : String | semmle.label | url : String | +| InsecureWebViewActivity.java:43:25:43:27 | url : String | semmle.label | url : String | +| InsecureWebViewActivity.java:53:77:53:86 | url : String | semmle.label | url : String | | InsecureWebViewActivity.java:55:31:55:44 | parse(...) : Uri | semmle.label | parse(...) : Uri | -| InsecureWebViewActivity.java:55:41:55:43 | url : Object | semmle.label | url : Object | +| InsecureWebViewActivity.java:55:41:55:43 | url : String | semmle.label | url : String | | InsecureWebViewActivity.java:56:51:56:84 | new FileInputStream(...) : FileInputStream | semmle.label | new FileInputStream(...) : FileInputStream | | InsecureWebViewActivity.java:56:71:56:73 | uri : Uri | semmle.label | uri : Uri | | InsecureWebViewActivity.java:56:71:56:83 | getPath(...) : String | semmle.label | getPath(...) : String | diff --git a/java/ql/test/experimental/query-tests/security/CWE-200/SensitiveAndroidFileLeak.expected b/java/ql/test/experimental/query-tests/security/CWE-200/SensitiveAndroidFileLeak.expected index 43a64e4226a..9c5b6ce8b69 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-200/SensitiveAndroidFileLeak.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-200/SensitiveAndroidFileLeak.expected @@ -1,47 +1,47 @@ edges | FileService.java:20:31:20:43 | intent : Intent | FileService.java:21:28:21:33 | intent : Intent | -| FileService.java:21:28:21:33 | intent : Intent | FileService.java:21:28:21:64 | getStringExtra(...) : Object | -| FileService.java:21:28:21:64 | getStringExtra(...) : Object | FileService.java:25:42:25:50 | localPath : Object | +| FileService.java:21:28:21:33 | intent : Intent | FileService.java:21:28:21:64 | getStringExtra(...) : String | +| FileService.java:21:28:21:64 | getStringExtra(...) : String | FileService.java:25:42:25:50 | localPath : String | | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] | FileService.java:40:41:40:55 | params : Object[] | -| FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : Object | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] | -| FileService.java:25:42:25:50 | localPath : Object | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : Object | -| FileService.java:25:42:25:50 | localPath : Object | FileService.java:32:13:32:28 | sourceUri : Object | -| FileService.java:32:13:32:28 | sourceUri : Object | FileService.java:35:17:35:25 | sourceUri : Object | -| FileService.java:34:20:36:13 | {...} : Object[] [[]] : Object | FileService.java:34:20:36:13 | new Object[] : Object[] [[]] : Object | -| FileService.java:35:17:35:25 | sourceUri : Object | FileService.java:34:20:36:13 | {...} : Object[] [[]] : Object | -| FileService.java:40:41:40:55 | params : Object[] | FileService.java:44:33:44:52 | (...)... : Object | -| FileService.java:44:33:44:52 | (...)... : Object | FileService.java:45:53:45:59 | ...[...] | +| FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : String | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] | +| FileService.java:25:42:25:50 | localPath : String | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : String | +| FileService.java:25:42:25:50 | localPath : String | FileService.java:32:13:32:28 | sourceUri : String | +| FileService.java:32:13:32:28 | sourceUri : String | FileService.java:35:17:35:25 | sourceUri : String | +| FileService.java:34:20:36:13 | {...} : Object[] [[]] : String | FileService.java:34:20:36:13 | new Object[] : Object[] [[]] : String | +| FileService.java:35:17:35:25 | sourceUri : String | FileService.java:34:20:36:13 | {...} : Object[] [[]] : String | +| FileService.java:40:41:40:55 | params : Object[] | FileService.java:44:33:44:52 | (...)... : String[] | +| FileService.java:44:33:44:52 | (...)... : String[] | FileService.java:45:53:45:59 | ...[...] | | LeakFileActivity2.java:15:13:15:18 | intent : Intent | LeakFileActivity2.java:16:26:16:31 | intent : Intent | | LeakFileActivity2.java:16:26:16:31 | intent : Intent | FileService.java:20:31:20:43 | intent : Intent | | LeakFileActivity.java:14:35:14:38 | data : Intent | LeakFileActivity.java:18:40:18:59 | contentIntent : Intent | | LeakFileActivity.java:18:40:18:59 | contentIntent : Intent | LeakFileActivity.java:19:31:19:43 | contentIntent : Intent | -| LeakFileActivity.java:19:31:19:43 | contentIntent : Intent | LeakFileActivity.java:19:31:19:53 | getData(...) : Object | -| LeakFileActivity.java:19:31:19:53 | getData(...) : Object | LeakFileActivity.java:21:58:21:72 | streamsToUpload : Object | -| LeakFileActivity.java:21:58:21:72 | streamsToUpload : Object | LeakFileActivity.java:21:58:21:82 | getPath(...) | +| LeakFileActivity.java:19:31:19:43 | contentIntent : Intent | LeakFileActivity.java:19:31:19:53 | getData(...) : Uri | +| LeakFileActivity.java:19:31:19:53 | getData(...) : Uri | LeakFileActivity.java:21:58:21:72 | streamsToUpload : Uri | +| LeakFileActivity.java:21:58:21:72 | streamsToUpload : Uri | LeakFileActivity.java:21:58:21:82 | getPath(...) | nodes | FileService.java:20:31:20:43 | intent : Intent | semmle.label | intent : Intent | | FileService.java:21:28:21:33 | intent : Intent | semmle.label | intent : Intent | -| FileService.java:21:28:21:64 | getStringExtra(...) : Object | semmle.label | getStringExtra(...) : Object | +| FileService.java:21:28:21:64 | getStringExtra(...) : String | semmle.label | getStringExtra(...) : String | | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] | semmle.label | makeParamsToExecute(...) : Object[] | -| FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : Object | semmle.label | makeParamsToExecute(...) : Object[] [[]] : Object | -| FileService.java:25:42:25:50 | localPath : Object | semmle.label | localPath : Object | -| FileService.java:32:13:32:28 | sourceUri : Object | semmle.label | sourceUri : Object | -| FileService.java:34:20:36:13 | new Object[] : Object[] [[]] : Object | semmle.label | new Object[] : Object[] [[]] : Object | -| FileService.java:34:20:36:13 | {...} : Object[] [[]] : Object | semmle.label | {...} : Object[] [[]] : Object | -| FileService.java:35:17:35:25 | sourceUri : Object | semmle.label | sourceUri : Object | +| FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : String | semmle.label | makeParamsToExecute(...) : Object[] [[]] : String | +| FileService.java:25:42:25:50 | localPath : String | semmle.label | localPath : String | +| FileService.java:32:13:32:28 | sourceUri : String | semmle.label | sourceUri : String | +| FileService.java:34:20:36:13 | new Object[] : Object[] [[]] : String | semmle.label | new Object[] : Object[] [[]] : String | +| FileService.java:34:20:36:13 | {...} : Object[] [[]] : String | semmle.label | {...} : Object[] [[]] : String | +| FileService.java:35:17:35:25 | sourceUri : String | semmle.label | sourceUri : String | | FileService.java:40:41:40:55 | params : Object[] | semmle.label | params : Object[] | -| FileService.java:44:33:44:52 | (...)... : Object | semmle.label | (...)... : Object | +| FileService.java:44:33:44:52 | (...)... : String[] | semmle.label | (...)... : String[] | | FileService.java:45:53:45:59 | ...[...] | semmle.label | ...[...] | | LeakFileActivity2.java:15:13:15:18 | intent : Intent | semmle.label | intent : Intent | | LeakFileActivity2.java:16:26:16:31 | intent : Intent | semmle.label | intent : Intent | | LeakFileActivity.java:14:35:14:38 | data : Intent | semmle.label | data : Intent | | LeakFileActivity.java:18:40:18:59 | contentIntent : Intent | semmle.label | contentIntent : Intent | | LeakFileActivity.java:19:31:19:43 | contentIntent : Intent | semmle.label | contentIntent : Intent | -| LeakFileActivity.java:19:31:19:53 | getData(...) : Object | semmle.label | getData(...) : Object | -| LeakFileActivity.java:21:58:21:72 | streamsToUpload : Object | semmle.label | streamsToUpload : Object | +| LeakFileActivity.java:19:31:19:53 | getData(...) : Uri | semmle.label | getData(...) : Uri | +| LeakFileActivity.java:21:58:21:72 | streamsToUpload : Uri | semmle.label | streamsToUpload : Uri | | LeakFileActivity.java:21:58:21:82 | getPath(...) | semmle.label | getPath(...) | subpaths -| FileService.java:25:42:25:50 | localPath : Object | FileService.java:32:13:32:28 | sourceUri : Object | FileService.java:34:20:36:13 | new Object[] : Object[] [[]] : Object | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : Object | +| FileService.java:25:42:25:50 | localPath : String | FileService.java:32:13:32:28 | sourceUri : String | FileService.java:34:20:36:13 | new Object[] : Object[] [[]] : String | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : String | #select | FileService.java:45:53:45:59 | ...[...] | LeakFileActivity2.java:15:13:15:18 | intent : Intent | FileService.java:45:53:45:59 | ...[...] | Leaking arbitrary Android file from $@. | LeakFileActivity2.java:15:13:15:18 | intent | this user input | | FileService.java:45:53:45:59 | ...[...] | LeakFileActivity2.java:16:26:16:31 | intent : Intent | FileService.java:45:53:45:59 | ...[...] | Leaking arbitrary Android file from $@. | LeakFileActivity2.java:16:26:16:31 | intent | this user input | diff --git a/java/ql/test/experimental/query-tests/security/CWE-470/UnsafeReflection.expected b/java/ql/test/experimental/query-tests/security/CWE-470/UnsafeReflection.expected index b6f894c3e5f..606cf994976 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-470/UnsafeReflection.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-470/UnsafeReflection.expected @@ -6,17 +6,17 @@ edges | UnsafeReflection.java:34:33:34:70 | getParameter(...) : String | UnsafeReflection.java:39:58:39:71 | parameterValue | | UnsafeReflection.java:46:24:46:82 | beanIdOrClassName : String | UnsafeReflection.java:53:30:53:46 | beanIdOrClassName : String | | UnsafeReflection.java:46:132:46:168 | body : Map | UnsafeReflection.java:49:37:49:40 | body : Map | -| UnsafeReflection.java:49:23:49:59 | (...)... : Object | UnsafeReflection.java:53:67:53:73 | rawData : Object | +| UnsafeReflection.java:49:23:49:59 | (...)... : List | UnsafeReflection.java:53:67:53:73 | rawData : List | | UnsafeReflection.java:49:37:49:40 | body : Map | UnsafeReflection.java:49:37:49:59 | get(...) : Object | -| UnsafeReflection.java:49:37:49:59 | get(...) : Object | UnsafeReflection.java:49:23:49:59 | (...)... : Object | +| UnsafeReflection.java:49:37:49:59 | get(...) : Object | UnsafeReflection.java:49:23:49:59 | (...)... : List | | UnsafeReflection.java:53:30:53:46 | beanIdOrClassName : String | UnsafeReflection.java:104:34:104:57 | beanIdOrClassName : String | -| UnsafeReflection.java:53:67:53:73 | rawData : Object | UnsafeReflection.java:104:102:104:118 | data : Object | +| UnsafeReflection.java:53:67:53:73 | rawData : List | UnsafeReflection.java:104:102:104:118 | data : List | | UnsafeReflection.java:62:33:62:70 | getParameter(...) : String | UnsafeReflection.java:68:76:68:89 | parameterValue | | UnsafeReflection.java:77:33:77:70 | getParameter(...) : String | UnsafeReflection.java:83:76:83:89 | parameterValue | | UnsafeReflection.java:92:33:92:70 | getParameter(...) : String | UnsafeReflection.java:98:76:98:89 | parameterValue | | UnsafeReflection.java:104:34:104:57 | beanIdOrClassName : String | UnsafeReflection.java:119:21:119:26 | method | | UnsafeReflection.java:104:34:104:57 | beanIdOrClassName : String | UnsafeReflection.java:119:35:119:38 | bean | -| UnsafeReflection.java:104:102:104:118 | data : Object | UnsafeReflection.java:119:41:119:44 | data | +| UnsafeReflection.java:104:102:104:118 | data : List | UnsafeReflection.java:119:41:119:44 | data | nodes | UnsafeReflection.java:21:28:21:60 | getParameter(...) : String | semmle.label | getParameter(...) : String | | UnsafeReflection.java:22:33:22:70 | getParameter(...) : String | semmle.label | getParameter(...) : String | @@ -29,11 +29,11 @@ nodes | UnsafeReflection.java:39:58:39:71 | parameterValue | semmle.label | parameterValue | | UnsafeReflection.java:46:24:46:82 | beanIdOrClassName : String | semmle.label | beanIdOrClassName : String | | UnsafeReflection.java:46:132:46:168 | body : Map | semmle.label | body : Map | -| UnsafeReflection.java:49:23:49:59 | (...)... : Object | semmle.label | (...)... : Object | +| UnsafeReflection.java:49:23:49:59 | (...)... : List | semmle.label | (...)... : List | | UnsafeReflection.java:49:37:49:40 | body : Map | semmle.label | body : Map | | UnsafeReflection.java:49:37:49:59 | get(...) : Object | semmle.label | get(...) : Object | | UnsafeReflection.java:53:30:53:46 | beanIdOrClassName : String | semmle.label | beanIdOrClassName : String | -| UnsafeReflection.java:53:67:53:73 | rawData : Object | semmle.label | rawData : Object | +| UnsafeReflection.java:53:67:53:73 | rawData : List | semmle.label | rawData : List | | UnsafeReflection.java:62:33:62:70 | getParameter(...) : String | semmle.label | getParameter(...) : String | | UnsafeReflection.java:68:76:68:89 | parameterValue | semmle.label | parameterValue | | UnsafeReflection.java:77:33:77:70 | getParameter(...) : String | semmle.label | getParameter(...) : String | @@ -41,7 +41,7 @@ nodes | UnsafeReflection.java:92:33:92:70 | getParameter(...) : String | semmle.label | getParameter(...) : String | | UnsafeReflection.java:98:76:98:89 | parameterValue | semmle.label | parameterValue | | UnsafeReflection.java:104:34:104:57 | beanIdOrClassName : String | semmle.label | beanIdOrClassName : String | -| UnsafeReflection.java:104:102:104:118 | data : Object | semmle.label | data : Object | +| UnsafeReflection.java:104:102:104:118 | data : List | semmle.label | data : List | | UnsafeReflection.java:119:21:119:26 | method | semmle.label | method | | UnsafeReflection.java:119:35:119:38 | bean | semmle.label | bean | | UnsafeReflection.java:119:41:119:44 | data | semmle.label | data | diff --git a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.expected b/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.expected index 11a8bc6c248..57874f96e18 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.expected @@ -3,13 +3,14 @@ edges | UnsafeLoadSpringResource.java:31:27:31:57 | new ClassPathResource(...) : ClassPathResource | UnsafeLoadSpringResource.java:35:31:35:33 | clr | | UnsafeLoadSpringResource.java:31:49:31:56 | fileName : String | UnsafeLoadSpringResource.java:31:27:31:57 | new ClassPathResource(...) : ClassPathResource | | UnsafeLoadSpringResource.java:68:32:68:77 | fileName : String | UnsafeLoadSpringResource.java:76:38:76:45 | fileName | +| UnsafeLoadSpringResource.java:108:32:108:77 | fileName : String | UnsafeLoadSpringResource.java:116:51:116:58 | fileName | | UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) : String | UnsafeRequestPath.java:23:33:23:36 | path | | UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:17:20:17:25 | params : Map | -| UnsafeResourceGet2.java:17:20:17:25 | params : Map | UnsafeResourceGet2.java:17:20:17:40 | get(...) : Object | -| UnsafeResourceGet2.java:17:20:17:40 | get(...) : Object | UnsafeResourceGet2.java:19:93:19:99 | loadUrl | +| UnsafeResourceGet2.java:17:20:17:25 | params : Map | UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | +| UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | UnsafeResourceGet2.java:19:93:19:99 | loadUrl | | UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:33:20:33:25 | params : Map | -| UnsafeResourceGet2.java:33:20:33:25 | params : Map | UnsafeResourceGet2.java:33:20:33:40 | get(...) : Object | -| UnsafeResourceGet2.java:33:20:33:40 | get(...) : Object | UnsafeResourceGet2.java:37:20:37:22 | url | +| UnsafeResourceGet2.java:33:20:33:25 | params : Map | UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | +| UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | UnsafeResourceGet2.java:37:20:37:22 | url | | UnsafeResourceGet.java:32:23:32:56 | getParameter(...) : String | UnsafeResourceGet.java:41:20:41:22 | url | | UnsafeResourceGet.java:111:24:111:58 | getParameter(...) : String | UnsafeResourceGet.java:115:68:115:78 | requestPath | | UnsafeResourceGet.java:143:23:143:56 | getParameter(...) : String | UnsafeResourceGet.java:150:20:150:22 | url | @@ -35,15 +36,17 @@ nodes | UnsafeLoadSpringResource.java:35:31:35:33 | clr | semmle.label | clr | | UnsafeLoadSpringResource.java:68:32:68:77 | fileName : String | semmle.label | fileName : String | | UnsafeLoadSpringResource.java:76:38:76:45 | fileName | semmle.label | fileName | +| UnsafeLoadSpringResource.java:108:32:108:77 | fileName : String | semmle.label | fileName : String | +| UnsafeLoadSpringResource.java:116:51:116:58 | fileName | semmle.label | fileName | | UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) : String | semmle.label | getServletPath(...) : String | | UnsafeRequestPath.java:23:33:23:36 | path | semmle.label | path | | UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) : Map | semmle.label | getRequestParameterMap(...) : Map | | UnsafeResourceGet2.java:17:20:17:25 | params : Map | semmle.label | params : Map | -| UnsafeResourceGet2.java:17:20:17:40 | get(...) : Object | semmle.label | get(...) : Object | +| UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | semmle.label | get(...) : String | | UnsafeResourceGet2.java:19:93:19:99 | loadUrl | semmle.label | loadUrl | | UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) : Map | semmle.label | getRequestParameterMap(...) : Map | | UnsafeResourceGet2.java:33:20:33:25 | params : Map | semmle.label | params : Map | -| UnsafeResourceGet2.java:33:20:33:40 | get(...) : Object | semmle.label | get(...) : Object | +| UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | semmle.label | get(...) : String | | UnsafeResourceGet2.java:37:20:37:22 | url | semmle.label | url | | UnsafeResourceGet.java:32:23:32:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | | UnsafeResourceGet.java:41:20:41:22 | url | semmle.label | url | @@ -83,6 +86,7 @@ subpaths #select | UnsafeLoadSpringResource.java:35:31:35:33 | clr | UnsafeLoadSpringResource.java:27:32:27:77 | fileName : String | UnsafeLoadSpringResource.java:35:31:35:33 | clr | Potentially untrusted URL forward due to $@. | UnsafeLoadSpringResource.java:27:32:27:77 | fileName | user-provided value | | UnsafeLoadSpringResource.java:76:38:76:45 | fileName | UnsafeLoadSpringResource.java:68:32:68:77 | fileName : String | UnsafeLoadSpringResource.java:76:38:76:45 | fileName | Potentially untrusted URL forward due to $@. | UnsafeLoadSpringResource.java:68:32:68:77 | fileName | user-provided value | +| UnsafeLoadSpringResource.java:116:51:116:58 | fileName | UnsafeLoadSpringResource.java:108:32:108:77 | fileName : String | UnsafeLoadSpringResource.java:116:51:116:58 | fileName | Potentially untrusted URL forward due to $@. | UnsafeLoadSpringResource.java:108:32:108:77 | fileName | user-provided value | | UnsafeRequestPath.java:23:33:23:36 | path | UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) : String | UnsafeRequestPath.java:23:33:23:36 | path | Potentially untrusted URL forward due to $@. | UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) | user-provided value | | UnsafeResourceGet2.java:19:93:19:99 | loadUrl | UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:19:93:19:99 | loadUrl | Potentially untrusted URL forward due to $@. | UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) | user-provided value | | UnsafeResourceGet2.java:37:20:37:22 | url | UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:37:20:37:22 | url | Potentially untrusted URL forward due to $@. | UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) | user-provided value | diff --git a/java/ql/test/experimental/query-tests/security/CWE-598/SensitiveGetQuery.expected b/java/ql/test/experimental/query-tests/security/CWE-598/SensitiveGetQuery.expected index 0c641999e27..28471144374 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-598/SensitiveGetQuery.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-598/SensitiveGetQuery.expected @@ -1,11 +1,11 @@ edges | SensitiveGetQuery2.java:12:13:12:37 | getParameterMap(...) : Map | SensitiveGetQuery2.java:14:30:14:32 | map : Map | -| SensitiveGetQuery2.java:14:21:14:48 | (...)... : Object | SensitiveGetQuery2.java:15:29:15:36 | password | -| SensitiveGetQuery2.java:14:21:14:48 | (...)... : Object | SensitiveGetQuery2.java:15:29:15:36 | password : Object | +| SensitiveGetQuery2.java:14:21:14:48 | (...)... : String | SensitiveGetQuery2.java:15:29:15:36 | password | +| SensitiveGetQuery2.java:14:21:14:48 | (...)... : String | SensitiveGetQuery2.java:15:29:15:36 | password : String | | SensitiveGetQuery2.java:14:30:14:32 | map : Map | SensitiveGetQuery2.java:14:30:14:48 | get(...) : Object | -| SensitiveGetQuery2.java:14:30:14:48 | get(...) : Object | SensitiveGetQuery2.java:14:21:14:48 | (...)... : Object | -| SensitiveGetQuery2.java:15:29:15:36 | password : Object | SensitiveGetQuery2.java:18:40:18:54 | password : Object | -| SensitiveGetQuery2.java:18:40:18:54 | password : Object | SensitiveGetQuery2.java:19:61:19:68 | password | +| SensitiveGetQuery2.java:14:30:14:48 | get(...) : Object | SensitiveGetQuery2.java:14:21:14:48 | (...)... : String | +| SensitiveGetQuery2.java:15:29:15:36 | password : String | SensitiveGetQuery2.java:18:40:18:54 | password : String | +| SensitiveGetQuery2.java:18:40:18:54 | password : String | SensitiveGetQuery2.java:19:61:19:68 | password | | SensitiveGetQuery3.java:12:21:12:60 | getRequestParameter(...) : String | SensitiveGetQuery3.java:13:57:13:64 | password | | SensitiveGetQuery3.java:17:10:17:40 | getParameter(...) : String | SensitiveGetQuery3.java:12:21:12:60 | getRequestParameter(...) : String | | SensitiveGetQuery4.java:14:24:14:66 | getRequestParameter(...) : String | SensitiveGetQuery4.java:16:37:16:47 | accessToken | @@ -16,12 +16,12 @@ edges | SensitiveGetQuery.java:17:40:17:54 | password : String | SensitiveGetQuery.java:18:61:18:68 | password | nodes | SensitiveGetQuery2.java:12:13:12:37 | getParameterMap(...) : Map | semmle.label | getParameterMap(...) : Map | -| SensitiveGetQuery2.java:14:21:14:48 | (...)... : Object | semmle.label | (...)... : Object | +| SensitiveGetQuery2.java:14:21:14:48 | (...)... : String | semmle.label | (...)... : String | | SensitiveGetQuery2.java:14:30:14:32 | map : Map | semmle.label | map : Map | | SensitiveGetQuery2.java:14:30:14:48 | get(...) : Object | semmle.label | get(...) : Object | | SensitiveGetQuery2.java:15:29:15:36 | password | semmle.label | password | -| SensitiveGetQuery2.java:15:29:15:36 | password : Object | semmle.label | password : Object | -| SensitiveGetQuery2.java:18:40:18:54 | password : Object | semmle.label | password : Object | +| SensitiveGetQuery2.java:15:29:15:36 | password : String | semmle.label | password : String | +| SensitiveGetQuery2.java:18:40:18:54 | password : String | semmle.label | password : String | | SensitiveGetQuery2.java:19:61:19:68 | password | semmle.label | password | | SensitiveGetQuery3.java:12:21:12:60 | getRequestParameter(...) : String | semmle.label | getRequestParameter(...) : String | | SensitiveGetQuery3.java:13:57:13:64 | password | semmle.label | password | diff --git a/java/ql/test/experimental/query-tests/security/CWE-755/NFEAndroidDoS.expected b/java/ql/test/experimental/query-tests/security/CWE-755/NFEAndroidDoS.expected index 73657a38158..5f0e5b028f9 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-755/NFEAndroidDoS.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-755/NFEAndroidDoS.expected @@ -1,25 +1,25 @@ edges -| NFEAndroidDoS.java:13:24:13:34 | getIntent(...) : Intent | NFEAndroidDoS.java:13:24:13:61 | getStringExtra(...) : Object | -| NFEAndroidDoS.java:13:24:13:61 | getStringExtra(...) : Object | NFEAndroidDoS.java:14:21:14:51 | parseDouble(...) | -| NFEAndroidDoS.java:22:21:22:31 | getIntent(...) : Intent | NFEAndroidDoS.java:22:21:22:55 | getStringExtra(...) : Object | -| NFEAndroidDoS.java:22:21:22:55 | getStringExtra(...) : Object | NFEAndroidDoS.java:23:15:23:40 | parseInt(...) | -| NFEAndroidDoS.java:25:22:25:32 | getIntent(...) : Intent | NFEAndroidDoS.java:25:22:25:57 | getStringExtra(...) : Object | -| NFEAndroidDoS.java:25:22:25:57 | getStringExtra(...) : Object | NFEAndroidDoS.java:26:16:26:42 | parseInt(...) | -| NFEAndroidDoS.java:43:24:43:34 | getIntent(...) : Intent | NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : Object | -| NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : Object | NFEAndroidDoS.java:44:21:44:43 | new Double(...) | -| NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : Object | NFEAndroidDoS.java:47:21:47:47 | valueOf(...) | +| NFEAndroidDoS.java:13:24:13:34 | getIntent(...) : Intent | NFEAndroidDoS.java:13:24:13:61 | getStringExtra(...) : String | +| NFEAndroidDoS.java:13:24:13:61 | getStringExtra(...) : String | NFEAndroidDoS.java:14:21:14:51 | parseDouble(...) | +| NFEAndroidDoS.java:22:21:22:31 | getIntent(...) : Intent | NFEAndroidDoS.java:22:21:22:55 | getStringExtra(...) : String | +| NFEAndroidDoS.java:22:21:22:55 | getStringExtra(...) : String | NFEAndroidDoS.java:23:15:23:40 | parseInt(...) | +| NFEAndroidDoS.java:25:22:25:32 | getIntent(...) : Intent | NFEAndroidDoS.java:25:22:25:57 | getStringExtra(...) : String | +| NFEAndroidDoS.java:25:22:25:57 | getStringExtra(...) : String | NFEAndroidDoS.java:26:16:26:42 | parseInt(...) | +| NFEAndroidDoS.java:43:24:43:34 | getIntent(...) : Intent | NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : String | +| NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : String | NFEAndroidDoS.java:44:21:44:43 | new Double(...) | +| NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : String | NFEAndroidDoS.java:47:21:47:47 | valueOf(...) | nodes | NFEAndroidDoS.java:13:24:13:34 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | -| NFEAndroidDoS.java:13:24:13:61 | getStringExtra(...) : Object | semmle.label | getStringExtra(...) : Object | +| NFEAndroidDoS.java:13:24:13:61 | getStringExtra(...) : String | semmle.label | getStringExtra(...) : String | | NFEAndroidDoS.java:14:21:14:51 | parseDouble(...) | semmle.label | parseDouble(...) | | NFEAndroidDoS.java:22:21:22:31 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | -| NFEAndroidDoS.java:22:21:22:55 | getStringExtra(...) : Object | semmle.label | getStringExtra(...) : Object | +| NFEAndroidDoS.java:22:21:22:55 | getStringExtra(...) : String | semmle.label | getStringExtra(...) : String | | NFEAndroidDoS.java:23:15:23:40 | parseInt(...) | semmle.label | parseInt(...) | | NFEAndroidDoS.java:25:22:25:32 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | -| NFEAndroidDoS.java:25:22:25:57 | getStringExtra(...) : Object | semmle.label | getStringExtra(...) : Object | +| NFEAndroidDoS.java:25:22:25:57 | getStringExtra(...) : String | semmle.label | getStringExtra(...) : String | | NFEAndroidDoS.java:26:16:26:42 | parseInt(...) | semmle.label | parseInt(...) | | NFEAndroidDoS.java:43:24:43:34 | getIntent(...) : Intent | semmle.label | getIntent(...) : Intent | -| NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : Object | semmle.label | getStringExtra(...) : Object | +| NFEAndroidDoS.java:43:24:43:61 | getStringExtra(...) : String | semmle.label | getStringExtra(...) : String | | NFEAndroidDoS.java:44:21:44:43 | new Double(...) | semmle.label | new Double(...) | | NFEAndroidDoS.java:47:21:47:47 | valueOf(...) | semmle.label | valueOf(...) | subpaths diff --git a/java/ql/test/ext/TestModels/Test.java b/java/ql/test/ext/TestModels/Test.java index 83efd12e967..6bbc7a07879 100644 --- a/java/ql/test/ext/TestModels/Test.java +++ b/java/ql/test/ext/TestModels/Test.java @@ -82,7 +82,7 @@ public class Test { Connection con = DriverManager.getConnection(""); PreparedStatement ps1 = con.prepareStatement("UPDATE EMPLOYEES SET NAME = ? WHERE ID = ?"); ps1.setString(1, (String)source()); - sink(ps1); // $hasValueFlow + sink(ps1); // safe // java.util.concurrent.atomic AtomicReference ar = new AtomicReference(source()); diff --git a/java/ql/test/ext/TestModels/test.expected b/java/ql/test/ext/TestModels/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/ext/TestModels/test.expected +++ b/java/ql/test/ext/TestModels/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/ext/TestModels/test.ext.yml b/java/ql/test/ext/TestModels/test.ext.yml index 4fff7d575a3..c5873214f71 100644 --- a/java/ql/test/ext/TestModels/test.ext.yml +++ b/java/ql/test/ext/TestModels/test.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: summaryModel data: - ["generatedtest", "Test", False, "newWithMapValueDefault", "(Object)", "", "Argument[0]", "ReturnValue.MapValue", "value", "manual"] diff --git a/java/ql/test/ext/TestModels/test.ql b/java/ql/test/ext/TestModels/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/ext/TestModels/test.ql +++ b/java/ql/test/ext/TestModels/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/kotlin/library-tests/classes/diags.ql b/java/ql/test/kotlin/library-tests/classes/diags.ql deleted file mode 100644 index f791c30d153..00000000000 --- a/java/ql/test/kotlin/library-tests/classes/diags.ql +++ /dev/null @@ -1,8 +0,0 @@ -import semmle.code.java.Diagnostics - -from Diagnostic d -where d.getSeverity() > 2 -select d, d.getGeneratedBy(), d.getSeverity(), d.getTag(), d.getMessage(), - d.getFullMessage() - .regexpReplaceAll("^\\[[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2} K\\] ", - "[DATE TIME K] ") diff --git a/java/ql/test/kotlin/library-tests/dataflow/notnullexpr/test.ext.yml b/java/ql/test/kotlin/library-tests/dataflow/notnullexpr/test.ext.yml index 589c787bf9a..700f3f51e6f 100644 --- a/java/ql/test/kotlin/library-tests/dataflow/notnullexpr/test.ext.yml +++ b/java/ql/test/kotlin/library-tests/dataflow/notnullexpr/test.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: summaryModel data: - ["", "Uri", False, "getQueryParameter", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] diff --git a/java/ql/test/kotlin/library-tests/dataflow/summaries/test.expected b/java/ql/test/kotlin/library-tests/dataflow/summaries/test.expected index f566914ba89..f72956fded3 100644 --- a/java/ql/test/kotlin/library-tests/dataflow/summaries/test.expected +++ b/java/ql/test/kotlin/library-tests/dataflow/summaries/test.expected @@ -1,3 +1,5 @@ +failures +testFailures | test.kt:28:14:28:21 | getSecond(...) | Unexpected result: hasTaintFlow=a | | test.kt:35:14:35:27 | component1(...) | Unexpected result: hasTaintFlow=d | | test.kt:41:14:41:22 | getSecond(...) | Unexpected result: hasTaintFlow=e | diff --git a/java/ql/test/kotlin/library-tests/dataflow/summaries/test.ql b/java/ql/test/kotlin/library-tests/dataflow/summaries/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/kotlin/library-tests/dataflow/summaries/test.ql +++ b/java/ql/test/kotlin/library-tests/dataflow/summaries/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/kotlin/library-tests/dataflow/summaries/use.kt b/java/ql/test/kotlin/library-tests/dataflow/summaries/use.kt new file mode 100644 index 00000000000..07beffd2be2 --- /dev/null +++ b/java/ql/test/kotlin/library-tests/dataflow/summaries/use.kt @@ -0,0 +1,11 @@ +import java.io.Closeable + +class UseFlowTest { + fun taint(t: T) = t + fun sink(s: Closeable) { } + + fun test(input: Closeable) { + taint(input).use { it -> sink(it) } // $ hasValueFlow + sink(taint(input).use { it }) // $ hasValueFlow + } +} diff --git a/java/ql/test/kotlin/library-tests/dataflow/summaries/with.kt b/java/ql/test/kotlin/library-tests/dataflow/summaries/with.kt new file mode 100644 index 00000000000..d495f95c854 --- /dev/null +++ b/java/ql/test/kotlin/library-tests/dataflow/summaries/with.kt @@ -0,0 +1,9 @@ +class WithFlowTest { + fun taint(t: T) = t + fun sink(s: String) { } + + fun test(input: String) { + with(taint(input)) { sink(this) } // $ hasValueFlow + sink(with(taint(input)) { this }) // $ hasValueFlow + } +} diff --git a/java/ql/test/kotlin/library-tests/dataflow/whenexpr/test.ext.yml b/java/ql/test/kotlin/library-tests/dataflow/whenexpr/test.ext.yml index 589c787bf9a..700f3f51e6f 100644 --- a/java/ql/test/kotlin/library-tests/dataflow/whenexpr/test.ext.yml +++ b/java/ql/test/kotlin/library-tests/dataflow/whenexpr/test.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: summaryModel data: - ["", "Uri", False, "getQueryParameter", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] diff --git a/java/ql/test/library-tests/dataflow/callback-dispatch/test.expected b/java/ql/test/library-tests/dataflow/callback-dispatch/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/callback-dispatch/test.expected +++ b/java/ql/test/library-tests/dataflow/callback-dispatch/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/callback-dispatch/test.ext.yml b/java/ql/test/library-tests/dataflow/callback-dispatch/test.ext.yml index 5f35c923ad0..a153e39a0e0 100644 --- a/java/ql/test/library-tests/dataflow/callback-dispatch/test.ext.yml +++ b/java/ql/test/library-tests/dataflow/callback-dispatch/test.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: summaryModel data: - ["my.callback.qltest", "A", False, "applyConsumer1", "(Object,Consumer1)", "", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"] @@ -15,4 +15,3 @@ extensions: - ["my.callback.qltest", "A", False, "produceConsume", "(Producer1,Consumer3)", "", "Argument[1].Parameter[0]", "ReturnValue", "value", "manual"] - ["my.callback.qltest", "A", False, "applyConverter1", "(Object,Converter1)", "", "Argument[0]", "Argument[1].Parameter[0]", "value", "manual"] - ["my.callback.qltest", "A", False, "applyConverter1", "(Object,Converter1)", "", "Argument[1].ReturnValue", "ReturnValue", "value", "manual"] - diff --git a/java/ql/test/library-tests/dataflow/callback-dispatch/test.ql b/java/ql/test/library-tests/dataflow/callback-dispatch/test.ql index 131d0a5706d..a4f8b4e822d 100644 --- a/java/ql/test/library-tests/dataflow/callback-dispatch/test.ql +++ b/java/ql/test/library-tests/dataflow/callback-dispatch/test.ql @@ -12,12 +12,10 @@ module Config implements DataFlow::ConfigSig { module Flow = DataFlow::Global; -class HasFlowTest extends InlineExpectationsTest { - HasFlowTest() { this = "HasFlowTest" } +module HasFlowTest implements TestSig { + string getARelevantTag() { result = "flow" } - override string getARelevantTag() { result = "flow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "flow" and exists(DataFlow::Node src, DataFlow::Node sink | Flow::flow(src, sink) | sink.getLocation() = location and @@ -26,3 +24,5 @@ class HasFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/dataflow/callctx/test.expected b/java/ql/test/library-tests/dataflow/callctx/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/callctx/test.expected +++ b/java/ql/test/library-tests/dataflow/callctx/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/callctx/test.ql b/java/ql/test/library-tests/dataflow/callctx/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/dataflow/callctx/test.ql +++ b/java/ql/test/library-tests/dataflow/callctx/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/dataflow/collections/containerflow.expected b/java/ql/test/library-tests/dataflow/collections/containerflow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/collections/containerflow.expected +++ b/java/ql/test/library-tests/dataflow/collections/containerflow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/collections/containerflow.ext.yml b/java/ql/test/library-tests/dataflow/collections/containerflow.ext.yml index ebe7e3b6ea5..c12a0156d0c 100644 --- a/java/ql/test/library-tests/dataflow/collections/containerflow.ext.yml +++ b/java/ql/test/library-tests/dataflow/collections/containerflow.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: summaryModel data: - ["", "B", False, "readElement", "(Spliterator)", "", "Argument[0].Element", "ReturnValue", "value", "manual"] diff --git a/java/ql/test/library-tests/dataflow/collections/containerflow.ql b/java/ql/test/library-tests/dataflow/collections/containerflow.ql index 992971d6dc7..4b1a19535ea 100644 --- a/java/ql/test/library-tests/dataflow/collections/containerflow.ql +++ b/java/ql/test/library-tests/dataflow/collections/containerflow.ql @@ -1,3 +1,4 @@ import java import semmle.code.java.dataflow.DataFlow import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/dataflow/entrypoint-types/EntryPointTypesTest.expected b/java/ql/test/library-tests/dataflow/entrypoint-types/EntryPointTypesTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/entrypoint-types/EntryPointTypesTest.expected +++ b/java/ql/test/library-tests/dataflow/entrypoint-types/EntryPointTypesTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/entrypoint-types/EntryPointTypesTest.ql b/java/ql/test/library-tests/dataflow/entrypoint-types/EntryPointTypesTest.ql index 5a0ca1865c1..29d355671ec 100644 --- a/java/ql/test/library-tests/dataflow/entrypoint-types/EntryPointTypesTest.ql +++ b/java/ql/test/library-tests/dataflow/entrypoint-types/EntryPointTypesTest.ql @@ -18,12 +18,10 @@ module TaintFlowConfig implements DataFlow::ConfigSig { module TaintFlow = TaintTracking::Global; -class HasFlowTest extends InlineExpectationsTest { - HasFlowTest() { this = "HasFlowTest" } +module HasFlowTest implements TestSig { + string getARelevantTag() { result = "hasTaintFlow" } - override string getARelevantTag() { result = ["hasTaintFlow"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasTaintFlow" and exists(DataFlow::Node sink | TaintFlow::flowTo(sink) | sink.getLocation() = location and @@ -32,3 +30,5 @@ class HasFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/dataflow/external-models/sinks.ext.yml b/java/ql/test/library-tests/dataflow/external-models/sinks.ext.yml index 55a76b79b21..d469a2de0dc 100644 --- a/java/ql/test/library-tests/dataflow/external-models/sinks.ext.yml +++ b/java/ql/test/library-tests/dataflow/external-models/sinks.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: sinkModel data: - ["my.qltest", "B", False, "sink1", "(Object)", "", "Argument[0]", "qltest", "manual"] diff --git a/java/ql/test/library-tests/dataflow/external-models/srcs.ext.yml b/java/ql/test/library-tests/dataflow/external-models/srcs.ext.yml index 7730d41e549..9693152f1c0 100644 --- a/java/ql/test/library-tests/dataflow/external-models/srcs.ext.yml +++ b/java/ql/test/library-tests/dataflow/external-models/srcs.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: sourceModel data: - ["my.qltest", "A", False, "src1", "()", "", "ReturnValue", "qltest", "manual"] diff --git a/java/ql/test/library-tests/dataflow/external-models/steps.ext.yml b/java/ql/test/library-tests/dataflow/external-models/steps.ext.yml index 41d26cf815a..c6a1fb69d6d 100644 --- a/java/ql/test/library-tests/dataflow/external-models/steps.ext.yml +++ b/java/ql/test/library-tests/dataflow/external-models/steps.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: summaryModel data: - ["my.qltest", "C", False, "stepArgRes", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "manual"] diff --git a/java/ql/test/library-tests/dataflow/fluent-methods/flow.expected b/java/ql/test/library-tests/dataflow/fluent-methods/flow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/fluent-methods/flow.expected +++ b/java/ql/test/library-tests/dataflow/fluent-methods/flow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/fluent-methods/flow.ql b/java/ql/test/library-tests/dataflow/fluent-methods/flow.ql index 4a9794ab351..944abac0642 100644 --- a/java/ql/test/library-tests/dataflow/fluent-methods/flow.ql +++ b/java/ql/test/library-tests/dataflow/fluent-methods/flow.ql @@ -2,6 +2,7 @@ import java import semmle.code.java.dataflow.DataFlow import semmle.code.java.dataflow.FlowSteps import TestUtilities.InlineFlowTest +import DefaultFlowTest class Model extends FluentMethod { Model() { this.getName() = "modelledFluentMethod" } diff --git a/java/ql/test/library-tests/dataflow/local-additional-taint/localAdditionalTaintStep.ql b/java/ql/test/library-tests/dataflow/local-additional-taint/localAdditionalTaintStep.ql index cd51fbc746a..51abe1a6c5a 100644 --- a/java/ql/test/library-tests/dataflow/local-additional-taint/localAdditionalTaintStep.ql +++ b/java/ql/test/library-tests/dataflow/local-additional-taint/localAdditionalTaintStep.ql @@ -12,15 +12,20 @@ predicate taintFlowUpdate(DataFlow::ParameterNode p1, DataFlow::ParameterNode p2 exists(DataFlow::PostUpdateNode ret | localTaint(p1, ret) | ret.getPreUpdateNode() = p2) } +predicate summaryStep(FlowSummaryNode src, FlowSummaryNode sink) { + FlowSummaryImpl::Private::Steps::summaryLocalStep(src.getSummaryNode(), sink.getSummaryNode(), + false) or + FlowSummaryImpl::Private::Steps::summaryReadStep(src.getSummaryNode(), _, sink.getSummaryNode()) or + FlowSummaryImpl::Private::Steps::summaryStoreStep(src.getSummaryNode(), _, sink.getSummaryNode()) +} + from DataFlow::Node src, DataFlow::Node sink where ( localAdditionalTaintStep(src, sink) or FlowSummaryImpl::Private::Steps::summaryThroughStepTaint(src, sink, _) ) and - not FlowSummaryImpl::Private::Steps::summaryLocalStep(src, sink, false) and - not FlowSummaryImpl::Private::Steps::summaryReadStep(src, _, sink) and - not FlowSummaryImpl::Private::Steps::summaryStoreStep(src, _, sink) + not summaryStep(src, sink) or exists(ArgumentNode arg, MethodAccess call, DataFlow::ParameterNode p, int i | src = arg and diff --git a/java/ql/test/library-tests/dataflow/state/test.expected b/java/ql/test/library-tests/dataflow/state/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/state/test.expected +++ b/java/ql/test/library-tests/dataflow/state/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/state/test.ql b/java/ql/test/library-tests/dataflow/state/test.ql index b82dd95c0b1..b6063962ef2 100644 --- a/java/ql/test/library-tests/dataflow/state/test.ql +++ b/java/ql/test/library-tests/dataflow/state/test.ql @@ -59,12 +59,10 @@ module Flow = TaintTracking::GlobalWithState; module PartialFlow = Flow::FlowExploration; -class HasFlowTest extends InlineExpectationsTest { - HasFlowTest() { this = "HasFlowTest" } +module HasFlowTest implements TestSig { + string getARelevantTag() { result = ["pFwd", "pRev", "flow"] } - override string getARelevantTag() { result = ["pFwd", "pRev", "flow"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "flow" and exists(Flow::PathNode src, Flow::PathNode sink | Flow::flowPath(src, sink) and @@ -92,3 +90,5 @@ class HasFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/dataflow/stream-collect/test.expected b/java/ql/test/library-tests/dataflow/stream-collect/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/stream-collect/test.expected +++ b/java/ql/test/library-tests/dataflow/stream-collect/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/stream-collect/test.ql b/java/ql/test/library-tests/dataflow/stream-collect/test.ql index c4b63c87071..50e3f8d2f7d 100644 --- a/java/ql/test/library-tests/dataflow/stream-collect/test.ql +++ b/java/ql/test/library-tests/dataflow/stream-collect/test.ql @@ -1 +1,2 @@ import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/dataflow/synth-global/test.expected b/java/ql/test/library-tests/dataflow/synth-global/test.expected index 81332464f79..ae4c33edb3d 100644 --- a/java/ql/test/library-tests/dataflow/synth-global/test.expected +++ b/java/ql/test/library-tests/dataflow/synth-global/test.expected @@ -1,2 +1,3 @@ failures +testFailures invalidModelRow diff --git a/java/ql/test/library-tests/dataflow/synth-global/test.ext.yml b/java/ql/test/library-tests/dataflow/synth-global/test.ext.yml index 3d3bbe9fd47..58b4d2ecc24 100644 --- a/java/ql/test/library-tests/dataflow/synth-global/test.ext.yml +++ b/java/ql/test/library-tests/dataflow/synth-global/test.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: summaryModel data: - ["my.qltest.synth", "A", False, "storeInArray", "(String)", "", "Argument[0]", "SyntheticGlobal[db1].ArrayElement", "value", "manual"] diff --git a/java/ql/test/library-tests/dataflow/synth-global/test.ql b/java/ql/test/library-tests/dataflow/synth-global/test.ql index 0d9f2265afc..53f8aa6a6f6 100644 --- a/java/ql/test/library-tests/dataflow/synth-global/test.ql +++ b/java/ql/test/library-tests/dataflow/synth-global/test.ql @@ -1,3 +1,4 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest import ModelValidation diff --git a/java/ql/test/library-tests/dataflow/taint-format/test.expected b/java/ql/test/library-tests/dataflow/taint-format/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/taint-format/test.expected +++ b/java/ql/test/library-tests/dataflow/taint-format/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/taint-format/test.ql b/java/ql/test/library-tests/dataflow/taint-format/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/dataflow/taint-format/test.ql +++ b/java/ql/test/library-tests/dataflow/taint-format/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/dataflow/taint-gson/Test.java b/java/ql/test/library-tests/dataflow/taint-gson/Test.java new file mode 100644 index 00000000000..82ca2388bbe --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taint-gson/Test.java @@ -0,0 +1,38 @@ +import com.google.gson.Gson; + +public class Test { + public static class Potato { + private String name; + private Potato inner; + private Object object; + + private String getName() { + return name; + } + + private Potato getInner() { + return inner; + } + + private Object getObject() { + return object; + } + + } + + public static String source() { + return ""; + } + + public static void sink(Object any) {} + + public static void gsonfromJson() throws Exception { + String s = source(); + Potato tainted = new Gson().fromJson(s, Potato.class); + sink(tainted); // $ hasTaintFlow + sink(tainted.getName()); // $ hasTaintFlow + sink(tainted.getInner()); // $ hasTaintFlow + sink(tainted.getInner().getName()); // $ hasTaintFlow + sink(tainted.getObject()); // $ hasTaintFlow + } +} diff --git a/java/ql/test/library-tests/dataflow/taint-gson/dataFlow.expected b/java/ql/test/library-tests/dataflow/taint-gson/dataFlow.expected new file mode 100644 index 00000000000..48de9172b36 --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taint-gson/dataFlow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/taint-gson/dataFlow.ql b/java/ql/test/library-tests/dataflow/taint-gson/dataFlow.ql new file mode 100644 index 00000000000..aca87429a3a --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taint-gson/dataFlow.ql @@ -0,0 +1,3 @@ +import java +import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/dataflow/taint-gson/options b/java/ql/test/library-tests/dataflow/taint-gson/options new file mode 100644 index 00000000000..a9cce94fd94 --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taint-gson/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/gson-2.8.6 diff --git a/java/ql/test/library-tests/dataflow/taint-jackson/dataFlow.expected b/java/ql/test/library-tests/dataflow/taint-jackson/dataFlow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/taint-jackson/dataFlow.expected +++ b/java/ql/test/library-tests/dataflow/taint-jackson/dataFlow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/taint-jackson/dataFlow.ql b/java/ql/test/library-tests/dataflow/taint-jackson/dataFlow.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/dataflow/taint-jackson/dataFlow.ql +++ b/java/ql/test/library-tests/dataflow/taint-jackson/dataFlow.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/dataflow/taintsources/Hudson.java b/java/ql/test/library-tests/dataflow/taintsources/Hudson.java new file mode 100644 index 00000000000..2a180eeb5fb --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taintsources/Hudson.java @@ -0,0 +1,16 @@ +import hudson.FilePath; + +public class Hudson { + + private static void sink(Object o) {} + + public static void test() throws Exception { + FilePath fp = null; + sink(FilePath.newInputStreamDenyingSymlinkAsNeeded(null, null, null)); // $hasLocalValueFlow + sink(FilePath.openInputStream(null, null)); // $hasLocalValueFlow + sink(fp.read()); // $hasLocalValueFlow + sink(fp.read(null)); // $hasLocalValueFlow + sink(fp.readFromOffset(-1)); // $hasLocalValueFlow + sink(fp.readToString()); // $hasLocalValueFlow + } +} diff --git a/java/ql/test/library-tests/dataflow/taintsources/PlayMvc.java b/java/ql/test/library-tests/dataflow/taintsources/PlayMvc.java new file mode 100644 index 00000000000..55087a6596b --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taintsources/PlayMvc.java @@ -0,0 +1,25 @@ +import play.mvc.Http; + +public class PlayMvc { + + private Http.Request request; + private Http.RequestHeader header; + + private static void sink(Object o) {} + + public void test() throws Exception { + sink(request.body()); // $ hasRemoteValueFlow + sink(header.cookie(null)); // $ hasRemoteValueFlow + sink(header.cookies()); // $ hasRemoteValueFlow + sink(header.getHeader(null)); // $ hasRemoteValueFlow + sink(header.getHeaders()); // $ hasRemoteValueFlow + sink(header.getQueryString(null)); // $ hasRemoteValueFlow + sink(header.header(null)); // $ hasRemoteValueFlow + sink(header.headers()); // $ hasRemoteValueFlow + sink(header.host()); // $ hasRemoteValueFlow + sink(header.path()); // $ hasRemoteValueFlow + sink(header.queryString()); // $ hasRemoteValueFlow + sink(header.remoteAddress()); // $ hasRemoteValueFlow + sink(header.uri()); // $ hasRemoteValueFlow + } +} diff --git a/java/ql/test/library-tests/dataflow/taintsources/Stapler.java b/java/ql/test/library-tests/dataflow/taintsources/Stapler.java new file mode 100644 index 00000000000..96be00270ba --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taintsources/Stapler.java @@ -0,0 +1,14 @@ +import org.kohsuke.stapler.InjectedParameter; + +public class Stapler { + + @InjectedParameter + private @interface MyInjectedParameter { + } + + private static void sink(Object o) {} + + public static void test(@MyInjectedParameter String src) { + sink(src); // $ hasRemoteValueFlow + } +} diff --git a/java/ql/test/library-tests/dataflow/taintsources/local.expected b/java/ql/test/library-tests/dataflow/taintsources/local.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/local.expected +++ b/java/ql/test/library-tests/dataflow/taintsources/local.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/taintsources/local.ql b/java/ql/test/library-tests/dataflow/taintsources/local.ql index a174629ca6e..45697947173 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/local.ql +++ b/java/ql/test/library-tests/dataflow/taintsources/local.ql @@ -26,12 +26,10 @@ module LocalTaintConfig implements DataFlow::ConfigSig { module LocalTaintFlow = TaintTracking::Global; -class LocalFlowTest extends InlineExpectationsTest { - LocalFlowTest() { this = "LocalFlowTest" } +module LocalFlowTest implements TestSig { + string getARelevantTag() { result = ["hasLocalValueFlow", "hasLocalTaintFlow"] } - override string getARelevantTag() { result = ["hasLocalValueFlow", "hasLocalTaintFlow"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasLocalValueFlow" and exists(DataFlow::Node sink | LocalValueFlow::flowTo(sink) | sink.getLocation() = location and @@ -49,3 +47,5 @@ class LocalFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/dataflow/taintsources/options b/java/ql/test/library-tests/dataflow/taintsources/options index c19a2aa5fb3..c8249b05e38 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/options +++ b/java/ql/test/library-tests/dataflow/taintsources/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2 \ No newline at end of file +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/remote.expected b/java/ql/test/library-tests/dataflow/taintsources/remote.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/remote.expected +++ b/java/ql/test/library-tests/dataflow/taintsources/remote.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/taintsources/remote.ql b/java/ql/test/library-tests/dataflow/taintsources/remote.ql index fa1f206ca74..7f58a68d438 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/remote.ql +++ b/java/ql/test/library-tests/dataflow/taintsources/remote.ql @@ -22,12 +22,10 @@ module RemoteTaintConfig implements DataFlow::ConfigSig { module RemoteTaintFlow = TaintTracking::Global; -class RemoteFlowTest extends InlineExpectationsTest { - RemoteFlowTest() { this = "RemoteFlowTest" } +module RemoteFlowTest implements TestSig { + string getARelevantTag() { result = ["hasRemoteValueFlow", "hasRemoteTaintFlow"] } - override string getARelevantTag() { result = ["hasRemoteValueFlow", "hasRemoteTaintFlow"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasRemoteValueFlow" and exists(DataFlow::Node sink | RemoteValueFlow::flowTo(sink) | sink.getLocation() = location and @@ -45,3 +43,5 @@ class RemoteFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/dispatch/CallableViaSummary.java b/java/ql/test/library-tests/dispatch/CallableViaSummary.java new file mode 100644 index 00000000000..da7c7d86efd --- /dev/null +++ b/java/ql/test/library-tests/dispatch/CallableViaSummary.java @@ -0,0 +1,31 @@ +import java.util.*; + +public class CallableViaSummary { + public interface Element { + public void handle(String message); + } + + public void main(String[] args) { + List elements = new ArrayList<>(); + + List elements2 = new ArrayList<>(); + + elements.add(new Element() { + @Override + public void handle(String message) { + System.out.println(message); + } + }); + + elements.add(message -> System.out.println(message)); + + // This dispatches to the two added elements because + // the summary of ArrayList causes flow via type tracking. + elements.get(0).handle("Hello, world!"); + + // This does not dispatch to anything, showing that the + // open-world assumption does not apply + // (and hence that type tracking is necessary above). + elements2.get(0).handle("Hello, world!"); + } +} \ No newline at end of file diff --git a/java/ql/test/library-tests/dispatch/viaSummary.expected b/java/ql/test/library-tests/dispatch/viaSummary.expected new file mode 100644 index 00000000000..7c311587d9a --- /dev/null +++ b/java/ql/test/library-tests/dispatch/viaSummary.expected @@ -0,0 +1,2 @@ +| CallableViaSummary.java:24:9:24:47 | handle(...) | CallableViaSummary.java:15:25:15:30 | handle | +| CallableViaSummary.java:24:9:24:47 | handle(...) | CallableViaSummary.java:20:22:20:59 | handle | diff --git a/java/ql/test/library-tests/dispatch/viaSummary.ql b/java/ql/test/library-tests/dispatch/viaSummary.ql new file mode 100644 index 00000000000..a7a88d0749d --- /dev/null +++ b/java/ql/test/library-tests/dispatch/viaSummary.ql @@ -0,0 +1,9 @@ +import java +import semmle.code.java.dispatch.VirtualDispatch + +from MethodAccess ma, Method m +where + m = viableImpl(ma) and + m.fromSource() and + ma.getFile().toString() = "CallableViaSummary" +select ma, m diff --git a/java/ql/test/library-tests/frameworks/JaxWs/JaxRs.expected b/java/ql/test/library-tests/frameworks/JaxWs/JaxRs.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/JaxWs/JaxRs.expected +++ b/java/ql/test/library-tests/frameworks/JaxWs/JaxRs.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/JaxWs/JaxRs.ql b/java/ql/test/library-tests/frameworks/JaxWs/JaxRs.ql index 70c0cef4917..a1d25dc275e 100644 --- a/java/ql/test/library-tests/frameworks/JaxWs/JaxRs.ql +++ b/java/ql/test/library-tests/frameworks/JaxWs/JaxRs.ql @@ -3,10 +3,8 @@ import semmle.code.java.frameworks.JaxWS import semmle.code.java.security.XSS import TestUtilities.InlineExpectationsTest -class JaxRsTest extends InlineExpectationsTest { - JaxRsTest() { this = "JaxRsTest" } - - override string getARelevantTag() { +module JaxRsTest implements TestSig { + string getARelevantTag() { result = [ "ResourceMethod", "RootResourceClass", "NonRootResourceClass", @@ -18,7 +16,7 @@ class JaxRsTest extends InlineExpectationsTest { ] } - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "ResourceMethod" and exists(JaxRsResourceMethod resourceMethod | resourceMethod.getLocation() = location and @@ -168,3 +166,5 @@ class JaxRsTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/frameworks/JaxWs/JaxRsFlow.expected b/java/ql/test/library-tests/frameworks/JaxWs/JaxRsFlow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/JaxWs/JaxRsFlow.expected +++ b/java/ql/test/library-tests/frameworks/JaxWs/JaxRsFlow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/JaxWs/JaxRsFlow.ql b/java/ql/test/library-tests/frameworks/JaxWs/JaxRsFlow.ql index d0ab4274b12..93ab3fe066d 100644 --- a/java/ql/test/library-tests/frameworks/JaxWs/JaxRsFlow.ql +++ b/java/ql/test/library-tests/frameworks/JaxWs/JaxRsFlow.ql @@ -13,16 +13,4 @@ module Config implements DataFlow::ConfigSig { predicate isSink = DefaultFlowConfig::isSink/1; } -module TaintFlow = TaintTracking::Global; - -module ValueFlow = DataFlow::Global; - -class Test extends InlineFlowTest { - override predicate hasTaintFlow(DataFlow::Node source, DataFlow::Node sink) { - TaintFlow::flow(source, sink) - } - - override predicate hasValueFlow(DataFlow::Node source, DataFlow::Node sink) { - ValueFlow::flow(source, sink) - } -} +import FlowTest diff --git a/java/ql/test/library-tests/frameworks/JaxWs/JaxWsEndpoint.expected b/java/ql/test/library-tests/frameworks/JaxWs/JaxWsEndpoint.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/JaxWs/JaxWsEndpoint.expected +++ b/java/ql/test/library-tests/frameworks/JaxWs/JaxWsEndpoint.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/JaxWs/JaxWsEndpoint.ql b/java/ql/test/library-tests/frameworks/JaxWs/JaxWsEndpoint.ql index 6ebd597bb0a..8ccc69dc8c2 100644 --- a/java/ql/test/library-tests/frameworks/JaxWs/JaxWsEndpoint.ql +++ b/java/ql/test/library-tests/frameworks/JaxWs/JaxWsEndpoint.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.frameworks.JaxWS import TestUtilities.InlineExpectationsTest -class JaxWsEndpointTest extends InlineExpectationsTest { - JaxWsEndpointTest() { this = "JaxWsEndpointTest" } +module JaxWsEndpointTest implements TestSig { + string getARelevantTag() { result = ["JaxWsEndpoint", "JaxWsEndpointRemoteMethod"] } - override string getARelevantTag() { result = ["JaxWsEndpoint", "JaxWsEndpointRemoteMethod"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "JaxWsEndpoint" and exists(JaxWsEndpoint jaxWsEndpoint | jaxWsEndpoint.getLocation() = location and @@ -25,3 +23,5 @@ class JaxWsEndpointTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/frameworks/android/asynctask/test.expected b/java/ql/test/library-tests/frameworks/android/asynctask/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/asynctask/test.expected +++ b/java/ql/test/library-tests/frameworks/android/asynctask/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/asynctask/test.ql b/java/ql/test/library-tests/frameworks/android/asynctask/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/android/asynctask/test.ql +++ b/java/ql/test/library-tests/frameworks/android/asynctask/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.expected b/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.expected +++ b/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.ext.yml b/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.ext.yml index cf5c80bc456..06781456552 100644 --- a/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.ext.yml +++ b/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: summaryModel data: - ["generatedtest", "Test", False, "newWithMapValueDefault", "(Object)", "", "Argument[0]", "ReturnValue.MapValue", "value", "manual"] diff --git a/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.ql b/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.ql +++ b/java/ql/test/library-tests/frameworks/android/content-provider-summaries/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/android/content-provider/test.expected b/java/ql/test/library-tests/frameworks/android/content-provider/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/content-provider/test.expected +++ b/java/ql/test/library-tests/frameworks/android/content-provider/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/content-provider/test.ql b/java/ql/test/library-tests/frameworks/android/content-provider/test.ql index f068b30b0d5..2c6bd09dc40 100644 --- a/java/ql/test/library-tests/frameworks/android/content-provider/test.ql +++ b/java/ql/test/library-tests/frameworks/android/content-provider/test.ql @@ -10,12 +10,4 @@ module ProviderTaintFlowConfig implements DataFlow::ConfigSig { int fieldFlowBranchLimit() { result = DefaultFlowConfig::fieldFlowBranchLimit() } } -module ProviderTaintFlow = TaintTracking::Global; - -class ProviderInlineFlowTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - ProviderTaintFlow::flow(src, sink) - } -} +import TaintFlowTest diff --git a/java/ql/test/library-tests/frameworks/android/external-storage/test.expected b/java/ql/test/library-tests/frameworks/android/external-storage/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/external-storage/test.expected +++ b/java/ql/test/library-tests/frameworks/android/external-storage/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/external-storage/test.ql b/java/ql/test/library-tests/frameworks/android/external-storage/test.ql index c73c0a5c6c9..64ff27077df 100644 --- a/java/ql/test/library-tests/frameworks/android/external-storage/test.ql +++ b/java/ql/test/library-tests/frameworks/android/external-storage/test.ql @@ -11,10 +11,4 @@ module Config implements DataFlow::ConfigSig { } } -module Flow = TaintTracking::Global; - -class ExternalStorageTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { Flow::flow(src, sink) } -} +import TaintFlowTest diff --git a/java/ql/test/library-tests/frameworks/android/flow-steps/test.expected b/java/ql/test/library-tests/frameworks/android/flow-steps/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/flow-steps/test.expected +++ b/java/ql/test/library-tests/frameworks/android/flow-steps/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/flow-steps/test.ql b/java/ql/test/library-tests/frameworks/android/flow-steps/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/android/flow-steps/test.ql +++ b/java/ql/test/library-tests/frameworks/android/flow-steps/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/android/intent/test.expected b/java/ql/test/library-tests/frameworks/android/intent/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/intent/test.expected +++ b/java/ql/test/library-tests/frameworks/android/intent/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/intent/test.ext.yml b/java/ql/test/library-tests/frameworks/android/intent/test.ext.yml index 31321102a46..0a3ce554bc7 100644 --- a/java/ql/test/library-tests/frameworks/android/intent/test.ext.yml +++ b/java/ql/test/library-tests/frameworks/android/intent/test.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: summaryModel data: - ["generatedtest", "Test", False, "newBundleWithMapValue", "(Object)", "", "Argument[0]", "ReturnValue.MapValue", "value", "manual"] diff --git a/java/ql/test/library-tests/frameworks/android/intent/test.ql b/java/ql/test/library-tests/frameworks/android/intent/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/android/intent/test.ql +++ b/java/ql/test/library-tests/frameworks/android/intent/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/android/notification/test.expected b/java/ql/test/library-tests/frameworks/android/notification/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/notification/test.expected +++ b/java/ql/test/library-tests/frameworks/android/notification/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/notification/test.ext.yml b/java/ql/test/library-tests/frameworks/android/notification/test.ext.yml index bd5c804fddc..69b416a5b72 100644 --- a/java/ql/test/library-tests/frameworks/android/notification/test.ext.yml +++ b/java/ql/test/library-tests/frameworks/android/notification/test.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: summaryModel data: - ["generatedtest", "Test", False, "getMapKeyDefault", "(Bundle)", "", "Argument[0].MapKey", "ReturnValue", "value", "manual"] diff --git a/java/ql/test/library-tests/frameworks/android/notification/test.ql b/java/ql/test/library-tests/frameworks/android/notification/test.ql index f0a60550d4d..07c022b1265 100644 --- a/java/ql/test/library-tests/frameworks/android/notification/test.ql +++ b/java/ql/test/library-tests/frameworks/android/notification/test.ql @@ -1,3 +1,4 @@ import java import semmle.code.java.frameworks.android.Intent import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/android/slice/test.expected b/java/ql/test/library-tests/frameworks/android/slice/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/slice/test.expected +++ b/java/ql/test/library-tests/frameworks/android/slice/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/slice/test.ql b/java/ql/test/library-tests/frameworks/android/slice/test.ql index b3c5fe78094..787f93df5a0 100644 --- a/java/ql/test/library-tests/frameworks/android/slice/test.ql +++ b/java/ql/test/library-tests/frameworks/android/slice/test.ql @@ -11,8 +11,6 @@ module SliceValueFlowConfig implements DataFlow::ConfigSig { predicate isSink = DefaultFlowConfig::isSink/1; } -module SliceValueFlow = DataFlow::Global; - module SliceTaintFlowConfig implements DataFlow::ConfigSig { predicate isSource = DefaultFlowConfig::isSource/1; @@ -24,14 +22,4 @@ module SliceTaintFlowConfig implements DataFlow::ConfigSig { } } -module SliceTaintFlow = TaintTracking::Global; - -class SliceFlowTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node source, DataFlow::Node sink) { - SliceValueFlow::flow(source, sink) - } - - override predicate hasTaintFlow(DataFlow::Node source, DataFlow::Node sink) { - SliceTaintFlow::flow(source, sink) - } -} +import FlowTest diff --git a/java/ql/test/library-tests/frameworks/android/sources/OnActivityResultSourceTest.expected b/java/ql/test/library-tests/frameworks/android/sources/OnActivityResultSourceTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/sources/OnActivityResultSourceTest.expected +++ b/java/ql/test/library-tests/frameworks/android/sources/OnActivityResultSourceTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/sources/OnActivityResultSourceTest.ql b/java/ql/test/library-tests/frameworks/android/sources/OnActivityResultSourceTest.ql index 64c0f48ffa6..5b163a81935 100644 --- a/java/ql/test/library-tests/frameworks/android/sources/OnActivityResultSourceTest.ql +++ b/java/ql/test/library-tests/frameworks/android/sources/OnActivityResultSourceTest.ql @@ -10,12 +10,4 @@ module SourceValueFlowConfig implements DataFlow::ConfigSig { int fieldFlowBranchLimit() { result = DefaultFlowConfig::fieldFlowBranchLimit() } } -module SourceValueFlow = DataFlow::Global; - -class SourceInlineFlowTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { - SourceValueFlow::flow(src, sink) - } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { none() } -} +import ValueFlowTest diff --git a/java/ql/test/library-tests/frameworks/android/taint-database/flowSteps.expected b/java/ql/test/library-tests/frameworks/android/taint-database/flowSteps.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/taint-database/flowSteps.expected +++ b/java/ql/test/library-tests/frameworks/android/taint-database/flowSteps.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/taint-database/flowSteps.ql b/java/ql/test/library-tests/frameworks/android/taint-database/flowSteps.ql index 5bbe2cab89c..64cb38486de 100644 --- a/java/ql/test/library-tests/frameworks/android/taint-database/flowSteps.ql +++ b/java/ql/test/library-tests/frameworks/android/taint-database/flowSteps.ql @@ -14,12 +14,10 @@ module Config implements DataFlow::ConfigSig { module Flow = TaintTracking::Global; -class FlowStepTest extends InlineExpectationsTest { - FlowStepTest() { this = "FlowStepTest" } +module FlowStepTest implements TestSig { + string getARelevantTag() { result = "taintReachesReturn" } - override string getARelevantTag() { result = "taintReachesReturn" } - - override predicate hasActualResult(Location l, string element, string tag, string value) { + predicate hasActualResult(Location l, string element, string tag, string value) { tag = "taintReachesReturn" and value = "" and exists(DataFlow::Node source | Flow::flow(source, _) | @@ -28,3 +26,5 @@ class FlowStepTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/frameworks/android/taint-database/sinks.expected b/java/ql/test/library-tests/frameworks/android/taint-database/sinks.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/taint-database/sinks.expected +++ b/java/ql/test/library-tests/frameworks/android/taint-database/sinks.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/taint-database/sinks.ql b/java/ql/test/library-tests/frameworks/android/taint-database/sinks.ql index 234b7ca74b0..c0661820294 100644 --- a/java/ql/test/library-tests/frameworks/android/taint-database/sinks.ql +++ b/java/ql/test/library-tests/frameworks/android/taint-database/sinks.ql @@ -14,12 +14,10 @@ module Config implements DataFlow::ConfigSig { module Flow = TaintTracking::Global; -class SinkTest extends InlineExpectationsTest { - SinkTest() { this = "SinkTest" } +module SinkTest implements TestSig { + string getARelevantTag() { result = "taintReachesSink" } - override string getARelevantTag() { result = "taintReachesSink" } - - override predicate hasActualResult(Location l, string element, string tag, string value) { + predicate hasActualResult(Location l, string element, string tag, string value) { tag = "taintReachesSink" and value = "" and exists(DataFlow::Node source | Flow::flow(source, _) | @@ -28,3 +26,5 @@ class SinkTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/frameworks/android/uri/test.expected b/java/ql/test/library-tests/frameworks/android/uri/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/android/uri/test.expected +++ b/java/ql/test/library-tests/frameworks/android/uri/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/android/uri/test.ql b/java/ql/test/library-tests/frameworks/android/uri/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/android/uri/test.ql +++ b/java/ql/test/library-tests/frameworks/android/uri/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/android/widget/test.expected b/java/ql/test/library-tests/frameworks/android/widget/test.expected index 8329ef6b41b..5390495c737 100644 --- a/java/ql/test/library-tests/frameworks/android/widget/test.expected +++ b/java/ql/test/library-tests/frameworks/android/widget/test.expected @@ -1,2 +1,3 @@ failures +testFailures valueOf diff --git a/java/ql/test/library-tests/frameworks/android/widget/test.ql b/java/ql/test/library-tests/frameworks/android/widget/test.ql index ddabfd1f27a..3d476b8bd5e 100644 --- a/java/ql/test/library-tests/frameworks/android/widget/test.ql +++ b/java/ql/test/library-tests/frameworks/android/widget/test.ql @@ -1,6 +1,7 @@ import java import semmle.code.java.dataflow.FlowSources import TestUtilities.InlineFlowTest +import DefaultFlowTest query predicate valueOf(MethodAccess ma) { ma.getMethod().hasQualifiedName("java.lang", "String", "valueOf") diff --git a/java/ql/test/library-tests/frameworks/apache-ant/test.expected b/java/ql/test/library-tests/frameworks/apache-ant/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/apache-ant/test.expected +++ b/java/ql/test/library-tests/frameworks/apache-ant/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/apache-ant/test.ql b/java/ql/test/library-tests/frameworks/apache-ant/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/apache-ant/test.ql +++ b/java/ql/test/library-tests/frameworks/apache-ant/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/apache-collections/Test.java b/java/ql/test/library-tests/frameworks/apache-collections/Test.java index 188849457ac..09906405d75 100644 --- a/java/ql/test/library-tests/frameworks/apache-collections/Test.java +++ b/java/ql/test/library-tests/frameworks/apache-collections/Test.java @@ -721,14 +721,14 @@ public class Test { { // "org.apache.commons.collections4;MapUtils;true;getMap;;;MapValue of Argument[0];ReturnValue;value;manual" Map out = null; - Map in = newTreeMapWithMapValue((String)source()); + Map in = newTreeMapWithMapValue((Map)source()); out = MapUtils.getMap(in, null, null); sink(out); // $ hasValueFlow } { // "org.apache.commons.collections4;MapUtils;true;getMap;;;MapValue of Argument[0];ReturnValue;value;manual" Map out = null; - Map in = newTreeMapWithMapValue((String)source()); + Map in = newTreeMapWithMapValue((Map)source()); out = MapUtils.getMap(in, null); sink(out); // $ hasValueFlow } @@ -7257,4 +7257,4 @@ public class Test { } } -} \ No newline at end of file +} diff --git a/java/ql/test/library-tests/frameworks/apache-collections/test.expected b/java/ql/test/library-tests/frameworks/apache-collections/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/apache-collections/test.expected +++ b/java/ql/test/library-tests/frameworks/apache-collections/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/apache-collections/test.ext.yml b/java/ql/test/library-tests/frameworks/apache-collections/test.ext.yml index a5d1cc8e1ab..60531154074 100644 --- a/java/ql/test/library-tests/frameworks/apache-collections/test.ext.yml +++ b/java/ql/test/library-tests/frameworks/apache-collections/test.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: summaryModel data: - ["generatedtest", "Test", False, "newRBWithMapValue", "", "", "Argument[0]", "ReturnValue.MapValue", "value", "manual"] diff --git a/java/ql/test/library-tests/frameworks/apache-collections/test.ql b/java/ql/test/library-tests/frameworks/apache-collections/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/apache-collections/test.ql +++ b/java/ql/test/library-tests/frameworks/apache-collections/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/apache-commons-compress/test.expected b/java/ql/test/library-tests/frameworks/apache-commons-compress/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/apache-commons-compress/test.expected +++ b/java/ql/test/library-tests/frameworks/apache-commons-compress/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/apache-commons-compress/test.ql b/java/ql/test/library-tests/frameworks/apache-commons-compress/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/apache-commons-compress/test.ql +++ b/java/ql/test/library-tests/frameworks/apache-commons-compress/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.expected b/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.expected +++ b/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.ql b/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.ql +++ b/java/ql/test/library-tests/frameworks/apache-commons-lang3/flow.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/apache-http/flow.expected b/java/ql/test/library-tests/frameworks/apache-http/flow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/apache-http/flow.expected +++ b/java/ql/test/library-tests/frameworks/apache-http/flow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/apache-http/flow.ext.yml b/java/ql/test/library-tests/frameworks/apache-http/flow.ext.yml index ff32ab78646..6e41b8a4e24 100644 --- a/java/ql/test/library-tests/frameworks/apache-http/flow.ext.yml +++ b/java/ql/test/library-tests/frameworks/apache-http/flow.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: summaryModel data: - ["generatedtest", "Client", False, "getURIBuilder_pathDefault", "(Object)", "", "Argument[0].SyntheticField[org.apache.http.client.utils.URIBuilder.path]", "ReturnValue", "taint", "manual"] diff --git a/java/ql/test/library-tests/frameworks/apache-http/flow.ql b/java/ql/test/library-tests/frameworks/apache-http/flow.ql index 20069103a4a..540b4847ff3 100644 --- a/java/ql/test/library-tests/frameworks/apache-http/flow.ql +++ b/java/ql/test/library-tests/frameworks/apache-http/flow.ql @@ -21,10 +21,4 @@ module Config implements DataFlow::ConfigSig { } } -module Flow = TaintTracking::Global; - -class HasFlowTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { Flow::flow(src, sink) } -} +import TaintFlowTest diff --git a/java/ql/test/library-tests/frameworks/gson/Test.java b/java/ql/test/library-tests/frameworks/gson/Test.java new file mode 100644 index 00000000000..b1dc845f091 --- /dev/null +++ b/java/ql/test/library-tests/frameworks/gson/Test.java @@ -0,0 +1,475 @@ +package generatedtest; + +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.Reader; +import java.io.Writer; +import java.lang.reflect.Type; +import java.util.List; +import java.util.Map; +import java.util.Set; + +// Test case generated by GenerateFlowTestCase.ql +public class Test { + + K getMapKey(Map map) { return map.keySet().iterator().next(); } + T getElement(Iterable it) { return it.iterator().next(); } + V getMapValue(Map map) { return map.get(null); } + String getMapKeyDefault(JsonObject container) { return container.keySet().iterator().next(); } + K getMapKeyDefault(Map.Entry container) { return container.getKey(); } + JsonElement getMapValueDefault(JsonObject container) { return container.get(null); } + V getMapValueDefault(Map.Entry container) { return container.getValue(); } + JsonArray newWithElementDefault(JsonElement element) { JsonArray a = new JsonArray(); a.add(element); return a; } + JsonObject newWithMapKeyDefault(String key) { JsonObject o = new JsonObject(); o.add(key, (JsonElement) null); return o; } + JsonObject newWithMapValueDefault(JsonElement element) { JsonObject o = new JsonObject(); o.add(null, element); return o; } + Object source() { return null; } + void sink(Object o) { } + + public void test() throws Exception { + + { + // "com.google.gson.stream;JsonReader;false;nextName;;;Argument[this];ReturnValue;taint;manual" + String out = null; + JsonReader in = (JsonReader)source(); + out = in.nextName(); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson.stream;JsonReader;false;nextString;;;Argument[this];ReturnValue;taint;manual" + String out = null; + JsonReader in = (JsonReader)source(); + out = in.nextString(); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" + Object out = null; + JsonElement in = (JsonElement)source(); + Gson instance = null; + out = instance.fromJson(in, (Class)null); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" + Object out = null; + JsonElement in = (JsonElement)source(); + Gson instance = null; + out = instance.fromJson(in, (Type)null); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" + Object out = null; + JsonElement in = (JsonElement)source(); + Gson instance = null; + out = instance.fromJson(in, (TypeToken)null); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" + Object out = null; + JsonReader in = (JsonReader)source(); + Gson instance = null; + out = instance.fromJson(in, (Type)null); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" + Object out = null; + JsonReader in = (JsonReader)source(); + Gson instance = null; + out = instance.fromJson(in, (TypeToken)null); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" + Object out = null; + Reader in = (Reader)source(); + Gson instance = null; + out = instance.fromJson(in, (Class)null); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" + Object out = null; + Reader in = (Reader)source(); + Gson instance = null; + out = instance.fromJson(in, (Type)null); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" + Object out = null; + Reader in = (Reader)source(); + Gson instance = null; + out = instance.fromJson(in, (TypeToken)null); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" + Object out = null; + String in = (String)source(); + Gson instance = null; + out = instance.fromJson(in, (Class)null); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" + Object out = null; + String in = (String)source(); + Gson instance = null; + out = instance.fromJson(in, (Type)null); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;fromJson;;;Argument[0];ReturnValue;taint;manual" + Object out = null; + String in = (String)source(); + Gson instance = null; + out = instance.fromJson(in, (TypeToken)null); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;newJsonReader;;;Argument[0];ReturnValue;taint;manual" + JsonReader out = null; + Reader in = (Reader)source(); + Gson instance = null; + out = instance.newJsonReader(in); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;newJsonWriter;;;Argument[0];ReturnValue;taint;manual" + JsonWriter out = null; + Writer in = (Writer)source(); + Gson instance = null; + out = instance.newJsonWriter(in); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;toJson;(JsonElement);;Argument[0];ReturnValue;taint;manual" + String out = null; + JsonElement in = (JsonElement)source(); + Gson instance = null; + out = instance.toJson(in); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;toJson;(JsonElement,Appendable);;Argument[0];Argument[1];taint;manual" + Appendable out = null; + JsonElement in = (JsonElement)source(); + Gson instance = null; + instance.toJson(in, out); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;toJson;(JsonElement,JsonWriter);;Argument[0];Argument[1];taint;manual" + JsonWriter out = null; + JsonElement in = (JsonElement)source(); + Gson instance = null; + instance.toJson(in, out); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;toJson;(Object);;Argument[0];ReturnValue;taint;manual" + String out = null; + Object in = (Object)source(); + Gson instance = null; + out = instance.toJson(in); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;toJson;(Object,Appendable);;Argument[0];Argument[1];taint;manual" + Appendable out = null; + Object in = (Object)source(); + Gson instance = null; + instance.toJson(in, out); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;toJson;(Object,Type);;Argument[0];ReturnValue;taint;manual" + String out = null; + Object in = (Object)source(); + Gson instance = null; + out = instance.toJson(in, (Type)null); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;toJson;(Object,Type,Appendable);;Argument[0];Argument[2];taint;manual" + Appendable out = null; + Object in = (Object)source(); + Gson instance = null; + instance.toJson(in, (Type)null, out); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;toJson;(Object,Type,JsonWriter);;Argument[0];Argument[2];taint;manual" + JsonWriter out = null; + Object in = (Object)source(); + Gson instance = null; + instance.toJson(in, (Type)null, out); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;toJsonTree;(Object);;Argument[0];ReturnValue;taint;manual" + JsonElement out = null; + Object in = (Object)source(); + Gson instance = null; + out = instance.toJsonTree(in); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;Gson;false;toJsonTree;(Object,Type);;Argument[0];ReturnValue;taint;manual" + JsonElement out = null; + Object in = (Object)source(); + Gson instance = null; + out = instance.toJsonTree(in, null); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;JsonArray;true;add;(Boolean);;Argument[0];Argument[this].Element;taint;manual" + JsonArray out = null; + Boolean in = (Boolean)source(); + out.add(in); + sink(getElement(out)); // $ hasTaintFlow + } + { + // "com.google.gson;JsonArray;true;add;(Character);;Argument[0];Argument[this].Element;taint;manual" + JsonArray out = null; + Character in = (Character)source(); + out.add(in); + sink(getElement(out)); // $ hasTaintFlow + } + { + // "com.google.gson;JsonArray;true;add;(JsonElement);;Argument[0];Argument[this].Element;value;manual" + JsonArray out = null; + JsonElement in = (JsonElement)source(); + out.add(in); + sink(getElement(out)); // $ hasValueFlow + } + { + // "com.google.gson;JsonArray;true;add;(Number);;Argument[0];Argument[this].Element;taint;manual" + JsonArray out = null; + Number in = (Number)source(); + out.add(in); + sink(getElement(out)); // $ hasTaintFlow + } + { + // "com.google.gson;JsonArray;true;add;(String);;Argument[0];Argument[this].Element;taint;manual" + JsonArray out = null; + String in = (String)source(); + out.add(in); + sink(getElement(out)); // $ hasTaintFlow + } + { + // "com.google.gson;JsonArray;true;addAll;(JsonArray);;Argument[0].Element;Argument[this].Element;value;manual" + JsonArray out = null; + JsonArray in = newWithElementDefault((JsonElement) source()); + out.addAll(in); + sink(getElement(out)); // $ hasValueFlow + } + { + // "com.google.gson;JsonArray;true;asList;;;Argument[this].Element;ReturnValue.Element;value;manual" + List out = null; + JsonArray in = newWithElementDefault((JsonElement) source()); + out = in.asList(); + sink(getElement(out)); // $ hasValueFlow + } + { + // "com.google.gson;JsonArray;true;get;;;Argument[this].Element;ReturnValue;value;manual" + JsonElement out = null; + JsonArray in = newWithElementDefault((JsonElement) source()); + out = in.get(0); + sink(out); // $ hasValueFlow + } + { + // "com.google.gson;JsonArray;true;set;;;Argument[1];Argument[this].Element;value;manual" + JsonArray out = null; + JsonElement in = (JsonElement)source(); + out.set(0, in); + sink(getElement(out)); // $ hasValueFlow + } + { + // "com.google.gson;JsonElement;true;getAsByte;();;Argument[this];ReturnValue;taint;manual" + byte out = 0; + JsonArray in = (JsonArray)source(); + out = in.getAsByte(); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;JsonElement;true;getAsByte;();;Argument[this];ReturnValue;taint;manual" + byte out = 0; + JsonElement in = (JsonElement)source(); + out = in.getAsByte(); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;JsonElement;true;getAsByte;();;Argument[this];ReturnValue;taint;manual" + byte out = 0; + JsonPrimitive in = (JsonPrimitive)source(); + out = in.getAsByte(); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;JsonElement;true;getAsCharacter;();;Argument[this];ReturnValue;taint;manual" + char out = 'a'; + JsonArray in = (JsonArray)source(); + out = in.getAsCharacter(); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;JsonElement;true;getAsCharacter;();;Argument[this];ReturnValue;taint;manual" + char out = 'a'; + JsonElement in = (JsonElement)source(); + out = in.getAsCharacter(); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;JsonElement;true;getAsCharacter;();;Argument[this];ReturnValue;taint;manual" + char out = 'a'; + JsonPrimitive in = (JsonPrimitive)source(); + out = in.getAsCharacter(); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;JsonElement;true;getAsJsonArray;();;Argument[this];ReturnValue;taint;manual" + JsonArray out = null; + JsonElement in = (JsonElement)source(); + out = in.getAsJsonArray(); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;JsonElement;true;getAsJsonObject;();;Argument[this];ReturnValue;taint;manual" + JsonObject out = null; + JsonElement in = (JsonElement)source(); + out = in.getAsJsonObject(); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;JsonElement;true;getAsJsonPrimitive;();;Argument[this];ReturnValue;taint;manual" + JsonPrimitive out = null; + JsonElement in = (JsonElement)source(); + out = in.getAsJsonPrimitive(); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;JsonElement;true;getAsString;();;Argument[this];ReturnValue;taint;manual" + String out = null; + JsonArray in = (JsonArray)source(); + out = in.getAsString(); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;JsonElement;true;getAsString;();;Argument[this];ReturnValue;taint;manual" + String out = null; + JsonElement in = (JsonElement)source(); + out = in.getAsString(); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;JsonElement;true;getAsString;();;Argument[this];ReturnValue;taint;manual" + String out = null; + JsonPrimitive in = (JsonPrimitive)source(); + out = in.getAsString(); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;JsonElement;true;toString;();;Argument[this];ReturnValue;taint;manual" + String out = null; + JsonElement in = (JsonElement)source(); + out = in.toString(); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;JsonObject;true;add;;;Argument[0];Argument[this].MapKey;value;manual" + JsonObject out = null; + String in = (String)source(); + out.add(in, null); + sink(getMapKeyDefault(out)); // $ hasValueFlow + } + { + // "com.google.gson;JsonObject;true;add;;;Argument[1];Argument[this].MapValue;value;manual" + JsonObject out = null; + JsonElement in = (JsonElement)source(); + out.add(null, in); + sink(getMapValueDefault(out)); // $ hasValueFlow + } + { + // "com.google.gson;JsonObject;true;addProperty;(String,String);;Argument[0];Argument[this].MapKey;value;manual" + JsonObject out = null; + String in = (String)source(); + out.addProperty(in, (String)null); + sink(getMapKeyDefault(out)); // $ hasValueFlow + } + { + // "com.google.gson;JsonObject;true;addProperty;(String,String);;Argument[1];Argument[this].MapValue;taint;manual" + JsonObject out = null; + String in = (String)source(); + out.addProperty((String)null, in); + sink(getMapValueDefault(out)); // $ hasTaintFlow + } + { + // "com.google.gson;JsonObject;true;asMap;;;Argument[this].MapKey;ReturnValue.MapKey;value;manual" + Map out = null; + JsonObject in = newWithMapKeyDefault((String) source()); + out = in.asMap(); + sink(getMapKey(out)); // $ hasValueFlow + } + { + // "com.google.gson;JsonObject;true;asMap;;;Argument[this].MapValue;ReturnValue.MapValue;value;manual" + Map out = null; + JsonObject in = newWithMapValueDefault((JsonElement) source()); + out = in.asMap(); + sink(getMapValue(out)); // $ hasValueFlow + } + { + // "com.google.gson;JsonObject;true;entrySet;;;Argument[this].MapKey;ReturnValue.Element.MapKey;value;manual" + Set> out = null; + JsonObject in = newWithMapKeyDefault((String) source()); + out = in.entrySet(); + sink(getMapKeyDefault(getElement(out))); // $ hasValueFlow + } + { + // "com.google.gson;JsonObject;true;entrySet;;;Argument[this].MapValue;ReturnValue.Element.MapValue;value;manual" + Set> out = null; + JsonObject in = newWithMapValueDefault((JsonElement) source()); + out = in.entrySet(); + sink(getMapValueDefault(getElement(out))); // $ hasValueFlow + } + { + // "com.google.gson;JsonObject;true;get;;;Argument[this].MapValue;ReturnValue;value;manual" + JsonElement out = null; + JsonObject in = newWithMapValueDefault((JsonElement) source()); + out = in.get(null); + sink(out); // $ hasValueFlow + } + { + // "com.google.gson;JsonObject;true;keySet;;;Argument[this].MapKey;ReturnValue.Element;value;manual" + Set out = null; + JsonObject in = newWithMapKeyDefault((String) source()); + out = in.keySet(); + sink(getElement(out)); // $ hasValueFlow + } + { + // "com.google.gson;JsonPrimitive;true;JsonPrimitive;(Character);;Argument[0];Argument[this];taint;manual" + JsonPrimitive out = null; + Character in = (Character)source(); + out = new JsonPrimitive(in); + sink(out); // $ hasTaintFlow + } + { + // "com.google.gson;JsonPrimitive;true;JsonPrimitive;(String);;Argument[0];Argument[this];taint;manual" + JsonPrimitive out = null; + String in = (String)source(); + out = new JsonPrimitive(in); + sink(out); // $ hasTaintFlow + } + + } + +} \ No newline at end of file diff --git a/java/ql/test/library-tests/frameworks/gson/options b/java/ql/test/library-tests/frameworks/gson/options new file mode 100644 index 00000000000..a9cce94fd94 --- /dev/null +++ b/java/ql/test/library-tests/frameworks/gson/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/gson-2.8.6 diff --git a/java/ql/test/library-tests/frameworks/gson/test.expected b/java/ql/test/library-tests/frameworks/gson/test.expected new file mode 100644 index 00000000000..48de9172b36 --- /dev/null +++ b/java/ql/test/library-tests/frameworks/gson/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/gson/test.ql b/java/ql/test/library-tests/frameworks/gson/test.ql new file mode 100644 index 00000000000..aca87429a3a --- /dev/null +++ b/java/ql/test/library-tests/frameworks/gson/test.ql @@ -0,0 +1,3 @@ +import java +import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/guava/generated/cache/test.expected b/java/ql/test/library-tests/frameworks/guava/generated/cache/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/guava/generated/cache/test.expected +++ b/java/ql/test/library-tests/frameworks/guava/generated/cache/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/guava/generated/cache/test.ql b/java/ql/test/library-tests/frameworks/guava/generated/cache/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/guava/generated/cache/test.ql +++ b/java/ql/test/library-tests/frameworks/guava/generated/cache/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/guava/generated/collect/test.expected b/java/ql/test/library-tests/frameworks/guava/generated/collect/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/guava/generated/collect/test.expected +++ b/java/ql/test/library-tests/frameworks/guava/generated/collect/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/guava/generated/collect/test.ext.yml b/java/ql/test/library-tests/frameworks/guava/generated/collect/test.ext.yml index 153b649a3e6..e711fa15ecc 100644 --- a/java/ql/test/library-tests/frameworks/guava/generated/collect/test.ext.yml +++ b/java/ql/test/library-tests/frameworks/guava/generated/collect/test.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: summaryModel data: - ["generatedtest", "Test", False, "newWithElementDefault", "(Object)", "", "Argument[0]", "ReturnValue.Element", "value", "manual"] diff --git a/java/ql/test/library-tests/frameworks/guava/generated/collect/test.ql b/java/ql/test/library-tests/frameworks/guava/generated/collect/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/guava/generated/collect/test.ql +++ b/java/ql/test/library-tests/frameworks/guava/generated/collect/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/guava/handwritten/flow.expected b/java/ql/test/library-tests/frameworks/guava/handwritten/flow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/guava/handwritten/flow.expected +++ b/java/ql/test/library-tests/frameworks/guava/handwritten/flow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/guava/handwritten/flow.ql b/java/ql/test/library-tests/frameworks/guava/handwritten/flow.ql index fbfc56486f8..300475bd6af 100644 --- a/java/ql/test/library-tests/frameworks/guava/handwritten/flow.ql +++ b/java/ql/test/library-tests/frameworks/guava/handwritten/flow.ql @@ -24,12 +24,10 @@ module ValueFlowConfig implements DataFlow::ConfigSig { module ValueFlow = DataFlow::Global; -class HasFlowTest extends InlineExpectationsTest { - HasFlowTest() { this = "HasFlowTest" } +module HasFlowTest implements TestSig { + string getARelevantTag() { result = ["numTaintFlow", "numValueFlow"] } - override string getARelevantTag() { result = ["numTaintFlow", "numValueFlow"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "numTaintFlow" and exists(DataFlow::Node src, DataFlow::Node sink, int num | TaintFlow::flow(src, sink) | not ValueFlow::flow(src, sink) and @@ -48,3 +46,5 @@ class HasFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/frameworks/hudson/test.expected b/java/ql/test/library-tests/frameworks/hudson/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/hudson/test.expected +++ b/java/ql/test/library-tests/frameworks/hudson/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/hudson/test.ql b/java/ql/test/library-tests/frameworks/hudson/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/hudson/test.ql +++ b/java/ql/test/library-tests/frameworks/hudson/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/jackson/test.expected b/java/ql/test/library-tests/frameworks/jackson/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/jackson/test.expected +++ b/java/ql/test/library-tests/frameworks/jackson/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/jackson/test.ql b/java/ql/test/library-tests/frameworks/jackson/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/jackson/test.ql +++ b/java/ql/test/library-tests/frameworks/jackson/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/javax-json/test.expected b/java/ql/test/library-tests/frameworks/javax-json/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/javax-json/test.expected +++ b/java/ql/test/library-tests/frameworks/javax-json/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/javax-json/test.ql b/java/ql/test/library-tests/frameworks/javax-json/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/javax-json/test.ql +++ b/java/ql/test/library-tests/frameworks/javax-json/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/jdk/java.io/test.expected b/java/ql/test/library-tests/frameworks/jdk/java.io/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/jdk/java.io/test.expected +++ b/java/ql/test/library-tests/frameworks/jdk/java.io/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/jdk/java.io/test.ext.yml b/java/ql/test/library-tests/frameworks/jdk/java.io/test.ext.yml index 35050f48ec0..230733b3ebc 100644 --- a/java/ql/test/library-tests/frameworks/jdk/java.io/test.ext.yml +++ b/java/ql/test/library-tests/frameworks/jdk/java.io/test.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: summaryModel data: - ["generatedtest", "Test", False, "getThrowable_messageDefault", "(Object)", "", "Argument[0].SyntheticField[java.lang.Throwable.message]", "ReturnValue", "value", "manual"] diff --git a/java/ql/test/library-tests/frameworks/jdk/java.io/test.ql b/java/ql/test/library-tests/frameworks/jdk/java.io/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/jdk/java.io/test.ql +++ b/java/ql/test/library-tests/frameworks/jdk/java.io/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/jdk/java.net/test.expected b/java/ql/test/library-tests/frameworks/jdk/java.net/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/jdk/java.net/test.expected +++ b/java/ql/test/library-tests/frameworks/jdk/java.net/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/jdk/java.net/test.ql b/java/ql/test/library-tests/frameworks/jdk/java.net/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/jdk/java.net/test.ql +++ b/java/ql/test/library-tests/frameworks/jdk/java.net/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/jdk/java.nio.file/test.expected b/java/ql/test/library-tests/frameworks/jdk/java.nio.file/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/jdk/java.nio.file/test.expected +++ b/java/ql/test/library-tests/frameworks/jdk/java.nio.file/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/jdk/java.nio.file/test.ql b/java/ql/test/library-tests/frameworks/jdk/java.nio.file/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/jdk/java.nio.file/test.ql +++ b/java/ql/test/library-tests/frameworks/jdk/java.nio.file/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/jms/FlowTest.expected b/java/ql/test/library-tests/frameworks/jms/FlowTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/jms/FlowTest.expected +++ b/java/ql/test/library-tests/frameworks/jms/FlowTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/jms/FlowTest.ql b/java/ql/test/library-tests/frameworks/jms/FlowTest.ql index 3644b87e6d3..ef42c248189 100644 --- a/java/ql/test/library-tests/frameworks/jms/FlowTest.ql +++ b/java/ql/test/library-tests/frameworks/jms/FlowTest.ql @@ -14,15 +14,15 @@ module TestConfig implements DataFlow::ConfigSig { module TestFlow = TaintTracking::Global; -class JmsFlowTest extends InlineExpectationsTest { - JmsFlowTest() { this = "JmsFlowTest" } +module JmsFlowTest implements TestSig { + string getARelevantTag() { result = "tainted" } - override string getARelevantTag() { result = "tainted" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "tainted" and exists(TestFlow::PathNode sink | TestFlow::flowPath(_, sink) | location = sink.getNode().getLocation() and element = sink.getNode().toString() and value = "" ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/frameworks/jms/RemoteSourcesTest.expected b/java/ql/test/library-tests/frameworks/jms/RemoteSourcesTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/jms/RemoteSourcesTest.expected +++ b/java/ql/test/library-tests/frameworks/jms/RemoteSourcesTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/jms/RemoteSourcesTest.ql b/java/ql/test/library-tests/frameworks/jms/RemoteSourcesTest.ql index 6d1d496075d..78b1dda532e 100644 --- a/java/ql/test/library-tests/frameworks/jms/RemoteSourcesTest.ql +++ b/java/ql/test/library-tests/frameworks/jms/RemoteSourcesTest.ql @@ -2,15 +2,15 @@ import java import semmle.code.java.dataflow.FlowSources import TestUtilities.InlineExpectationsTest -class JmsRemoteSourcesTest extends InlineExpectationsTest { - JmsRemoteSourcesTest() { this = "JmsRemoteSourcesTest" } +module JmsRemoteSourcesTest implements TestSig { + string getARelevantTag() { result = "source" } - override string getARelevantTag() { result = "source" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "source" and exists(RemoteFlowSource source | location = source.getLocation() and element = source.toString() and value = "" ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/frameworks/json-java/test.expected b/java/ql/test/library-tests/frameworks/json-java/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/json-java/test.expected +++ b/java/ql/test/library-tests/frameworks/json-java/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/json-java/test.ql b/java/ql/test/library-tests/frameworks/json-java/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/json-java/test.ql +++ b/java/ql/test/library-tests/frameworks/json-java/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/netty/generated/test.expected b/java/ql/test/library-tests/frameworks/netty/generated/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/netty/generated/test.expected +++ b/java/ql/test/library-tests/frameworks/netty/generated/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/netty/generated/test.ext.yml b/java/ql/test/library-tests/frameworks/netty/generated/test.ext.yml index f6b69f08632..47a199c75f1 100644 --- a/java/ql/test/library-tests/frameworks/netty/generated/test.ext.yml +++ b/java/ql/test/library-tests/frameworks/netty/generated/test.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: summaryModel data: - ["generatedtest", "Test", False, "newWithMapValueDefault", "(Object)", "", "Argument[0]", "ReturnValue.MapValue", "value", "manual"] diff --git a/java/ql/test/library-tests/frameworks/netty/generated/test.ql b/java/ql/test/library-tests/frameworks/netty/generated/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/netty/generated/test.ql +++ b/java/ql/test/library-tests/frameworks/netty/generated/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/netty/manual/test.expected b/java/ql/test/library-tests/frameworks/netty/manual/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/netty/manual/test.expected +++ b/java/ql/test/library-tests/frameworks/netty/manual/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/netty/manual/test.ql b/java/ql/test/library-tests/frameworks/netty/manual/test.ql index 111db20f792..c67cf1835fa 100644 --- a/java/ql/test/library-tests/frameworks/netty/manual/test.ql +++ b/java/ql/test/library-tests/frameworks/netty/manual/test.ql @@ -13,10 +13,4 @@ module Config implements DataFlow::ConfigSig { predicate isSink = DefaultFlowConfig::isSink/1; } -module Flow = TaintTracking::Global; - -class Test extends InlineFlowTest { - override predicate hasTaintFlow(DataFlow::Node source, DataFlow::Node sink) { - Flow::flow(source, sink) - } -} +import FlowTest diff --git a/java/ql/test/library-tests/frameworks/okhttp/test.expected b/java/ql/test/library-tests/frameworks/okhttp/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/okhttp/test.expected +++ b/java/ql/test/library-tests/frameworks/okhttp/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/okhttp/test.ql b/java/ql/test/library-tests/frameworks/okhttp/test.ql index 2992a519e64..04cb3e7f7ac 100644 --- a/java/ql/test/library-tests/frameworks/okhttp/test.ql +++ b/java/ql/test/library-tests/frameworks/okhttp/test.ql @@ -5,13 +5,9 @@ import TestUtilities.InlineFlowTest module OkHttpFlowConfig implements DataFlow::ConfigSig { predicate isSource = DefaultFlowConfig::isSource/1; - predicate isSink(DataFlow::Node n) { DefaultFlowConfig::isSink(n) or sinkNode(n, "open-url") } -} - -module OkHttpFlow = DataFlow::Global; - -class OkHttpTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { - OkHttpFlow::flow(src, sink) + predicate isSink(DataFlow::Node n) { + DefaultFlowConfig::isSink(n) or sinkNode(n, "request-forgery") } } + +import FlowTest diff --git a/java/ql/test/library-tests/frameworks/play/mad/Test.java b/java/ql/test/library-tests/frameworks/play/mad/Test.java new file mode 100644 index 00000000000..cb7fb123a62 --- /dev/null +++ b/java/ql/test/library-tests/frameworks/play/mad/Test.java @@ -0,0 +1,194 @@ +package generatedtest; + +import akka.util.ByteString; +import com.fasterxml.jackson.databind.JsonNode; +import java.io.File; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import org.w3c.dom.Document; +import play.mvc.Http; + +// Test case generated by GenerateFlowTestCase.ql +public class Test { + + Object source() { + return null; + } + + void sink(Object o) {} + + public void test() throws Exception { + + { + // "play.mvc;Http$Cookie;true;name;;;Argument[this];ReturnValue;taint;manual" + String out = null; + Http.Cookie in = (Http.Cookie) source(); + out = in.name(); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$Cookie;true;value;;;Argument[this];ReturnValue;taint;manual" + String out = null; + Http.Cookie in = (Http.Cookie) source(); + out = in.value(); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$Cookies;true;get;;;Argument[this];ReturnValue;taint;manual" + Http.Cookie out = null; + Http.Cookies in = (Http.Cookies) source(); + out = in.get(null); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$Cookies;true;getCookie;;;Argument[this];ReturnValue;taint;manual" + Optional out = null; + Http.Cookies in = (Http.Cookies) source(); + out = in.getCookie(null); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$MultipartFormData$FilePart;true;getContentType;;;Argument[this];ReturnValue;taint;manual" + String out = null; + Http.MultipartFormData.FilePart in = (Http.MultipartFormData.FilePart) source(); + out = in.getContentType(); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$MultipartFormData$FilePart;true;getDispositionType;;;Argument[this];ReturnValue;taint;manual" + String out = null; + Http.MultipartFormData.FilePart in = (Http.MultipartFormData.FilePart) source(); + out = in.getDispositionType(); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$MultipartFormData$FilePart;true;getFilename;;;Argument[this];ReturnValue;taint;manual" + String out = null; + Http.MultipartFormData.FilePart in = (Http.MultipartFormData.FilePart) source(); + out = in.getFilename(); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$MultipartFormData$FilePart;true;getKey;;;Argument[this];ReturnValue;taint;manual" + String out = null; + Http.MultipartFormData.FilePart in = (Http.MultipartFormData.FilePart) source(); + out = in.getKey(); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$MultipartFormData$FilePart;true;getRef;;;Argument[this];ReturnValue;taint;manual" + Object out = null; + Http.MultipartFormData.FilePart in = (Http.MultipartFormData.FilePart) source(); + out = in.getRef(); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$MultipartFormData;true;asFormUrlEncoded;;;Argument[this];ReturnValue;taint;manual" + Map out = null; + Http.MultipartFormData in = (Http.MultipartFormData) source(); + out = in.asFormUrlEncoded(); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$MultipartFormData;true;getFile;;;Argument[this];ReturnValue;taint;manual" + Http.MultipartFormData.FilePart out = null; + Http.MultipartFormData in = (Http.MultipartFormData) source(); + out = in.getFile(null); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$MultipartFormData;true;getFiles;;;Argument[this];ReturnValue;taint;manual" + List out = null; + Http.MultipartFormData in = (Http.MultipartFormData) source(); + out = in.getFiles(); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$RawBuffer;true;asBytes;;;Argument[this];ReturnValue;taint;manual" + ByteString out = null; + Http.RawBuffer in = (Http.RawBuffer) source(); + out = in.asBytes(); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$RawBuffer;true;asBytes;;;Argument[this];ReturnValue;taint;manual" + ByteString out = null; + Http.RawBuffer in = (Http.RawBuffer) source(); + out = in.asBytes(0); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$RawBuffer;true;asFile;;;Argument[this];ReturnValue;taint;manual" + File out = null; + Http.RawBuffer in = (Http.RawBuffer) source(); + out = in.asFile(); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$RequestBody;true;as;;;Argument[this];ReturnValue;taint;manual" + Object out = null; + Http.RequestBody in = (Http.RequestBody) source(); + out = in.as(null); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$RequestBody;true;asBytes;;;Argument[this];ReturnValue;taint;manual" + ByteString out = null; + Http.RequestBody in = (Http.RequestBody) source(); + out = in.asBytes(); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$RequestBody;true;asFormUrlEncoded;;;Argument[this];ReturnValue;taint;manual" + Map out = null; + Http.RequestBody in = (Http.RequestBody) source(); + out = in.asFormUrlEncoded(); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$RequestBody;true;asJson;;;Argument[this];ReturnValue;taint;manual" + JsonNode out = null; + Http.RequestBody in = (Http.RequestBody) source(); + out = in.asJson(); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$RequestBody;true;asMultipartFormData;;;Argument[this];ReturnValue;taint;manual" + Http.MultipartFormData out = null; + Http.RequestBody in = (Http.RequestBody) source(); + out = in.asMultipartFormData(); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$RequestBody;true;asRaw;;;Argument[this];ReturnValue;taint;manual" + Http.RawBuffer out = null; + Http.RequestBody in = (Http.RequestBody) source(); + out = in.asRaw(); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$RequestBody;true;asText;;;Argument[this];ReturnValue;taint;manual" + String out = null; + Http.RequestBody in = (Http.RequestBody) source(); + out = in.asText(); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$RequestBody;true;asXml;;;Argument[this];ReturnValue;taint;manual" + Document out = null; + Http.RequestBody in = (Http.RequestBody) source(); + out = in.asXml(); + sink(out); // $ hasTaintFlow + } + { + // "play.mvc;Http$RequestBody;true;parseJson;;;Argument[this];ReturnValue;taint;manual" + Optional out = null; + Http.RequestBody in = (Http.RequestBody) source(); + out = in.parseJson(null); + sink(out); // $ hasTaintFlow + } + + } + +} diff --git a/java/ql/test/library-tests/frameworks/play/test.expected b/java/ql/test/library-tests/frameworks/play/test.expected new file mode 100644 index 00000000000..48de9172b36 --- /dev/null +++ b/java/ql/test/library-tests/frameworks/play/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/play/test.ql b/java/ql/test/library-tests/frameworks/play/test.ql new file mode 100644 index 00000000000..aca87429a3a --- /dev/null +++ b/java/ql/test/library-tests/frameworks/play/test.ql @@ -0,0 +1,3 @@ +import java +import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/rabbitmq/FlowTest.expected b/java/ql/test/library-tests/frameworks/rabbitmq/FlowTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/rabbitmq/FlowTest.expected +++ b/java/ql/test/library-tests/frameworks/rabbitmq/FlowTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/rabbitmq/FlowTest.ql b/java/ql/test/library-tests/frameworks/rabbitmq/FlowTest.ql index 47cc6b07ad2..0adb5a87783 100644 --- a/java/ql/test/library-tests/frameworks/rabbitmq/FlowTest.ql +++ b/java/ql/test/library-tests/frameworks/rabbitmq/FlowTest.ql @@ -11,10 +11,4 @@ module Config implements DataFlow::ConfigSig { } } -module Flow = TaintTracking::Global; - -class HasFlowTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { Flow::flow(src, sink) } -} +import TaintFlowTest diff --git a/java/ql/test/library-tests/frameworks/rabbitmq/SourceTest.expected b/java/ql/test/library-tests/frameworks/rabbitmq/SourceTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/rabbitmq/SourceTest.expected +++ b/java/ql/test/library-tests/frameworks/rabbitmq/SourceTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/rabbitmq/SourceTest.ql b/java/ql/test/library-tests/frameworks/rabbitmq/SourceTest.ql index 7ce7b2a6ebf..bc46ba9518b 100644 --- a/java/ql/test/library-tests/frameworks/rabbitmq/SourceTest.ql +++ b/java/ql/test/library-tests/frameworks/rabbitmq/SourceTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.dataflow.FlowSources import TestUtilities.InlineExpectationsTest -class SourceTest extends InlineExpectationsTest { - SourceTest() { this = "SourceTest" } +module SourceTest implements TestSig { + string getARelevantTag() { result = "source" } - override string getARelevantTag() { result = "source" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "source" and exists(RemoteFlowSource source | not source.asParameter().getCallable().getDeclaringType().hasName("DefaultConsumer") and @@ -17,3 +15,5 @@ class SourceTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/library-tests/frameworks/ratpack/flow.expected b/java/ql/test/library-tests/frameworks/ratpack/flow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/ratpack/flow.expected +++ b/java/ql/test/library-tests/frameworks/ratpack/flow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/ratpack/flow.ql b/java/ql/test/library-tests/frameworks/ratpack/flow.ql index dae21e78f7c..eab631f0589 100644 --- a/java/ql/test/library-tests/frameworks/ratpack/flow.ql +++ b/java/ql/test/library-tests/frameworks/ratpack/flow.ql @@ -15,12 +15,4 @@ module Config implements DataFlow::ConfigSig { } } -module Flow = TaintTracking::Global; - -class HasFlowTest extends InlineFlowTest { - HasFlowTest() { this = "HasFlowTest" } - - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { Flow::flow(src, sink) } -} +import TaintFlowTest diff --git a/java/ql/test/library-tests/frameworks/retrofit/test.expected b/java/ql/test/library-tests/frameworks/retrofit/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/retrofit/test.expected +++ b/java/ql/test/library-tests/frameworks/retrofit/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/retrofit/test.ql b/java/ql/test/library-tests/frameworks/retrofit/test.ql index 5db5201aad0..0abbff1f958 100644 --- a/java/ql/test/library-tests/frameworks/retrofit/test.ql +++ b/java/ql/test/library-tests/frameworks/retrofit/test.ql @@ -5,11 +5,9 @@ import TestUtilities.InlineFlowTest module FlowConfig implements DataFlow::ConfigSig { predicate isSource = DefaultFlowConfig::isSource/1; - predicate isSink(DataFlow::Node n) { DefaultFlowConfig::isSink(n) or sinkNode(n, "open-url") } + predicate isSink(DataFlow::Node n) { + DefaultFlowConfig::isSink(n) or sinkNode(n, "request-forgery") + } } -module Flow = DataFlow::Global; - -class RetrofitFlowTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { Flow::flow(src, sink) } -} +import FlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/beans/test.expected b/java/ql/test/library-tests/frameworks/spring/beans/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/beans/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/beans/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/beans/test.ql b/java/ql/test/library-tests/frameworks/spring/beans/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/beans/test.ql +++ b/java/ql/test/library-tests/frameworks/spring/beans/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/cache/test.expected b/java/ql/test/library-tests/frameworks/spring/cache/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/cache/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/cache/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/cache/test.ql b/java/ql/test/library-tests/frameworks/spring/cache/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/cache/test.ql +++ b/java/ql/test/library-tests/frameworks/spring/cache/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/context/flow.expected b/java/ql/test/library-tests/frameworks/spring/context/flow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/context/flow.expected +++ b/java/ql/test/library-tests/frameworks/spring/context/flow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/context/flow.ql b/java/ql/test/library-tests/frameworks/spring/context/flow.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/context/flow.ql +++ b/java/ql/test/library-tests/frameworks/spring/context/flow.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/controller/test.expected b/java/ql/test/library-tests/frameworks/spring/controller/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/controller/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/controller/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/controller/test.ql b/java/ql/test/library-tests/frameworks/spring/controller/test.ql index b6beb8e1e75..35b3d064e5a 100644 --- a/java/ql/test/library-tests/frameworks/spring/controller/test.ql +++ b/java/ql/test/library-tests/frameworks/spring/controller/test.ql @@ -10,10 +10,4 @@ module ValueFlowConfig implements DataFlow::ConfigSig { } } -module ValueFlow = DataFlow::Global; - -class Test extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { - ValueFlow::flow(src, sink) - } -} +import FlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/data/test.expected b/java/ql/test/library-tests/frameworks/spring/data/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/data/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/data/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/data/test.ql b/java/ql/test/library-tests/frameworks/spring/data/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/data/test.ql +++ b/java/ql/test/library-tests/frameworks/spring/data/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/http/flow.expected b/java/ql/test/library-tests/frameworks/spring/http/flow.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/http/flow.expected +++ b/java/ql/test/library-tests/frameworks/spring/http/flow.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/http/flow.ql b/java/ql/test/library-tests/frameworks/spring/http/flow.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/http/flow.ql +++ b/java/ql/test/library-tests/frameworks/spring/http/flow.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/ui/test.expected b/java/ql/test/library-tests/frameworks/spring/ui/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/ui/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/ui/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/ui/test.ql b/java/ql/test/library-tests/frameworks/spring/ui/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/ui/test.ql +++ b/java/ql/test/library-tests/frameworks/spring/ui/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/util/test.expected b/java/ql/test/library-tests/frameworks/spring/util/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/util/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/util/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/util/test.ql b/java/ql/test/library-tests/frameworks/spring/util/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/util/test.ql +++ b/java/ql/test/library-tests/frameworks/spring/util/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/validation/test.expected b/java/ql/test/library-tests/frameworks/spring/validation/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/validation/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/validation/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/validation/test.ql b/java/ql/test/library-tests/frameworks/spring/validation/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/validation/test.ql +++ b/java/ql/test/library-tests/frameworks/spring/validation/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/webmultipart/test.expected b/java/ql/test/library-tests/frameworks/spring/webmultipart/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/webmultipart/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/webmultipart/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/webmultipart/test.ql b/java/ql/test/library-tests/frameworks/spring/webmultipart/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/webmultipart/test.ql +++ b/java/ql/test/library-tests/frameworks/spring/webmultipart/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/spring/webutil/test.expected b/java/ql/test/library-tests/frameworks/spring/webutil/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/spring/webutil/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/webutil/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/webutil/test.ql b/java/ql/test/library-tests/frameworks/spring/webutil/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/spring/webutil/test.ql +++ b/java/ql/test/library-tests/frameworks/spring/webutil/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/stapler/DataBoundPostConstructTest.java b/java/ql/test/library-tests/frameworks/stapler/DataBoundPostConstructTest.java new file mode 100644 index 00000000000..efab6d956d2 --- /dev/null +++ b/java/ql/test/library-tests/frameworks/stapler/DataBoundPostConstructTest.java @@ -0,0 +1,42 @@ +import javax.annotation.PostConstruct; +import net.sf.json.JSONObject; +import org.kohsuke.stapler.DataBoundConstructor; +import org.kohsuke.stapler.DataBoundResolvable; +import org.kohsuke.stapler.DataBoundSetter; +import org.kohsuke.stapler.StaplerRequest; + +public class DataBoundPostConstructTest implements DataBoundResolvable { + + static Object source(String label) { + return null; + } + + static void sink(Object o) {} + + static void test() { + new DataBoundPostConstructTest(source("constructor")); + new DataBoundPostConstructTest(null).setField(source("setter")); + } + + private Object field; + + @DataBoundConstructor + public DataBoundPostConstructTest(Object field) { + this.field = field; + } + + @DataBoundSetter + public void setField(Object field) { + this.field = field; + } + + private Object bindResolve(StaplerRequest request, JSONObject src) { + sink(this.field); // $ hasValueFlow=constructor hasValueFlow=setter + return null; + } + + @PostConstruct + private void post() { + sink(this.field); // $ hasValueFlow=constructor hasValueFlow=setter + } +} diff --git a/java/ql/test/library-tests/frameworks/stapler/HttpResponseTest.java b/java/ql/test/library-tests/frameworks/stapler/HttpResponseTest.java new file mode 100644 index 00000000000..d437d1a7de3 --- /dev/null +++ b/java/ql/test/library-tests/frameworks/stapler/HttpResponseTest.java @@ -0,0 +1,26 @@ +import hudson.model.Descriptor; +import org.kohsuke.stapler.HttpResponse; +import org.kohsuke.stapler.StaplerRequest; +import org.kohsuke.stapler.StaplerResponse; + +public class HttpResponseTest { + + Object source() { + return null; + } + + void sink(Object o) {} + + private class MyDescriptor extends Descriptor { + public HttpResponse doTest() { + return (MyHttpResponse) source(); + } + } + + private class MyHttpResponse implements HttpResponse { + @Override + public void generateResponse(StaplerRequest p0, StaplerResponse p1, Object p2) { + sink(this); // $ hasValueFlow + } + } +} diff --git a/java/ql/test/library-tests/frameworks/stapler/options b/java/ql/test/library-tests/frameworks/stapler/options index 5b75976846a..52f4c738a88 100644 --- a/java/ql/test/library-tests/frameworks/stapler/options +++ b/java/ql/test/library-tests/frameworks/stapler/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/stapler-1.263:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/apache-commons-jelly-1.0.1:${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/saxon-xqj-9.x:${testdir}/../../../stubs/apache-commons-beanutils:${testdir}/../../../stubs/dom4j-2.1.1:${testdir}/../../../stubs/apache-commons-lang:${testdir}/../../../stubs/jaxen-1.2.0 \ No newline at end of file +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/stapler-1.263:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/apache-commons-jelly-1.0.1:${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/saxon-xqj-9.x:${testdir}/../../../stubs/apache-commons-beanutils:${testdir}/../../../stubs/dom4j-2.1.1:${testdir}/../../../stubs/apache-commons-lang:${testdir}/../../../stubs/jaxen-1.2.0:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/javax-annotation-api-1.3.2 \ No newline at end of file diff --git a/java/ql/test/library-tests/frameworks/stapler/test.expected b/java/ql/test/library-tests/frameworks/stapler/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/stapler/test.expected +++ b/java/ql/test/library-tests/frameworks/stapler/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/stapler/test.ql b/java/ql/test/library-tests/frameworks/stapler/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/stapler/test.ql +++ b/java/ql/test/library-tests/frameworks/stapler/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/stream/test.expected b/java/ql/test/library-tests/frameworks/stream/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/stream/test.expected +++ b/java/ql/test/library-tests/frameworks/stream/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/stream/test.ext.yml b/java/ql/test/library-tests/frameworks/stream/test.ext.yml index 4f1cc3e38ac..a304f9542a4 100644 --- a/java/ql/test/library-tests/frameworks/stream/test.ext.yml +++ b/java/ql/test/library-tests/frameworks/stream/test.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: summaryModel data: - ["generatedtest", "Test", False, "getElementSpliterator", "(Spliterator)", "", "Argument[0].Element", "ReturnValue", "value", "manual"] diff --git a/java/ql/test/library-tests/frameworks/stream/test.ql b/java/ql/test/library-tests/frameworks/stream/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/stream/test.ql +++ b/java/ql/test/library-tests/frameworks/stream/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/frameworks/thymeleaf/test.expected b/java/ql/test/library-tests/frameworks/thymeleaf/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/frameworks/thymeleaf/test.expected +++ b/java/ql/test/library-tests/frameworks/thymeleaf/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/frameworks/thymeleaf/test.ql b/java/ql/test/library-tests/frameworks/thymeleaf/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/frameworks/thymeleaf/test.ql +++ b/java/ql/test/library-tests/frameworks/thymeleaf/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/logging/test.expected b/java/ql/test/library-tests/logging/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/logging/test.expected +++ b/java/ql/test/library-tests/logging/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/logging/test.ql b/java/ql/test/library-tests/logging/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/logging/test.ql +++ b/java/ql/test/library-tests/logging/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.expected b/java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.expected new file mode 100644 index 00000000000..48de9172b36 --- /dev/null +++ b/java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.ql b/java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.ql new file mode 100644 index 00000000000..a345d6df1fc --- /dev/null +++ b/java/ql/test/library-tests/neutrals/neutralsinks/NeutralSinksTest.ql @@ -0,0 +1,38 @@ +import java +import TestUtilities.InlineExpectationsTest +import semmle.code.java.dataflow.DataFlow +import semmle.code.java.dataflow.ExternalFlow +import semmle.code.java.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl + +module SinkTest implements TestSig { + string getARelevantTag() { result = "isSink" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "isSink" and + exists(DataFlow::Node sink | + sinkNode(sink, _) and + sink.getLocation() = location and + element = sink.toString() and + value = "" + ) + } +} + +module NeutralSinkTest implements TestSig { + string getARelevantTag() { result = "isNeutralSink" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "isNeutralSink" and + exists(Call call, Callable callable | + call.getCallee() = callable and + neutralModel(callable.getDeclaringType().getCompilationUnit().getPackage().getName(), + callable.getDeclaringType().getSourceDeclaration().nestedName(), callable.getName(), + [paramsString(callable), ""], "sink", _) and + call.getLocation() = location and + element = call.toString() and + value = "" + ) + } +} + +import MakeTest> diff --git a/java/ql/test/library-tests/neutrals/neutralsinks/Test.java b/java/ql/test/library-tests/neutrals/neutralsinks/Test.java new file mode 100644 index 00000000000..a234132226f --- /dev/null +++ b/java/ql/test/library-tests/neutrals/neutralsinks/Test.java @@ -0,0 +1,61 @@ +import java.io.File; +import java.nio.file.Files; +import java.nio.file.spi.FileSystemProvider; +import java.nio.file.LinkOption; +import java.text.Collator; +import java.text.RuleBasedCollator; +import java.util.prefs.AbstractPreferences; +import java.util.prefs.Preferences; +import org.apache.hc.client5.http.protocol.RedirectLocations; + +public class Test { + + public void test() throws Exception { + + // java.io + File file = null; + file.exists(); // $ isNeutralSink + file.compareTo(null); // $ isNeutralSink + + // java.nio.file + Files.exists(null, (LinkOption[])null); // $ isNeutralSink + Files.getLastModifiedTime(null, (LinkOption[])null); // $ isNeutralSink + Files.getOwner(null, (LinkOption[])null); // $ isNeutralSink + Files.getPosixFilePermissions(null, (LinkOption[])null); // $ isNeutralSink + Files.isDirectory(null, (LinkOption[])null); // $ isNeutralSink + Files.isExecutable(null); // $ isNeutralSink + Files.isHidden(null); // $ isNeutralSink + Files.isReadable(null); // $ isNeutralSink + Files.isRegularFile(null, (LinkOption[])null); // $ isNeutralSink + Files.isSameFile(null, null); // $ isNeutralSink + Files.isSymbolicLink(null); // $ isNeutralSink + Files.isWritable(null); // $ isNeutralSink + Files.notExists(null, (LinkOption[])null); // $ isNeutralSink + Files.setLastModifiedTime(null, null); // $ isNeutralSink + Files.size(null); // $ isNeutralSink + + // java.nio.file.spi + FileSystemProvider fsp = null; + fsp.isHidden(null); // $ isNeutralSink + fsp.isSameFile(null, null); // $ isNeutralSink + + // java.text + Collator c = null; + c.compare(null, null); // $ isNeutralSink + c.equals(null); // $ isNeutralSink + c.equals(null, null); // $ isNeutralSink + RuleBasedCollator rbc = null; + rbc.compare(null, null); // $ isNeutralSink + + // java.util.prefs + AbstractPreferences ap = null; + ap.nodeExists(null); // $ isNeutralSink + Preferences p = null; + p.nodeExists(null); // $ isNeutralSink + + // org.apache.hc.client5.http.protocol + RedirectLocations rl = null; + rl.contains(null); // $ isNeutralSink + } + +} diff --git a/java/ql/test/library-tests/neutrals/neutralsinks/options b/java/ql/test/library-tests/neutrals/neutralsinks/options new file mode 100644 index 00000000000..6de6bb95285 --- /dev/null +++ b/java/ql/test/library-tests/neutrals/neutralsinks/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -source 11 -target 11 -cp ${testdir}/../../../stubs/apache-http-5 diff --git a/java/ql/test/library-tests/optional/test.expected b/java/ql/test/library-tests/optional/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/optional/test.expected +++ b/java/ql/test/library-tests/optional/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/optional/test.ext.yml b/java/ql/test/library-tests/optional/test.ext.yml index 2aebf3bdb97..24842526782 100644 --- a/java/ql/test/library-tests/optional/test.ext.yml +++ b/java/ql/test/library-tests/optional/test.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/java-tests + pack: codeql/java-all extensible: summaryModel data: - ["generatedtest", "Test", False, "getStreamElement", "", "", "Argument[0].Element", "ReturnValue", "value", "manual"] diff --git a/java/ql/test/library-tests/optional/test.ql b/java/ql/test/library-tests/optional/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/optional/test.ql +++ b/java/ql/test/library-tests/optional/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/paths/test.expected b/java/ql/test/library-tests/paths/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/paths/test.expected +++ b/java/ql/test/library-tests/paths/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/paths/test.ql b/java/ql/test/library-tests/paths/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/paths/test.ql +++ b/java/ql/test/library-tests/paths/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/pathsanitizer/test.expected b/java/ql/test/library-tests/pathsanitizer/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/pathsanitizer/test.expected +++ b/java/ql/test/library-tests/pathsanitizer/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/pathsanitizer/test.ql b/java/ql/test/library-tests/pathsanitizer/test.ql index cefce3276e6..0a20ad012b9 100644 --- a/java/ql/test/library-tests/pathsanitizer/test.ql +++ b/java/ql/test/library-tests/pathsanitizer/test.ql @@ -10,12 +10,4 @@ module PathSanitizerConfig implements DataFlow::ConfigSig { predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof PathInjectionSanitizer } } -module PathSanitizerFlow = TaintTracking::Global; - -class Test extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - PathSanitizerFlow::flow(src, sink) - } -} +import TaintFlowTest diff --git a/java/ql/test/library-tests/regex/test.expected b/java/ql/test/library-tests/regex/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/regex/test.expected +++ b/java/ql/test/library-tests/regex/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/regex/test.ql b/java/ql/test/library-tests/regex/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/regex/test.ql +++ b/java/ql/test/library-tests/regex/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/scanner/test.expected b/java/ql/test/library-tests/scanner/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/library-tests/scanner/test.expected +++ b/java/ql/test/library-tests/scanner/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/scanner/test.ql b/java/ql/test/library-tests/scanner/test.ql index 5d91e4e8e26..aca87429a3a 100644 --- a/java/ql/test/library-tests/scanner/test.ql +++ b/java/ql/test/library-tests/scanner/test.ql @@ -1,2 +1,3 @@ import java import TestUtilities.InlineFlowTest +import DefaultFlowTest diff --git a/java/ql/test/library-tests/xml/XMLTest.expected b/java/ql/test/library-tests/xml/XMLTest.expected index 61d3c801963..316503fd211 100644 --- a/java/ql/test/library-tests/xml/XMLTest.expected +++ b/java/ql/test/library-tests/xml/XMLTest.expected @@ -1,2 +1,4 @@ +failures +testFailures | test.xml:4:5:4:32 | attribute=value | Unexpected result: hasXmlResult= | -| test.xml:5:29:5:52 | $ hasXmlResult | Missing result:hasXmlResult= | \ No newline at end of file +| test.xml:5:29:5:52 | $ hasXmlResult | Missing result:hasXmlResult= | diff --git a/java/ql/test/library-tests/xml/XMLTest.ql b/java/ql/test/library-tests/xml/XMLTest.ql index c5011b848d4..40c5481e3e3 100644 --- a/java/ql/test/library-tests/xml/XMLTest.ql +++ b/java/ql/test/library-tests/xml/XMLTest.ql @@ -1,12 +1,10 @@ import semmle.code.xml.XML import TestUtilities.InlineExpectationsTest -class XmlTest extends InlineExpectationsTest { - XmlTest() { this = "XmlTest" } +module XmlTest implements TestSig { + string getARelevantTag() { result = "hasXmlResult" } - override string getARelevantTag() { result = "hasXmlResult" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasXmlResult" and exists(XmlAttribute a | a.getLocation() = location and @@ -15,3 +13,5 @@ class XmlTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/ExposeRepresentation/ExposeRepresentation.expected b/java/ql/test/query-tests/ExposeRepresentation/ExposeRepresentation.expected index 0056c25bb53..3162056ab42 100644 --- a/java/ql/test/query-tests/ExposeRepresentation/ExposeRepresentation.expected +++ b/java/ql/test/query-tests/ExposeRepresentation/ExposeRepresentation.expected @@ -1,7 +1,7 @@ -| ExposesRep.java:11:19:11:28 | getStrings | getStrings exposes the internal representation stored in field strings. The value may be modified $@. | User.java:5:5:5:19 | User.java:5:5:5:19 | after this call to getStrings | -| ExposesRep.java:11:19:11:28 | getStrings | getStrings exposes the internal representation stored in field strings. The value may be modified $@. | User.java:13:12:13:26 | User.java:13:12:13:26 | after this call to getStrings | -| ExposesRep.java:11:19:11:28 | getStrings | getStrings exposes the internal representation stored in field strings. The value may be modified $@. | User.java:38:12:38:26 | User.java:38:12:38:26 | after this call to getStrings | -| ExposesRep.java:13:30:13:41 | getStringMap | getStringMap exposes the internal representation stored in field stringMap. The value may be modified $@. | User.java:9:5:9:21 | User.java:9:5:9:21 | after this call to getStringMap | -| ExposesRep.java:17:15:17:24 | setStrings | setStrings exposes the internal representation stored in field strings. The value may be modified $@. | User.java:22:5:22:6 | User.java:22:5:22:6 | through the variable ss | -| ExposesRep.java:21:15:21:26 | setStringMap | setStringMap exposes the internal representation stored in field stringMap. The value may be modified $@. | User.java:27:5:27:5 | User.java:27:5:27:5 | through the variable m | -| ExposesRep.java:29:14:29:21 | getArray | getArray exposes the internal representation stored in field array. The value may be modified $@. | User.java:31:5:31:18 | User.java:31:5:31:18 | after this call to getArray | +| ExposesRep.java:11:19:11:28 | getStrings | getStrings exposes the internal representation stored in field strings. The value may be modified $@. | User.java:5:5:5:19 | getStrings(...) | after this call to getStrings | +| ExposesRep.java:11:19:11:28 | getStrings | getStrings exposes the internal representation stored in field strings. The value may be modified $@. | User.java:13:12:13:26 | getStrings(...) | after this call to getStrings | +| ExposesRep.java:11:19:11:28 | getStrings | getStrings exposes the internal representation stored in field strings. The value may be modified $@. | User.java:38:12:38:26 | getStrings(...) | after this call to getStrings | +| ExposesRep.java:13:30:13:41 | getStringMap | getStringMap exposes the internal representation stored in field stringMap. The value may be modified $@. | User.java:9:5:9:21 | getStringMap(...) | after this call to getStringMap | +| ExposesRep.java:17:15:17:24 | setStrings | setStrings exposes the internal representation stored in field strings. The value may be modified $@. | User.java:22:5:22:6 | ss | through the variable ss | +| ExposesRep.java:21:15:21:26 | setStringMap | setStringMap exposes the internal representation stored in field stringMap. The value may be modified $@. | User.java:27:5:27:5 | m | through the variable m | +| ExposesRep.java:29:14:29:21 | getArray | getArray exposes the internal representation stored in field array. The value may be modified $@. | User.java:31:5:31:18 | getArray(...) | after this call to getArray | diff --git a/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected b/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected index b362ef171f5..4fee1c07e06 100644 --- a/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected +++ b/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected @@ -8,7 +8,7 @@ | java.nio | 0 | 0 | 2 | 3 | 5 | 0.4 | 0.0 | 0.4 | 0.0 | NaN | 0.6 | | java.nio.charset | 0 | 0 | 0 | 1 | 1 | 0.0 | 0.0 | 0.0 | NaN | NaN | 1.0 | | java.nio.file | 0 | 0 | 7 | 1 | 8 | 0.875 | 0.0 | 0.875 | 0.0 | NaN | 0.125 | -| java.sql | 0 | 0 | 2 | 14 | 16 | 0.125 | 0.0 | 0.125 | 0.0 | NaN | 0.875 | +| java.sql | 0 | 0 | 1 | 15 | 16 | 0.0625 | 0.0 | 0.0625 | 0.0 | NaN | 0.9375 | | java.text | 0 | 0 | 0 | 5 | 5 | 0.0 | 0.0 | 0.0 | NaN | NaN | 1.0 | | java.time | 0 | 0 | 0 | 17 | 17 | 0.0 | 0.0 | 0.0 | NaN | NaN | 1.0 | | java.time.chrono | 0 | 0 | 0 | 1 | 1 | 0.0 | 0.0 | 0.0 | NaN | NaN | 1.0 | diff --git a/java/ql/test/query-tests/Telemetry/SupportedExternalSinks/SupportedExternalSinks.expected b/java/ql/test/query-tests/Telemetry/SupportedExternalSinks/SupportedExternalSinks.expected index 6cb849601d5..5f0ed7d05df 100644 --- a/java/ql/test/query-tests/Telemetry/SupportedExternalSinks/SupportedExternalSinks.expected +++ b/java/ql/test/query-tests/Telemetry/SupportedExternalSinks/SupportedExternalSinks.expected @@ -1,2 +1,3 @@ +| java.io.File#File(String) | 1 | | java.io.FileWriter#FileWriter(File) | 1 | | java.net.URL#openStream() | 1 | diff --git a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.expected b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.expected +++ b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.ql b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.ql index a07eb6892c3..26a6012d7fb 100644 --- a/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.ql +++ b/java/ql/test/query-tests/security/CWE-023/semmle/tests/PartialPathTraversalFromRemoteTest.ql @@ -8,12 +8,10 @@ class TestRemoteSource extends RemoteFlowSource { override string getSourceType() { result = "TestSource" } } -class Test extends InlineExpectationsTest { - Test() { this = "PartialPathTraversalFromRemoteTest" } +module Test implements TestSig { + string getARelevantTag() { result = "hasTaintFlow" } - override string getARelevantTag() { result = "hasTaintFlow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasTaintFlow" and exists(DataFlow::Node sink | PartialPathTraversalFromRemoteFlow::flowTo(sink) | sink.getLocation() = location and @@ -22,3 +20,5 @@ class Test extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.expected b/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.ql b/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.ql index 7a6141b93ce..242bf9c3f54 100644 --- a/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-074/JndiInjectionTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.JndiInjectionQuery import TestUtilities.InlineExpectationsTest -class HasJndiInjectionTest extends InlineExpectationsTest { - HasJndiInjectionTest() { this = "HasJndiInjectionTest" } +module HasJndiInjectionTest implements TestSig { + string getARelevantTag() { result = "hasJndiInjection" } - override string getARelevantTag() { result = "hasJndiInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasJndiInjection" and exists(DataFlow::Node sink | JndiInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class HasJndiInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.expected b/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.ql b/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.ql index 1f5a3030cdb..4d5200477d8 100644 --- a/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-074/XsltInjectionTest.ql @@ -4,12 +4,10 @@ import semmle.code.java.dataflow.FlowSources import semmle.code.java.security.XsltInjectionQuery import TestUtilities.InlineExpectationsTest -class HasXsltInjectionTest extends InlineExpectationsTest { - HasXsltInjectionTest() { this = "HasXsltInjectionTest" } +module HasXsltInjectionTest implements TestSig { + string getARelevantTag() { result = "hasXsltInjection" } - override string getARelevantTag() { result = "hasXsltInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasXsltInjection" and exists(DataFlow::Node sink | XsltInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -18,3 +16,5 @@ class HasXsltInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-078/ExecTaintedLocal.expected b/java/ql/test/query-tests/security/CWE-078/ExecTaintedLocal.expected index 2ae893b5d1d..05dd12f9a5b 100644 --- a/java/ql/test/query-tests/security/CWE-078/ExecTaintedLocal.expected +++ b/java/ql/test/query-tests/security/CWE-078/ExecTaintedLocal.expected @@ -5,8 +5,8 @@ edges | Test.java:6:35:6:44 | arg : String | Test.java:22:15:22:27 | ... + ... : String | | Test.java:10:29:10:74 | {...} : String[] [[]] : String | Test.java:10:29:10:74 | new String[] | | Test.java:10:61:10:73 | ... + ... : String | Test.java:10:29:10:74 | {...} : String[] [[]] : String | -| Test.java:16:5:16:7 | cmd [post update] : List [] : String | Test.java:18:29:18:31 | cmd | -| Test.java:16:13:16:25 | ... + ... : String | Test.java:16:5:16:7 | cmd [post update] : List [] : String | +| Test.java:16:5:16:7 | cmd [post update] : ArrayList [] : String | Test.java:18:29:18:31 | cmd | +| Test.java:16:13:16:25 | ... + ... : String | Test.java:16:5:16:7 | cmd [post update] : ArrayList [] : String | | Test.java:22:5:22:8 | cmd1 [post update] : String[] [[]] : String | Test.java:24:29:24:32 | cmd1 | | Test.java:22:15:22:27 | ... + ... : String | Test.java:22:5:22:8 | cmd1 [post update] : String[] [[]] : String | | Test.java:28:38:28:47 | arg : String | Test.java:29:44:29:64 | ... + ... | @@ -20,7 +20,7 @@ nodes | Test.java:10:29:10:74 | new String[] | semmle.label | new String[] | | Test.java:10:29:10:74 | {...} : String[] [[]] : String | semmle.label | {...} : String[] [[]] : String | | Test.java:10:61:10:73 | ... + ... : String | semmle.label | ... + ... : String | -| Test.java:16:5:16:7 | cmd [post update] : List [] : String | semmle.label | cmd [post update] : List [] : String | +| Test.java:16:5:16:7 | cmd [post update] : ArrayList [] : String | semmle.label | cmd [post update] : ArrayList [] : String | | Test.java:16:13:16:25 | ... + ... : String | semmle.label | ... + ... : String | | Test.java:18:29:18:31 | cmd | semmle.label | cmd | | Test.java:22:5:22:8 | cmd1 [post update] : String[] [[]] : String | semmle.label | cmd1 [post update] : String[] [[]] : String | diff --git a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.expected b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.expected +++ b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.java b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.java index 2854ffe30b7..1ffa72c4c0d 100644 --- a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.java +++ b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.java @@ -4,9 +4,6 @@ package test.cwe079.cwe.examples; - - - import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.Cookie; @@ -14,13 +11,12 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - public class XSS extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { + throws ServletException, IOException { // BAD: a request parameter is written directly to the Servlet response stream - response.getWriter().print( - "The page \"" + request.getParameter("page") + "\" was not found."); // $xss + response.getWriter() + .print("The page \"" + request.getParameter("page") + "\" was not found."); // $xss // GOOD: servlet API encodes the error message HTML for the HTML context response.sendError(HttpServletResponse.SC_NOT_FOUND, @@ -29,35 +25,31 @@ public class XSS extends HttpServlet { // GOOD: escape HTML characters first response.sendError(HttpServletResponse.SC_NOT_FOUND, "The page \"" + encodeForHtml(request.getParameter("page")) + "\" was not found."); - + // GOOD: servlet API encodes the error message HTML for the HTML context response.sendError(HttpServletResponse.SC_NOT_FOUND, "The page \"" + capitalizeName(request.getParameter("page")) + "\" was not found."); - + // BAD: outputting the path of the resource response.getWriter().print("The path section of the URL was " + request.getPathInfo()); // $xss - // BAD: typical XSS, this time written to an OutputStream instead of a Writer + // BAD: typical XSS, this time written to an OutputStream instead of a Writer response.getOutputStream().write(request.getPathInfo().getBytes()); // $xss + + // GOOD: sanitizer + response.getOutputStream().write(hudson.Util.escape(request.getPathInfo()).getBytes()); // safe } - - - - - - /** - * Replace special characters in the given text such that it can - * be inserted into an HTML file and not be interpreted as including - * any HTML tags. + * Replace special characters in the given text such that it can be inserted into an HTML file + * and not be interpreted as including any HTML tags. */ static String encodeForHtml(String text) { // This is just a stub. For an example of a real implementation, see // the OWASP Java Encoder Project. return text.replace("<", "<"); } - + static String capitalizeName(String text) { return text.replace("foo inc", "Foo, Inc."); } diff --git a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.ql b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.ql index 454f42112ea..5e901c83498 100644 --- a/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.ql +++ b/java/ql/test/query-tests/security/CWE-079/semmle/tests/XSS.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.XssQuery import TestUtilities.InlineExpectationsTest -class XssTest extends InlineExpectationsTest { - XssTest() { this = "XssTest" } +module XssTest implements TestSig { + string getARelevantTag() { result = "xss" } - override string getARelevantTag() { result = "xss" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "xss" and exists(DataFlow::Node sink | XssFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class XssTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-079/semmle/tests/options b/java/ql/test/query-tests/security/CWE-079/semmle/tests/options index 62fc56e6792..78c431eb683 100644 --- a/java/ql/test/query-tests/security/CWE-079/semmle/tests/options +++ b/java/ql/test/query-tests/security/CWE-079/semmle/tests/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../../stubs/servlet-api-2.4:${testdir}/../../../../../stubs/javax-ws-rs-api-2.1.1/:${testdir}/../../../../../stubs/springframework-5.3.8:${testdir}/../../../../../stubs/javax-faces-2.3/:${testdir}/../../../../../stubs/google-android-9.0.0 +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../../stubs/servlet-api-2.4:${testdir}/../../../../../stubs/javax-ws-rs-api-2.1.1/:${testdir}/../../../../../stubs/springframework-5.3.8:${testdir}/../../../../../stubs/javax-faces-2.3/:${testdir}/../../../../../stubs/google-android-9.0.0:${testdir}/../../../../../stubs/jenkins diff --git a/java/ql/test/query-tests/security/CWE-089/semmle/examples/springjdbc.expected b/java/ql/test/query-tests/security/CWE-089/semmle/examples/springjdbc.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-089/semmle/examples/springjdbc.expected +++ b/java/ql/test/query-tests/security/CWE-089/semmle/examples/springjdbc.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-089/semmle/examples/springjdbc.ql b/java/ql/test/query-tests/security/CWE-089/semmle/examples/springjdbc.ql index bee1fa84ebc..7934ecd9d8d 100644 --- a/java/ql/test/query-tests/security/CWE-089/semmle/examples/springjdbc.ql +++ b/java/ql/test/query-tests/security/CWE-089/semmle/examples/springjdbc.ql @@ -9,12 +9,10 @@ private class SourceMethodSource extends RemoteFlowSource { override string getSourceType() { result = "source" } } -class HasFlowTest extends InlineExpectationsTest { - HasFlowTest() { this = "HasFlowTest" } +module HasFlowTest implements TestSig { + string getARelevantTag() { result = "sqlInjection" } - override string getARelevantTag() { result = "sqlInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "sqlInjection" and exists(DataFlow::Node sink | QueryInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -23,3 +21,5 @@ class HasFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.expected b/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.expected +++ b/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.ql b/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.ql index dd6aec2ebe3..b10e291d376 100644 --- a/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.ql +++ b/java/ql/test/query-tests/security/CWE-094/ApkInstallationTest.ql @@ -3,12 +3,10 @@ import semmle.code.java.dataflow.DataFlow import semmle.code.java.security.ArbitraryApkInstallationQuery import TestUtilities.InlineExpectationsTest -class HasApkInstallationTest extends InlineExpectationsTest { - HasApkInstallationTest() { this = "HasApkInstallationTest" } +module HasApkInstallationTest implements TestSig { + string getARelevantTag() { result = "hasApkInstallation" } - override string getARelevantTag() { result = "hasApkInstallation" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasApkInstallation" and exists(DataFlow::Node sink | ApkInstallationFlow::flowTo(sink) | sink.getLocation() = location and @@ -17,3 +15,5 @@ class HasApkInstallationTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.ql b/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.ql index 9d979f125a8..bc39280407e 100644 --- a/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-094/GroovyInjectionTest.ql @@ -4,12 +4,10 @@ import semmle.code.java.dataflow.FlowSources import semmle.code.java.security.GroovyInjectionQuery import TestUtilities.InlineExpectationsTest -class HasGroovyInjectionTest extends InlineExpectationsTest { - HasGroovyInjectionTest() { this = "HasGroovyInjectionTest" } +module HasGroovyInjectionTest implements TestSig { + string getARelevantTag() { result = "hasGroovyInjection" } - override string getARelevantTag() { result = "hasGroovyInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasGroovyInjection" and exists(DataFlow::Node sink | GroovyInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -18,3 +16,5 @@ class HasGroovyInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.ql b/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.ql index 9593ae1a8ee..07f1573b039 100644 --- a/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-094/JexlInjectionTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.JexlInjectionQuery import TestUtilities.InlineExpectationsTest -class JexlInjectionTest extends InlineExpectationsTest { - JexlInjectionTest() { this = "HasJexlInjectionTest" } +module JexlInjectionTest implements TestSig { + string getARelevantTag() { result = "hasJexlInjection" } - override string getARelevantTag() { result = "hasJexlInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasJexlInjection" and exists(DataFlow::Node sink | JexlInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class JexlInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.ql b/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.ql index 8dc4127cbf1..f7599250077 100644 --- a/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-094/MvelInjectionTest.ql @@ -4,12 +4,10 @@ import semmle.code.java.dataflow.FlowSources import semmle.code.java.security.MvelInjectionQuery import TestUtilities.InlineExpectationsTest -class HasMvelInjectionTest extends InlineExpectationsTest { - HasMvelInjectionTest() { this = "HasMvelInjectionTest" } +module HasMvelInjectionTest implements TestSig { + string getARelevantTag() { result = "hasMvelInjection" } - override string getARelevantTag() { result = "hasMvelInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasMvelInjection" and exists(DataFlow::Node sink | MvelInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -18,3 +16,5 @@ class HasMvelInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.ql b/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.ql index 78e147849f1..a017c96f60b 100644 --- a/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-094/SpelInjectionTest.ql @@ -4,12 +4,10 @@ import semmle.code.java.dataflow.FlowSources import semmle.code.java.security.SpelInjectionQuery import TestUtilities.InlineExpectationsTest -class HasSpelInjectionTest extends InlineExpectationsTest { - HasSpelInjectionTest() { this = "HasSpelInjectionTest" } +module HasSpelInjectionTest implements TestSig { + string getARelevantTag() { result = "hasSpelInjection" } - override string getARelevantTag() { result = "hasSpelInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasSpelInjection" and exists(DataFlow::Node sink | SpelInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -18,3 +16,5 @@ class HasSpelInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.expected b/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.ql b/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.ql index 7e0a7ae1ae2..4c37e8a5f01 100644 --- a/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-094/TemplateInjectionTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.TemplateInjectionQuery import TestUtilities.InlineExpectationsTest -class TemplateInjectionTest extends InlineExpectationsTest { - TemplateInjectionTest() { this = "TemplateInjectionTest" } +module TemplateInjectionTest implements TestSig { + string getARelevantTag() { result = "hasTemplateInjection" } - override string getARelevantTag() { result = "hasTemplateInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasTemplateInjection" and exists(DataFlow::Node sink | TemplateInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class TemplateInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-117/LogInjectionTest.expected b/java/ql/test/query-tests/security/CWE-117/LogInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-117/LogInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-117/LogInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-117/LogInjectionTest.ql b/java/ql/test/query-tests/security/CWE-117/LogInjectionTest.ql index 73a41b1bd8e..a2707b5df44 100644 --- a/java/ql/test/query-tests/security/CWE-117/LogInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-117/LogInjectionTest.ql @@ -8,10 +8,4 @@ private class TestSource extends RemoteFlowSource { override string getSourceType() { result = "test source" } } -private class LogInjectionTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - LogInjectionFlow::flow(src, sink) - } -} +import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-1204/StaticInitializationVectorTest.expected b/java/ql/test/query-tests/security/CWE-1204/StaticInitializationVectorTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-1204/StaticInitializationVectorTest.expected +++ b/java/ql/test/query-tests/security/CWE-1204/StaticInitializationVectorTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-1204/StaticInitializationVectorTest.ql b/java/ql/test/query-tests/security/CWE-1204/StaticInitializationVectorTest.ql index ceaf8e11a4f..2ccb8fa7c52 100644 --- a/java/ql/test/query-tests/security/CWE-1204/StaticInitializationVectorTest.ql +++ b/java/ql/test/query-tests/security/CWE-1204/StaticInitializationVectorTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.StaticInitializationVectorQuery import TestUtilities.InlineExpectationsTest -class StaticInitializationVectorTest extends InlineExpectationsTest { - StaticInitializationVectorTest() { this = "StaticInitializationVectorTest" } +module StaticInitializationVectorTest implements TestSig { + string getARelevantTag() { result = "staticInitializationVector" } - override string getARelevantTag() { result = "staticInitializationVector" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "staticInitializationVector" and exists(DataFlow::Node sink | StaticInitializationVectorFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class StaticInitializationVectorTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.expected b/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.expected +++ b/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.ql b/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.ql index d90039cf920..86feb7843ce 100644 --- a/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.ql +++ b/java/ql/test/query-tests/security/CWE-266/IntentUriPermissionManipulationTest.ql @@ -1,11 +1,4 @@ import java import TestUtilities.InlineFlowTest import semmle.code.java.security.IntentUriPermissionManipulationQuery - -class IntentUriPermissionManipulationTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - IntentUriPermissionManipulationFlow::flow(src, sink) - } -} +import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-273/UnsafeCertTrustTest.expected b/java/ql/test/query-tests/security/CWE-273/UnsafeCertTrustTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-273/UnsafeCertTrustTest.expected +++ b/java/ql/test/query-tests/security/CWE-273/UnsafeCertTrustTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-273/UnsafeCertTrustTest.ql b/java/ql/test/query-tests/security/CWE-273/UnsafeCertTrustTest.ql index fd18ccc27eb..e896e272aa4 100644 --- a/java/ql/test/query-tests/security/CWE-273/UnsafeCertTrustTest.ql +++ b/java/ql/test/query-tests/security/CWE-273/UnsafeCertTrustTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.UnsafeCertTrustQuery import TestUtilities.InlineExpectationsTest -class UnsafeCertTrustTest extends InlineExpectationsTest { - UnsafeCertTrustTest() { this = "HasUnsafeCertTrustTest" } +module UnsafeCertTrustTest implements TestSig { + string getARelevantTag() { result = "hasUnsafeCertTrust" } - override string getARelevantTag() { result = "hasUnsafeCertTrust" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasUnsafeCertTrust" and exists(Expr unsafeTrust | unsafeTrust instanceof RabbitMQEnableHostnameVerificationNotSet @@ -20,3 +18,5 @@ class UnsafeCertTrustTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/test.expected b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/test.expected +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/test.ql b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/test.ql index 91a23044730..1a6c3a9d0c0 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/test.ql +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test1/test.ql @@ -2,12 +2,10 @@ import java import TestUtilities.InlineExpectationsTest import semmle.code.java.security.AndroidCertificatePinningQuery -class Test extends InlineExpectationsTest { - Test() { this = "AndroidMissingCertificatePinningTest" } +module Test implements TestSig { + string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - override string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - - override predicate hasActualResult(Location loc, string el, string tag, string value) { + predicate hasActualResult(Location loc, string el, string tag, string value) { exists(DataFlow::Node node | missingPinning(node, _) and loc = node.getLocation() and @@ -17,3 +15,5 @@ class Test extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/test.expected b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/test.expected +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/test.ql b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/test.ql index 91a23044730..1a6c3a9d0c0 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/test.ql +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test2/test.ql @@ -2,12 +2,10 @@ import java import TestUtilities.InlineExpectationsTest import semmle.code.java.security.AndroidCertificatePinningQuery -class Test extends InlineExpectationsTest { - Test() { this = "AndroidMissingCertificatePinningTest" } +module Test implements TestSig { + string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - override string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - - override predicate hasActualResult(Location loc, string el, string tag, string value) { + predicate hasActualResult(Location loc, string el, string tag, string value) { exists(DataFlow::Node node | missingPinning(node, _) and loc = node.getLocation() and @@ -17,3 +15,5 @@ class Test extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/test.expected b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/test.expected +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/test.ql b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/test.ql index 91a23044730..1a6c3a9d0c0 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/test.ql +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test3/test.ql @@ -2,12 +2,10 @@ import java import TestUtilities.InlineExpectationsTest import semmle.code.java.security.AndroidCertificatePinningQuery -class Test extends InlineExpectationsTest { - Test() { this = "AndroidMissingCertificatePinningTest" } +module Test implements TestSig { + string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - override string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - - override predicate hasActualResult(Location loc, string el, string tag, string value) { + predicate hasActualResult(Location loc, string el, string tag, string value) { exists(DataFlow::Node node | missingPinning(node, _) and loc = node.getLocation() and @@ -17,3 +15,5 @@ class Test extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/test.expected b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/test.expected +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/test.ql b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/test.ql index 91a23044730..1a6c3a9d0c0 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/test.ql +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test4/test.ql @@ -2,12 +2,10 @@ import java import TestUtilities.InlineExpectationsTest import semmle.code.java.security.AndroidCertificatePinningQuery -class Test extends InlineExpectationsTest { - Test() { this = "AndroidMissingCertificatePinningTest" } +module Test implements TestSig { + string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - override string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - - override predicate hasActualResult(Location loc, string el, string tag, string value) { + predicate hasActualResult(Location loc, string el, string tag, string value) { exists(DataFlow::Node node | missingPinning(node, _) and loc = node.getLocation() and @@ -17,3 +15,5 @@ class Test extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/test.expected b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/test.expected +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/test.ql b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/test.ql index 91a23044730..1a6c3a9d0c0 100644 --- a/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/test.ql +++ b/java/ql/test/query-tests/security/CWE-295/AndroidMissingCertificatePinning/Test5/test.ql @@ -2,12 +2,10 @@ import java import TestUtilities.InlineExpectationsTest import semmle.code.java.security.AndroidCertificatePinningQuery -class Test extends InlineExpectationsTest { - Test() { this = "AndroidMissingCertificatePinningTest" } +module Test implements TestSig { + string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - override string getARelevantTag() { result = ["hasNoTrustedResult", "hasUntrustedResult"] } - - override predicate hasActualResult(Location loc, string el, string tag, string value) { + predicate hasActualResult(Location loc, string el, string tag, string value) { exists(DataFlow::Node node | missingPinning(node, _) and loc = node.getLocation() and @@ -17,3 +15,5 @@ class Test extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-295/ImproperWebVeiwCertificateValidation/test.expected b/java/ql/test/query-tests/security/CWE-295/ImproperWebVeiwCertificateValidation/test.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-295/ImproperWebVeiwCertificateValidation/test.expected +++ b/java/ql/test/query-tests/security/CWE-295/ImproperWebVeiwCertificateValidation/test.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-295/ImproperWebVeiwCertificateValidation/test.ql b/java/ql/test/query-tests/security/CWE-295/ImproperWebVeiwCertificateValidation/test.ql index 6166e0fe239..70d242e7ebb 100644 --- a/java/ql/test/query-tests/security/CWE-295/ImproperWebVeiwCertificateValidation/test.ql +++ b/java/ql/test/query-tests/security/CWE-295/ImproperWebVeiwCertificateValidation/test.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.AndroidWebViewCertificateValidationQuery import TestUtilities.InlineExpectationsTest -class WebViewTest extends InlineExpectationsTest { - WebViewTest() { this = "WebViewTest" } +module WebViewTest implements TestSig { + string getARelevantTag() { result = "hasResult" } - override string getARelevantTag() { result = "hasResult" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { exists(OnReceivedSslErrorMethod m | trustsAllCerts(m) and location = m.getLocation() and @@ -17,3 +15,5 @@ class WebViewTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.expected b/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.expected +++ b/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.ql b/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.ql index 0f068d04679..11a59f51feb 100644 --- a/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.ql +++ b/java/ql/test/query-tests/security/CWE-295/InsecureTrustManager/InsecureTrustManagerTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.InsecureTrustManagerQuery import TestUtilities.InlineExpectationsTest -class InsecureTrustManagerTest extends InlineExpectationsTest { - InsecureTrustManagerTest() { this = "InsecureTrustManagerTest" } +module InsecureTrustManagerTest implements TestSig { + string getARelevantTag() { result = "hasValueFlow" } - override string getARelevantTag() { result = "hasValueFlow" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasValueFlow" and exists(DataFlow::Node sink | InsecureTrustManagerFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class InsecureTrustManagerTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-297/InsecureJavaMailTest.expected b/java/ql/test/query-tests/security/CWE-297/InsecureJavaMailTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-297/InsecureJavaMailTest.expected +++ b/java/ql/test/query-tests/security/CWE-297/InsecureJavaMailTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-297/InsecureJavaMailTest.ql b/java/ql/test/query-tests/security/CWE-297/InsecureJavaMailTest.ql index 137dde369f9..ffe4673b62c 100644 --- a/java/ql/test/query-tests/security/CWE-297/InsecureJavaMailTest.ql +++ b/java/ql/test/query-tests/security/CWE-297/InsecureJavaMailTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.Mail import TestUtilities.InlineExpectationsTest -class InsecureJavaMailTest extends InlineExpectationsTest { - InsecureJavaMailTest() { this = "HasInsecureJavaMailTest" } +module InsecureJavaMailTest implements TestSig { + string getARelevantTag() { result = "hasInsecureJavaMail" } - override string getARelevantTag() { result = "hasInsecureJavaMail" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasInsecureJavaMail" and exists(MethodAccess ma | ma.getLocation() = location and @@ -22,3 +20,5 @@ class InsecureJavaMailTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidDatabaseTest.expected b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidDatabaseTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidDatabaseTest.expected +++ b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidDatabaseTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidDatabaseTest.ql b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidDatabaseTest.ql index 421b3a408c4..8b49ed472f5 100644 --- a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidDatabaseTest.ql +++ b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidDatabaseTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.CleartextStorageAndroidDatabaseQuery import TestUtilities.InlineExpectationsTest -class CleartextStorageAndroidDatabaseTest extends InlineExpectationsTest { - CleartextStorageAndroidDatabaseTest() { this = "CleartextStorageAndroidDatabaseTest" } +module CleartextStorageAndroidDatabaseTest implements TestSig { + string getARelevantTag() { result = "hasCleartextStorageAndroidDatabase" } - override string getARelevantTag() { result = "hasCleartextStorageAndroidDatabase" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasCleartextStorageAndroidDatabase" and exists(SensitiveSource data, LocalDatabaseOpenMethodAccess s, Expr input, Expr store | input = s.getAnInput() and @@ -20,3 +18,5 @@ class CleartextStorageAndroidDatabaseTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidFilesystemTest.expected b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidFilesystemTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidFilesystemTest.expected +++ b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidFilesystemTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidFilesystemTest.ql b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidFilesystemTest.ql index ab221086f81..7b7380ccedf 100644 --- a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidFilesystemTest.ql +++ b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageAndroidFilesystemTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.CleartextStorageAndroidFilesystemQuery import TestUtilities.InlineExpectationsTest -class CleartextStorageAndroidFilesystemTest extends InlineExpectationsTest { - CleartextStorageAndroidFilesystemTest() { this = "CleartextStorageAndroidFilesystemTest" } +module CleartextStorageAndroidFilesystemTest implements TestSig { + string getARelevantTag() { result = "hasCleartextStorageAndroidFilesystem" } - override string getARelevantTag() { result = "hasCleartextStorageAndroidFilesystem" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasCleartextStorageAndroidFilesystem" and exists(SensitiveSource data, LocalFileOpenCall s, Expr input, Expr store | input = s.getAnInput() and @@ -20,3 +18,5 @@ class CleartextStorageAndroidFilesystemTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.expected b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.expected +++ b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.ql b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.ql index cbd17429e5c..025daff6c82 100644 --- a/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.ql +++ b/java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.CleartextStorageSharedPrefsQuery import TestUtilities.InlineExpectationsTest -class CleartextStorageSharedPrefsTest extends InlineExpectationsTest { - CleartextStorageSharedPrefsTest() { this = "CleartextStorageSharedPrefsTest" } +module CleartextStorageSharedPrefsTest implements TestSig { + string getARelevantTag() { result = "hasCleartextStorageSharedPrefs" } - override string getARelevantTag() { result = "hasCleartextStorageSharedPrefs" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasCleartextStorageSharedPrefs" and exists(SensitiveSource data, SharedPreferencesEditorMethodAccess s, Expr input, Expr store | input = s.getAnInput() and @@ -20,3 +18,5 @@ class CleartextStorageSharedPrefsTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.expected b/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.expected +++ b/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.ql b/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.ql index 1384a36e4ce..642495eebaa 100644 --- a/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.ql +++ b/java/ql/test/query-tests/security/CWE-326/InsufficientKeySizeTest.ql @@ -2,12 +2,10 @@ import java import TestUtilities.InlineExpectationsTest import semmle.code.java.security.InsufficientKeySizeQuery -class InsufficientKeySizeTest extends InlineExpectationsTest { - InsufficientKeySizeTest() { this = "InsufficientKeySize" } +module InsufficientKeySizeTest implements TestSig { + string getARelevantTag() { result = "hasInsufficientKeySize" } - override string getARelevantTag() { result = "hasInsufficientKeySize" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasInsufficientKeySize" and exists(KeySizeFlow::PathNode sink | KeySizeFlow::flowPath(_, sink) | sink.getNode().getLocation() = location and @@ -16,3 +14,5 @@ class InsufficientKeySizeTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.expected b/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.expected +++ b/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.ql b/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.ql index df6867bbefe..3d9a18fc1a8 100644 --- a/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.ql +++ b/java/ql/test/query-tests/security/CWE-347/MissingJWTSignatureCheckTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.MissingJWTSignatureCheckQuery import TestUtilities.InlineExpectationsTest -class HasMissingJwtSignatureCheckTest extends InlineExpectationsTest { - HasMissingJwtSignatureCheckTest() { this = "HasMissingJwtSignatureCheckTest" } +module HasMissingJwtSignatureCheckTest implements TestSig { + string getARelevantTag() { result = "hasMissingJwtSignatureCheck" } - override string getARelevantTag() { result = "hasMissingJwtSignatureCheck" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasMissingJwtSignatureCheck" and exists(DataFlow::Node sink | MissingJwtSignatureCheckFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class HasMissingJwtSignatureCheckTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.expected b/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.expected +++ b/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.ql b/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.ql index 55c07bbd301..ae1258a66c5 100644 --- a/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.ql +++ b/java/ql/test/query-tests/security/CWE-441/UnsafeContentUriResolutionTest.ql @@ -1,11 +1,4 @@ import java import TestUtilities.InlineFlowTest import semmle.code.java.security.UnsafeContentUriResolutionQuery - -class Test extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - UnsafeContentResolutionFlow::flow(src, sink) - } -} +import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionInPreferenceActivityTest.expected b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionInPreferenceActivityTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionInPreferenceActivityTest.expected +++ b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionInPreferenceActivityTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionInPreferenceActivityTest.ql b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionInPreferenceActivityTest.ql index 1e4d7b42cb5..c1878d4976d 100644 --- a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionInPreferenceActivityTest.ql +++ b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionInPreferenceActivityTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.FragmentInjection import TestUtilities.InlineExpectationsTest -class FragmentInjectionInPreferenceActivityTest extends InlineExpectationsTest { - FragmentInjectionInPreferenceActivityTest() { this = "FragmentInjectionInPreferenceActivityTest" } +module FragmentInjectionInPreferenceActivityTest implements TestSig { + string getARelevantTag() { result = "hasPreferenceFragmentInjection" } - override string getARelevantTag() { result = "hasPreferenceFragmentInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasPreferenceFragmentInjection" and exists(IsValidFragmentMethod isValidFragment | isValidFragment.isUnsafe() | isValidFragment.getLocation() = location and @@ -16,3 +14,5 @@ class FragmentInjectionInPreferenceActivityTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.expected b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.ql b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.ql index 2771dd3af90..a1cff04f4c6 100644 --- a/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-470/FragmentInjectionTest.ql @@ -1,11 +1,4 @@ import java import semmle.code.java.security.FragmentInjectionQuery import TestUtilities.InlineFlowTest - -class Test extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - FragmentInjectionTaintFlow::flow(src, sink) - } -} +import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/DebuggableAttributeEnabledTest.expected b/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/DebuggableAttributeEnabledTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/DebuggableAttributeEnabledTest.expected +++ b/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/DebuggableAttributeEnabledTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/DebuggableAttributeEnabledTest.ql b/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/DebuggableAttributeEnabledTest.ql index 76433545aa5..79a762ea209 100644 --- a/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/DebuggableAttributeEnabledTest.ql +++ b/java/ql/test/query-tests/security/CWE-489/debuggable-attribute/DebuggableAttributeEnabledTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.xml.AndroidManifest import TestUtilities.InlineExpectationsTest -class DebuggableAttributeEnabledTest extends InlineExpectationsTest { - DebuggableAttributeEnabledTest() { this = "DebuggableAttributeEnabledTest" } +module DebuggableAttributeEnabledTest implements TestSig { + string getARelevantTag() { result = "hasDebuggableAttributeEnabled" } - override string getARelevantTag() { result = "hasDebuggableAttributeEnabled" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasDebuggableAttributeEnabled" and exists(AndroidApplicationXmlElement androidAppElem | androidAppElem.isDebuggable() and @@ -19,3 +17,5 @@ class DebuggableAttributeEnabledTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.expected b/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.expected +++ b/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.ql b/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.ql index 5bd19fb5b9e..99ac3d4e03c 100644 --- a/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.ql +++ b/java/ql/test/query-tests/security/CWE-489/webview-debugging/WebviewDebuggingEnabled.ql @@ -1,11 +1,4 @@ import java import TestUtilities.InlineFlowTest import semmle.code.java.security.WebviewDebuggingEnabledQuery - -class HasFlowTest extends InlineFlowTest { - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { - WebviewDebugEnabledFlow::flow(src, sink) - } -} +import ValueFlowTest diff --git a/java/ql/test/query-tests/security/CWE-502/A.java b/java/ql/test/query-tests/security/CWE-502/A.java index e95f15bff4f..f3bd633f880 100644 --- a/java/ql/test/query-tests/security/CWE-502/A.java +++ b/java/ql/test/query-tests/security/CWE-502/A.java @@ -7,6 +7,7 @@ import com.esotericsoftware.kryo.io.Input; import org.yaml.snakeyaml.constructor.SafeConstructor; import org.yaml.snakeyaml.constructor.Constructor; import org.yaml.snakeyaml.Yaml; +import org.nibblesec.tools.SerialKiller; public class A { public Object deserialize1(Socket sock) throws java.io.IOException, ClassNotFoundException { @@ -21,6 +22,12 @@ public class A { return in.readUnshared(); // $unsafeDeserialization } + public Object deserializeWithSerialKiller(Socket sock) throws java.io.IOException, ClassNotFoundException { + InputStream inputStream = sock.getInputStream(); + ObjectInputStream in = new SerialKiller(inputStream, "/etc/serialkiller.conf"); + return in.readUnshared(); // OK + } + public Object deserialize3(Socket sock) throws java.io.IOException { InputStream inputStream = sock.getInputStream(); XMLDecoder d = new XMLDecoder(inputStream); diff --git a/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.expected b/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.expected +++ b/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.ql b/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.ql index 4d10c798e33..68623825985 100644 --- a/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.ql +++ b/java/ql/test/query-tests/security/CWE-502/UnsafeDeserialization.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.UnsafeDeserializationQuery import TestUtilities.InlineExpectationsTest -class UnsafeDeserializationTest extends InlineExpectationsTest { - UnsafeDeserializationTest() { this = "UnsafeDeserializationTest" } +module UnsafeDeserializationTest implements TestSig { + string getARelevantTag() { result = "unsafeDeserialization" } - override string getARelevantTag() { result = "unsafeDeserialization" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "unsafeDeserialization" and exists(DataFlow::Node sink | UnsafeDeserializationFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class UnsafeDeserializationTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-502/options b/java/ql/test/query-tests/security/CWE-502/options index 0e9cab2d100..47e25fe74fb 100644 --- a/java/ql/test/query-tests/security/CWE-502/options +++ b/java/ql/test/query-tests/security/CWE-502/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/snakeyaml-1.21:${testdir}/../../../stubs/xstream-1.4.10:${testdir}/../../../stubs/kryo-4.0.2:${testdir}/../../../stubs/jsr311-api-1.1.1:${testdir}/../../../stubs/fastjson-1.2.74:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/jyaml-1.3:${testdir}/../../../stubs/json-io-4.10.0:${testdir}/../../../stubs/yamlbeans-1.09:${testdir}/../../../stubs/hessian-4.0.38:${testdir}/../../../stubs/castor-1.4.1:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/jabsorb-1.3.2:${testdir}/../../../stubs/json-java-20210307:${testdir}/../../../stubs/joddjson-6.0.3:${testdir}/../../../stubs/flexjson-2.1:${testdir}/../../../stubs/gson-2.8.6:${testdir}/../../../stubs/google-android-9.0.0 +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/snakeyaml-1.21:${testdir}/../../../stubs/xstream-1.4.10:${testdir}/../../../stubs/kryo-4.0.2:${testdir}/../../../stubs/jsr311-api-1.1.1:${testdir}/../../../stubs/fastjson-1.2.74:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/jyaml-1.3:${testdir}/../../../stubs/json-io-4.10.0:${testdir}/../../../stubs/yamlbeans-1.09:${testdir}/../../../stubs/hessian-4.0.38:${testdir}/../../../stubs/castor-1.4.1:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/jabsorb-1.3.2:${testdir}/../../../stubs/json-java-20210307:${testdir}/../../../stubs/joddjson-6.0.3:${testdir}/../../../stubs/flexjson-2.1:${testdir}/../../../stubs/gson-2.8.6:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/serialkiller-4.0.0 diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.expected b/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.expected +++ b/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.ql b/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.ql index 29057edce71..c0384899d56 100644 --- a/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.ql +++ b/java/ql/test/query-tests/security/CWE-522/InsecureBasicAuthTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.InsecureBasicAuthQuery import TestUtilities.InlineExpectationsTest -class HasInsecureBasicAuthTest extends InlineExpectationsTest { - HasInsecureBasicAuthTest() { this = "HasInsecureBasicAuthTest" } +module HasInsecureBasicAuthTest implements TestSig { + string getARelevantTag() { result = "hasInsecureBasicAuth" } - override string getARelevantTag() { result = "hasInsecureBasicAuth" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasInsecureBasicAuth" and exists(DataFlow::Node sink | InsecureBasicAuthFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class HasInsecureBasicAuthTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.expected b/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.expected +++ b/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.ql b/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.ql index 4ae89d21313..f75550f5112 100644 --- a/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.ql +++ b/java/ql/test/query-tests/security/CWE-522/InsecureLdapAuthTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.InsecureLdapAuthQuery import TestUtilities.InlineExpectationsTest -class InsecureLdapAuthenticationTest extends InlineExpectationsTest { - InsecureLdapAuthenticationTest() { this = "InsecureLdapAuthentication" } +module InsecureLdapAuthenticationTest implements TestSig { + string getARelevantTag() { result = "hasInsecureLdapAuth" } - override string getARelevantTag() { result = "hasInsecureLdapAuth" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasInsecureLdapAuth" and exists(DataFlow::Node sink | InsecureLdapUrlFlow::flowTo(sink) | BasicAuthFlow::flowTo(sink) and @@ -18,3 +16,5 @@ class InsecureLdapAuthenticationTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-524/SensitiveKeyboardCache.expected b/java/ql/test/query-tests/security/CWE-524/SensitiveKeyboardCache.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-524/SensitiveKeyboardCache.expected +++ b/java/ql/test/query-tests/security/CWE-524/SensitiveKeyboardCache.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-524/SensitiveKeyboardCache.ql b/java/ql/test/query-tests/security/CWE-524/SensitiveKeyboardCache.ql index 26ce8bc7fb7..caa50f9fa75 100644 --- a/java/ql/test/query-tests/security/CWE-524/SensitiveKeyboardCache.ql +++ b/java/ql/test/query-tests/security/CWE-524/SensitiveKeyboardCache.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.SensitiveKeyboardCacheQuery import TestUtilities.InlineExpectationsTest -class SensitiveKeyboardCacheTest extends InlineExpectationsTest { - SensitiveKeyboardCacheTest() { this = "SensitiveKeyboardCacheTest" } +module SensitiveKeyboardCacheTest implements TestSig { + string getARelevantTag() { result = "hasResult" } - override string getARelevantTag() { result = "hasResult" } - - override predicate hasActualResult(Location loc, string element, string tag, string value) { + predicate hasActualResult(Location loc, string element, string tag, string value) { exists(AndroidEditableXmlElement el | el = getASensitiveCachedInput() and loc = el.getLocation() and @@ -17,3 +15,5 @@ class SensitiveKeyboardCacheTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected b/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected +++ b/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.ql b/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.ql index 5de153a9e35..389cff934a9 100644 --- a/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.ql +++ b/java/ql/test/query-tests/security/CWE-532/SensitiveLogInfo.ql @@ -1,11 +1,4 @@ import java import TestUtilities.InlineFlowTest import semmle.code.java.security.SensitiveLoggingQuery - -class HasFlowTest extends InlineFlowTest { - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - SensitiveLoggerFlow::flow(src, sink) - } - - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } -} +import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-611/XXE.expected b/java/ql/test/query-tests/security/CWE-611/XXE.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-611/XXE.expected +++ b/java/ql/test/query-tests/security/CWE-611/XXE.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-611/XXE.ql b/java/ql/test/query-tests/security/CWE-611/XXE.ql index f1463f561f3..ed12823a6bb 100644 --- a/java/ql/test/query-tests/security/CWE-611/XXE.ql +++ b/java/ql/test/query-tests/security/CWE-611/XXE.ql @@ -1,11 +1,4 @@ import java import TestUtilities.InlineFlowTest import semmle.code.java.security.XxeRemoteQuery - -class HasFlowTest extends InlineFlowTest { - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - XxeFlow::flow(src, sink) - } - - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } -} +import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.expected b/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.ql b/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.ql index 385ade9105b..3f39a4752bb 100644 --- a/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-643/XPathInjectionTest.ql @@ -3,12 +3,10 @@ import semmle.code.java.dataflow.DataFlow import semmle.code.java.security.XPathInjectionQuery import TestUtilities.InlineExpectationsTest -class HasXPathInjectionTest extends InlineExpectationsTest { - HasXPathInjectionTest() { this = "HasXPathInjectionTest" } +module HasXPathInjectionTest implements TestSig { + string getARelevantTag() { result = "hasXPathInjection" } - override string getARelevantTag() { result = "hasXPathInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasXPathInjection" and exists(DataFlow::Node sink | XPathInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -17,3 +15,5 @@ class HasXPathInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.expected b/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.expected +++ b/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.ql b/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.ql index 75af0160def..45dea80e72b 100644 --- a/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.ql +++ b/java/ql/test/query-tests/security/CWE-730/PolynomialReDoS.ql @@ -1,12 +1,10 @@ import TestUtilities.InlineExpectationsTest import semmle.code.java.security.regexp.PolynomialReDoSQuery -class HasPolyRedos extends InlineExpectationsTest { - HasPolyRedos() { this = "HasPolyRedos" } +module HasPolyRedos implements TestSig { + string getARelevantTag() { result = "hasPolyRedos" } - override string getARelevantTag() { result = "hasPolyRedos" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasPolyRedos" and exists(DataFlow::Node sink | PolynomialRedosFlow::flowTo(sink) and @@ -16,3 +14,5 @@ class HasPolyRedos extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-730/ReDoS.expected b/java/ql/test/query-tests/security/CWE-730/ReDoS.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-730/ReDoS.expected +++ b/java/ql/test/query-tests/security/CWE-730/ReDoS.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-730/ReDoS.ql b/java/ql/test/query-tests/security/CWE-730/ReDoS.ql index f7d5d7175b3..97719364f94 100644 --- a/java/ql/test/query-tests/security/CWE-730/ReDoS.ql +++ b/java/ql/test/query-tests/security/CWE-730/ReDoS.ql @@ -4,12 +4,10 @@ private import semmle.code.java.regex.RegexTreeView::RegexTreeView as TreeView import codeql.regex.nfa.ExponentialBackTracking::Make as ExponentialBackTracking import semmle.code.java.regex.regex -class HasExpRedos extends InlineExpectationsTest { - HasExpRedos() { this = "HasExpRedos" } +module HasExpRedos implements TestSig { + string getARelevantTag() { result = ["hasExpRedos", "hasParseFailure"] } - override string getARelevantTag() { result = ["hasExpRedos", "hasParseFailure"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasExpRedos" and exists(TreeView::RegExpTerm t | ExponentialBackTracking::hasReDoSResult(t, _, _, _) and @@ -28,3 +26,5 @@ class HasExpRedos extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.expected b/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.ql b/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.ql index f42de310988..afc621e0767 100644 --- a/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-730/RegexInjectionTest.ql @@ -2,12 +2,10 @@ import java import TestUtilities.InlineExpectationsTest import semmle.code.java.security.regexp.RegexInjectionQuery -class RegexInjectionTest extends InlineExpectationsTest { - RegexInjectionTest() { this = "RegexInjectionTest" } +module RegexInjectionTest implements TestSig { + string getARelevantTag() { result = "hasRegexInjection" } - override string getARelevantTag() { result = "hasRegexInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasRegexInjection" and exists(RegexInjectionFlow::PathNode sink | RegexInjectionFlow::flowPath(_, sink) | location = sink.getNode().getLocation() and @@ -16,3 +14,5 @@ class RegexInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-749/UnsafeAndroidAccessTest.expected b/java/ql/test/query-tests/security/CWE-749/UnsafeAndroidAccessTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-749/UnsafeAndroidAccessTest.expected +++ b/java/ql/test/query-tests/security/CWE-749/UnsafeAndroidAccessTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-749/UnsafeAndroidAccessTest.ql b/java/ql/test/query-tests/security/CWE-749/UnsafeAndroidAccessTest.ql index 4da1ca7fd5f..99fba4e9172 100644 --- a/java/ql/test/query-tests/security/CWE-749/UnsafeAndroidAccessTest.ql +++ b/java/ql/test/query-tests/security/CWE-749/UnsafeAndroidAccessTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.UnsafeAndroidAccessQuery import TestUtilities.InlineExpectationsTest -class UnsafeAndroidAccessTest extends InlineExpectationsTest { - UnsafeAndroidAccessTest() { this = "HasUnsafeAndroidAccess" } +module UnsafeAndroidAccessTest implements TestSig { + string getARelevantTag() { result = "hasUnsafeAndroidAccess" } - override string getARelevantTag() { result = "hasUnsafeAndroidAccess" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasUnsafeAndroidAccess" and exists(DataFlow::Node sink | FetchUntrustedResourceFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class UnsafeAndroidAccessTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.expected b/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.expected +++ b/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.ql b/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.ql index 01af77284f0..c1bc2049c76 100644 --- a/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.ql +++ b/java/ql/test/query-tests/security/CWE-780/RsaWithoutOaepTest.ql @@ -2,11 +2,4 @@ import java import TestUtilities.InlineExpectationsTest import TestUtilities.InlineFlowTest import semmle.code.java.security.RsaWithoutOaepQuery - -class HasFlowTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - RsaWithoutOaepFlow::flow(src, sink) - } -} +import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsApiCall.expected b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsApiCall.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsApiCall.expected +++ b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsApiCall.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsApiCall.ql b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsApiCall.ql index 7d7b8e2d2a5..2b2290fad10 100644 --- a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsApiCall.ql +++ b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsApiCall.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.HardcodedCredentialsApiCallQuery import TestUtilities.InlineExpectationsTest -class HardcodedCredentialsApiCallTest extends InlineExpectationsTest { - HardcodedCredentialsApiCallTest() { this = "HardcodedCredentialsApiCallTest" } +module HardcodedCredentialsApiCallTest implements TestSig { + string getARelevantTag() { result = "HardcodedCredentialsApiCall" } - override string getARelevantTag() { result = "HardcodedCredentialsApiCall" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "HardcodedCredentialsApiCall" and exists(DataFlow::Node sink | HardcodedCredentialApiCallFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class HardcodedCredentialsApiCallTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsComparison.expected b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsComparison.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsComparison.expected +++ b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsComparison.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsComparison.ql b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsComparison.ql index bde1851e43c..10698984828 100644 --- a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsComparison.ql +++ b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsComparison.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.HardcodedCredentialsComparison import TestUtilities.InlineExpectationsTest -class HardcodedCredentialsComparisonTest extends InlineExpectationsTest { - HardcodedCredentialsComparisonTest() { this = "HardcodedCredentialsComparisonTest" } +module HardcodedCredentialsComparisonTest implements TestSig { + string getARelevantTag() { result = "HardcodedCredentialsComparison" } - override string getARelevantTag() { result = "HardcodedCredentialsComparison" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "HardcodedCredentialsComparison" and exists(Expr sink | isHardcodedCredentialsComparison(sink, _, _) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class HardcodedCredentialsComparisonTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsSourceCall.expected b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsSourceCall.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsSourceCall.expected +++ b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsSourceCall.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsSourceCall.ql b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsSourceCall.ql index 0fcf2f128ad..ab941d80a4e 100644 --- a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsSourceCall.ql +++ b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedCredentialsSourceCall.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.HardcodedCredentialsSourceCallQuery import TestUtilities.InlineExpectationsTest -class HardcodedCredentialsSourceCallTest extends InlineExpectationsTest { - HardcodedCredentialsSourceCallTest() { this = "HardcodedCredentialsSourceCallTest" } +module HardcodedCredentialsSourceCallTest implements TestSig { + string getARelevantTag() { result = "HardcodedCredentialsSourceCall" } - override string getARelevantTag() { result = "HardcodedCredentialsSourceCall" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "HardcodedCredentialsSourceCall" and exists(DataFlow::Node sink | HardcodedCredentialSourceCallFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class HardcodedCredentialsSourceCallTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedPasswordField.expected b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedPasswordField.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedPasswordField.expected +++ b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedPasswordField.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedPasswordField.ql b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedPasswordField.ql index 057bbbc2ab0..f734ca356ac 100644 --- a/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedPasswordField.ql +++ b/java/ql/test/query-tests/security/CWE-798/semmle/tests/HardcodedPasswordField.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.HardcodedPasswordField import TestUtilities.InlineExpectationsTest -class HardcodedPasswordFieldTest extends InlineExpectationsTest { - HardcodedPasswordFieldTest() { this = "HardcodedPasswordFieldTest" } +module HardcodedPasswordFieldTest implements TestSig { + string getARelevantTag() { result = "HardcodedPasswordField" } - override string getARelevantTag() { result = "HardcodedPasswordField" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "HardcodedPasswordField" and exists(Expr assigned | passwordFieldAssignedHardcodedValue(_, assigned) | assigned.getLocation() = location and @@ -16,3 +14,5 @@ class HardcodedPasswordFieldTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-807/semmle/tests/ConditionalBypassTest.expected b/java/ql/test/query-tests/security/CWE-807/semmle/tests/ConditionalBypassTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-807/semmle/tests/ConditionalBypassTest.expected +++ b/java/ql/test/query-tests/security/CWE-807/semmle/tests/ConditionalBypassTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-807/semmle/tests/ConditionalBypassTest.ql b/java/ql/test/query-tests/security/CWE-807/semmle/tests/ConditionalBypassTest.ql index 20ca408f1b2..e77ea5ad228 100644 --- a/java/ql/test/query-tests/security/CWE-807/semmle/tests/ConditionalBypassTest.ql +++ b/java/ql/test/query-tests/security/CWE-807/semmle/tests/ConditionalBypassTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.ConditionalBypassQuery import TestUtilities.InlineExpectationsTest -class ConditionalBypassTest extends InlineExpectationsTest { - ConditionalBypassTest() { this = "ConditionalBypassTest" } +module ConditionalBypassTest implements TestSig { + string getARelevantTag() { result = "hasConditionalBypassTest" } - override string getARelevantTag() { result = "hasConditionalBypassTest" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasConditionalBypassTest" and exists(DataFlow::Node sink | ConditionalBypassFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class ConditionalBypassTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.expected b/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.ql b/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.ql index 68db2593628..52dd8ad3417 100644 --- a/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-917/OgnlInjectionTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.OgnlInjectionQuery import TestUtilities.InlineExpectationsTest -class OgnlInjectionTest extends InlineExpectationsTest { - OgnlInjectionTest() { this = "HasOgnlInjection" } +module OgnlInjectionTest implements TestSig { + string getARelevantTag() { result = "hasOgnlInjection" } - override string getARelevantTag() { result = "hasOgnlInjection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasOgnlInjection" and exists(DataFlow::Node sink | OgnlInjectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class OgnlInjectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-918/RequestForgery.expected b/java/ql/test/query-tests/security/CWE-918/RequestForgery.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-918/RequestForgery.expected +++ b/java/ql/test/query-tests/security/CWE-918/RequestForgery.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-918/RequestForgery.ql b/java/ql/test/query-tests/security/CWE-918/RequestForgery.ql index 865e6e8f0d3..41dbaad7d05 100644 --- a/java/ql/test/query-tests/security/CWE-918/RequestForgery.ql +++ b/java/ql/test/query-tests/security/CWE-918/RequestForgery.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.RequestForgeryConfig import TestUtilities.InlineExpectationsTest -class HasFlowTest extends InlineExpectationsTest { - HasFlowTest() { this = "HasFlowTest" } +module HasFlowTest implements TestSig { + string getARelevantTag() { result = "SSRF" } - override string getARelevantTag() { result = "SSRF" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "SSRF" and exists(DataFlow::Node sink | RequestForgeryFlow::flowTo(sink) and @@ -17,3 +15,5 @@ class HasFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-918/mad/Test.java b/java/ql/test/query-tests/security/CWE-918/mad/Test.java index 8666e821fd0..6c224b65d31 100644 --- a/java/ql/test/query-tests/security/CWE-918/mad/Test.java +++ b/java/ql/test/query-tests/security/CWE-918/mad/Test.java @@ -9,6 +9,8 @@ import javafx.scene.web.WebEngine; import org.apache.commons.jelly.JellyContext; import org.codehaus.cargo.container.installer.ZipURLInstaller; import org.kohsuke.stapler.HttpResponses; +import play.libs.ws.WSClient; +import play.libs.ws.StandaloneWSClient; public class Test { @@ -74,4 +76,14 @@ public class Test { r.staticResource((URL) source()); // $ SSRF } + public void test(WSClient c) { + // "play.libs.ws;WSClient;true;url;;;Argument[0];open-url;manual" + c.url((String) source()); // $ SSRF + } + + public void test(StandaloneWSClient c) { + // "play.libs.ws;StandaloneWSClient;true;url;;;Argument[0];open-url;manual" + c.url((String) source()); // $ SSRF + } + } diff --git a/java/ql/test/query-tests/security/CWE-918/options b/java/ql/test/query-tests/security/CWE-918/options index c8147ece2a9..82a3894bc18 100644 --- a/java/ql/test/query-tests/security/CWE-918/options +++ b/java/ql/test/query-tests/security/CWE-918/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -source 11 -target 11 -cp ${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/javax-ws-rs-api-2.1.1:${testdir}/../../../stubs/javax-ws-rs-api-3.0.0:${testdir}/../../../stubs/apache-http-4.4.13/:${testdir}/../../../stubs/projectreactor-3.4.3/:${testdir}/../../../stubs/postgresql-42.3.3/:${testdir}/../../../stubs/HikariCP-3.4.5/:${testdir}/../../../stubs/spring-jdbc-5.3.8/:${testdir}/../../../stubs/jdbi3-core-3.27.2/:${testdir}/../../../stubs/cargo:${testdir}/../../../stubs/javafx-web:${testdir}/../../../stubs/apache-commons-jelly-1.0.1:${testdir}/../../../stubs/dom4j-2.1.1:${testdir}/../../../stubs/jaxen-1.2.0:${testdir}/../../../stubs/stapler-1.263:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/saxon-xqj-9.x:${testdir}/../../../stubs/apache-commons-beanutils:${testdir}/../../../stubs/apache-commons-lang:${testdir}/../../../stubs/apache-http-5 +//semmle-extractor-options: --javac-args -source 11 -target 11 -cp ${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/javax-ws-rs-api-2.1.1:${testdir}/../../../stubs/javax-ws-rs-api-3.0.0:${testdir}/../../../stubs/apache-http-4.4.13/:${testdir}/../../../stubs/projectreactor-3.4.3/:${testdir}/../../../stubs/postgresql-42.3.3/:${testdir}/../../../stubs/HikariCP-3.4.5/:${testdir}/../../../stubs/spring-jdbc-5.3.8/:${testdir}/../../../stubs/jdbi3-core-3.27.2/:${testdir}/../../../stubs/cargo:${testdir}/../../../stubs/javafx-web:${testdir}/../../../stubs/apache-commons-jelly-1.0.1:${testdir}/../../../stubs/dom4j-2.1.1:${testdir}/../../../stubs/jaxen-1.2.0:${testdir}/../../../stubs/stapler-1.263:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/saxon-xqj-9.x:${testdir}/../../../stubs/apache-commons-beanutils:${testdir}/../../../stubs/apache-commons-lang:${testdir}/../../../stubs/apache-http-5:${testdir}/../../../stubs/playframework-2.6.x diff --git a/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.expected b/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.expected +++ b/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.ql b/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.ql index 30ced62b2ed..baba5cac103 100644 --- a/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.ql +++ b/java/ql/test/query-tests/security/CWE-925/ImproperIntentVerification.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.ImproperIntentVerificationQuery import TestUtilities.InlineExpectationsTest -class HasFlowTest extends InlineExpectationsTest { - HasFlowTest() { this = "HasFlowTest" } +module HasFlowTest implements TestSig { + string getARelevantTag() { result = "hasResult" } - override string getARelevantTag() { result = "hasResult" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasResult" and exists(Method orm | unverifiedSystemReceiver(_, orm, _) | orm.getLocation() = location and @@ -16,3 +14,5 @@ class HasFlowTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-926/ImplicitlyExportedAndroidComponentTest.expected b/java/ql/test/query-tests/security/CWE-926/ImplicitlyExportedAndroidComponentTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-926/ImplicitlyExportedAndroidComponentTest.expected +++ b/java/ql/test/query-tests/security/CWE-926/ImplicitlyExportedAndroidComponentTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-926/ImplicitlyExportedAndroidComponentTest.ql b/java/ql/test/query-tests/security/CWE-926/ImplicitlyExportedAndroidComponentTest.ql index fbda52d36ab..934fc5c899b 100644 --- a/java/ql/test/query-tests/security/CWE-926/ImplicitlyExportedAndroidComponentTest.ql +++ b/java/ql/test/query-tests/security/CWE-926/ImplicitlyExportedAndroidComponentTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.ImplicitlyExportedAndroidComponent import TestUtilities.InlineExpectationsTest -class ImplicitlyExportedAndroidComponentTest extends InlineExpectationsTest { - ImplicitlyExportedAndroidComponentTest() { this = "ImplicitlyExportedAndroidComponentTest" } +module ImplicitlyExportedAndroidComponentTest implements TestSig { + string getARelevantTag() { result = "hasImplicitExport" } - override string getARelevantTag() { result = "hasImplicitExport" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasImplicitExport" and exists(ImplicitlyExportedAndroidComponent impExpAndroidComp | impExpAndroidComp.getLocation() = location and @@ -16,3 +14,5 @@ class ImplicitlyExportedAndroidComponentTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/ContentProviderIncompletePermissionsTest.expected b/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/ContentProviderIncompletePermissionsTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/ContentProviderIncompletePermissionsTest.expected +++ b/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/ContentProviderIncompletePermissionsTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/ContentProviderIncompletePermissionsTest.ql b/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/ContentProviderIncompletePermissionsTest.ql index 9ba691685eb..c7ce16660e1 100644 --- a/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/ContentProviderIncompletePermissionsTest.ql +++ b/java/ql/test/query-tests/security/CWE-926/incomplete_provider_permissions/ContentProviderIncompletePermissionsTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.xml.AndroidManifest import TestUtilities.InlineExpectationsTest -class ContentProviderIncompletePermissionsTest extends InlineExpectationsTest { - ContentProviderIncompletePermissionsTest() { this = "ContentProviderIncompletePermissionsTest" } +module ContentProviderIncompletePermissionsTest implements TestSig { + string getARelevantTag() { result = "hasIncompletePermissions" } - override string getARelevantTag() { result = "hasIncompletePermissions" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasIncompletePermissions" and exists(AndroidProviderXmlElement provider | provider.getLocation() = location and @@ -20,3 +18,5 @@ class ContentProviderIncompletePermissionsTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.expected b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.expected +++ b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.ql b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.ql index 972653380aa..e43b90f8ee8 100644 --- a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.ql +++ b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.ImplicitPendingIntentsQuery import TestUtilities.InlineExpectationsTest -class ImplicitPendingIntentsTest extends InlineExpectationsTest { - ImplicitPendingIntentsTest() { this = "ImplicitPendingIntentsTest" } +module ImplicitPendingIntentsTest implements TestSig { + string getARelevantTag() { result = "hasImplicitPendingIntent" } - override string getARelevantTag() { result = ["hasImplicitPendingIntent"] } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasImplicitPendingIntent" and exists(DataFlow::Node sink | ImplicitPendingIntentStartFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class ImplicitPendingIntentsTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-927/SensitiveCommunication.expected b/java/ql/test/query-tests/security/CWE-927/SensitiveCommunication.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-927/SensitiveCommunication.expected +++ b/java/ql/test/query-tests/security/CWE-927/SensitiveCommunication.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-927/SensitiveCommunication.ql b/java/ql/test/query-tests/security/CWE-927/SensitiveCommunication.ql index 0f1864398b4..cf7e46b6e8e 100644 --- a/java/ql/test/query-tests/security/CWE-927/SensitiveCommunication.ql +++ b/java/ql/test/query-tests/security/CWE-927/SensitiveCommunication.ql @@ -2,11 +2,4 @@ import java import semmle.code.java.security.AndroidSensitiveCommunicationQuery import TestUtilities.InlineExpectationsTest import TestUtilities.InlineFlowTest - -class HasFlowTest extends InlineFlowTest { - override predicate hasValueFlow(DataFlow::Node src, DataFlow::Node sink) { none() } - - override predicate hasTaintFlow(DataFlow::Node src, DataFlow::Node sink) { - SensitiveCommunicationFlow::flow(src, sink) - } -} +import TaintFlowTest diff --git a/java/ql/test/query-tests/security/CWE-927/SensitiveResultReceiver.expected b/java/ql/test/query-tests/security/CWE-927/SensitiveResultReceiver.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-927/SensitiveResultReceiver.expected +++ b/java/ql/test/query-tests/security/CWE-927/SensitiveResultReceiver.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-927/SensitiveResultReceiver.ql b/java/ql/test/query-tests/security/CWE-927/SensitiveResultReceiver.ql index fb7b1dfee43..0624ae91ca9 100644 --- a/java/ql/test/query-tests/security/CWE-927/SensitiveResultReceiver.ql +++ b/java/ql/test/query-tests/security/CWE-927/SensitiveResultReceiver.ql @@ -8,12 +8,10 @@ class TestSource extends RemoteFlowSource { override string getSourceType() { result = "test" } } -class ResultReceiverTest extends InlineExpectationsTest { - ResultReceiverTest() { this = "ResultReceiverTest" } +module ResultReceiverTest implements TestSig { + string getARelevantTag() { result = "hasSensitiveResultReceiver" } - override string getARelevantTag() { result = "hasSensitiveResultReceiver" } - - override predicate hasActualResult(Location loc, string element, string tag, string value) { + predicate hasActualResult(Location loc, string element, string tag, string value) { exists(SensitiveResultReceiverFlow::PathNode sink | isSensitiveResultReceiver(_, sink, _) and element = sink.toString() and @@ -23,3 +21,5 @@ class ResultReceiverTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/query-tests/security/CWE-940/AndroidIntentRedirectionTest.expected b/java/ql/test/query-tests/security/CWE-940/AndroidIntentRedirectionTest.expected index e69de29bb2d..48de9172b36 100644 --- a/java/ql/test/query-tests/security/CWE-940/AndroidIntentRedirectionTest.expected +++ b/java/ql/test/query-tests/security/CWE-940/AndroidIntentRedirectionTest.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/query-tests/security/CWE-940/AndroidIntentRedirectionTest.ql b/java/ql/test/query-tests/security/CWE-940/AndroidIntentRedirectionTest.ql index 7b74855caa5..6c4d121a2bc 100644 --- a/java/ql/test/query-tests/security/CWE-940/AndroidIntentRedirectionTest.ql +++ b/java/ql/test/query-tests/security/CWE-940/AndroidIntentRedirectionTest.ql @@ -2,12 +2,10 @@ import java import semmle.code.java.security.AndroidIntentRedirectionQuery import TestUtilities.InlineExpectationsTest -class HasAndroidIntentRedirectionTest extends InlineExpectationsTest { - HasAndroidIntentRedirectionTest() { this = "HasAndroidIntentRedirectionTest" } +module HasAndroidIntentRedirectionTest implements TestSig { + string getARelevantTag() { result = "hasAndroidIntentRedirection" } - override string getARelevantTag() { result = "hasAndroidIntentRedirection" } - - override predicate hasActualResult(Location location, string element, string tag, string value) { + predicate hasActualResult(Location location, string element, string tag, string value) { tag = "hasAndroidIntentRedirection" and exists(DataFlow::Node sink | IntentRedirectionFlow::flowTo(sink) | sink.getLocation() = location and @@ -16,3 +14,5 @@ class HasAndroidIntentRedirectionTest extends InlineExpectationsTest { ) } } + +import MakeTest diff --git a/java/ql/test/stubs/apache-http-5/org/apache/hc/client5/http/protocol/RedirectLocations.java b/java/ql/test/stubs/apache-http-5/org/apache/hc/client5/http/protocol/RedirectLocations.java new file mode 100644 index 00000000000..ca717c54ebd --- /dev/null +++ b/java/ql/test/stubs/apache-http-5/org/apache/hc/client5/http/protocol/RedirectLocations.java @@ -0,0 +1,111 @@ +/* + * ==================================================================== + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + * + */ + + package org.apache.hc.client5.http.protocol; + + import java.net.URI; + import java.util.ArrayList; + import java.util.HashSet; + import java.util.List; + import java.util.Set; + + /** + * This class represents a collection of {@link java.net.URI}s used + * as redirect locations. + * + * @since 4.0 + */ + public final class RedirectLocations { + + private final Set unique; + private final List all; + + public RedirectLocations() { + super(); + this.unique = new HashSet<>(); + this.all = new ArrayList<>(); + } + + /** + * Test if the URI is present in the collection. + */ + public boolean contains(final URI uri) { + return this.unique.contains(uri); + } + + /** + * Adds a new URI to the collection. + */ + public void add(final URI uri) { + this.unique.add(uri); + this.all.add(uri); + } + + /** + * Returns all redirect {@link URI}s in the order they were added to the collection. + * + * @return list of all URIs + * + * @since 4.1 + */ + public List getAll() { + return new ArrayList<>(this.all); + } + + /** + * Returns the URI at the specified position in this list. + * + * @param index + * index of the location to return + * @return the URI at the specified position in this list + * @throws IndexOutOfBoundsException + * if the index is out of range ( + * {@code index < 0 || index >= size()}) + * @since 4.3 + */ + public URI get(final int index) { + return this.all.get(index); + } + + /** + * Returns the number of elements in this list. If this list contains more + * than {@code Integer.MAX_VALUE} elements, returns + * {@code Integer.MAX_VALUE}. + * + * @return the number of elements in this list + * @since 4.3 + */ + public int size() { + return this.all.size(); + } + + public void clear() { + unique.clear(); + all.clear(); + } + + } diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/ExclusionStrategy.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/ExclusionStrategy.java new file mode 100644 index 00000000000..a1cac336243 --- /dev/null +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/ExclusionStrategy.java @@ -0,0 +1,11 @@ +// Generated automatically from com.google.gson.ExclusionStrategy for testing purposes + +package com.google.gson; + +import com.google.gson.FieldAttributes; + +public interface ExclusionStrategy +{ + boolean shouldSkipClass(Class p0); + boolean shouldSkipField(FieldAttributes p0); +} diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/FieldAttributes.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/FieldAttributes.java new file mode 100644 index 00000000000..1db8d794976 --- /dev/null +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/FieldAttributes.java @@ -0,0 +1,22 @@ +// Generated automatically from com.google.gson.FieldAttributes for testing purposes + +package com.google.gson; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Field; +import java.lang.reflect.Type; +import java.util.Collection; + +public class FieldAttributes +{ + protected FieldAttributes() {} + public T getAnnotation(java.lang.Class p0){ return null; } + public Class getDeclaredClass(){ return null; } + public Class getDeclaringClass(){ return null; } + public Collection getAnnotations(){ return null; } + public FieldAttributes(Field p0){} + public String getName(){ return null; } + public String toString(){ return null; } + public Type getDeclaredType(){ return null; } + public boolean hasModifier(int p0){ return false; } +} diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/FieldNamingPolicy.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/FieldNamingPolicy.java new file mode 100644 index 00000000000..465703ae28a --- /dev/null +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/FieldNamingPolicy.java @@ -0,0 +1,10 @@ +// Generated automatically from com.google.gson.FieldNamingPolicy for testing purposes + +package com.google.gson; + + +public enum FieldNamingPolicy { + IDENTITY, LOWER_CASE_WITH_DASHES, LOWER_CASE_WITH_DOTS, LOWER_CASE_WITH_UNDERSCORES, UPPER_CAMEL_CASE, UPPER_CAMEL_CASE_WITH_SPACES, UPPER_CASE_WITH_UNDERSCORES; + + private FieldNamingPolicy() {} +} diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/FieldNamingStrategy.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/FieldNamingStrategy.java new file mode 100644 index 00000000000..bb3ad76d598 --- /dev/null +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/FieldNamingStrategy.java @@ -0,0 +1,10 @@ +// Generated automatically from com.google.gson.FieldNamingStrategy for testing purposes + +package com.google.gson; + +import java.lang.reflect.Field; + +public interface FieldNamingStrategy +{ + String translateName(Field p0); +} diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/Gson.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/Gson.java index a269763665b..61c29245d15 100644 --- a/java/ql/test/stubs/gson-2.8.6/com/google/gson/Gson.java +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/Gson.java @@ -1,38 +1,53 @@ +// Generated automatically from com.google.gson.Gson for testing purposes + package com.google.gson; -import java.lang.reflect.Type; -import java.io.Reader; +import com.google.gson.FieldNamingStrategy; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonElement; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.internal.Excluder; +import com.google.gson.reflect.TypeToken; import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.Reader; +import java.io.Writer; +import java.lang.reflect.Type; -public final class Gson { - public Gson() { - } - - public String toJson(Object src) { - return null; - } - - public String toJson(Object src, Type typeOfSrc) { - return null; - } - - public T fromJson(String json, Class classOfT) throws JsonSyntaxException { - return null; - } - - public T fromJson(String json, Type typeOfT) throws JsonSyntaxException { - return null; - } - - public T fromJson(Reader json, Class classOfT) throws JsonSyntaxException, JsonIOException { - return null; - } - - public T fromJson(Reader json, Type typeOfT) throws JsonIOException, JsonSyntaxException { - return null; - } - - public T fromJson(JsonReader reader, Type typeOfT) throws JsonIOException, JsonSyntaxException { - return null; - } +public class Gson +{ + public T fromJson(JsonElement p0, Type p1){ return null; } + public T fromJson(JsonElement p0, com.google.gson.reflect.TypeToken p1){ return null; } + public T fromJson(JsonElement p0, java.lang.Class p1){ return null; } + public T fromJson(JsonReader p0, Type p1){ return null; } + public T fromJson(JsonReader p0, com.google.gson.reflect.TypeToken p1){ return null; } + public T fromJson(Reader p0, Type p1){ return null; } + public T fromJson(Reader p0, com.google.gson.reflect.TypeToken p1){ return null; } + public T fromJson(Reader p0, java.lang.Class p1){ return null; } + public T fromJson(String p0, Type p1){ return null; } + public T fromJson(String p0, com.google.gson.reflect.TypeToken p1){ return null; } + public T fromJson(String p0, java.lang.Class p1){ return null; } + public com.google.gson.TypeAdapter getAdapter(com.google.gson.reflect.TypeToken p0){ return null; } + public com.google.gson.TypeAdapter getAdapter(java.lang.Class p0){ return null; } + public com.google.gson.TypeAdapter getDelegateAdapter(TypeAdapterFactory p0, com.google.gson.reflect.TypeToken p1){ return null; } + public Excluder excluder(){ return null; } + public FieldNamingStrategy fieldNamingStrategy(){ return null; } + public Gson(){} + public GsonBuilder newBuilder(){ return null; } + public JsonElement toJsonTree(Object p0){ return null; } + public JsonElement toJsonTree(Object p0, Type p1){ return null; } + public JsonReader newJsonReader(Reader p0){ return null; } + public JsonWriter newJsonWriter(Writer p0){ return null; } + public String toJson(JsonElement p0){ return null; } + public String toJson(Object p0){ return null; } + public String toJson(Object p0, Type p1){ return null; } + public String toString(){ return null; } + public boolean htmlSafe(){ return false; } + public boolean serializeNulls(){ return false; } + public void toJson(JsonElement p0, Appendable p1){} + public void toJson(JsonElement p0, JsonWriter p1){} + public void toJson(Object p0, Appendable p1){} + public void toJson(Object p0, Type p1, Appendable p2){} + public void toJson(Object p0, Type p1, JsonWriter p2){} } diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/GsonBuilder.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/GsonBuilder.java index 3853cb40356..33d656b7bd7 100644 --- a/java/ql/test/stubs/gson-2.8.6/com/google/gson/GsonBuilder.java +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/GsonBuilder.java @@ -1,99 +1,46 @@ -/* - * Copyright (C) 2008 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Generated automatically from com.google.gson.GsonBuilder for testing purposes package com.google.gson; +import com.google.gson.ExclusionStrategy; +import com.google.gson.FieldNamingPolicy; +import com.google.gson.FieldNamingStrategy; +import com.google.gson.Gson; +import com.google.gson.LongSerializationPolicy; +import com.google.gson.ReflectionAccessFilter; +import com.google.gson.ToNumberStrategy; +import com.google.gson.TypeAdapterFactory; import java.lang.reflect.Type; -public final class GsonBuilder { - /** - * Creates a GsonBuilder instance that can be used to build Gson with various configuration - * settings. GsonBuilder follows the builder pattern, and it is typically used by first - * invoking various configuration methods to set desired options, and finally calling - * {@link #create()}. - */ - public GsonBuilder() { - } - - /** - * Constructs a GsonBuilder instance from a Gson instance. The newly constructed GsonBuilder - * has the same configuration as the previously built Gson instance. - * - * @param gson the gson instance whose configuration should by applied to a new GsonBuilder. - */ - GsonBuilder(Gson gson) { - } - - /** - * Configures Gson for custom serialization or deserialization. This method combines the - * registration of an {@link TypeAdapter}, {@link InstanceCreator}, {@link JsonSerializer}, and a - * {@link JsonDeserializer}. It is best used when a single object {@code typeAdapter} implements - * all the required interfaces for custom serialization with Gson. If a type adapter was - * previously registered for the specified {@code type}, it is overwritten. - * - *

    This registers the type specified and no other types: you must manually register related - * types! For example, applications registering {@code boolean.class} should also register {@code - * Boolean.class}. - * - * @param type the type definition for the type adapter being registered - * @param typeAdapter This object must implement at least one of the {@link TypeAdapter}, - * {@link InstanceCreator}, {@link JsonSerializer}, and a {@link JsonDeserializer} interfaces. - * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern - */ - public GsonBuilder registerTypeAdapter(Type type, Object typeAdapter) { - return null; - } - - /** - * Register a factory for type adapters. Registering a factory is useful when the type - * adapter needs to be configured based on the type of the field being processed. Gson - * is designed to handle a large number of factories, so you should consider registering - * them to be at par with registering an individual type adapter. - * - * @since 2.1 - */ - public GsonBuilder registerTypeAdapterFactory(TypeAdapterFactory factory) { - return null; - } - - /** - * Configures Gson for custom serialization or deserialization for an inheritance type hierarchy. - * This method combines the registration of a {@link TypeAdapter}, {@link JsonSerializer} and - * a {@link JsonDeserializer}. If a type adapter was previously registered for the specified - * type hierarchy, it is overridden. If a type adapter is registered for a specific type in - * the type hierarchy, it will be invoked instead of the one registered for the type hierarchy. - * - * @param baseType the class definition for the type adapter being registered for the base class - * or interface - * @param typeAdapter This object must implement at least one of {@link TypeAdapter}, - * {@link JsonSerializer} or {@link JsonDeserializer} interfaces. - * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern - * @since 1.7 - */ - public GsonBuilder registerTypeHierarchyAdapter(Class baseType, Object typeAdapter) { - return null; - } - - /** - * Creates a {@link Gson} instance based on the current configuration. This method is free of - * side-effects to this {@code GsonBuilder} instance and hence can be called multiple times. - * - * @return an instance of Gson configured with the options currently set in this builder - */ - public Gson create() { - return null; - } -} \ No newline at end of file +public class GsonBuilder +{ + public Gson create(){ return null; } + public GsonBuilder addDeserializationExclusionStrategy(ExclusionStrategy p0){ return null; } + public GsonBuilder addReflectionAccessFilter(ReflectionAccessFilter p0){ return null; } + public GsonBuilder addSerializationExclusionStrategy(ExclusionStrategy p0){ return null; } + public GsonBuilder disableHtmlEscaping(){ return null; } + public GsonBuilder disableInnerClassSerialization(){ return null; } + public GsonBuilder disableJdkUnsafe(){ return null; } + public GsonBuilder enableComplexMapKeySerialization(){ return null; } + public GsonBuilder excludeFieldsWithModifiers(int... p0){ return null; } + public GsonBuilder excludeFieldsWithoutExposeAnnotation(){ return null; } + public GsonBuilder generateNonExecutableJson(){ return null; } + public GsonBuilder registerTypeAdapter(Type p0, Object p1){ return null; } + public GsonBuilder registerTypeAdapterFactory(TypeAdapterFactory p0){ return null; } + public GsonBuilder registerTypeHierarchyAdapter(Class p0, Object p1){ return null; } + public GsonBuilder serializeNulls(){ return null; } + public GsonBuilder serializeSpecialFloatingPointValues(){ return null; } + public GsonBuilder setDateFormat(String p0){ return null; } + public GsonBuilder setDateFormat(int p0){ return null; } + public GsonBuilder setDateFormat(int p0, int p1){ return null; } + public GsonBuilder setExclusionStrategies(ExclusionStrategy... p0){ return null; } + public GsonBuilder setFieldNamingPolicy(FieldNamingPolicy p0){ return null; } + public GsonBuilder setFieldNamingStrategy(FieldNamingStrategy p0){ return null; } + public GsonBuilder setLenient(){ return null; } + public GsonBuilder setLongSerializationPolicy(LongSerializationPolicy p0){ return null; } + public GsonBuilder setNumberToNumberStrategy(ToNumberStrategy p0){ return null; } + public GsonBuilder setObjectToNumberStrategy(ToNumberStrategy p0){ return null; } + public GsonBuilder setPrettyPrinting(){ return null; } + public GsonBuilder setVersion(double p0){ return null; } + public GsonBuilder(){} +} diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/JsonArray.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/JsonArray.java new file mode 100644 index 00000000000..c4fbae6bc1f --- /dev/null +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/JsonArray.java @@ -0,0 +1,45 @@ +// Generated automatically from com.google.gson.JsonArray for testing purposes + +package com.google.gson; + +import com.google.gson.JsonElement; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.Iterator; +import java.util.List; + +public class JsonArray extends JsonElement implements Iterable +{ + public BigDecimal getAsBigDecimal(){ return null; } + public BigInteger getAsBigInteger(){ return null; } + public Iterator iterator(){ return null; } + public JsonArray deepCopy(){ return null; } + public JsonArray(){} + public JsonArray(int p0){} + public JsonElement get(int p0){ return null; } + public JsonElement remove(int p0){ return null; } + public JsonElement set(int p0, JsonElement p1){ return null; } + public List asList(){ return null; } + public Number getAsNumber(){ return null; } + public String getAsString(){ return null; } + public boolean contains(JsonElement p0){ return false; } + public boolean equals(Object p0){ return false; } + public boolean getAsBoolean(){ return false; } + public boolean isEmpty(){ return false; } + public boolean remove(JsonElement p0){ return false; } + public byte getAsByte(){ return 0; } + public char getAsCharacter(){ return '0'; } + public double getAsDouble(){ return 0; } + public float getAsFloat(){ return 0; } + public int getAsInt(){ return 0; } + public int hashCode(){ return 0; } + public int size(){ return 0; } + public long getAsLong(){ return 0; } + public short getAsShort(){ return 0; } + public void add(Boolean p0){} + public void add(Character p0){} + public void add(JsonElement p0){} + public void add(Number p0){} + public void add(String p0){} + public void addAll(JsonArray p0){} +} diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/JsonElement.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/JsonElement.java new file mode 100644 index 00000000000..592fce2b672 --- /dev/null +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/JsonElement.java @@ -0,0 +1,37 @@ +// Generated automatically from com.google.gson.JsonElement for testing purposes + +package com.google.gson; + +import com.google.gson.JsonArray; +import com.google.gson.JsonNull; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import java.math.BigDecimal; +import java.math.BigInteger; + +abstract public class JsonElement +{ + public BigDecimal getAsBigDecimal(){ return null; } + public BigInteger getAsBigInteger(){ return null; } + public JsonArray getAsJsonArray(){ return null; } + public JsonElement(){} + public JsonNull getAsJsonNull(){ return null; } + public JsonObject getAsJsonObject(){ return null; } + public JsonPrimitive getAsJsonPrimitive(){ return null; } + public Number getAsNumber(){ return null; } + public String getAsString(){ return null; } + public String toString(){ return null; } + public abstract JsonElement deepCopy(); + public boolean getAsBoolean(){ return false; } + public boolean isJsonArray(){ return false; } + public boolean isJsonNull(){ return false; } + public boolean isJsonObject(){ return false; } + public boolean isJsonPrimitive(){ return false; } + public byte getAsByte(){ return 0; } + public char getAsCharacter(){ return '0'; } + public double getAsDouble(){ return 0; } + public float getAsFloat(){ return 0; } + public int getAsInt(){ return 0; } + public long getAsLong(){ return 0; } + public short getAsShort(){ return 0; } +} diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/JsonNull.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/JsonNull.java new file mode 100644 index 00000000000..e38275991eb --- /dev/null +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/JsonNull.java @@ -0,0 +1,14 @@ +// Generated automatically from com.google.gson.JsonNull for testing purposes + +package com.google.gson; + +import com.google.gson.JsonElement; + +public class JsonNull extends JsonElement +{ + public JsonNull deepCopy(){ return null; } + public JsonNull(){} + public boolean equals(Object p0){ return false; } + public int hashCode(){ return 0; } + public static JsonNull INSTANCE = null; +} diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/JsonObject.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/JsonObject.java new file mode 100644 index 00000000000..a37b5455b51 --- /dev/null +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/JsonObject.java @@ -0,0 +1,33 @@ +// Generated automatically from com.google.gson.JsonObject for testing purposes + +package com.google.gson; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonPrimitive; +import java.util.Map; +import java.util.Set; + +public class JsonObject extends JsonElement +{ + public JsonArray getAsJsonArray(String p0){ return null; } + public JsonElement get(String p0){ return null; } + public JsonElement remove(String p0){ return null; } + public JsonObject deepCopy(){ return null; } + public JsonObject getAsJsonObject(String p0){ return null; } + public JsonObject(){} + public JsonPrimitive getAsJsonPrimitive(String p0){ return null; } + public Map asMap(){ return null; } + public Set> entrySet(){ return null; } + public Set keySet(){ return null; } + public boolean equals(Object p0){ return false; } + public boolean has(String p0){ return false; } + public boolean isEmpty(){ return false; } + public int hashCode(){ return 0; } + public int size(){ return 0; } + public void add(String p0, JsonElement p1){} + public void addProperty(String p0, Boolean p1){} + public void addProperty(String p0, Character p1){} + public void addProperty(String p0, Number p1){} + public void addProperty(String p0, String p1){} +} diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/JsonPrimitive.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/JsonPrimitive.java new file mode 100644 index 00000000000..21ec07c4246 --- /dev/null +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/JsonPrimitive.java @@ -0,0 +1,34 @@ +// Generated automatically from com.google.gson.JsonPrimitive for testing purposes + +package com.google.gson; + +import com.google.gson.JsonElement; +import java.math.BigDecimal; +import java.math.BigInteger; + +public class JsonPrimitive extends JsonElement +{ + protected JsonPrimitive() {} + public BigDecimal getAsBigDecimal(){ return null; } + public BigInteger getAsBigInteger(){ return null; } + public JsonPrimitive deepCopy(){ return null; } + public JsonPrimitive(Boolean p0){} + public JsonPrimitive(Character p0){} + public JsonPrimitive(Number p0){} + public JsonPrimitive(String p0){} + public Number getAsNumber(){ return null; } + public String getAsString(){ return null; } + public boolean equals(Object p0){ return false; } + public boolean getAsBoolean(){ return false; } + public boolean isBoolean(){ return false; } + public boolean isNumber(){ return false; } + public boolean isString(){ return false; } + public byte getAsByte(){ return 0; } + public char getAsCharacter(){ return '0'; } + public double getAsDouble(){ return 0; } + public float getAsFloat(){ return 0; } + public int getAsInt(){ return 0; } + public int hashCode(){ return 0; } + public long getAsLong(){ return 0; } + public short getAsShort(){ return 0; } +} diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/LongSerializationPolicy.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/LongSerializationPolicy.java new file mode 100644 index 00000000000..0452deec4b9 --- /dev/null +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/LongSerializationPolicy.java @@ -0,0 +1,24 @@ +// Generated automatically from com.google.gson.LongSerializationPolicy for testing purposes + +package com.google.gson; + +import com.google.gson.JsonElement; + +public enum LongSerializationPolicy { + DEFAULT { + @Override + public JsonElement serialize(Long p0) { + return null; + } + }, + STRING { + @Override + public JsonElement serialize(Long p0) { + return null; + } + }; + + private LongSerializationPolicy() {} + + public abstract JsonElement serialize(Long p0); +} diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/ReflectionAccessFilter.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/ReflectionAccessFilter.java new file mode 100644 index 00000000000..ff91f103f62 --- /dev/null +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/ReflectionAccessFilter.java @@ -0,0 +1,18 @@ +// Generated automatically from com.google.gson.ReflectionAccessFilter for testing purposes + +package com.google.gson; + + +public interface ReflectionAccessFilter +{ + ReflectionAccessFilter.FilterResult check(Class p0); + static ReflectionAccessFilter BLOCK_ALL_ANDROID = null; + static ReflectionAccessFilter BLOCK_ALL_JAVA = null; + static ReflectionAccessFilter BLOCK_ALL_PLATFORM = null; + static ReflectionAccessFilter BLOCK_INACCESSIBLE_JAVA = null; + static public enum FilterResult + { + ALLOW, BLOCK_ALL, BLOCK_INACCESSIBLE, INDECISIVE; + private FilterResult() {} + } +} diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/ToNumberStrategy.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/ToNumberStrategy.java new file mode 100644 index 00000000000..1c6ccb23111 --- /dev/null +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/ToNumberStrategy.java @@ -0,0 +1,10 @@ +// Generated automatically from com.google.gson.ToNumberStrategy for testing purposes + +package com.google.gson; + +import com.google.gson.stream.JsonReader; + +public interface ToNumberStrategy +{ + Number readNumber(JsonReader p0); +} diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/TypeAdapter.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/TypeAdapter.java index 73e6ef993b7..cdd0d1185b1 100644 --- a/java/ql/test/stubs/gson-2.8.6/com/google/gson/TypeAdapter.java +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/TypeAdapter.java @@ -1,130 +1,23 @@ -/* - * Copyright (C) 2011 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Generated automatically from com.google.gson.TypeAdapter for testing purposes package com.google.gson; +import com.google.gson.JsonElement; import com.google.gson.stream.JsonReader; -import java.io.IOException; +import com.google.gson.stream.JsonWriter; import java.io.Reader; import java.io.Writer; -public abstract class TypeAdapter { - /** - * Converts {@code value} to a JSON document and writes it to {@code out}. - * Unlike Gson's similar {@link Gson#toJson(JsonElement, Appendable) toJson} - * method, this write is strict. Create a {@link - * JsonWriter#setLenient(boolean) lenient} {@code JsonWriter} and call - * {@link #write(com.google.gson.stream.JsonWriter, Object)} for lenient - * writing. - * - * @param value the Java object to convert. May be null. - * @since 2.2 - */ - public final void toJson(Writer out, T value) throws IOException { - } - - /** - * This wrapper method is used to make a type adapter null tolerant. In general, a - * type adapter is required to handle nulls in write and read methods. Here is how this - * is typically done:
    - *

       {@code
    -   *
    -   * Gson gson = new GsonBuilder().registerTypeAdapter(Foo.class,
    -   *   new TypeAdapter() {
    -   *     public Foo read(JsonReader in) throws IOException {
    -   *       if (in.peek() == JsonToken.NULL) {
    -   *         in.nextNull();
    -   *         return null;
    -   *       }
    -   *       // read a Foo from in and return it
    -   *     }
    -   *     public void write(JsonWriter out, Foo src) throws IOException {
    -   *       if (src == null) {
    -   *         out.nullValue();
    -   *         return;
    -   *       }
    -   *       // write src as JSON to out
    -   *     }
    -   *   }).create();
    -   * }
    - * You can avoid this boilerplate handling of nulls by wrapping your type adapter with - * this method. Here is how we will rewrite the above example: - *
       {@code
    -   *
    -   * Gson gson = new GsonBuilder().registerTypeAdapter(Foo.class,
    -   *   new TypeAdapter() {
    -   *     public Foo read(JsonReader in) throws IOException {
    -   *       // read a Foo from in and return it
    -   *     }
    -   *     public void write(JsonWriter out, Foo src) throws IOException {
    -   *       // write src as JSON to out
    -   *     }
    -   *   }.nullSafe()).create();
    -   * }
    - * Note that we didn't need to check for nulls in our type adapter after we used nullSafe. - */ - public final TypeAdapter nullSafe() { - return null; - } - - /** - * Converts {@code value} to a JSON document. Unlike Gson's similar {@link - * Gson#toJson(Object) toJson} method, this write is strict. Create a {@link - * JsonWriter#setLenient(boolean) lenient} {@code JsonWriter} and call - * {@link #write(com.google.gson.stream.JsonWriter, Object)} for lenient - * writing. - * - * @param value the Java object to convert. May be null. - * @since 2.2 - */ - public final String toJson(T value) { - return null; - } - - /** - * Reads one JSON value (an array, object, string, number, boolean or null) - * and converts it to a Java object. Returns the converted object. - * - * @return the converted Java object. May be null. - */ - public abstract T read(JsonReader in) throws IOException; - - /** - * Converts the JSON document in {@code in} to a Java object. Unlike Gson's - * similar {@link Gson#fromJson(java.io.Reader, Class) fromJson} method, this - * read is strict. Create a {@link JsonReader#setLenient(boolean) lenient} - * {@code JsonReader} and call {@link #read(JsonReader)} for lenient reading. - * - * @return the converted Java object. May be null. - * @since 2.2 - */ - public final T fromJson(Reader in) throws IOException { - return null; - } - - /** - * Converts the JSON document in {@code json} to a Java object. Unlike Gson's - * similar {@link Gson#fromJson(String, Class) fromJson} method, this read is - * strict. Create a {@link JsonReader#setLenient(boolean) lenient} {@code - * JsonReader} and call {@link #read(JsonReader)} for lenient reading. - * - * @return the converted Java object. May be null. - * @since 2.2 - */ - public final T fromJson(String json) throws IOException { - return null; - } +abstract public class TypeAdapter +{ + public TypeAdapter(){} + public abstract T read(JsonReader p0); + public abstract void write(JsonWriter p0, T p1); + public final JsonElement toJsonTree(T p0){ return null; } + public final String toJson(T p0){ return null; } + public final T fromJson(Reader p0){ return null; } + public final T fromJson(String p0){ return null; } + public final T fromJsonTree(JsonElement p0){ return null; } + public final TypeAdapter nullSafe(){ return null; } + public final void toJson(Writer p0, T p1){} } diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/TypeAdapterFactory.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/TypeAdapterFactory.java index d6cc8133712..6b3728f38b0 100644 --- a/java/ql/test/stubs/gson-2.8.6/com/google/gson/TypeAdapterFactory.java +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/TypeAdapterFactory.java @@ -1,28 +1,12 @@ -/* - * Copyright (C) 2011 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Generated automatically from com.google.gson.TypeAdapterFactory for testing purposes package com.google.gson; +import com.google.gson.Gson; +import com.google.gson.TypeAdapter; import com.google.gson.reflect.TypeToken; -public interface TypeAdapterFactory { - - /** - * Returns a type adapter for {@code type}, or null if this factory doesn't - * support {@code type}. - */ - TypeAdapter create(Gson gson, TypeToken type); -} \ No newline at end of file +public interface TypeAdapterFactory +{ + com.google.gson.TypeAdapter create(Gson p0, com.google.gson.reflect.TypeToken p1); +} diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/internal/Excluder.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/internal/Excluder.java new file mode 100644 index 00000000000..dc05b0477c5 --- /dev/null +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/internal/Excluder.java @@ -0,0 +1,25 @@ +// Generated automatically from com.google.gson.internal.Excluder for testing purposes + +package com.google.gson.internal; + +import com.google.gson.ExclusionStrategy; +import com.google.gson.Gson; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import java.lang.reflect.Field; + +public class Excluder implements Cloneable, TypeAdapterFactory +{ + protected Excluder clone(){ return null; } + public com.google.gson.TypeAdapter create(Gson p0, com.google.gson.reflect.TypeToken p1){ return null; } + public Excluder disableInnerClassSerialization(){ return null; } + public Excluder excludeFieldsWithoutExposeAnnotation(){ return null; } + public Excluder withExclusionStrategy(ExclusionStrategy p0, boolean p1, boolean p2){ return null; } + public Excluder withModifiers(int... p0){ return null; } + public Excluder withVersion(double p0){ return null; } + public Excluder(){} + public boolean excludeClass(Class p0, boolean p1){ return false; } + public boolean excludeField(Field p0, boolean p1){ return false; } + public static Excluder DEFAULT = null; +} diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/reflect/TypeToken.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/reflect/TypeToken.java index a35b2a45b85..ac3b84cb258 100644 --- a/java/ql/test/stubs/gson-2.8.6/com/google/gson/reflect/TypeToken.java +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/reflect/TypeToken.java @@ -1,50 +1,22 @@ -/* - * Copyright (C) 2008 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Generated automatically from com.google.gson.reflect.TypeToken for testing purposes package com.google.gson.reflect; -/** - * Represents a generic type {@code T}. Java doesn't yet provide a way to - * represent generic types, so this class does. Forces clients to create a - * subclass of this class which enables retrieval the type information even at - * runtime. - * - *

    For example, to create a type literal for {@code List}, you can - * create an empty anonymous inner class: - * - *

    - * {@code TypeToken> list = new TypeToken>() {};} - * - *

    This syntax cannot be used to create type literals that have wildcard - * parameters, such as {@code Class} or {@code List}. - * - * @author Bob Lee - * @author Sven Mawson - * @author Jesse Wilson - */ -public class TypeToken { +import java.lang.reflect.Type; - /** - * Constructs a new type literal. Derives represented class from type - * parameter. - * - *

    Clients create an empty anonymous subclass. Doing so embeds the type - * parameter in the anonymous class's type hierarchy so we can reconstitute it - * at runtime despite erasure. - */ - protected TypeToken() { - } -} \ No newline at end of file +public class TypeToken +{ + protected TypeToken(){} + public boolean isAssignableFrom(Class p0){ return false; } + public boolean isAssignableFrom(Type p0){ return false; } + public boolean isAssignableFrom(TypeToken p0){ return false; } + public final String toString(){ return null; } + public final Type getType(){ return null; } + public final boolean equals(Object p0){ return false; } + public final int hashCode(){ return 0; } + public final java.lang.Class getRawType(){ return null; } + public static com.google.gson.reflect.TypeToken get(java.lang.Class p0){ return null; } + public static TypeToken get(Type p0){ return null; } + public static TypeToken getArray(Type p0){ return null; } + public static TypeToken getParameterized(Type p0, Type... p1){ return null; } +} diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/stream/JsonReader.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/stream/JsonReader.java index 5d0d2ad112f..677d58d8cd8 100644 --- a/java/ql/test/stubs/gson-2.8.6/com/google/gson/stream/JsonReader.java +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/stream/JsonReader.java @@ -1,66 +1,33 @@ +// Generated automatically from com.google.gson.stream.JsonReader for testing purposes + package com.google.gson.stream; +import com.google.gson.stream.JsonToken; import java.io.Closeable; -import java.io.IOException; import java.io.Reader; -public class JsonReader implements Closeable { - public JsonReader(Reader in) { - } - - public final void setLenient(boolean lenient) { - } - - public final boolean isLenient() { - return false; - } - - public void beginArray() throws IOException { - } - - public void endArray() throws IOException { - } - - public void beginObject() throws IOException { - } - - public void endObject() throws IOException { - } - - public boolean hasNext() throws IOException { - return false; - } - - public String nextName() throws IOException { - return null; - } - - public String nextString() throws IOException { - return null; - } - - public boolean nextBoolean() throws IOException { - return false; - } - - public void nextNull() throws IOException { - } - - public double nextDouble() throws IOException { - return -1; - } - - public long nextLong() throws IOException { - return -1; - } - - public int nextInt() throws IOException { - return -1; - } - - public void close() throws IOException { - } - - public void skipValue() throws IOException { - } -} \ No newline at end of file +public class JsonReader implements Closeable +{ + protected JsonReader() {} + public JsonReader(Reader p0){} + public JsonToken peek(){ return null; } + public String getPath(){ return null; } + public String getPreviousPath(){ return null; } + public String nextName(){ return null; } + public String nextString(){ return null; } + public String toString(){ return null; } + public boolean hasNext(){ return false; } + public boolean nextBoolean(){ return false; } + public double nextDouble(){ return 0; } + public final boolean isLenient(){ return false; } + public final void setLenient(boolean p0){} + public int nextInt(){ return 0; } + public long nextLong(){ return 0; } + public void beginArray(){} + public void beginObject(){} + public void close(){} + public void endArray(){} + public void endObject(){} + public void nextNull(){} + public void skipValue(){} +} diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/stream/JsonToken.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/stream/JsonToken.java new file mode 100644 index 00000000000..fbb2e7ac463 --- /dev/null +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/stream/JsonToken.java @@ -0,0 +1,10 @@ +// Generated automatically from com.google.gson.stream.JsonToken for testing purposes + +package com.google.gson.stream; + + +public enum JsonToken +{ + BEGIN_ARRAY, BEGIN_OBJECT, BOOLEAN, END_ARRAY, END_DOCUMENT, END_OBJECT, NAME, NULL, NUMBER, STRING; + private JsonToken() {} +} diff --git a/java/ql/test/stubs/gson-2.8.6/com/google/gson/stream/JsonWriter.java b/java/ql/test/stubs/gson-2.8.6/com/google/gson/stream/JsonWriter.java new file mode 100644 index 00000000000..282343f0bed --- /dev/null +++ b/java/ql/test/stubs/gson-2.8.6/com/google/gson/stream/JsonWriter.java @@ -0,0 +1,36 @@ +// Generated automatically from com.google.gson.stream.JsonWriter for testing purposes + +package com.google.gson.stream; + +import java.io.Closeable; +import java.io.Flushable; +import java.io.Writer; + +public class JsonWriter implements Closeable, Flushable +{ + protected JsonWriter() {} + public JsonWriter beginArray(){ return null; } + public JsonWriter beginObject(){ return null; } + public JsonWriter endArray(){ return null; } + public JsonWriter endObject(){ return null; } + public JsonWriter jsonValue(String p0){ return null; } + public JsonWriter name(String p0){ return null; } + public JsonWriter nullValue(){ return null; } + public JsonWriter value(Boolean p0){ return null; } + public JsonWriter value(Number p0){ return null; } + public JsonWriter value(String p0){ return null; } + public JsonWriter value(boolean p0){ return null; } + public JsonWriter value(double p0){ return null; } + public JsonWriter value(float p0){ return null; } + public JsonWriter value(long p0){ return null; } + public JsonWriter(Writer p0){} + public boolean isLenient(){ return false; } + public final boolean getSerializeNulls(){ return false; } + public final boolean isHtmlSafe(){ return false; } + public final void setHtmlSafe(boolean p0){} + public final void setIndent(String p0){} + public final void setLenient(boolean p0){} + public final void setSerializeNulls(boolean p0){} + public void close(){} + public void flush(){} +} diff --git a/java/ql/test/stubs/javax-annotation-api-1.3.2/javax/annotation/PostConstruct.java b/java/ql/test/stubs/javax-annotation-api-1.3.2/javax/annotation/PostConstruct.java new file mode 100644 index 00000000000..a7fde6ae23b --- /dev/null +++ b/java/ql/test/stubs/javax-annotation-api-1.3.2/javax/annotation/PostConstruct.java @@ -0,0 +1,13 @@ +package javax.annotation; + +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.RetentionPolicy.RUNTIME; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +@Documented +@Retention(RUNTIME) +@Target(METHOD) +public @interface PostConstruct { +} diff --git a/java/ql/test/stubs/jenkins/hudson/FilePath.java b/java/ql/test/stubs/jenkins/hudson/FilePath.java new file mode 100644 index 00000000000..24a35901e35 --- /dev/null +++ b/java/ql/test/stubs/jenkins/hudson/FilePath.java @@ -0,0 +1,34 @@ +package hudson; + +import java.io.File; +import java.io.InputStream; +import java.nio.file.OpenOption; + +public class FilePath { + + public static InputStream newInputStreamDenyingSymlinkAsNeeded(File file, + String verificationRoot, OpenOption... openOption) { + return null; + } + + public static InputStream openInputStream(File file, OpenOption[] openOptions) { + return null; + } + + public InputStream read() { + return null; + } + + public InputStream read(FilePath rootPath, OpenOption... openOptions) { + return null; + } + + public InputStream readFromOffset(long offset) { + return null; + } + + public String readToString() { + return null; + } +} + diff --git a/java/ql/test/stubs/jenkins/hudson/Util.java b/java/ql/test/stubs/jenkins/hudson/Util.java new file mode 100644 index 00000000000..61e357abb52 --- /dev/null +++ b/java/ql/test/stubs/jenkins/hudson/Util.java @@ -0,0 +1,7 @@ +package hudson; + +public class Util { + public static String escape(String text) { + return null; + } +} diff --git a/java/ql/test/stubs/jenkins/hudson/model/Descriptor.java b/java/ql/test/stubs/jenkins/hudson/model/Descriptor.java new file mode 100644 index 00000000000..613ed31f665 --- /dev/null +++ b/java/ql/test/stubs/jenkins/hudson/model/Descriptor.java @@ -0,0 +1,5 @@ +package hudson.model; + +public abstract class Descriptor { + +} diff --git a/java/ql/test/stubs/playframework-2.6.x/play/api/mvc/Cookie.java b/java/ql/test/stubs/playframework-2.6.x/play/api/mvc/Cookie.java new file mode 100644 index 00000000000..1b8377af641 --- /dev/null +++ b/java/ql/test/stubs/playframework-2.6.x/play/api/mvc/Cookie.java @@ -0,0 +1,131 @@ +// Generated automatically from play.api.mvc.Cookie for testing purposes + +package play.api.mvc; + +import play.mvc.Http; + +public class Cookie { + protected Cookie() {} + + abstract static public class SameSite { + protected SameSite() {} + + public Http.Cookie.SameSite asJava() { + return null; + } + + public SameSite(String p0) {} + + public String value() { + return null; + } + + public boolean play$api$mvc$Cookie$SameSite$$matches(String p0) { + return false; + } + } + + public Http.Cookie asJava() { + return null; + } + + public Object productElement(int p0) { + return null; + } + + public String copy$default$1() { + return null; + } + + public String copy$default$2() { + return null; + } + + public String copy$default$4() { + return null; + } + + public String name() { + return null; + } + + public String path() { + return null; + } + + public String productPrefix() { + return null; + } + + public String toString() { + return null; + } + + public String value() { + return null; + } + + public boolean canEqual(Object p0) { + return false; + } + + public boolean copy$default$6() { + return false; + } + + public boolean copy$default$7() { + return false; + } + + public boolean equals(Object p0) { + return false; + } + + public boolean httpOnly() { + return false; + } + + public boolean secure() { + return false; + } + + public int hashCode() { + return 0; + } + + public int productArity() { + return 0; + } + + public static String $lessinit$greater$default$4() { + return null; + } + + public static String apply$default$4() { + return null; + } + + public static boolean $lessinit$greater$default$6() { + return false; + } + + public static boolean $lessinit$greater$default$7() { + return false; + } + + public static boolean apply$default$6() { + return false; + } + + public static boolean apply$default$7() { + return false; + } + + public static int DiscardedMaxAge() { + return 0; + } + + public static play.api.mvc.Cookie validatePrefix(play.api.mvc.Cookie p0) { + return null; + } +} diff --git a/java/ql/test/stubs/playframework-2.6.x/play/libs/ws/StandaloneWSClient.java b/java/ql/test/stubs/playframework-2.6.x/play/libs/ws/StandaloneWSClient.java new file mode 100644 index 00000000000..5a75fc16132 --- /dev/null +++ b/java/ql/test/stubs/playframework-2.6.x/play/libs/ws/StandaloneWSClient.java @@ -0,0 +1,9 @@ +package play.libs.ws; + +public class StandaloneWSClient { + + public StandaloneWSRequest url(String url) { + return null; + } + +} diff --git a/java/ql/test/stubs/playframework-2.6.x/play/libs/ws/StandaloneWSRequest.java b/java/ql/test/stubs/playframework-2.6.x/play/libs/ws/StandaloneWSRequest.java new file mode 100644 index 00000000000..2266d2cc24a --- /dev/null +++ b/java/ql/test/stubs/playframework-2.6.x/play/libs/ws/StandaloneWSRequest.java @@ -0,0 +1,5 @@ +package play.libs.ws; + +public class StandaloneWSRequest { + +} diff --git a/java/ql/test/stubs/playframework-2.6.x/play/libs/ws/WSClient.java b/java/ql/test/stubs/playframework-2.6.x/play/libs/ws/WSClient.java new file mode 100644 index 00000000000..22b3546dddf --- /dev/null +++ b/java/ql/test/stubs/playframework-2.6.x/play/libs/ws/WSClient.java @@ -0,0 +1,9 @@ +package play.libs.ws; + +public class WSClient { + + public WSRequest url(String url) { + return null; + } + +} diff --git a/java/ql/test/stubs/playframework-2.6.x/play/libs/ws/WSRequest.java b/java/ql/test/stubs/playframework-2.6.x/play/libs/ws/WSRequest.java new file mode 100644 index 00000000000..8dbd4521b06 --- /dev/null +++ b/java/ql/test/stubs/playframework-2.6.x/play/libs/ws/WSRequest.java @@ -0,0 +1,5 @@ +package play.libs.ws; + +public class WSRequest { + +} diff --git a/java/ql/test/stubs/playframework-2.6.x/play/mvc/Http.java b/java/ql/test/stubs/playframework-2.6.x/play/mvc/Http.java index 99e22cb5987..b4668362e6c 100644 --- a/java/ql/test/stubs/playframework-2.6.x/play/mvc/Http.java +++ b/java/ql/test/stubs/playframework-2.6.x/play/mvc/Http.java @@ -1,5 +1,6 @@ package play.mvc; +import akka.util.ByteString; import com.fasterxml.jackson.databind.JsonNode; import java.io.File; import java.net.URI; @@ -32,24 +33,12 @@ public class Http { public Context(Request request, JavaContextComponents components) {} - public Context( - Long id, - play.api.mvc.RequestHeader header, - Request request, - Map sessionData, - Map flashData, - Map args, + public Context(Long id, play.api.mvc.RequestHeader header, Request request, + Map sessionData, Map flashData, Map args, JavaContextComponents components) {} - public Context( - Long id, - play.api.mvc.RequestHeader header, - Request request, - Response response, - Session session, - Flash flash, - Map args, - JavaContextComponents components) {} + public Context(Long id, play.api.mvc.RequestHeader header, Request request, Response response, + Session session, Flash flash, Map args, JavaContextComponents components) {} public Long id() { return 0L; @@ -328,8 +317,8 @@ public class Http { return null; } - public RequestBuilder bodyMultipart( - List data, Files.TemporaryFileCreator temporaryFileCreator, String mat) { + public RequestBuilder bodyMultipart(List data, + Files.TemporaryFileCreator temporaryFileCreator, String mat) { return null; } @@ -536,6 +525,10 @@ public class Http { public abstract static class RawBuffer { + public abstract ByteString asBytes(); + + public abstract ByteString asBytes(int maxLength); + public abstract Long size(); public abstract File asFile(); @@ -559,7 +552,8 @@ public class Http { } } - public interface Part {} + public interface Part { + } public static class FilePart implements Part { @@ -577,9 +571,17 @@ public class Http { return ""; } + public String getDispositionType() { + return ""; + } + public A getFile() { return null; } + + public A getRef() { + return null; + } } public static class DataPart { @@ -608,6 +610,10 @@ public class Http { public RequestBody(Object body) {} + public ByteString asBytes() { + return null; + } + public MultipartFormData asMultipartFormData() { return null; } @@ -640,6 +646,10 @@ public class Http { return null; } + public Optional parseJson(Class clazz) { + return null; + } + public String toString() { return ""; } @@ -657,15 +667,8 @@ public class Http { public void setContentType(String contentType) {} @Deprecated - public void setCookie( - String name, - String value, - Integer maxAge, - String path, - String domain, - boolean secure, - boolean httpOnly, - SameSite sameSite) {} + public void setCookie(String name, String value, Integer maxAge, String path, String domain, + boolean secure, boolean httpOnly, SameSite sameSite) {} public void setCookie(Cookie cookie) {} @@ -734,25 +737,12 @@ public class Http { public static class Cookie { - public Cookie( - String name, - String value, - Integer maxAge, - String path, - String domain, - boolean secure, - boolean httpOnly, - SameSite sameSite) {} + public Cookie(String name, String value, Integer maxAge, String path, String domain, + boolean secure, boolean httpOnly, SameSite sameSite) {} @Deprecated - public Cookie( - String name, - String value, - Integer maxAge, - String path, - String domain, - boolean secure, - boolean httpOnly) {} + public Cookie(String name, String value, Integer maxAge, String path, String domain, + boolean secure, boolean httpOnly) {} public static CookieBuilder builder(String name, String value) { return null; @@ -791,9 +781,7 @@ public class Http { } public enum SameSite { - STRICT("Strict"), - LAX("Lax"), - NONE("None"); + STRICT("Strict"), LAX("Lax"), NONE("None"); SameSite(String value) {} @@ -856,6 +844,8 @@ public class Http { public interface Cookies extends Iterable { Cookie get(String name); + + Optional getCookie(String name); } public interface HeaderNames { diff --git a/java/ql/test/stubs/serialkiller-4.0.0/org/nibblesec/tools/SerialKiller.java b/java/ql/test/stubs/serialkiller-4.0.0/org/nibblesec/tools/SerialKiller.java new file mode 100644 index 00000000000..fc59ccd538d --- /dev/null +++ b/java/ql/test/stubs/serialkiller-4.0.0/org/nibblesec/tools/SerialKiller.java @@ -0,0 +1,23 @@ +/* + * SerialKiller.java + * + * Copyright (c) 2015-2016 Luca Carettoni + * + * SerialKiller is an easy-to-use look-ahead Java deserialization library + * to secure application from untrusted input. When Java serialization is + * used to exchange information between a client and a server, attackers + * can replace the legitimate serialized stream with malicious data. + * SerialKiller inspects Java classes during naming resolution and allows + * a combination of blacklisting/whitelisting to secure your application. + * + * Dual-Licensed Software: Apache v2.0 and GPL v2.0 + */ +package org.nibblesec.tools; + +import java.io.ObjectInputStream; +import java.io.InputStream; +import java.io.IOException; + +public class SerialKiller extends ObjectInputStream { + public SerialKiller(InputStream inputStream, String configFile) throws IOException {} +} \ No newline at end of file diff --git a/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/DataBoundConstructor.java b/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/DataBoundConstructor.java new file mode 100644 index 00000000000..6909171def8 --- /dev/null +++ b/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/DataBoundConstructor.java @@ -0,0 +1,13 @@ +package org.kohsuke.stapler; + +import static java.lang.annotation.ElementType.CONSTRUCTOR; +import static java.lang.annotation.RetentionPolicy.RUNTIME; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +@Retention(RUNTIME) +@Target(CONSTRUCTOR) +@Documented +public @interface DataBoundConstructor { +} diff --git a/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/DataBoundResolvable.java b/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/DataBoundResolvable.java new file mode 100644 index 00000000000..0fc9cffd0aa --- /dev/null +++ b/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/DataBoundResolvable.java @@ -0,0 +1,4 @@ +package org.kohsuke.stapler; + +public interface DataBoundResolvable { +} diff --git a/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/DataBoundSetter.java b/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/DataBoundSetter.java new file mode 100644 index 00000000000..ff11084fcbd --- /dev/null +++ b/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/DataBoundSetter.java @@ -0,0 +1,14 @@ +package org.kohsuke.stapler; + +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.RetentionPolicy.RUNTIME; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +@Retention(RUNTIME) +@Target({METHOD, FIELD}) +@Documented +public @interface DataBoundSetter { +} diff --git a/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/InjectedParameter.java b/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/InjectedParameter.java new file mode 100644 index 00000000000..1674e667233 --- /dev/null +++ b/java/ql/test/stubs/stapler-1.263/org/kohsuke/stapler/InjectedParameter.java @@ -0,0 +1,13 @@ +package org.kohsuke.stapler; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; +import static java.lang.annotation.RetentionPolicy.RUNTIME; +import static java.lang.annotation.ElementType.ANNOTATION_TYPE;; + +@Retention(RUNTIME) +@Target(ANNOTATION_TYPE) +@Documented +public @interface InjectedParameter { +} diff --git a/java/ql/test/utils/modelgenerator/dataflow/CaptureSinkModels.expected b/java/ql/test/utils/modelgenerator/dataflow/CaptureSinkModels.expected index b0c363c1b4a..799a1a37dd4 100644 --- a/java/ql/test/utils/modelgenerator/dataflow/CaptureSinkModels.expected +++ b/java/ql/test/utils/modelgenerator/dataflow/CaptureSinkModels.expected @@ -1,5 +1,5 @@ -| p;PrivateFlowViaPublicInterface$SPI;true;openStream;();;Argument[this];create-file;df-generated | -| p;Sinks;true;copyFileToDirectory;(Path,Path,CopyOption[]);;Argument[0];read-file;df-generated | -| p;Sinks;true;copyFileToDirectory;(Path,Path,CopyOption[]);;Argument[1];create-file;df-generated | -| p;Sinks;true;readUrl;(URL,Charset);;Argument[0];open-url;df-generated | -| p;Sources;true;readUrl;(URL);;Argument[0];open-url;df-generated | +| p;PrivateFlowViaPublicInterface$SPI;true;openStream;();;Argument[this];path-injection;df-generated | +| p;Sinks;true;copyFileToDirectory;(Path,Path,CopyOption[]);;Argument[0];path-injection;df-generated | +| p;Sinks;true;copyFileToDirectory;(Path,Path,CopyOption[]);;Argument[1];path-injection;df-generated | +| p;Sinks;true;readUrl;(URL,Charset);;Argument[0];request-forgery;df-generated | +| p;Sources;true;readUrl;(URL);;Argument[0];request-forgery;df-generated | diff --git a/javascript/extractor/lib/typescript/package.json b/javascript/extractor/lib/typescript/package.json index 0c8de4f1bbc..3190b683d34 100644 --- a/javascript/extractor/lib/typescript/package.json +++ b/javascript/extractor/lib/typescript/package.json @@ -2,7 +2,7 @@ "name": "typescript-parser-wrapper", "private": true, "dependencies": { - "typescript": "5.0.2" + "typescript": "5.1.3" }, "scripts": { "build": "tsc --project tsconfig.json", diff --git a/javascript/extractor/lib/typescript/src/main.ts b/javascript/extractor/lib/typescript/src/main.ts index 2e9f26b6953..2594f4e35f5 100644 --- a/javascript/extractor/lib/typescript/src/main.ts +++ b/javascript/extractor/lib/typescript/src/main.ts @@ -579,7 +579,6 @@ function handleOpenProjectCommand(command: OpenProjectCommand) { // inverse mapping, nor a way to enumerate all known module names. So we discover all // modules on the type roots (usually "node_modules/@types" but this is configurable). let typeRoots = ts.getEffectiveTypeRoots(config.options, { - directoryExists: (path) => ts.sys.directoryExists(path), getCurrentDirectory: () => basePath, }); diff --git a/javascript/extractor/lib/typescript/yarn.lock b/javascript/extractor/lib/typescript/yarn.lock index 88d32ae6b3a..355c257cf69 100644 --- a/javascript/extractor/lib/typescript/yarn.lock +++ b/javascript/extractor/lib/typescript/yarn.lock @@ -7,7 +7,7 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.3.tgz#f0b991c32cfc6a4e7f3399d6cb4b8cf9a0315014" integrity sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw== -typescript@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.2.tgz#891e1a90c5189d8506af64b9ef929fca99ba1ee5" - integrity sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw== +typescript@5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.3.tgz#8d84219244a6b40b6fb2b33cc1c062f715b9e826" + integrity sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw== diff --git a/javascript/extractor/src/com/semmle/js/extractor/Main.java b/javascript/extractor/src/com/semmle/js/extractor/Main.java index 4f8bb2c1ced..2a188676924 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/Main.java +++ b/javascript/extractor/src/com/semmle/js/extractor/Main.java @@ -41,7 +41,7 @@ public class Main { * A version identifier that should be updated every time the extractor changes in such a way that * it may produce different tuples for the same file under the same {@link ExtractorConfig}. */ - public static final String EXTRACTOR_VERSION = "2023-03-16"; + public static final String EXTRACTOR_VERSION = "2023-04-19"; public static final Pattern NEWLINE = Pattern.compile("\n"); diff --git a/javascript/extractor/src/com/semmle/ts/extractor/TypeScriptASTConverter.java b/javascript/extractor/src/com/semmle/ts/extractor/TypeScriptASTConverter.java index e34d552b777..7b68106bb3f 100644 --- a/javascript/extractor/src/com/semmle/ts/extractor/TypeScriptASTConverter.java +++ b/javascript/extractor/src/com/semmle/ts/extractor/TypeScriptASTConverter.java @@ -1552,8 +1552,13 @@ public class TypeScriptASTConverter { } private Node convertJsxAttribute(JsonObject node, SourceLocation loc) throws ParseError { + JsonObject nameNode = node.get("name").getAsJsonObject(); + if (nameNode.get("name") != null) { + // it's a namespaced attribute + nameNode = nameNode.get("name").getAsJsonObject(); + } return new JSXAttribute( - loc, convertJSXName(convertChild(node, "name")), convertChild(node, "initializer")); + loc, convertJSXName(((Expression)convertNode(nameNode, null))), convertChild(node, "initializer")); // 2 } private Node convertJsxClosingElement(JsonObject node, SourceLocation loc) throws ParseError { diff --git a/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/ATMConfig.qll b/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/ATMConfig.qll index 5532c8d4726..6836e14e72c 100644 --- a/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/ATMConfig.qll +++ b/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/ATMConfig.qll @@ -166,6 +166,3 @@ abstract class AtmConfig extends JS::TaintTracking::Configuration { ) } } - -/** DEPRECATED: Alias for AtmConfig */ -deprecated class ATMConfig = AtmConfig; diff --git a/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/FunctionBodyFeatures.qll b/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/FunctionBodyFeatures.qll index 62531a9d423..0fc660796c4 100644 --- a/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/FunctionBodyFeatures.qll +++ b/javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/FunctionBodyFeatures.qll @@ -41,9 +41,6 @@ AstNode getAnAstNodeToFeaturize(Function f) { not result = f.getIdentifier() } -/** DEPRECATED: Alias for getAnAstNodeToFeaturize */ -deprecated ASTNode getAnASTNodeToFeaturize(Function f) { result = getAnAstNodeToFeaturize(f) } - /** * Gets a function that contains the endpoint. * @@ -130,9 +127,6 @@ AstNode getAnAstNodeWithAFeature(Function f) { result = getAnAstNodeToFeaturize(f) } -/** DEPRECATED: Alias for getAnAstNodeWithAFeature */ -deprecated ASTNode getAnASTNodeWithAFeature(Function f) { result = getAnAstNodeWithAFeature(f) } - /** Returns the number of source-code characters in a function. */ int getNumCharsInFunction(Function f) { result = diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 24e199a69d7..47c4130c3af 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,29 @@ +## 0.6.3 + +### Major Analysis Improvements + +* Added support for TypeScript 5.1. + +### Minor Analysis Improvements + +* Deleted many deprecated predicates and classes with uppercase `XML`, `JSON`, `URL`, `API`, etc. in their names. Use the PascalCased versions instead. +* Deleted the deprecated `localTaintStep` predicate from `DataFlow.qll`. +* Deleted the deprecated `stringStep`, and `localTaintStep` predicates from `TaintTracking.qll`. +* Deleted many modules that started with a lowercase letter. Use the versions that start with an uppercase letter instead. +* Deleted the deprecated `HtmlInjectionConfiguration` and `JQueryHtmlOrSelectorInjectionConfiguration` classes from `DomBasedXssQuery.qll`, use `Configuration` instead. +* Deleted the deprecated `DefiningIdentifier` class and the `Definitions.qll` file it was in. Use `SsaDefinition` instead. +* Deleted the deprecated `definitionReaches`, `localDefinitionReaches`, `getAPseudoDefinitionInput`, `nextDefAfter`, and `localDefinitionOverwrites` predicates from `DefUse.qll`. +* Updated the following JavaScript sink kind names. Any custom data extensions that use these sink kinds will need to be updated accordingly in order to continue working. + * `command-line-injection` to `command-injection` + * `credentials[kind]` to `credentials-kind` +* Added a support of sub modules in `node_modules`. + +## 0.6.2 + +### Minor Analysis Improvements + +* Improved the queries for injection vulnerabilities in GitHub Actions workflows (`js/actions/command-injection` and `js/actions/pull-request-target`) and the associated library `semmle.javascript.Actions`. These now support steps defined in composite actions, in addition to steps defined in Actions workflow files. It supports more potentially untrusted input values. Additionally to the shell injections it now also detects injections in `actions/github-script`. It also detects simple injections from user controlled `${{ env.name }}`. Additionally to the `yml` extension now it also supports workflows with the `yaml` extension. + ## 0.6.1 ### Major Analysis Improvements diff --git a/javascript/ql/lib/Expressions/DOMProperties.qll b/javascript/ql/lib/Expressions/DOMProperties.qll index 17f53f8a366..fdb7e6024c2 100644 --- a/javascript/ql/lib/Expressions/DOMProperties.qll +++ b/javascript/ql/lib/Expressions/DOMProperties.qll @@ -4,9 +4,6 @@ import semmle.javascript.Externs -/** DEPRECATED: Alias for isDomRootType */ -deprecated predicate isDOMRootType = isDomRootType/1; - /** Holds if `p` is declared as a property of a DOM class or interface. */ pragma[nomagic] predicate isDomProperty(string p) { @@ -14,6 +11,3 @@ predicate isDomProperty(string p) { isDomRootType(emd.getDeclaringType().getASupertype*()) ) } - -/** DEPRECATED: Alias for isDomProperty */ -deprecated predicate isDOMProperty = isDomProperty/1; diff --git a/javascript/ql/lib/change-notes/2023-04-30-npm-submodule.md b/javascript/ql/lib/change-notes/2023-04-30-npm-submodule.md deleted file mode 100644 index 5ef95cf7d58..00000000000 --- a/javascript/ql/lib/change-notes/2023-04-30-npm-submodule.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- - -- Added a support of sub modules in `node_modules`. diff --git a/javascript/ql/lib/change-notes/2023-04-03-gh-injection.md b/javascript/ql/lib/change-notes/released/0.6.2.md similarity index 85% rename from javascript/ql/lib/change-notes/2023-04-03-gh-injection.md rename to javascript/ql/lib/change-notes/released/0.6.2.md index 63e913eb694..f97f6633c49 100644 --- a/javascript/ql/lib/change-notes/2023-04-03-gh-injection.md +++ b/javascript/ql/lib/change-notes/released/0.6.2.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- -* Improved the queries for injection vulnerabilities in GitHub Actions workflows (`js/actions/command-injection` and `js/actions/pull-request-target`) and the associated library `semmle.javascript.Actions`. These now support steps defined in composite actions, in addition to steps defined in Actions workflow files. It supports more potentially untrusted input values. Additionally to the shell injections it now also detects injections in `actions/github-script`. It also detects simple injections from user controlled `${{ env.name }}`. Additionally to the `yml` extension now it also supports workflows with the `yaml` extension. \ No newline at end of file +## 0.6.2 + +### Minor Analysis Improvements + +* Improved the queries for injection vulnerabilities in GitHub Actions workflows (`js/actions/command-injection` and `js/actions/pull-request-target`) and the associated library `semmle.javascript.Actions`. These now support steps defined in composite actions, in addition to steps defined in Actions workflow files. It supports more potentially untrusted input values. Additionally to the shell injections it now also detects injections in `actions/github-script`. It also detects simple injections from user controlled `${{ env.name }}`. Additionally to the `yml` extension now it also supports workflows with the `yaml` extension. diff --git a/javascript/ql/lib/change-notes/released/0.6.3.md b/javascript/ql/lib/change-notes/released/0.6.3.md new file mode 100644 index 00000000000..c87e2deb626 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/0.6.3.md @@ -0,0 +1,19 @@ +## 0.6.3 + +### Major Analysis Improvements + +* Added support for TypeScript 5.1. + +### Minor Analysis Improvements + +* Deleted many deprecated predicates and classes with uppercase `XML`, `JSON`, `URL`, `API`, etc. in their names. Use the PascalCased versions instead. +* Deleted the deprecated `localTaintStep` predicate from `DataFlow.qll`. +* Deleted the deprecated `stringStep`, and `localTaintStep` predicates from `TaintTracking.qll`. +* Deleted many modules that started with a lowercase letter. Use the versions that start with an uppercase letter instead. +* Deleted the deprecated `HtmlInjectionConfiguration` and `JQueryHtmlOrSelectorInjectionConfiguration` classes from `DomBasedXssQuery.qll`, use `Configuration` instead. +* Deleted the deprecated `DefiningIdentifier` class and the `Definitions.qll` file it was in. Use `SsaDefinition` instead. +* Deleted the deprecated `definitionReaches`, `localDefinitionReaches`, `getAPseudoDefinitionInput`, `nextDefAfter`, and `localDefinitionOverwrites` predicates from `DefUse.qll`. +* Updated the following JavaScript sink kind names. Any custom data extensions that use these sink kinds will need to be updated accordingly in order to continue working. + * `command-line-injection` to `command-injection` + * `credentials[kind]` to `credentials-kind` +* Added a support of sub modules in `node_modules`. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 80fb0899f64..b7dafe32c5d 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.1 +lastReleaseVersion: 0.6.3 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 4b0fa8d4ffb..bd3f17d627f 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,11 +1,12 @@ name: codeql/javascript-all -version: 0.6.2-dev +version: 0.6.4-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript library: true upgrades: upgrades dependencies: + codeql/mad: ${workspace} codeql/regex: ${workspace} codeql/tutorial: ${workspace} codeql/util: ${workspace} diff --git a/javascript/ql/lib/semmle/javascript/AST.qll b/javascript/ql/lib/semmle/javascript/AST.qll index 895922f952f..e4a1cf944c4 100644 --- a/javascript/ql/lib/semmle/javascript/AST.qll +++ b/javascript/ql/lib/semmle/javascript/AST.qll @@ -184,9 +184,6 @@ class AstNode extends @ast_node, NodeInStmtContainer { } } -/** DEPRECATED: Alias for AstNode */ -deprecated class ASTNode = AstNode; - /** * Holds if the given file is a `.d.ts` file. */ @@ -339,9 +336,6 @@ class EventHandlerCode extends @event_handler, CodeInAttribute { } */ class JavaScriptUrl extends @javascript_url, CodeInAttribute { } -/** DEPRECATED: Alias for JavaScriptUrl */ -deprecated class JavaScriptURL = JavaScriptUrl; - /** * A toplevel syntactic entity containing Closure-style externs definitions. * diff --git a/javascript/ql/lib/semmle/javascript/ApiGraphs.qll b/javascript/ql/lib/semmle/javascript/ApiGraphs.qll index c543607e73f..080a1bc1209 100644 --- a/javascript/ql/lib/semmle/javascript/ApiGraphs.qll +++ b/javascript/ql/lib/semmle/javascript/ApiGraphs.qll @@ -636,9 +636,6 @@ module API { /** Gets an API-node for this entry point. */ API::Node getANode() { result = root().getASuccessor(Label::entryPoint(this)) } - - /** DEPRECATED. Use `getANode()` instead. */ - deprecated API::Node getNode() { result = this.getANode() } } /** diff --git a/javascript/ql/lib/semmle/javascript/DefUse.qll b/javascript/ql/lib/semmle/javascript/DefUse.qll index 8ad710fdc57..a9d021f939e 100644 --- a/javascript/ql/lib/semmle/javascript/DefUse.qll +++ b/javascript/ql/lib/semmle/javascript/DefUse.qll @@ -243,71 +243,3 @@ class VarUse extends ControlFlowNode, @varref instanceof RValue { */ SsaVariable getSsaVariable() { result.getAUse() = this } } - -/** - * Holds if the definition of `v` in `def` reaches `use` along some control flow path - * without crossing another definition of `v`. - * DEPRECATED: Use the `SSA.qll` library instead. - */ -deprecated predicate definitionReaches(Variable v, VarDef def, VarUse use) { - v = use.getVariable() and - exists(BasicBlock bb, int i, int next | next = nextDefAfter(bb, v, i, def) | - exists(int j | j in [i + 1 .. next - 1] | bb.useAt(j, v, use)) - or - exists(BasicBlock succ | succ = bb.getASuccessor() | - succ.isLiveAtEntry(v, use) and - next = bb.length() - ) - ) -} - -/** - * Holds if the definition of local variable `v` in `def` reaches `use` along some control flow path - * without crossing another definition of `v`. - * DEPRECATED: Use the `SSA.qll` library instead. - */ -deprecated predicate localDefinitionReaches(LocalVariable v, VarDef def, VarUse use) { - exists(SsaExplicitDefinition ssa | - ssa.defines(def, v) and - ssa = getAPseudoDefinitionInput*(use.getSsaVariable().getDefinition()) - ) -} - -/** - * Holds if `nd` is a pseudo-definition and the result is one of its inputs. - * DEPRECATED: Use the `SSA.qll` library instead. - */ -deprecated private SsaDefinition getAPseudoDefinitionInput(SsaDefinition nd) { - result = nd.(SsaPseudoDefinition).getAnInput() -} - -/** - * Holds if `d` is a definition of `v` at index `i` in `bb`, and the result is the next index - * in `bb` after `i` at which the same variable is defined, or `bb.length()` if there is none. - */ -deprecated private int nextDefAfter(BasicBlock bb, Variable v, int i, VarDef d) { - bb.defAt(i, v, d) and - result = - min(int jj | - (bb.defAt(jj, v, _) or jj = bb.length()) and - jj > i - ) -} - -/** - * Holds if the `later` definition of `v` could overwrite its `earlier` definition. - * - * This is the case if there is a path from `earlier` to `later` that does not cross - * another definition of `v`. - * DEPRECATED: Use the `SSA.qll` library instead. - */ -deprecated predicate localDefinitionOverwrites(LocalVariable v, VarDef earlier, VarDef later) { - exists(BasicBlock bb, int next | next = nextDefAfter(bb, v, _, earlier) | - bb.defAt(next, v, later) - or - exists(BasicBlock succ | succ = bb.getASuccessor() | - succ.localMayBeOverwritten(v, later) and - next = bb.length() - ) - ) -} diff --git a/javascript/ql/lib/semmle/javascript/E4X.qll b/javascript/ql/lib/semmle/javascript/E4X.qll index 47f1b8e4189..cd112d60664 100644 --- a/javascript/ql/lib/semmle/javascript/E4X.qll +++ b/javascript/ql/lib/semmle/javascript/E4X.qll @@ -16,9 +16,6 @@ module E4X { */ class XmlAnyName extends Expr, @e4x_xml_anyname { } - /** DEPRECATED: Alias for XmlAnyName */ - deprecated class XMLAnyName = XmlAnyName; - /** * An E4X qualified identifier. * @@ -57,9 +54,6 @@ module E4X { } } - /** DEPRECATED: Alias for XmlQualifiedIdentifier */ - deprecated class XMLQualifiedIdentifier = XmlQualifiedIdentifier; - /** * An E4X attribute selector. * @@ -89,9 +83,6 @@ module E4X { } } - /** DEPRECATED: Alias for XmlAttributeSelector */ - deprecated class XMLAttributeSelector = XmlAttributeSelector; - /** * An E4X filter expression. * @@ -117,9 +108,6 @@ module E4X { } } - /** DEPRECATED: Alias for XmlFilterExpression */ - deprecated class XMLFilterExpression = XmlFilterExpression; - /** * An E4X "dot-dot" expression. * @@ -144,7 +132,4 @@ module E4X { result = this.getBase().getFirstControlFlowNode() } } - - /** DEPRECATED: Alias for XmlDotDotExpression */ - deprecated class XMLDotDotExpression = XmlDotDotExpression; } diff --git a/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll b/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll index e9828e5bf25..35ba8cfe601 100644 --- a/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll +++ b/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll @@ -234,7 +234,8 @@ module AccessPath { or baseName = fromRhs(write.getBase(), root) or - baseName = fromRhs(GetLaterAccess::getLaterBaseAccess(write), root) + baseName = fromRhs(GetLaterAccess::getLaterBaseAccess(write), root) and + not baseName.matches("%.%") ) or exists(GlobalVariable var | diff --git a/javascript/ql/lib/semmle/javascript/JSON.qll b/javascript/ql/lib/semmle/javascript/JSON.qll index c0d78c078da..1e56fc00657 100644 --- a/javascript/ql/lib/semmle/javascript/JSON.qll +++ b/javascript/ql/lib/semmle/javascript/JSON.qll @@ -61,9 +61,6 @@ class JsonValue extends @json_value, Locatable { override string getAPrimaryQlClass() { result = "JsonValue" } } -/** DEPRECATED: Alias for JsonValue */ -deprecated class JSONValue = JsonValue; - /** * A JSON-encoded primitive value. * @@ -85,9 +82,6 @@ abstract class JsonPrimitiveValue extends JsonValue { string getRawValue() { json_literals(_, result, this) } } -/** DEPRECATED: Alias for JsonPrimitiveValue */ -deprecated class JSONPrimitiveValue = JsonPrimitiveValue; - /** * A JSON-encoded null value. * @@ -101,9 +95,6 @@ class JsonNull extends @json_null, JsonPrimitiveValue { override string getAPrimaryQlClass() { result = "JsonNull" } } -/** DEPRECATED: Alias for JsonNull */ -deprecated class JSONNull = JsonNull; - /** * A JSON-encoded Boolean value. * @@ -118,9 +109,6 @@ class JsonBoolean extends @json_boolean, JsonPrimitiveValue { override string getAPrimaryQlClass() { result = "JsonBoolean" } } -/** DEPRECATED: Alias for JsonBoolean */ -deprecated class JSONBoolean = JsonBoolean; - /** * A JSON-encoded number. * @@ -135,9 +123,6 @@ class JsonNumber extends @json_number, JsonPrimitiveValue { override string getAPrimaryQlClass() { result = "JsonNumber" } } -/** DEPRECATED: Alias for JsonNumber */ -deprecated class JSONNumber = JsonNumber; - /** * A JSON-encoded string value. * @@ -151,9 +136,6 @@ class JsonString extends @json_string, JsonPrimitiveValue { override string getAPrimaryQlClass() { result = "JsonString" } } -/** DEPRECATED: Alias for JsonString */ -deprecated class JSONString = JsonString; - /** * A JSON-encoded array. * @@ -170,9 +152,6 @@ class JsonArray extends @json_array, JsonValue { string getElementStringValue(int i) { result = this.getElementValue(i).getStringValue() } } -/** DEPRECATED: Alias for JsonArray */ -deprecated class JSONArray = JsonArray; - /** * A JSON-encoded object. * @@ -189,9 +168,6 @@ class JsonObject extends @json_object, JsonValue { string getPropStringValue(string name) { result = this.getPropValue(name).getStringValue() } } -/** DEPRECATED: Alias for JsonObject */ -deprecated class JSONObject = JsonObject; - /** * An error reported by the JSON parser. */ @@ -200,6 +176,3 @@ class JsonParseError extends @json_parse_error, Error { override string getMessage() { json_errors(this, result) } } - -/** DEPRECATED: Alias for JsonParseError */ -deprecated class JSONParseError = JsonParseError; diff --git a/javascript/ql/lib/semmle/javascript/JSX.qll b/javascript/ql/lib/semmle/javascript/JSX.qll index fa8f79fb2bb..6fd7c775d4e 100644 --- a/javascript/ql/lib/semmle/javascript/JSX.qll +++ b/javascript/ql/lib/semmle/javascript/JSX.qll @@ -30,9 +30,6 @@ class JsxNode extends Expr, @jsx_element { override string getAPrimaryQlClass() { result = "JsxNode" } } -/** DEPRECATED: Alias for JsxNode */ -deprecated class JSXNode = JsxNode; - /** * A JSX element. * @@ -81,9 +78,6 @@ class JsxElement extends JsxNode { deprecated predicate isHTMLElement() { this.isHtmlElement() } } -/** DEPRECATED: Alias for JsxElement */ -deprecated class JSXElement = JsxElement; - /** * A JSX fragment. * @@ -105,9 +99,6 @@ class JsxFragment extends JsxNode { override string getAPrimaryQlClass() { result = "JsxFragment" } } -/** DEPRECATED: Alias for JsxFragment */ -deprecated class JSXFragment = JsxFragment; - /** * An attribute of a JSX element, including spread attributes. * @@ -154,9 +145,6 @@ class JsxAttribute extends AstNode, @jsx_attribute { override string getAPrimaryQlClass() { result = "JsxAttribute" } } -/** DEPRECATED: Alias for JsxAttribute */ -deprecated class JSXAttribute = JsxAttribute; - /** * A spread attribute of a JSX element. * @@ -175,9 +163,6 @@ class JsxSpreadAttribute extends JsxAttribute { } } -/** DEPRECATED: Alias for JsxSpreadAttribute */ -deprecated class JSXSpreadAttribute = JsxSpreadAttribute; - /** * A namespace-qualified name such as `n:a`. * @@ -201,9 +186,6 @@ class JsxQualifiedName extends Expr, @jsx_qualified_name { override string getAPrimaryQlClass() { result = "JsxQualifiedName" } } -/** DEPRECATED: Alias for JsxQualifiedName */ -deprecated class JSXQualifiedName = JsxQualifiedName; - /** * A name of an JSX element or attribute (which is * always an identifier, a dot expression, or a qualified @@ -244,9 +226,6 @@ class JsxName extends Expr { } } -/** DEPRECATED: Alias for JsxName */ -deprecated class JSXName = JsxName; - /** * An interpolating expression that interpolates nothing. * @@ -260,9 +239,6 @@ class JsxEmptyExpr extends Expr, @jsx_empty_expr { override string getAPrimaryQlClass() { result = "JsxEmptyExpr" } } -/** DEPRECATED: Alias for JsxEmptyExpr */ -deprecated class JSXEmptyExpr = JsxEmptyExpr; - /** * A legacy `@jsx` pragma. * @@ -284,6 +260,3 @@ class JsxPragma extends JSDocTag { /** DEPRECATED: Alias for getDomName */ deprecated string getDOMName() { result = this.getDomName() } } - -/** DEPRECATED: Alias for JsxPragma */ -deprecated class JSXPragma = JsxPragma; diff --git a/javascript/ql/lib/semmle/javascript/JsonStringifiers.qll b/javascript/ql/lib/semmle/javascript/JsonStringifiers.qll index 0ca2ec2ac2e..d128dd9a653 100644 --- a/javascript/ql/lib/semmle/javascript/JsonStringifiers.qll +++ b/javascript/ql/lib/semmle/javascript/JsonStringifiers.qll @@ -77,6 +77,3 @@ class PrettyJsonTaintStep extends TaintTracking::SharedTaintStep { ) } } - -/** DEPRECATED: Alias for PrettyJsonTaintStep */ -deprecated class PrettyJSONTaintStep = PrettyJsonTaintStep; diff --git a/javascript/ql/lib/semmle/javascript/NPM.qll b/javascript/ql/lib/semmle/javascript/NPM.qll index e1059d94930..0bf92c5d29a 100644 --- a/javascript/ql/lib/semmle/javascript/NPM.qll +++ b/javascript/ql/lib/semmle/javascript/NPM.qll @@ -262,9 +262,6 @@ class PackageJson extends JsonObject { Module getTypingsModule() { result.getFile() = this.getTypingsFile() } } -/** DEPRECATED: Alias for PackageJson */ -deprecated class PackageJSON = PackageJson; - /** * A representation of bug tracker information for an NPM package. */ @@ -370,9 +367,6 @@ class NpmPackage extends @folder { /** Gets the `package.json` object of this package. */ PackageJson getPackageJson() { result = pkg } - /** DEPRECATED: Alias for getPackageJson */ - deprecated PackageJSON getPackageJSON() { result = this.getPackageJson() } - /** Gets the name of this package. */ string getPackageName() { result = this.getPackageJson().getPackageName() } @@ -411,9 +405,6 @@ class NpmPackage extends @folder { predicate declaresDependency(string p, string v) { pkg.declaresDependency(p, v) } } -/** DEPRECATED: Alias for NpmPackage */ -deprecated class NPMPackage = NpmPackage; - /** * Gets the parent folder of `c`, provided that they belong to the same NPM * package; that is, `c` must not be a `node_modules` folder. diff --git a/javascript/ql/lib/semmle/javascript/NodeModuleResolutionImpl.qll b/javascript/ql/lib/semmle/javascript/NodeModuleResolutionImpl.qll index 468d31c2c02..7231143ed55 100644 --- a/javascript/ql/lib/semmle/javascript/NodeModuleResolutionImpl.qll +++ b/javascript/ql/lib/semmle/javascript/NodeModuleResolutionImpl.qll @@ -198,7 +198,7 @@ class MainModulePath extends PathExpr, @json_string { } /** DEPRECATED: Alias for getPackageJson */ - deprecated PackageJSON getPackageJSON() { result = this.getPackageJson() } + deprecated PackageJson getPackageJSON() { result = this.getPackageJson() } override string getValue() { result = this.(JsonString).getValue() } @@ -259,7 +259,7 @@ private class FilesPath extends PathExpr, @json_string { PackageJson getPackageJson() { result = pkg } /** DEPRECATED: Alias for getPackageJson */ - deprecated PackageJSON getPackageJSON() { result = this.getPackageJson() } + deprecated PackageJson getPackageJSON() { result = this.getPackageJson() } override string getValue() { result = this.(JsonString).getValue() } diff --git a/javascript/ql/lib/semmle/javascript/PrintAst.qll b/javascript/ql/lib/semmle/javascript/PrintAst.qll index 5c4960e041c..0defda1dc6b 100644 --- a/javascript/ql/lib/semmle/javascript/PrintAst.qll +++ b/javascript/ql/lib/semmle/javascript/PrintAst.qll @@ -391,9 +391,6 @@ private module PrintJavaScript { } } - /** DEPRECATED: Alias for JsxNodeNode */ - deprecated class JSXNodeNode = JsxNodeNode; - /** * An aggregate node representing all the attributes in a `JSXNode`. */ @@ -409,17 +406,11 @@ private module PrintJavaScript { */ JsxElement getJsxElement() { result = n } - /** DEPRECATED: Alias for getJsxElement */ - deprecated JSXElement getJSXElement() { result = this.getJsxElement() } - override PrintAstNode getChild(int childIndex) { result.(ElementNode).getElement() = n.getAttribute(childIndex) } } - /** DEPRECATED: Alias for JsxAttributesNode */ - deprecated class JSXAttributesNode = JsxAttributesNode; - /** * An aggregate node representing all the body elements in a `JSXNode`. */ @@ -435,17 +426,11 @@ private module PrintJavaScript { */ JsxNode getJsxNode() { result = n } - /** DEPRECATED: Alias for getJsxNode */ - deprecated JSXNode getJSXNode() { result = this.getJsxNode() } - override PrintAstNode getChild(int childIndex) { result.(ElementNode).getElement() = n.getBodyElement(childIndex) } } - /** DEPRECATED: Alias for JsxBodyElementsNode */ - deprecated class JSXBodyElementsNode = JsxBodyElementsNode; - /** * A node representing any `ASTNode` that has type-parameters. * @@ -582,9 +567,6 @@ private module PrintJson { } } - /** DEPRECATED: Alias for JsonNode */ - deprecated class JSONNode = JsonNode; - /** Provied predicates for pretty printing JSON. */ private module PrettyPrinting { /** @@ -655,9 +637,6 @@ module PrintYaml { } } - /** DEPRECATED: Alias for YamlNodeNode */ - deprecated class YAMLNodeNode = YamlNodeNode; - /** * A print node representing a `YAMLMapping`. * @@ -671,9 +650,6 @@ module PrintYaml { } } - /** DEPRECATED: Alias for YamlMappingNode */ - deprecated class YAMLMappingNode = YamlMappingNode; - /** * A print node representing the `i`th mapping in `mapping`. */ @@ -703,14 +679,8 @@ module PrintYaml { childIndex = 1 and result.(YamlNodeNode).getValue() = mapping.getValueNode(i) } } - - /** DEPRECATED: Alias for YamlMappingMapNode */ - deprecated class YAMLMappingMapNode = YamlMappingMapNode; } -/** DEPRECATED: Alias for PrintYaml */ -deprecated module PrintYAML = PrintYaml; - /** * Classes for printing HTML AST. */ @@ -741,9 +711,6 @@ module PrintHtml { } } - /** DEPRECATED: Alias for HtmlElementNode */ - deprecated class HTMLElementNode = HtmlElementNode; - /** * A print node representing an HTML node in a .html file. */ @@ -757,9 +724,6 @@ module PrintHtml { } } - /** DEPRECATED: Alias for HtmlScriptElementNode */ - deprecated class HTMLScriptElementNode = HtmlScriptElementNode; - /** * A print node representing the code inside a `