Merge branch 'main' into break-bigstep-at-store

This commit is contained in:
Mathias Vorreiter Pedersen
2024-04-16 15:33:21 +01:00
402 changed files with 5371 additions and 17855 deletions

View File

@@ -0,0 +1,4 @@
---
category: minorAnalysis
---
* Source models have been added for the standard library function `getc` (and variations).

View File

@@ -0,0 +1,4 @@
---
category: feature
---
* Models-as-Data support has been added for C/C++. This feature allows flow sources, sinks and summaries to be expressed in compact strings as an alternative to modelling each source / sink / summary with explicit QL. See `dataflow/ExternalFlow.qll` for documentation and specification of the model format, and `models/implementations/ZMQ.qll` for a simple example of models. Importing models from `.yml` is not yet supported.

View File

@@ -0,0 +1,4 @@
---
category: minorAnalysis
---
* Source, sink and flow models for the ZeroMQ (ZMQ) networking library have been added.

View File

@@ -7,6 +7,7 @@ library: true
upgrades: upgrades
dependencies:
codeql/dataflow: ${workspace}
codeql/mad: ${workspace}
codeql/rangeanalysis: ${workspace}
codeql/ssa: ${workspace}
codeql/typeflow: ${workspace}

View File

@@ -0,0 +1,556 @@
/**
* INTERNAL use only. This is an experimental API subject to change without notice.
*
* Provides classes and predicates for dealing with flow models specified in CSV format.
*
* The CSV specification has the following columns:
* - Sources:
* `namespace; type; subtypes; name; signature; ext; output; kind`
* - Sinks:
* `namespace; type; subtypes; name; signature; ext; input; kind`
* - Summaries:
* `namespace; type; subtypes; name; signature; ext; input; output; kind`
*
* The interpretation of a row is similar to API-graphs with a left-to-right
* reading.
* 1. The `namespace` column selects a namespace.
* 2. The `type` column selects a type within that namespace.
* 3. The `subtypes` is a boolean that indicates whether to jump to an
* arbitrary subtype of that type. Set this to `false` if leaving the `type`
* blank (for example, a free function).
* 4. The `name` column optionally selects a specific named member of the type.
* 5. The `signature` column optionally restricts the named member. If
* `signature` is blank then no such filtering is done. The format of the
* signature is a comma-separated list of types enclosed in parentheses. The
* types can be short names or fully qualified names (mixing these two options
* is not allowed within a single signature).
* 6. The `ext` column specifies additional API-graph-like edges. Currently
* there is only one valid value: "".
* 7. The `input` column specifies how data enters the element selected by the
* first 6 columns, and the `output` column specifies how data leaves the
* element selected by the first 6 columns. An `input` can be either:
* - "": Selects a write to the selected element in case this is a field.
* - "Argument[n]": Selects an argument in a call to the selected element.
* The arguments are zero-indexed, and `-1` specifies the qualifier object,
* that is, `*this`.
* - one or more "*" can be added in front of the argument index to indicate
* indirection, for example, `Argument[*0]` indicates the first indirection
* of the 0th argument.
* - `n1..n2` syntax can be used to indicate a range of arguments, inclusive
* at both ends. One or more "*"s can be added in front of the whole range
* to indicate that every argument in the range is indirect, for example
* `*0..1` is the first indirection of both arguments 0 and 1.
* - "ReturnValue": Selects a value being returned by the selected element.
* One or more "*" can be added as an argument to indicate indirection, for
* example, "ReturnValue[*]" indicates the first indirection of the return
* value.
*
* An `output` can be either:
* - "": Selects a read of a selected field.
* - "Argument[n]": Selects the post-update value of an argument in a call to
* the selected element. That is, the value of the argument after the call
* returns. The arguments are zero-indexed, and `-1` specifies the qualifier
* object, that is, `*this`.
* - one or more "*" can be added in front of the argument index to indicate
* indirection, for example, `Argument[*0]` indicates the first indirection
* of the 0th argument.
* - `n1..n2` syntax can be used to indicate a range of arguments, inclusive
* at both ends. One or more "*"s can be added in front of the whole range
* to indicate that every argument in the range is indirect, for example
* `*0..1` is the first indirection of both arguments 0 and 1.
* - "Parameter[n]": Selects the value of a parameter of the selected element.
* The syntax is the same as for "Argument", for example "Parameter[0]",
* "Parameter[*0]", "Parameter[0..2]" etc.
* - "ReturnValue": Selects a value being returned by the selected element.
* One or more "*" can be added as an argument to indicate indirection, for
* example, "ReturnValue[*]" indicates the first indirection of the return
* value.
* 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
* "taint" indicates a default additional taint step and "value" indicates a
* globally applicable value-preserving step.
*/
import cpp
private import new.DataFlow
private import internal.FlowSummaryImpl
private import internal.FlowSummaryImpl::Public
private import internal.FlowSummaryImpl::Private
private import internal.FlowSummaryImpl::Private::External
private import codeql.mad.ModelValidation as SharedModelVal
private import codeql.util.Unit
/**
* A unit class for adding additional source model rows.
*
* Extend this class to add additional source definitions.
*/
class SourceModelCsv extends Unit {
/** Holds if `row` specifies a source definition. */
abstract predicate row(string row);
}
/**
* A unit class for adding additional sink model rows.
*
* Extend this class to add additional sink definitions.
*/
class SinkModelCsv extends Unit {
/** Holds if `row` specifies a sink definition. */
abstract predicate row(string row);
}
/**
* A unit class for adding additional summary model rows.
*
* Extend this class to add additional flow summary definitions.
*/
class SummaryModelCsv extends Unit {
/** Holds if `row` specifies a summary definition. */
abstract predicate row(string row);
}
/** Holds if `row` is a source model. */
predicate sourceModel(string row) { any(SourceModelCsv s).row(row) }
/** Holds if `row` is a sink model. */
predicate sinkModel(string row) { any(SinkModelCsv s).row(row) }
/** Holds if `row` is a summary model. */
predicate summaryModel(string row) { any(SummaryModelCsv s).row(row) }
/** Holds if a source model exists for the given parameters. */
predicate sourceModel(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string output, string kind, string provenance
) {
exists(string row |
sourceModel(row) and
row.splitAt(";", 0) = namespace and
row.splitAt(";", 1) = type and
row.splitAt(";", 2) = subtypes.toString() and
subtypes = [true, false] and
row.splitAt(";", 3) = name and
row.splitAt(";", 4) = signature and
row.splitAt(";", 5) = ext and
row.splitAt(";", 6) = output and
row.splitAt(";", 7) = kind
) and
provenance = "manual"
}
/** Holds if a sink model exists for the given parameters. */
predicate sinkModel(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string input, string kind, string provenance
) {
exists(string row |
sinkModel(row) and
row.splitAt(";", 0) = namespace and
row.splitAt(";", 1) = type and
row.splitAt(";", 2) = subtypes.toString() and
subtypes = [true, false] and
row.splitAt(";", 3) = name and
row.splitAt(";", 4) = signature and
row.splitAt(";", 5) = ext and
row.splitAt(";", 6) = input and
row.splitAt(";", 7) = kind
) and
provenance = "manual"
}
/** Holds if a summary model exists for the given parameters. */
predicate summaryModel(
string namespace, string type, boolean subtypes, string name, string signature, string ext,
string input, string output, string kind, string provenance
) {
exists(string row |
summaryModel(row) and
row.splitAt(";", 0) = namespace and
row.splitAt(";", 1) = type and
row.splitAt(";", 2) = subtypes.toString() and
subtypes = [true, false] and
row.splitAt(";", 3) = name and
row.splitAt(";", 4) = signature and
row.splitAt(";", 5) = ext and
row.splitAt(";", 6) = input and
row.splitAt(";", 7) = output and
row.splitAt(";", 8) = kind
) and
provenance = "manual"
}
private predicate relevantNamespace(string namespace) {
sourceModel(namespace, _, _, _, _, _, _, _, _) or
sinkModel(namespace, _, _, _, _, _, _, _, _) or
summaryModel(namespace, _, _, _, _, _, _, _, _, _)
}
private predicate namespaceLink(string shortns, string longns) {
relevantNamespace(shortns) and
relevantNamespace(longns) and
longns.prefix(longns.indexOf("::")) = shortns
}
private predicate canonicalNamespace(string namespace) {
relevantNamespace(namespace) and not namespaceLink(_, namespace)
}
private predicate canonicalNamespaceLink(string namespace, string subns) {
canonicalNamespace(namespace) and
(subns = namespace or namespaceLink(namespace, subns))
}
/**
* Holds if CSV framework coverage of `namespace` is `n` api endpoints of the
* kind `(kind, part)`.
*/
predicate modelCoverage(string namespace, int namespaces, string kind, string part, int n) {
namespaces = strictcount(string subns | canonicalNamespaceLink(namespace, subns)) and
(
part = "source" and
n =
strictcount(string subns, string type, boolean subtypes, string name, string signature,
string ext, string output, string provenance |
canonicalNamespaceLink(namespace, subns) and
sourceModel(subns, type, subtypes, name, signature, ext, output, kind, provenance)
)
or
part = "sink" and
n =
strictcount(string subns, string type, boolean subtypes, string name, string signature,
string ext, string input, string provenance |
canonicalNamespaceLink(namespace, subns) and
sinkModel(subns, type, subtypes, name, signature, ext, input, kind, provenance)
)
or
part = "summary" and
n =
strictcount(string subns, string type, boolean subtypes, string name, string signature,
string ext, string input, string output, string provenance |
canonicalNamespaceLink(namespace, subns) and
summaryModel(subns, type, subtypes, name, signature, ext, input, output, kind, provenance)
)
)
}
/** Provides a query predicate to check the CSV data for validation errors. */
module CsvValidation {
private string getInvalidModelInput() {
exists(string pred, AccessPath input, string part |
sinkModel(_, _, _, _, _, _, input, _, _) and pred = "sink"
or
summaryModel(_, _, _, _, _, _, input, _, _, _) and pred = "summary"
|
(
invalidSpecComponent(input, part) and
not part = "" and
not (part = "Argument" and pred = "sink") and
not parseArg(part, _)
or
part = input.getToken(_) and
parseParam(part, _)
) and
result = "Unrecognized input specification \"" + part + "\" in " + pred + " model."
)
}
private string getInvalidModelOutput() {
exists(string pred, string output, string part |
sourceModel(_, _, _, _, _, _, output, _, _) and pred = "source"
or
summaryModel(_, _, _, _, _, _, _, output, _, _) and pred = "summary"
|
invalidSpecComponent(output, part) and
not part = "" and
not (part = ["Argument", "Parameter"] and pred = "source") and
result = "Unrecognized output specification \"" + part + "\" in " + pred + " 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<KindValConfig>;
private string getInvalidModelSubtype() {
exists(string pred, string row |
sourceModel(row) and pred = "source"
or
sinkModel(row) and pred = "sink"
or
summaryModel(row) and pred = "summary"
|
exists(string b |
b = row.splitAt(";", 2) and
not b = ["true", "false"] and
result = "Invalid boolean \"" + b + "\" in " + pred + " model."
)
)
}
private string getInvalidModelColumnCount() {
exists(string pred, string row, int expect |
sourceModel(row) and expect = 8 and pred = "source"
or
sinkModel(row) and expect = 8 and pred = "sink"
or
summaryModel(row) and expect = 9 and pred = "summary"
|
exists(int cols |
cols = 1 + max(int n | exists(row.splitAt(";", n))) and
cols != expect and
result =
"Wrong number of columns in " + pred + " model row, expected " + expect + ", got " + cols +
"."
)
)
}
private string getInvalidModelSignature() {
exists(string pred, string namespace, string type, string name, string signature, string ext |
sourceModel(namespace, type, _, name, signature, ext, _, _, _) and pred = "source"
or
sinkModel(namespace, type, _, name, signature, ext, _, _, _) and pred = "sink"
or
summaryModel(namespace, type, _, name, signature, ext, _, _, _, _) and pred = "summary"
|
not namespace.regexpMatch("[a-zA-Z0-9_\\.]+") and
result = "Dubious namespace \"" + namespace + "\" in " + pred + " model."
or
not type.regexpMatch("[a-zA-Z0-9_<>,\\+]+") and
result = "Dubious type \"" + type + "\" in " + pred + " model."
or
not name.regexpMatch("[a-zA-Z0-9_<>,]*") and
result = "Dubious member name \"" + name + "\" in " + pred + " model."
or
not signature.regexpMatch("|\\([a-zA-Z0-9_<>\\.\\+\\*,\\[\\]]*\\)") and
result = "Dubious signature \"" + signature + "\" in " + pred + " model."
or
not ext.regexpMatch("|Attribute") and
result = "Unrecognized extra API graph element \"" + ext + "\" in " + pred + " model."
)
}
/** Holds if some row in a CSV-based flow model appears to contain typos. */
query predicate invalidModelRow(string msg) {
msg =
[
getInvalidModelSignature(), getInvalidModelInput(), getInvalidModelOutput(),
getInvalidModelSubtype(), getInvalidModelColumnCount(), KindVal::getInvalidModelKind()
]
}
}
private predicate elementSpec(
string namespace, string type, boolean subtypes, string name, string signature, string ext
) {
sourceModel(namespace, type, subtypes, name, signature, ext, _, _, _) or
sinkModel(namespace, type, subtypes, name, signature, ext, _, _, _) or
summaryModel(namespace, type, subtypes, name, signature, ext, _, _, _, _)
}
private string paramsStringPart(Function c, int i) {
i = -1 and result = "(" and exists(c)
or
exists(int n, string p | c.getParameter(n).getType().toString() = p |
i = 2 * n and result = p
or
i = 2 * n - 1 and result = "," and n != 0
)
or
i = 2 * c.getNumberOfParameters() and result = ")"
}
/**
* Gets a parenthesized string containing all parameter types of this callable, separated by a comma.
*
* Returns the empty string if the callable has no parameters.
* Parameter types are represented by their type erasure.
*/
cached
private string paramsString(Function c) {
result = concat(int i | | paramsStringPart(c, i) order by i)
}
bindingset[func]
private predicate matchesSignature(Function func, string signature) {
signature = "" or
paramsString(func) = signature
}
/**
* Gets the element in module `namespace` that satisfies the following properties:
* 1. If the element is a member of a class-like type, then the class-like type has name `type`
* 2. If `subtypes = true` and the element is a member of a class-like type, then overrides of the element
* are also returned.
* 3. The element has name `name`
* 4. If `signature` is non-empty, then the element has a list of parameter types described by `signature`.
*
* NOTE: `namespace` is currently not used (since we don't properly extract modules yet).
*/
pragma[nomagic]
private Element interpretElement0(
string namespace, string type, boolean subtypes, string name, string signature
) {
elementSpec(namespace, type, subtypes, name, signature, _) and
(
// Non-member functions
exists(Function func |
func.hasQualifiedName(namespace, name) and
type = "" and
matchesSignature(func, signature) and
subtypes = false and
not exists(func.getDeclaringType()) and
result = func
)
or
// Member functions
exists(Class namedClass, Class classWithMethod, Function method |
classWithMethod = method.getClassAndName(name) and
namedClass.hasQualifiedName(namespace, type) and
matchesSignature(method, signature) and
result = method
|
// member declared in the named type or a subtype of it
subtypes = true and
classWithMethod = namedClass.getADerivedClass*()
or
// member declared directly in the named type
subtypes = false and
classWithMethod = namedClass
)
or
// Member variables
signature = "" and
exists(Class namedClass, Class classWithMember, MemberVariable member |
member.getName() = name and
member = classWithMember.getAMember() and
namedClass.hasQualifiedName(namespace, type) and
result = member
|
// field declared in the named type or a subtype of it (or an extension of any)
subtypes = true and
classWithMember = namedClass.getADerivedClass*()
or
// field declared directly in the named type (or an extension of it)
subtypes = false and
classWithMember = namedClass
)
or
// Global or namespace variables
signature = "" and
type = "" and
subtypes = false and
result = any(GlobalOrNamespaceVariable v | v.hasQualifiedName(namespace, name))
)
}
/** Gets the source/sink/summary element corresponding to the supplied parameters. */
Element interpretElement(
string namespace, string type, boolean subtypes, string name, string signature, string ext
) {
elementSpec(namespace, type, subtypes, name, signature, ext) and
exists(Element e | e = interpretElement0(namespace, type, subtypes, name, signature) |
ext = "" and result = e
)
}
cached
private module Cached {
/**
* Holds if `node` is specified as a source with the given kind in a CSV flow
* model.
*/
cached
predicate sourceNode(DataFlow::Node node, string kind) {
exists(SourceSinkInterpretationInput::InterpretNode n |
isSourceNode(n, kind, _) and n.asNode() = node // TODO
)
}
/**
* Holds if `node` is specified as a sink with the given kind in a CSV flow
* model.
*/
cached
predicate sinkNode(DataFlow::Node node, string kind) {
exists(SourceSinkInterpretationInput::InterpretNode n |
isSinkNode(n, kind, _) and n.asNode() = node // TODO
)
}
}
import Cached
private predicate interpretSummary(
Function f, string input, string output, string kind, string provenance
) {
exists(
string namespace, string type, boolean subtypes, string name, string signature, string ext
|
summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind, provenance) and
f = interpretElement(namespace, type, subtypes, name, signature, ext)
)
}
// adapter class for converting Mad summaries to `SummarizedCallable`s
private class SummarizedCallableAdapter extends SummarizedCallable {
SummarizedCallableAdapter() { interpretSummary(this, _, _, _, _) }
private predicate relevantSummaryElementManual(string input, string output, string kind) {
exists(Provenance provenance |
interpretSummary(this, input, output, kind, provenance) and
provenance.isManual()
)
}
private predicate relevantSummaryElementGenerated(string input, string output, string kind) {
exists(Provenance provenance |
interpretSummary(this, input, output, kind, provenance) and
provenance.isGenerated()
)
}
override predicate propagatesFlow(
string input, string output, boolean preservesValue, string model
) {
exists(string kind |
this.relevantSummaryElementManual(input, output, kind)
or
not this.relevantSummaryElementManual(_, _, _) and
this.relevantSummaryElementGenerated(input, output, kind)
|
if kind = "value" then preservesValue = true else preservesValue = false
) and
model = "" // TODO
}
override predicate hasProvenance(Provenance provenance) {
interpretSummary(this, _, _, _, provenance)
}
}
// adapter class for converting Mad neutrals to `NeutralCallable`s
private class NeutralCallableAdapter extends NeutralCallable {
string kind;
string provenance_;
NeutralCallableAdapter() {
// Neutral models have not been implemented for CPP.
none() and
exists(this) and
exists(kind) and
exists(provenance_)
}
override string getKind() { result = kind }
override predicate hasProvenance(Provenance provenance) { provenance = provenance_ }
}

View File

@@ -0,0 +1,271 @@
/**
* Provides classes and predicates for defining flow summaries.
*/
private import cpp as Cpp
private import codeql.dataflow.internal.FlowSummaryImpl
private import codeql.dataflow.internal.AccessPathSyntax as AccessPath
private import semmle.code.cpp.ir.dataflow.internal.DataFlowPrivate
private import semmle.code.cpp.ir.dataflow.internal.DataFlowUtil
private import semmle.code.cpp.ir.dataflow.internal.DataFlowImplSpecific as DataFlowImplSpecific
private import semmle.code.cpp.dataflow.ExternalFlow
private import semmle.code.cpp.ir.IR
module Input implements InputSig<Location, DataFlowImplSpecific::CppDataFlow> {
class SummarizedCallableBase = Function;
ArgumentPosition callbackSelfParameterPosition() { result = TDirectPosition(-1) }
ReturnKind getStandardReturnValueKind() { result.(NormalReturnKind).getIndirectionIndex() = 0 }
string encodeParameterPosition(ParameterPosition pos) { result = pos.toString() }
string encodeArgumentPosition(ArgumentPosition pos) { result = pos.toString() }
string encodeReturn(ReturnKind rk, string arg) {
rk != getStandardReturnValueKind() and
result = "ReturnValue" and
arg = repeatStars(rk.(NormalReturnKind).getIndirectionIndex())
}
string encodeContent(ContentSet cs, string arg) {
exists(FieldContent c |
cs.isSingleton(c) and
// FieldContent indices have 0 for the address, 1 for content, so we need to subtract one.
result = "Field" and
arg = repeatStars(c.getIndirectionIndex() - 1) + c.getField().getName()
)
}
string encodeWithoutContent(ContentSet c, string arg) {
// used for type tracking, not currently used in C/C++.
result = "WithoutContent" + c and arg = ""
}
string encodeWithContent(ContentSet c, string arg) {
// used for type tracking, not currently used in C/C++.
result = "WithContent" + c and arg = ""
}
/**
* Decodes an argument / parameter position string, for example the `0` in `Argument[0]`.
* Supports ranges (`Argument[x..y]`), qualifiers (`Argument[-1]`), indirections
* (`Argument[*x]`) and combinations (such as `Argument[**0..1]`).
*/
bindingset[argString]
private TPosition decodePosition(string argString) {
exists(int indirection, string posString, int pos |
argString = repeatStars(indirection) + posString and
pos = AccessPath::parseInt(posString) and
(
pos >= 0 and indirection = 0 and result = TDirectPosition(pos)
or
pos >= 0 and indirection > 0 and result = TIndirectionPosition(pos, indirection)
or
// `Argument[-1]` / `Parameter[-1]` is the qualifier object `*this`, not the `this` pointer itself.
pos = -1 and result = TIndirectionPosition(pos, indirection + 1)
)
)
}
bindingset[token]
ParameterPosition decodeUnknownParameterPosition(AccessPath::AccessPathTokenBase token) {
token.getName() = "Argument" and
result = decodePosition(token.getAnArgument())
}
bindingset[token]
ArgumentPosition decodeUnknownArgumentPosition(AccessPath::AccessPathTokenBase token) {
token.getName() = "Parameter" and
result = decodePosition(token.getAnArgument())
}
bindingset[token]
ContentSet decodeUnknownContent(AccessPath::AccessPathTokenBase token) {
// field content (no indirection support)
exists(FieldContent c |
result.isSingleton(c) and
token.getName() = c.getField().getName() and
not exists(token.getArgumentList()) and
c.getIndirectionIndex() = 1
)
or
// field content (with indirection support)
exists(FieldContent c |
result.isSingleton(c) and
token.getName() = c.getField().getName() and
// FieldContent indices have 0 for the address, 1 for content, so we need to subtract one.
token.getAnArgument() = repeatStars(c.getIndirectionIndex() - 1)
)
}
}
private import Make<Location, DataFlowImplSpecific::CppDataFlow, Input> as Impl
private module StepsInput implements Impl::Private::StepsInputSig {
DataFlowCall getACall(Public::SummarizedCallable sc) {
result.getStaticCallTarget().getUnderlyingCallable() = sc
}
}
module SourceSinkInterpretationInput implements
Impl::Private::External::SourceSinkInterpretationInputSig
{
class Element = Cpp::Element;
class SourceOrSinkElement = Element;
/**
* Holds if an external source specification exists for `e` with output specification
* `output`, kind `kind`, and provenance `provenance`.
*/
predicate sourceElement(
SourceOrSinkElement e, string output, string kind, Public::Provenance provenance, string model
) {
exists(
string namespace, string type, boolean subtypes, string name, string signature, string ext
|
sourceModel(namespace, type, subtypes, name, signature, ext, output, kind, provenance) and
e = interpretElement(namespace, type, subtypes, name, signature, ext) and
model = "" // TODO
)
}
/**
* Holds if an external sink specification exists for `e` with input specification
* `input`, kind `kind` and provenance `provenance`.
*/
predicate sinkElement(
SourceOrSinkElement e, string input, string kind, Public::Provenance provenance, string model
) {
exists(
string package, string type, boolean subtypes, string name, string signature, string ext
|
sinkModel(package, type, subtypes, name, signature, ext, input, kind, provenance) and
e = interpretElement(package, type, subtypes, name, signature, ext) and
model = "" // TODO
)
}
private newtype TInterpretNode =
TElement_(Element n) or
TNode_(Node n)
/** An entity used to interpret a source/sink specification. */
class InterpretNode extends TInterpretNode {
/** Gets the element that this node corresponds to, if any. */
SourceOrSinkElement asElement() { this = TElement_(result) }
/** Gets the data-flow node that this node corresponds to, if any. */
Node asNode() { this = TNode_(result) }
/** Gets the call that this node corresponds to, if any. */
DataFlowCall asCall() {
this.asElement() = result.asCallInstruction().getUnconvertedResultExpression()
}
/** Gets the callable that this node corresponds to, if any. */
DataFlowCallable asCallable() { result.getUnderlyingCallable() = this.asElement() }
/** Gets the target of this call, if any. */
Element getCallTarget() { result = this.asCall().getStaticCallTarget().getUnderlyingCallable() }
/** Gets a textual representation of this node. */
string toString() {
result = this.asElement().toString()
or
result = this.asNode().toString()
or
result = this.asCall().toString()
}
/** Gets the location of this node. */
Location getLocation() {
result = this.asElement().getLocation()
or
result = this.asNode().getLocation()
or
result = this.asCall().getLocation()
}
}
/** Provides additional sink specification logic. */
bindingset[c]
predicate interpretOutput(string c, InterpretNode mid, InterpretNode node) {
// Allow variables to be picked as output nodes.
exists(Node n, Element ast |
n = node.asNode() and
ast = mid.asElement()
|
c = "" and
n.asExpr().(VariableAccess).getTarget() = ast
)
}
/** Provides additional source specification logic. */
bindingset[c]
predicate interpretInput(string c, InterpretNode mid, InterpretNode node) {
exists(Node n, Element ast, VariableAccess e |
n = node.asNode() and
ast = mid.asElement() and
e.getTarget() = ast
|
// Allow variables to be picked as input nodes.
// We could simply do this as `e = n.asExpr()`, but that would not allow
// us to pick `x` as a sink in an example such as `x = source()` (but
// only subsequent uses of `x`) since the variable access on `x` doesn't
// actually load the value of `x`. So instead, we pick the instruction
// node corresponding to the generated `StoreInstruction` and use the
// expression associated with the destination instruction. This means
// that the `x` in `x = source()` can be marked as an input.
c = "" and
exists(StoreInstruction store |
store.getDestinationAddress().getUnconvertedResultExpression() = e and
n.asInstruction() = store
)
)
}
}
module Private {
import Impl::Private
module Steps = Impl::Private::Steps<StepsInput>;
module External {
import Impl::Private::External
import Impl::Private::External::SourceSinkInterpretation<SourceSinkInterpretationInput>
}
/**
* Provides predicates for constructing summary components.
*/
module SummaryComponent {
private import Impl::Private::SummaryComponent as SC
predicate parameter = SC::parameter/1;
predicate argument = SC::argument/1;
predicate content = SC::content/1;
predicate withoutContent = SC::withoutContent/1;
predicate withContent = SC::withContent/1;
}
/**
* Provides predicates for constructing stacks of summary components.
*/
module SummaryComponentStack {
private import Impl::Private::SummaryComponentStack as SCS
predicate singleton = SCS::singleton/1;
predicate push = SCS::push/2;
predicate argument = SCS::argument/1;
}
}
module Public = Impl::Public;

View File

@@ -7,6 +7,7 @@ import cpp
private import semmle.code.cpp.ir.ValueNumbering
private import internal.DataFlowDispatch
private import semmle.code.cpp.ir.IR
private import semmle.code.cpp.ir.dataflow.internal.DataFlowPrivate
/**
* Resolve potential target function(s) for `call`.
@@ -16,8 +17,9 @@ private import semmle.code.cpp.ir.IR
* to identify the possible target(s).
*/
Function resolveCall(Call call) {
exists(CallInstruction callInstruction |
exists(DataFlowCall dataFlowCall, CallInstruction callInstruction |
callInstruction.getAst() = call and
result = viableCallable(callInstruction)
callInstruction = dataFlowCall.asCallInstruction() and
result = viableCallable(dataFlowCall).getUnderlyingCallable()
)
}

View File

@@ -23,13 +23,13 @@ DataFlowCallable defaultViableCallable(DataFlowCall call) {
// function with the right signature is present in the database, we return
// that as a potential callee.
exists(string qualifiedName, int nparams |
callSignatureWithoutBody(qualifiedName, nparams, call) and
functionSignatureWithBody(qualifiedName, nparams, result) and
callSignatureWithoutBody(qualifiedName, nparams, call.asCallInstruction()) and
functionSignatureWithBody(qualifiedName, nparams, result.getUnderlyingCallable()) and
strictcount(Function other | functionSignatureWithBody(qualifiedName, nparams, other)) = 1
)
or
// Virtual dispatch
result = call.(VirtualDispatch::DataSensitiveCall).resolve()
result.asSourceCallable() = call.(VirtualDispatch::DataSensitiveCall).resolve()
}
/**
@@ -40,7 +40,9 @@ DataFlowCallable viableCallable(DataFlowCall call) {
result = defaultViableCallable(call)
or
// Additional call targets
result = any(AdditionalCallTarget additional).viableTarget(call.getUnconvertedResultExpression())
result.getUnderlyingCallable() =
any(AdditionalCallTarget additional)
.viableTarget(call.asCallInstruction().getUnconvertedResultExpression())
}
/**
@@ -150,7 +152,7 @@ private module VirtualDispatch {
ReturnNode node, ReturnKind kind, DataFlowCallable callable
) {
node.getKind() = kind and
node.getEnclosingCallable() = callable
node.getEnclosingCallable() = callable.getUnderlyingCallable()
}
/** Call through a function pointer. */
@@ -176,10 +178,15 @@ private module VirtualDispatch {
/** Call to a virtual function. */
private class DataSensitiveOverriddenFunctionCall extends DataSensitiveCall {
DataSensitiveOverriddenFunctionCall() {
exists(this.getStaticCallTarget().(VirtualFunction).getAnOverridingFunction())
exists(
this.getStaticCallTarget()
.getUnderlyingCallable()
.(VirtualFunction)
.getAnOverridingFunction()
)
}
override DataFlow::Node getDispatchValue() { result.asInstruction() = this.getThisArgument() }
override DataFlow::Node getDispatchValue() { result.asInstruction() = this.getArgument(-1) }
override MemberFunction resolve() {
exists(Class overridingClass |
@@ -194,7 +201,8 @@ private module VirtualDispatch {
*/
pragma[noinline]
private predicate overrideMayAffectCall(Class overridingClass, MemberFunction overridingFunction) {
overridingFunction.getAnOverriddenFunction+() = this.getStaticCallTarget().(VirtualFunction) and
overridingFunction.getAnOverriddenFunction+() =
this.getStaticCallTarget().getUnderlyingCallable().(VirtualFunction) and
overridingFunction.getDeclaringType() = overridingClass
}
@@ -256,12 +264,12 @@ predicate mayBenefitFromCallContext(DataFlowCall call) { mayBenefitFromCallConte
* value is given as the `arg`'th argument to `f`.
*/
private predicate mayBenefitFromCallContext(
VirtualDispatch::DataSensitiveCall call, Function f, int arg
VirtualDispatch::DataSensitiveCall call, DataFlowCallable f, int arg
) {
f = pragma[only_bind_out](call).getEnclosingCallable() and
exists(InitializeParameterInstruction init |
not exists(call.getStaticCallTarget()) and
init.getEnclosingFunction() = f and
init.getEnclosingFunction() = f.getUnderlyingCallable() and
call.flowsFrom(DataFlow::instructionNode(init), _) and
init.getParameter().getIndex() = arg
)
@@ -273,10 +281,11 @@ private predicate mayBenefitFromCallContext(
*/
DataFlowCallable viableImplInCallContext(DataFlowCall call, DataFlowCall ctx) {
result = viableCallable(call) and
exists(int i, Function f |
exists(int i, DataFlowCallable f |
mayBenefitFromCallContext(pragma[only_bind_into](call), f, i) and
f = ctx.getStaticCallTarget() and
result = ctx.getArgument(i).getUnconvertedResultExpression().(FunctionAccess).getTarget()
result.asSourceCallable() =
ctx.getArgument(i).getUnconvertedResultExpression().(FunctionAccess).getTarget()
)
}

View File

@@ -3,6 +3,7 @@ private import DataFlowUtil
private import semmle.code.cpp.ir.IR
private import DataFlowDispatch
private import semmle.code.cpp.ir.internal.IRCppLanguage
private import semmle.code.cpp.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl
private import SsaInternals as Ssa
private import DataFlowImplCommon as DataFlowImplCommon
private import codeql.util.Unit
@@ -79,15 +80,6 @@ module NodeStars {
result = n.(FinalParameterNode).getIndirectionIndex()
}
private int maxNumberOfIndirections() { result = max(getNumberOfIndirections(_)) }
private string repeatStars(int n) {
n = 0 and result = ""
or
n = [1 .. maxNumberOfIndirections()] and
result = "*" + repeatStars(n - 1)
}
/**
* Gets the number of stars (i.e., `*`s) needed to produce the `toString`
* output for `n`.
@@ -97,6 +89,11 @@ module NodeStars {
import NodeStars
/**
* A cut-down `DataFlow::Node` class that does not depend on the output of SSA.
* This can thus be safely used in the SSA computations themselves, as well as
* in construction of other node classes (`TIRDataFlowNode`).
*/
class Node0Impl extends TIRDataFlowNode0 {
/**
* INTERNAL: Do not use.
@@ -333,7 +330,9 @@ private module IndirectInstructions {
import IndirectInstructions
/** Gets the callable in which this node occurs. */
DataFlowCallable nodeGetEnclosingCallable(Node n) { result = n.getEnclosingCallable() }
DataFlowCallable nodeGetEnclosingCallable(Node n) {
result.getUnderlyingCallable() = n.getEnclosingCallable()
}
/** Holds if `p` is a `ParameterNode` of `c` with position `pos`. */
predicate isParameterNode(ParameterNode p, DataFlowCallable c, ParameterPosition pos) {
@@ -379,12 +378,30 @@ private class SideEffectArgumentNode extends ArgumentNode, SideEffectOperandNode
override predicate argumentOf(DataFlowCall dfCall, ArgumentPosition pos) {
exists(int indirectionIndex |
pos = TIndirectionPosition(argumentIndex, pragma[only_bind_into](indirectionIndex)) and
this.getCallInstruction() = dfCall and
this.getCallInstruction() = dfCall.asCallInstruction() and
super.hasAddressOperandAndIndirectionIndex(_, pragma[only_bind_into](indirectionIndex))
)
}
}
/**
* An argument node that is part of a summary. These only occur when the
* summary contains a synthesized call.
*/
class SummaryArgumentNode extends ArgumentNode, FlowSummaryNode {
private SummaryCall call_;
private ArgumentPosition pos_;
SummaryArgumentNode() {
FlowSummaryImpl::Private::summaryArgumentNode(call_.getReceiver(), this.getSummaryNode(), pos_)
}
override predicate argumentOf(DataFlowCall call, ArgumentPosition pos) {
call = call_ and
pos = pos_
}
}
/** A parameter position represented by an integer. */
class ParameterPosition = Position;
@@ -432,24 +449,42 @@ class IndirectionPosition extends Position, TIndirectionPosition {
}
newtype TPosition =
TDirectPosition(int index) { exists(any(CallInstruction c).getArgument(index)) } or
TDirectPosition(int argumentIndex) { exists(any(CallInstruction c).getArgument(argumentIndex)) } or
TIndirectionPosition(int argumentIndex, int indirectionIndex) {
hasOperandAndIndex(_, any(CallInstruction call).getArgumentOperand(argumentIndex),
Ssa::hasIndirectOperand(any(CallInstruction call).getArgumentOperand(argumentIndex),
indirectionIndex)
}
private newtype TReturnKind =
TNormalReturnKind(int index) {
exists(IndirectReturnNode return |
return.isNormalReturn() and
index = return.getIndirectionIndex() - 1 // We subtract one because the return loads the value.
)
TNormalReturnKind(int indirectionIndex) {
// derive a possible return indirection from SSA
// (this is a more durable approach if SSA infers additional indirections for any reason)
Ssa::hasIndirectOperand(any(ReturnValueInstruction ret).getReturnAddressOperand(),
indirectionIndex + 1) // We subtract one because the return loads the value.
or
// derive a possible return kind from the AST
// (this approach includes functions declared that have no body; they may still have flow summaries)
indirectionIndex =
[0 .. max(Cpp::Function f |
not exists(f.getBlock())
|
Ssa::getMaxIndirectionsForType(f.getUnspecifiedType()) - 1 // -1 because a returned value is a prvalue not a glvalue
)]
} or
TIndirectReturnKind(int argumentIndex, int indirectionIndex) {
exists(IndirectReturnNode return |
return.isParameterReturn(argumentIndex) and
indirectionIndex = return.getIndirectionIndex()
// derive a possible return argument from SSA
exists(Ssa::FinalParameterUse use |
use.getIndirectionIndex() = indirectionIndex and
use.getArgumentIndex() = argumentIndex
)
or
// derive a possible return argument from the AST
indirectionIndex =
[0 .. max(Cpp::Function f |
not exists(f.getBlock())
|
Ssa::getMaxIndirectionsForType(f.getParameter(argumentIndex).getUnspecifiedType()) - 1 // -1 because an argument is a prvalue not a glvalue
)]
}
/**
@@ -457,29 +492,44 @@ private newtype TReturnKind =
* from a callable. For C++, this is simply a function return.
*/
class ReturnKind extends TReturnKind {
/**
* Gets the indirection index of this return kind.
*/
abstract int getIndirectionIndex();
/** Gets a textual representation of this return kind. */
abstract string toString();
}
private class NormalReturnKind extends ReturnKind, TNormalReturnKind {
int index;
/**
* A value returned from a callable using a `return` statement, that is, a "normal" return.
*/
class NormalReturnKind extends ReturnKind, TNormalReturnKind {
int indirectionIndex;
NormalReturnKind() { this = TNormalReturnKind(index) }
NormalReturnKind() { this = TNormalReturnKind(indirectionIndex) }
override int getIndirectionIndex() { result = indirectionIndex }
override string toString() { result = "indirect return" }
}
/**
* A value returned from a callable through a parameter.
*/
private class IndirectReturnKind extends ReturnKind, TIndirectReturnKind {
int argumentIndex;
int indirectionIndex;
IndirectReturnKind() { this = TIndirectReturnKind(argumentIndex, indirectionIndex) }
override int getIndirectionIndex() { result = indirectionIndex }
override string toString() { result = "indirect outparam[" + argumentIndex.toString() + "]" }
}
/** A data flow node that occurs as the result of a `ReturnStmt`. */
class ReturnNode extends Node instanceof IndirectReturnNode {
abstract class ReturnNode extends Node {
/** Gets the kind of this returned value. */
abstract ReturnKind getKind();
}
@@ -510,6 +560,17 @@ class ReturnIndirectionNode extends IndirectReturnNode, ReturnNode {
}
}
/**
* A return node that is part of a summary.
*/
private class SummaryReturnNode extends ReturnNode, FlowSummaryNode {
private ReturnKind rk;
SummaryReturnNode() { FlowSummaryImpl::Private::summaryReturnNode(this.getSummaryNode(), rk) }
override ReturnKind getKind() { result = rk }
}
private Operand fullyConvertedCallStepImpl(Operand op) {
not exists(getANonConversionUse(op)) and
exists(Instruction instr |
@@ -616,7 +677,10 @@ predicate simpleOutNode(Node node, CallInstruction call) {
instructionForFullyConvertedCall(node.asInstruction(), call)
}
/** A data flow node that represents the output of a call. */
/**
* A data flow node that represents the output of a call (for example, a
* return value) at the call site.
*/
class OutNode extends Node {
OutNode() {
// Return values not hidden behind indirections
@@ -627,11 +691,15 @@ class OutNode extends Node {
or
// Modified arguments hidden behind indirections
this instanceof IndirectArgumentOutNode
or
// Summary node
FlowSummaryImpl::Private::summaryOutNode(_, this.(FlowSummaryNode).getSummaryNode(), _)
}
/** Gets the underlying call. */
abstract DataFlowCall getCall();
/** Gets the kind of this out node. */
abstract ReturnKind getReturnKind();
}
@@ -640,25 +708,44 @@ private class DirectCallOutNode extends OutNode {
DirectCallOutNode() { simpleOutNode(this, call) }
override DataFlowCall getCall() { result = call }
override DataFlowCall getCall() { result.asCallInstruction() = call }
override ReturnKind getReturnKind() { result = TNormalReturnKind(0) }
}
private class IndirectCallOutNode extends OutNode, IndirectReturnOutNode {
override DataFlowCall getCall() { result = this.getCallInstruction() }
override DataFlowCall getCall() { result.asCallInstruction() = this.getCallInstruction() }
override ReturnKind getReturnKind() { result = TNormalReturnKind(this.getIndirectionIndex()) }
}
private class SideEffectOutNode extends OutNode, IndirectArgumentOutNode {
override DataFlowCall getCall() { result = this.getCallInstruction() }
override DataFlowCall getCall() { result.asCallInstruction() = this.getCallInstruction() }
override ReturnKind getReturnKind() {
result = TIndirectReturnKind(this.getArgumentIndex(), this.getIndirectionIndex())
}
}
/**
* An output node that is part of a summary. An output node is needed when the
* model contains a synthesized call (`SummaryCall`) and the return value of
* that call is needed by the summary (for example when the model has flow from
* `Argument[0].ReturnValue`).
*/
private class SummaryOutNode extends OutNode, FlowSummaryNode {
private SummaryCall call;
private ReturnKind kind_;
SummaryOutNode() {
FlowSummaryImpl::Private::summaryOutNode(call.getReceiver(), this.getSummaryNode(), kind_)
}
override DataFlowCall getCall() { result = call }
override ReturnKind getReturnKind() { result = kind_ }
}
/**
* Gets a node that can read the value returned from `call` with return kind
* `kind`.
@@ -721,6 +808,10 @@ predicate jumpStep(Node n1, Node n2) {
v = n1.asIndirectVariable(globalDef.getIndirection())
)
)
or
// models-as-data summarized flow
FlowSummaryImpl::Private::Steps::summaryJumpStep(n1.(FlowSummaryNode).getSummaryNode(),
n2.(FlowSummaryNode).getSummaryNode())
}
/**
@@ -729,25 +820,35 @@ predicate jumpStep(Node n1, Node n2) {
* value of `node1`.
*
* The boolean `certain` is true if the destination address does not involve
* any pointer arithmetic, and false otherwise.
* any pointer arithmetic, and false otherwise. This has to do with whether a
* store step can be used to clear a field (see `clearsContent`).
*/
predicate storeStepImpl(Node node1, Content c, PostFieldUpdateNode node2, boolean certain) {
exists(int indirectionIndex1, int numberOfLoads, StoreInstruction store |
predicate storeStepImpl(Node node1, Content c, Node node2, boolean certain) {
exists(
PostFieldUpdateNode postFieldUpdate, int indirectionIndex1, int numberOfLoads,
StoreInstruction store
|
postFieldUpdate = node2 and
nodeHasInstruction(node1, store, pragma[only_bind_into](indirectionIndex1)) and
node2.getIndirectionIndex() = 1 and
numberOfLoadsFromOperand(node2.getFieldAddress(), store.getDestinationAddressOperand(),
numberOfLoads, certain)
postFieldUpdate.getIndirectionIndex() = 1 and
numberOfLoadsFromOperand(postFieldUpdate.getFieldAddress(),
store.getDestinationAddressOperand(), numberOfLoads, certain)
|
exists(FieldContent fc | fc = c |
fc.getField() = node2.getUpdatedField() and
fc.getField() = postFieldUpdate.getUpdatedField() and
fc.getIndirectionIndex() = 1 + indirectionIndex1 + numberOfLoads
)
or
exists(UnionContent uc | uc = c |
uc.getAField() = node2.getUpdatedField() and
uc.getAField() = postFieldUpdate.getUpdatedField() and
uc.getIndirectionIndex() = 1 + indirectionIndex1 + numberOfLoads
)
)
or
// models-as-data summarized flow
FlowSummaryImpl::Private::Steps::summaryStoreStep(node1.(FlowSummaryNode).getSummaryNode(), c,
node2.(FlowSummaryNode).getSummaryNode()) and
certain = true
}
/**
@@ -834,6 +935,10 @@ predicate readStep(Node node1, ContentSet c, Node node2) {
uc.getIndirectionIndex() = indirectionIndex2 + numberOfLoads
)
)
or
// models-as-data summarized flow
FlowSummaryImpl::Private::Steps::summaryReadStep(node1.(FlowSummaryNode).getSummaryNode(), c,
node2.(FlowSummaryNode).getSummaryNode())
}
/**
@@ -907,21 +1012,213 @@ class CastNode extends Node {
CastNode() { none() } // stub implementation
}
cached
private newtype TDataFlowCallable =
TSourceCallable(Cpp::Declaration decl) {
not decl instanceof FlowSummaryImpl::Public::SummarizedCallable
} or
TSummarizedCallable(FlowSummaryImpl::Public::SummarizedCallable c)
/**
* A function that may contain code or a variable that may contain itself. When
* flow crosses from one _enclosing callable_ to another, the interprocedural
* data-flow library discards call contexts and inserts a node in the big-step
* relation used for human-readable path explanations.
* A callable, which may be:
* - a function (that may contain code)
* - a summarized function (that may contain only `FlowSummaryNode`s)
* - a variable (this is used as context for global initialization, and also
* for the mid-point in interprocedural data flow between a write and read
* of a global variable in different functions).
* When flow crosses from one _enclosing callable_ to another, the
* interprocedural data-flow library discards call contexts and inserts a node
* in the big-step relation used for human-readable path explanations.
*/
class DataFlowCallable = Cpp::Declaration;
class DataFlowCallable extends TDataFlowCallable {
/** Gets the location of this callable. */
Location getLocation() { none() }
/** Gets a textual representation of this callable. */
string toString() { none() }
/**
* Gets the `Declaration` corresponding to this callable if it exists in the database.
* For summarized callables (which may not exist in the database), use `asSummarizedCallable`.
*/
Cpp::Declaration asSourceCallable() { this = TSourceCallable(result) }
/**
* Gets the underlying summarized callable, if
* this callable is generated from a models-as-data
* model.
*/
FlowSummaryImpl::Public::SummarizedCallable asSummarizedCallable() {
this = TSummarizedCallable(result)
}
/**
* Gets the underlying `Declaration` of this `DataFlowCallable`. This
* predicate returns a result for both source and summarized callables.
*/
Cpp::Declaration getUnderlyingCallable() {
result = this.asSummarizedCallable() or // SummarizedCallable = Function (in CPP)
result = this.asSourceCallable()
}
}
/**
* A source callable, conceptually, a function in the source code for the
* purpose of computing data flow. In practice this excludes functions that
* are summarized using models-as-data (as we don't want to create
* unmodeled flows or duplicate paths), and includes variables (for reasons
* explained in `DataFlowCallable`).
*/
class SourceCallable extends DataFlowCallable, TSourceCallable {
Cpp::Declaration decl;
SourceCallable() { this = TSourceCallable(decl) }
override string toString() { result = decl.toString() }
override Location getLocation() { result = decl.getLocation() }
}
/**
* A summarized callable, that is, a function synthesized from one or more
* models-as-data models as a place to contain the corresponding
* `FlowSummaryNode`s.
*/
class SummarizedCallable extends DataFlowCallable, TSummarizedCallable {
FlowSummaryImpl::Public::SummarizedCallable sc;
SummarizedCallable() { this = TSummarizedCallable(sc) }
override string toString() { result = sc.toString() }
override Location getLocation() { result = sc.getLocation() }
}
class DataFlowExpr = Expr;
class DataFlowType = Type;
/** A function call relevant for data flow. */
class DataFlowCall extends CallInstruction {
DataFlowCallable getEnclosingCallable() { result = this.getEnclosingFunction() }
cached
private newtype TDataFlowCall =
TNormalCall(CallInstruction call) or
TSummaryCall(
FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver
) {
FlowSummaryImpl::Private::summaryCallbackRange(c, receiver)
}
/**
* A function call relevant for data flow. This includes calls from source
* code and calls inside library callables with a flow summary.
*/
class DataFlowCall extends TDataFlowCall {
/**
* Gets the underlying data flow call instruction, if any.
*/
CallInstruction asCallInstruction() { none() }
/**
* Gets the operand the specifies the target function of the call.
*/
CallTargetOperand getCallTargetOperand() { none() }
/**
* Gets the `Function` that the call targets, if this is statically known.
*/
DataFlowCallable getStaticCallTarget() { none() }
/**
* Gets the `index`'th argument operand. The qualifier is considered to have index `-1`.
*/
ArgumentOperand getArgumentOperand(int index) { none() }
/**
* Gets the argument at the specified index, or `this` if `index` is `-1`.
*/
pragma[noinline]
final Instruction getArgument(int index) { result = this.getArgumentOperand(index).getDef() }
/**
* Gets the number of arguments of the call, including the `this` pointer, if any.
*/
final int getNumberOfArguments() { result = count(this.getArgumentOperand(_)) }
/**
* Gets the enclosing callable, if any.
*/
DataFlowCallable getEnclosingCallable() { none() }
/**
* Gets a textual representation of this call.
*/
string toString() { none() }
/**
* Gets the location of this call.
*/
Location getLocation() { none() }
}
/**
* A function call relevant for data flow, that exists in source code.
*/
private class NormalCall extends DataFlowCall, TNormalCall {
private CallInstruction call;
NormalCall() { this = TNormalCall(call) }
override CallInstruction asCallInstruction() { result = call }
override CallTargetOperand getCallTargetOperand() { result = call.getCallTargetOperand() }
override DataFlowCallable getStaticCallTarget() {
result.getUnderlyingCallable() = call.getStaticCallTarget()
}
override ArgumentOperand getArgumentOperand(int index) { result = call.getArgumentOperand(index) }
override DataFlowCallable getEnclosingCallable() {
result.getUnderlyingCallable() = call.getEnclosingFunction()
}
override string toString() { result = call.toString() }
override Location getLocation() { result = call.getLocation() }
}
/**
* A synthesized call inside a callable with a flow summary.
*
* For example, consider the function:
* ```
* int myFunction(int (*funPtr)());
* ```
* with an accompanying models-as-data flow summary involving `funPtr` (for
* example from `Argument[0].ReturnValue` to `ReturnValue`). A `SummaryCall`
* will be synthesized representing a call to `funPtr` inside `myFunction`,
* so that flow can be connected as described in the model.
*/
class SummaryCall extends DataFlowCall, TSummaryCall {
private FlowSummaryImpl::Public::SummarizedCallable c;
private FlowSummaryImpl::Private::SummaryNode receiver;
SummaryCall() { this = TSummaryCall(c, receiver) }
/**
* Gets the data flow node that holds the address of the function this call
* targets.
*/
FlowSummaryImpl::Private::SummaryNode getReceiver() { result = receiver }
// no implementation for `getCallTargetOperand()`, `getStaticCallTarget()`
// or `getArgumentOperand(int index)`. This is because the flow summary
// library is responsible for finding the call target, and there are no
// IR nodes available for the call target operand or argument operands.
override DataFlowCallable getEnclosingCallable() { result = TSummarizedCallable(c) }
override string toString() { result = "[summary] call to " + receiver + " in " + c }
override UnknownLocation getLocation() { any() }
}
module IsUnreachableInCall {
@@ -1019,10 +1316,16 @@ predicate neverSkipInPathGraph(Node n) {
class LambdaCallKind = Unit;
/** Holds if `creation` is an expression that creates a lambda of kind `kind` for `c`. */
predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) { none() }
predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c) {
creation.asInstruction().(FunctionAddressInstruction).getFunctionSymbol() = c.asSourceCallable() and
exists(kind)
}
/** Holds if `call` is a lambda call of kind `kind` where `receiver` is the lambda expression. */
predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { none() }
predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) {
call.(SummaryCall).getReceiver() = receiver.(FlowSummaryNode).getSummaryNode() and
exists(kind)
}
/** Extra data-flow steps needed for lambda flow analysis. */
predicate additionalLambdaFlowStep(Node nodeFrom, Node nodeTo, boolean preservesValue) { none() }
@@ -1038,7 +1341,15 @@ predicate knownSinkModel(Node sink, string model) { none() }
* One example would be to allow flow like `p.foo = p.bar;`, which is disallowed
* by default as a heuristic.
*/
predicate allowParameterReturnInSelf(ParameterNode p) { p instanceof IndirectParameterNode }
predicate allowParameterReturnInSelf(ParameterNode p) {
p instanceof IndirectParameterNode
or
// models-as-data summarized flow
exists(DataFlowCallable c, ParameterPosition pos |
p.isParameterOf(c, pos) and
FlowSummaryImpl::Private::summaryAllowParameterReturnInSelf(c.asSummarizedCallable(), pos)
)
}
private predicate fieldHasApproxName(Field f, string s) {
s = f.getName().charAt(0) and

View File

@@ -10,6 +10,7 @@ private import semmle.code.cpp.ir.ValueNumbering
private import semmle.code.cpp.ir.IR
private import semmle.code.cpp.controlflow.IRGuards
private import semmle.code.cpp.models.interfaces.DataFlow
private import semmle.code.cpp.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl
private import DataFlowPrivate
private import ModelUtil
private import SsaInternals as Ssa
@@ -59,7 +60,8 @@ private newtype TIRDataFlowNode =
)
} or
TFinalGlobalValue(Ssa::GlobalUse globalUse) or
TInitialGlobalValue(Ssa::GlobalDef globalUse)
TInitialGlobalValue(Ssa::GlobalDef globalUse) or
TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn)
/**
* An operand that is defined by a `FieldAddressInstruction`.
@@ -735,6 +737,36 @@ class InitialGlobalValue extends Node, TInitialGlobalValue {
override string toStringImpl() { result = globalDef.toString() }
}
/**
* A data-flow node used to model flow summaries. That is, a dataflow node
* that is synthesized to represent a parameter, return value, or other part
* of a models-as-data modeled function.
*/
class FlowSummaryNode extends Node, TFlowSummaryNode {
/**
* Gets the models-as-data `SummaryNode` associated with this dataflow
* `FlowSummaryNode`.
*/
FlowSummaryImpl::Private::SummaryNode getSummaryNode() { this = TFlowSummaryNode(result) }
/**
* Gets the summarized callable that this node belongs to.
*/
FlowSummaryImpl::Public::SummarizedCallable getSummarizedCallable() {
result = this.getSummaryNode().getSummarizedCallable()
}
/**
* Gets the enclosing callable. For a `FlowSummaryNode` this is always the
* summarized function this node is part of.
*/
override Declaration getEnclosingCallable() { result = this.getSummarizedCallable() }
override Location getLocationImpl() { result = this.getSummarizedCallable().getLocation() }
override string toStringImpl() { result = this.getSummaryNode().toString() }
}
/**
* INTERNAL: do not use.
*
@@ -826,6 +858,9 @@ class IndirectArgumentOutNode extends PostUpdateNodeImpl {
CallInstruction getCallInstruction() { result.getAnArgumentOperand() = operand }
/**
* Gets the `Function` that the call targets, if this is statically known.
*/
Function getStaticCallTarget() { result = this.getCallInstruction().getStaticCallTarget() }
override string toStringImpl() {
@@ -1635,6 +1670,8 @@ class ParameterNode extends Node {
this.asInstruction() instanceof InitializeParameterInstruction
or
this instanceof IndirectParameterNode
or
FlowSummaryImpl::Private::summaryParameterNode(this.(FlowSummaryNode).getSummaryNode(), _)
}
/**
@@ -1642,7 +1679,7 @@ class ParameterNode extends Node {
* implicit `this` parameter is considered to have position `-1`, and
* pointer-indirection parameters are at further negative positions.
*/
predicate isParameterOf(Function f, ParameterPosition pos) { none() } // overridden by subclasses
predicate isParameterOf(DataFlowCallable f, ParameterPosition pos) { none() } // overridden by subclasses
/** Gets the `Parameter` associated with this node, if it exists. */
Parameter getParameter() { none() } // overridden by subclasses
@@ -1664,8 +1701,9 @@ class DirectParameterNode extends InstructionNode {
private class ExplicitParameterNode extends ParameterNode, DirectParameterNode {
ExplicitParameterNode() { exists(instr.getParameter()) }
override predicate isParameterOf(Function f, ParameterPosition pos) {
f.getParameter(pos.(DirectPosition).getIndex()) = instr.getParameter()
override predicate isParameterOf(DataFlowCallable f, ParameterPosition pos) {
f.getUnderlyingCallable().(Function).getParameter(pos.(DirectPosition).getIndex()) =
instr.getParameter()
}
override string toStringImpl() { result = instr.getParameter().toString() }
@@ -1677,13 +1715,32 @@ private class ExplicitParameterNode extends ParameterNode, DirectParameterNode {
class ThisParameterNode extends ParameterNode, DirectParameterNode {
ThisParameterNode() { instr.getIRVariable() instanceof IRThisVariable }
override predicate isParameterOf(Function f, ParameterPosition pos) {
pos.(DirectPosition).getIndex() = -1 and instr.getEnclosingFunction() = f
override predicate isParameterOf(DataFlowCallable f, ParameterPosition pos) {
pos.(DirectPosition).getIndex() = -1 and
instr.getEnclosingFunction() = f.getUnderlyingCallable()
}
override string toStringImpl() { result = "this" }
}
/**
* A parameter node that is part of a summary.
*/
class SummaryParameterNode extends ParameterNode, FlowSummaryNode {
SummaryParameterNode() {
FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), _)
}
private ParameterPosition getPosition() {
FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), result)
}
override predicate isParameterOf(DataFlowCallable c, ParameterPosition p) {
c.getUnderlyingCallable() = this.getSummarizedCallable() and
p = this.getPosition()
}
}
pragma[noinline]
private predicate indirectPositionHasArgumentIndexAndIndex(
IndirectionPosition pos, int argumentIndex, int indirectionIndex
@@ -1702,8 +1759,8 @@ private predicate indirectParameterNodeHasArgumentIndexAndIndex(
/** A synthetic parameter to model the pointed-to object of a pointer parameter. */
class ParameterIndirectionNode extends ParameterNode instanceof IndirectParameterNode {
override predicate isParameterOf(Function f, ParameterPosition pos) {
IndirectParameterNode.super.getEnclosingCallable() = f and
override predicate isParameterOf(DataFlowCallable f, ParameterPosition pos) {
IndirectParameterNode.super.getEnclosingCallable() = f.getUnderlyingCallable() and
exists(int argumentIndex, int indirectionIndex |
indirectPositionHasArgumentIndexAndIndex(pos, argumentIndex, indirectionIndex) and
indirectParameterNodeHasArgumentIndexAndIndex(this, argumentIndex, indirectionIndex)
@@ -1753,6 +1810,22 @@ abstract private class PartialDefinitionNode extends PostUpdateNode {
abstract Expr getDefinedExpr();
}
/**
* A `PostUpdateNode` that is part of a flow summary. These are synthesized,
* for example, when a models-as-data summary models a write to a field since
* the write needs to target a `PostUpdateNode`.
*/
class SummaryPostUpdateNode extends FlowSummaryNode, PostUpdateNode {
SummaryPostUpdateNode() {
FlowSummaryImpl::Private::summaryPostUpdateNode(this.getSummaryNode(), _)
}
override Node getPreUpdateNode() {
FlowSummaryImpl::Private::summaryPostUpdateNode(this.getSummaryNode(),
result.(FlowSummaryNode).getSummaryNode())
}
}
/**
* A node that represents the value of a variable after a function call that
* may have changed the variable because it's passed by reference.
@@ -1889,10 +1962,20 @@ cached
private module Cached {
/**
* Holds if data flows from `nodeFrom` to `nodeTo` in exactly one local
* (intra-procedural) step.
* (intra-procedural) step. This relation is only used for local dataflow
* (for example `DataFlow::localFlow(source, sink)`) so it contains
* special cases that should only apply to local dataflow.
*/
cached
predicate localFlowStep(Node nodeFrom, Node nodeTo) { simpleLocalFlowStep(nodeFrom, nodeTo, _) }
predicate localFlowStep(Node nodeFrom, Node nodeTo) {
// common dataflow steps
simpleLocalFlowStep(nodeFrom, nodeTo, _)
or
// models-as-data summarized flow for local data flow (i.e. special case for flow
// through calls to modeled functions, without relying on global dataflow to join
// the dots).
FlowSummaryImpl::Private::Steps::summaryThroughStepValue(nodeFrom, nodeTo, _)
}
private predicate indirectionOperandFlow(RawIndirectOperand nodeFrom, Node nodeTo) {
nodeFrom != nodeTo and
@@ -1958,8 +2041,9 @@ private module Cached {
/**
* INTERNAL: do not use.
*
* This is the local flow predicate that's used as a building block in global
* data flow. It may have less flow than the `localFlowStep` predicate.
* This is the local flow predicate that's used as a building block in both
* local and global data flow. It may have less flow than the `localFlowStep`
* predicate.
*/
cached
predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo, string model) {
@@ -2001,6 +2085,10 @@ private module Cached {
// function such as `operator[]`.
reverseFlow(nodeFrom, nodeTo) and
model = ""
or
// models-as-data summarized flow
FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(),
nodeTo.(FlowSummaryNode).getSummaryNode(), true, model)
}
private predicate simpleInstructionLocalFlowStep(Operand opFrom, Instruction iTo) {
@@ -2242,6 +2330,8 @@ private Field getAFieldWithSize(Union u, int bytes) {
cached
private newtype TContent =
TFieldContent(Field f, int indirectionIndex) {
// the indirection index for field content starts at 1 (because `TFieldContent` is thought of as
// the address of the field, `FieldAddress` in the IR).
indirectionIndex = [1 .. Ssa::getMaxIndirectionsForType(f.getUnspecifiedType())] and
// Reads and writes of union fields are tracked using `UnionContent`.
not f.getDeclaringType() instanceof Union
@@ -2251,7 +2341,8 @@ private newtype TContent =
f = u.getAField() and
bytes = getFieldSize(f) and
// We key `UnionContent` by the union instead of its fields since a write to one
// field can be read by any read of the union's fields.
// field can be read by any read of the union's fields. Again, the indirection index
// is 1-based (because 0 is considered the address).
indirectionIndex =
[1 .. max(Ssa::getMaxIndirectionsForType(getAFieldWithSize(u, bytes).getUnspecifiedType()))]
)
@@ -2285,16 +2376,14 @@ class Content extends TContent {
abstract predicate impliesClearOf(Content c);
}
/**
* Gets a string consisting of `n` star characters ("*"), where n >= 0. This is
* used to represent indirection.
*/
bindingset[n]
string repeatStars(int n) { result = concat(int i | i in [1 .. n] | "*") }
private module ContentStars {
private int maxNumberOfIndirections() { result = max(any(Content c).getIndirectionIndex()) }
private string repeatStars(int n) {
n = 0 and result = ""
or
n = [1 .. maxNumberOfIndirections()] and
result = "*" + repeatStars(n - 1)
}
/**
* Gets the number of stars (i.e., `*`s) needed to produce the `toString`
* output for `c`.
@@ -2374,6 +2463,12 @@ class UnionContent extends Content, TUnionContent {
* stored into (`getAStoreContent`) or read from (`getAReadContent`).
*/
class ContentSet instanceof Content {
/**
* Holds if this content set is the singleton `{c}`. At present, this is
* the only kind of content set supported in C/C++.
*/
predicate isSingleton(Content c) { this = c }
/** Gets a content that may be stored into when storing into this set. */
Content getAStoreContent() { result = this }
@@ -2591,5 +2686,5 @@ class AdditionalCallTarget extends Unit {
/**
* Gets a viable target for `call`.
*/
abstract DataFlowCallable viableTarget(Call call);
abstract Declaration viableTarget(Call call);
}

View File

@@ -19,15 +19,6 @@ private module SourceVariables {
ind = [0 .. countIndirectionsForCppType(base.getLanguageType()) + 1]
}
private int maxNumberOfIndirections() { result = max(SourceVariable sv | | sv.getIndirection()) }
private string repeatStars(int n) {
n = 0 and result = ""
or
n = [1 .. maxNumberOfIndirections()] and
result = "*" + repeatStars(n - 1)
}
class SourceVariable extends TSourceVariable {
BaseSourceVariable base;
int ind;
@@ -74,19 +65,28 @@ private module SourceVariables {
import SourceVariables
/**
* Holds if the `(operand, indirectionIndex)` columns should be
* assigned a `RawIndirectOperand` value.
* Holds if `indirectionIndex` is a valid non-zero indirection index for
* operand `op`. That is, `indirectionIndex` is between 1 and the maximum
* indirection for the operand's type.
*/
predicate hasRawIndirectOperand(Operand op, int indirectionIndex) {
predicate hasIndirectOperand(Operand op, int indirectionIndex) {
exists(CppType type, int m |
not ignoreOperand(op) and
type = getLanguageType(op) and
m = countIndirectionsForCppType(type) and
indirectionIndex = [1 .. m] and
not hasIRRepresentationOfIndirectOperand(op, indirectionIndex, _, _)
indirectionIndex = [1 .. m]
)
}
/**
* Holds if the `(operand, indirectionIndex)` columns should be
* assigned a `RawIndirectOperand` value.
*/
predicate hasRawIndirectOperand(Operand op, int indirectionIndex) {
hasIndirectOperand(op, indirectionIndex) and
not hasIRRepresentationOfIndirectOperand(op, indirectionIndex, _, _)
}
/**
* Holds if the `(instr, indirectionIndex)` columns should be
* assigned a `RawIndirectInstruction` value.
@@ -443,6 +443,8 @@ class FinalParameterUse extends UseImpl, TFinalParameterUse {
Parameter getParameter() { result = p }
int getArgumentIndex() { result = p.getIndex() }
override Node getNode() { finalParameterNodeHasParameterAndIndex(result, p, ind) }
override int getIndirection() { result = ind + 1 }
@@ -891,7 +893,7 @@ private predicate isArgumentOfCallableInstruction(DataFlowCall call, Instruction
}
private predicate isArgumentOfCallableOperand(DataFlowCall call, Operand operand) {
operand.(ArgumentOperand).getCall() = call
operand = call.getArgumentOperand(_)
or
exists(FieldAddressInstruction fai |
fai.getObjectAddressOperand() = operand and

View File

@@ -6,16 +6,26 @@ private import semmle.code.cpp.models.interfaces.SideEffect
private import DataFlowUtil
private import DataFlowPrivate
private import SsaInternals as Ssa
private import semmle.code.cpp.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl
private import semmle.code.cpp.ir.dataflow.FlowSteps
/**
* Holds if taint propagates from `nodeFrom` to `nodeTo` in exactly one local
* (intra-procedural) step.
* (intra-procedural) step. This relation is only used for local taint flow
* (for example `TaintTracking::localTaint(source, sink)`) so it may contain
* special cases that should only apply to local taint flow.
*/
predicate localTaintStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) {
// dataflow step
DataFlow::localFlowStep(nodeFrom, nodeTo)
or
// taint flow step
localAdditionalTaintStep(nodeFrom, nodeTo, _)
or
// models-as-data summarized flow for local data flow (i.e. special case for flow
// through calls to modeled functions, without relying on global dataflow to join
// the dots).
FlowSummaryImpl::Private::Steps::summaryThroughStepTaint(nodeFrom, nodeTo, _)
}
/**
@@ -42,6 +52,10 @@ predicate localAdditionalTaintStep(DataFlow::Node nodeFrom, DataFlow::Node nodeT
any(Ssa::Indirection ind).isAdditionalTaintStep(nodeFrom, nodeTo) and
model = ""
or
// models-as-data summarized flow
FlowSummaryImpl::Private::Steps::summaryLocalStep(nodeFrom.(FlowSummaryNode).getSummaryNode(),
nodeTo.(FlowSummaryNode).getSummaryNode(), false, model)
or
// object->field conflation for content that is a `TaintInheritingContent`.
exists(DataFlow::ContentSet f |
readStep(nodeFrom, f, nodeTo) and

View File

@@ -1,5 +1,6 @@
private import implementations.Allocation
private import implementations.Deallocation
private import implementations.Fopen
private import implementations.Fread
private import implementations.Getenv
private import implementations.Gets
@@ -41,4 +42,4 @@ private import implementations.SqLite3
private import implementations.PostgreSql
private import implementations.System
private import implementations.StructuredExceptionHandling
private import implementations.Fopen
private import implementations.ZMQ

View File

@@ -112,3 +112,21 @@ private class GetsFunction extends DataFlowFunction, ArrayFunction, AliasFunctio
override predicate hasArrayOutput(int bufParam) { bufParam = 0 }
}
/**
* A model for `getc` and similar functions that are flow sources.
*/
private class GetcSource extends SourceModelCsv {
override predicate row(string row) {
row =
[
";;false;getc;;;ReturnValue;remote", ";;false;getwc;;;ReturnValue;remote",
";;false;_getc_nolock;;;ReturnValue;remote", ";;false;_getwc_nolock;;;ReturnValue;remote",
";;false;getch;;;ReturnValue;local", ";;false;_getch;;;ReturnValue;local",
";;false;_getwch;;;ReturnValue;local", ";;false;_getch_nolock;;;ReturnValue;local",
";;false;_getwch_nolock;;;ReturnValue;local", ";;false;getchar;;;ReturnValue;local",
";;false;getwchar;;;ReturnValue;local", ";;false;_getchar_nolock;;;ReturnValue;local",
";;false;_getwchar_nolock;;;ReturnValue;local",
]
}
}

View File

@@ -0,0 +1,45 @@
/**
* Provides implementation classes modeling the ZeroMQ networking library.
*/
import semmle.code.cpp.models.interfaces.FlowSource
/**
* Remote flow sources.
*/
private class ZmqSource extends SourceModelCsv {
override predicate row(string row) {
row =
[
";;false;zmq_recv;;;Argument[*1];remote", ";;false;zmq_recvmsg;;;Argument[*1];remote",
";;false;zmq_msg_recv;;;Argument[*0];remote",
]
}
}
/**
* Remote flow sinks.
*/
private class ZmqSinks extends SinkModelCsv {
override predicate row(string row) {
row =
[
";;false;zmq_send;;;Argument[*1];remote-sink",
";;false;zmq_sendmsg;;;Argument[*1];remote-sink",
";;false;zmq_msg_send;;;Argument[*0];remote-sink",
]
}
}
/**
* Flow steps.
*/
private class ZmqSummaries extends SummaryModelCsv {
override predicate row(string row) {
row =
[
";;false;zmq_msg_init_data;;;Argument[*1];Argument[*0];taint",
";;false;zmq_msg_data;;;Argument[*0];ReturnValue[*];taint",
]
}
}

View File

@@ -9,6 +9,7 @@
import cpp
import FunctionInputsAndOutputs
import semmle.code.cpp.models.Models
import semmle.code.cpp.dataflow.ExternalFlow
/**
* A library function that returns data that may be read from a network connection.

View File

@@ -20,6 +20,9 @@ abstract class RemoteFlowSource extends FlowSource { }
/** A data flow source of local user input. */
abstract class LocalFlowSource extends FlowSource { }
/**
* A remote data flow source that is defined through a `RemoteFlowSourceFunction` model.
*/
private class RemoteModelSource extends RemoteFlowSource {
string sourceType;
@@ -34,6 +37,9 @@ private class RemoteModelSource extends RemoteFlowSource {
override string getSourceType() { result = sourceType }
}
/**
* A local data flow source that is defined through a `LocalFlowSourceFunction` model.
*/
private class LocalModelSource extends LocalFlowSource {
string sourceType;
@@ -48,6 +54,9 @@ private class LocalModelSource extends LocalFlowSource {
override string getSourceType() { result = sourceType }
}
/**
* A local data flow source that the `argv` parameter to `main`.
*/
private class ArgvSource extends LocalFlowSource {
ArgvSource() {
exists(Function main, Parameter argv |
@@ -60,12 +69,33 @@ private class ArgvSource extends LocalFlowSource {
override string getSourceType() { result = "a command-line argument" }
}
/**
* A remote data flow source that is defined through 'models as data'.
*/
private class ExternalRemoteFlowSource extends RemoteFlowSource {
ExternalRemoteFlowSource() { sourceNode(this, "remote") }
override string getSourceType() { result = "external" }
}
/**
* A local data flow source that is defined through 'models as data'.
*/
private class ExternalLocalFlowSource extends LocalFlowSource {
ExternalLocalFlowSource() { sourceNode(this, "local") }
override string getSourceType() { result = "external" }
}
/** A remote data flow sink. */
abstract class RemoteFlowSink extends DataFlow::Node {
/** Gets a string that describes the type of this flow sink. */
abstract string getSinkType();
}
/**
* A remote flow sink derived from the `RemoteFlowSinkFunction` model.
*/
private class RemoteParameterSink extends RemoteFlowSink {
string sourceType;
@@ -79,3 +109,12 @@ private class RemoteParameterSink extends RemoteFlowSink {
override string getSinkType() { result = sourceType }
}
/**
* A remote flow sink defined in a CSV model.
*/
private class RemoteFlowFromCsvSink extends RemoteFlowSink {
RemoteFlowFromCsvSink() { sinkNode(this, "remote-sink") }
override string getSinkType() { result = "remote flow sink" }
}

View File

@@ -139,6 +139,7 @@ private module ParameterSinks {
}
private import semmle.code.cpp.ir.dataflow.internal.DataFlowImplCommon
private import semmle.code.cpp.ir.dataflow.internal.DataFlowPrivate
/**
* Holds if `n` represents the expression `e`, and `e` is a pointer that is
@@ -149,11 +150,11 @@ private import semmle.code.cpp.ir.dataflow.internal.DataFlowImplCommon
predicate isUse(DataFlow::Node n, Expr e) {
isUse0(e) and n.asExpr() = e
or
exists(CallInstruction call, InitializeParameterInstruction init |
exists(DataFlowCall call, InitializeParameterInstruction init |
n.asOperand().getDef().getUnconvertedResultExpression() = e and
pragma[only_bind_into](init) = ParameterSinks::getAnAlwaysDereferencedParameter() and
viableParamArg(call, DataFlow::instructionNode(init), n) and
pragma[only_bind_out](init.getEnclosingFunction()) =
pragma[only_bind_out](call.getStaticCallTarget())
pragma[only_bind_out](call.asCallInstruction().getStaticCallTarget())
)
}

View File

@@ -31,7 +31,9 @@ predicate useFunc(GlobalVariable v, Function f) {
}
predicate uninitialisedBefore(GlobalVariable v, Function f) {
f.hasGlobalName("main")
f.hasGlobalName("main") and
not initialisedAtDeclaration(v) and
not isStdlibVariable(v)
or
exists(Call call, Function g |
uninitialisedBefore(v, g) and
@@ -98,10 +100,16 @@ predicate callReaches(Call call, ControlFlowNode successor) {
)
}
/** Holds if `v` has an initializer. */
predicate initialisedAtDeclaration(GlobalVariable v) { exists(v.getInitializer()) }
/** Holds if `v` is a global variable that does not need to be initialized. */
predicate isStdlibVariable(GlobalVariable v) { v.hasGlobalName(["stdin", "stdout", "stderr"]) }
from GlobalVariable v, Function f
where
uninitialisedBefore(v, f) and
useFunc(v, f)
select f,
"The variable '" + v.getName() +
"The variable '" + v.getName() + "'" +
" is used in this function but may not be initialized when it is called."

View File

@@ -15,6 +15,8 @@ import cpp
from StackVariable v, ControlFlowNode def, VariableAccess checked, VariableAccess unchecked
where
checked = v.getAnAccess() and
// The check can often be in a macro for handling exception
not checked.isInMacroExpansion() and
dereferenced(checked) and
unchecked = v.getAnAccess() and
dereferenced(unchecked) and

View File

@@ -16,6 +16,7 @@ import cpp
import semmle.code.cpp.ir.dataflow.TaintTracking
import semmle.code.cpp.models.interfaces.FlowSource
import semmle.code.cpp.models.implementations.Memset
import semmle.code.cpp.security.FlowSources
import ExposedSystemData::PathGraph
import SystemData
@@ -23,11 +24,11 @@ module ExposedSystemDataConfig implements DataFlow::ConfigSig {
predicate isSource(DataFlow::Node source) { source = any(SystemData sd).getAnExpr() }
predicate isSink(DataFlow::Node sink) {
exists(FunctionCall fc, FunctionInput input, int arg |
fc.getTarget().(RemoteFlowSinkFunction).hasRemoteFlowSink(input, _) and
input.isParameterDeref(arg) and
fc.getArgument(arg).getAChild*() = sink.asIndirectExpr()
)
sink instanceof RemoteFlowSink
or
// workaround for cases where the sink contains the tainted thing as a child; this could
// probably be handled better with taint inheriting content or similar modeling.
exists(RemoteFlowSink sinkNode | sinkNode.asIndirectExpr().getAChild*() = sink.asIndirectExpr())
}
predicate isBarrier(DataFlow::Node node) {

View File

@@ -0,0 +1,5 @@
---
category: minorAnalysis
---
* The "Global variable may be used before initialization" query (`cpp/global-use-before-init`) no longer raises an alert on global variables that are initialized when they are declared.
* The "Inconsistent null check of pointer" query (`cpp/inconsistent-nullness-testing`) query no longer raises an alert when the guarded check is in a macro expansion.

View File

@@ -0,0 +1,76 @@
| tests.cpp:144:5:144:19 | [summary param] 0 in madArg0ToReturn | ParameterNode | madArg0ToReturn | madArg0ToReturn |
| tests.cpp:144:5:144:19 | [summary] to write: ReturnValue in madArg0ToReturn | ReturnNode | madArg0ToReturn | madArg0ToReturn |
| tests.cpp:145:6:145:28 | [summary param] 0 in madArg0ToReturnIndirect | ParameterNode | madArg0ToReturnIndirect | madArg0ToReturnIndirect |
| tests.cpp:145:6:145:28 | [summary] to write: ReturnValue[*] in madArg0ToReturnIndirect | ReturnNode | madArg0ToReturnIndirect | madArg0ToReturnIndirect |
| tests.cpp:147:5:147:28 | [summary param] 0 in madArg0ToReturnValueFlow | ParameterNode | madArg0ToReturnValueFlow | madArg0ToReturnValueFlow |
| tests.cpp:147:5:147:28 | [summary] to write: ReturnValue in madArg0ToReturnValueFlow | ReturnNode | madArg0ToReturnValueFlow | madArg0ToReturnValueFlow |
| tests.cpp:148:5:148:27 | [summary param] 0 indirection in madArg0IndirectToReturn | ParameterNode | madArg0IndirectToReturn | madArg0IndirectToReturn |
| tests.cpp:148:5:148:27 | [summary] to write: ReturnValue in madArg0IndirectToReturn | ReturnNode | madArg0IndirectToReturn | madArg0IndirectToReturn |
| tests.cpp:149:5:149:33 | [summary param] 0 indirection in madArg0DoubleIndirectToReturn | ParameterNode | madArg0DoubleIndirectToReturn | madArg0DoubleIndirectToReturn |
| tests.cpp:149:5:149:33 | [summary] to write: ReturnValue in madArg0DoubleIndirectToReturn | ReturnNode | madArg0DoubleIndirectToReturn | madArg0DoubleIndirectToReturn |
| tests.cpp:150:5:150:30 | [summary param] 0 in madArg0NotIndirectToReturn | ParameterNode | madArg0NotIndirectToReturn | madArg0NotIndirectToReturn |
| tests.cpp:150:5:150:30 | [summary] to write: ReturnValue in madArg0NotIndirectToReturn | ReturnNode | madArg0NotIndirectToReturn | madArg0NotIndirectToReturn |
| tests.cpp:151:6:151:26 | [summary param] 0 in madArg0ToArg1Indirect | ParameterNode | madArg0ToArg1Indirect | madArg0ToArg1Indirect |
| tests.cpp:151:6:151:26 | [summary param] 1 indirection in madArg0ToArg1Indirect | ParameterNode | madArg0ToArg1Indirect | madArg0ToArg1Indirect |
| tests.cpp:151:6:151:26 | [summary] to write: Argument[1 indirection] in madArg0ToArg1Indirect | PostUpdateNode | madArg0ToArg1Indirect | madArg0ToArg1Indirect |
| tests.cpp:152:6:152:34 | [summary param] 0 indirection in madArg0IndirectToArg1Indirect | ParameterNode | madArg0IndirectToArg1Indirect | madArg0IndirectToArg1Indirect |
| tests.cpp:152:6:152:34 | [summary param] 1 indirection in madArg0IndirectToArg1Indirect | ParameterNode | madArg0IndirectToArg1Indirect | madArg0IndirectToArg1Indirect |
| tests.cpp:152:6:152:34 | [summary] to write: Argument[1 indirection] in madArg0IndirectToArg1Indirect | PostUpdateNode | madArg0IndirectToArg1Indirect | madArg0IndirectToArg1Indirect |
| tests.cpp:153:5:153:18 | [summary param] 0 indirection in madArgsComplex | ParameterNode | madArgsComplex | madArgsComplex |
| tests.cpp:153:5:153:18 | [summary param] 1 indirection in madArgsComplex | ParameterNode | madArgsComplex | madArgsComplex |
| tests.cpp:153:5:153:18 | [summary param] 2 in madArgsComplex | ParameterNode | madArgsComplex | madArgsComplex |
| tests.cpp:153:5:153:18 | [summary] to write: ReturnValue in madArgsComplex | ReturnNode | madArgsComplex | madArgsComplex |
| tests.cpp:155:5:155:28 | [summary param] 2 in madAndImplementedComplex | ParameterNode | madAndImplementedComplex | madAndImplementedComplex |
| tests.cpp:155:5:155:28 | [summary] to write: ReturnValue in madAndImplementedComplex | ReturnNode | madAndImplementedComplex | madAndImplementedComplex |
| tests.cpp:160:5:160:24 | [summary param] 0 in madArg0FieldToReturn | ParameterNode | madArg0FieldToReturn | madArg0FieldToReturn |
| tests.cpp:160:5:160:24 | [summary] read: Argument[0].Field[value] in madArg0FieldToReturn | | madArg0FieldToReturn | madArg0FieldToReturn |
| tests.cpp:160:5:160:24 | [summary] to write: ReturnValue in madArg0FieldToReturn | ReturnNode | madArg0FieldToReturn | madArg0FieldToReturn |
| tests.cpp:161:5:161:32 | [summary param] 0 indirection in madArg0IndirectFieldToReturn | ParameterNode | madArg0IndirectFieldToReturn | madArg0IndirectFieldToReturn |
| tests.cpp:161:5:161:32 | [summary] read: Argument[0 indirection].Field[value] in madArg0IndirectFieldToReturn | | madArg0IndirectFieldToReturn | madArg0IndirectFieldToReturn |
| tests.cpp:161:5:161:32 | [summary] to write: ReturnValue in madArg0IndirectFieldToReturn | ReturnNode | madArg0IndirectFieldToReturn | madArg0IndirectFieldToReturn |
| tests.cpp:162:5:162:32 | [summary param] 0 in madArg0FieldIndirectToReturn | ParameterNode | madArg0FieldIndirectToReturn | madArg0FieldIndirectToReturn |
| tests.cpp:162:5:162:32 | [summary] read: Argument[0].Field[*ptr] in madArg0FieldIndirectToReturn | | madArg0FieldIndirectToReturn | madArg0FieldIndirectToReturn |
| tests.cpp:162:5:162:32 | [summary] to write: ReturnValue in madArg0FieldIndirectToReturn | ReturnNode | madArg0FieldIndirectToReturn | madArg0FieldIndirectToReturn |
| tests.cpp:163:13:163:32 | [summary param] 0 in madArg0ToReturnField | ParameterNode | madArg0ToReturnField | madArg0ToReturnField |
| tests.cpp:163:13:163:32 | [summary] to write: ReturnValue in madArg0ToReturnField | ReturnNode | madArg0ToReturnField | madArg0ToReturnField |
| tests.cpp:163:13:163:32 | [summary] to write: ReturnValue.Field[value] in madArg0ToReturnField | | madArg0ToReturnField | madArg0ToReturnField |
| tests.cpp:164:14:164:41 | [summary param] 0 in madArg0ToReturnIndirectField | ParameterNode | madArg0ToReturnIndirectField | madArg0ToReturnIndirectField |
| tests.cpp:164:14:164:41 | [summary] to write: ReturnValue[*] in madArg0ToReturnIndirectField | ReturnNode | madArg0ToReturnIndirectField | madArg0ToReturnIndirectField |
| tests.cpp:164:14:164:41 | [summary] to write: ReturnValue[*].Field[value] in madArg0ToReturnIndirectField | | madArg0ToReturnIndirectField | madArg0ToReturnIndirectField |
| tests.cpp:165:13:165:40 | [summary param] 0 in madArg0ToReturnFieldIndirect | ParameterNode | madArg0ToReturnFieldIndirect | madArg0ToReturnFieldIndirect |
| tests.cpp:165:13:165:40 | [summary] to write: ReturnValue in madArg0ToReturnFieldIndirect | ReturnNode | madArg0ToReturnFieldIndirect | madArg0ToReturnFieldIndirect |
| tests.cpp:165:13:165:40 | [summary] to write: ReturnValue.Field[*ptr] in madArg0ToReturnFieldIndirect | | madArg0ToReturnFieldIndirect | madArg0ToReturnFieldIndirect |
| tests.cpp:284:7:284:19 | [summary param] 0 in madArg0ToSelf | ParameterNode | madArg0ToSelf | madArg0ToSelf |
| tests.cpp:284:7:284:19 | [summary param] this indirection in madArg0ToSelf | ParameterNode | madArg0ToSelf | madArg0ToSelf |
| tests.cpp:284:7:284:19 | [summary] to write: Argument[this indirection] in madArg0ToSelf | PostUpdateNode | madArg0ToSelf | madArg0ToSelf |
| tests.cpp:285:6:285:20 | [summary param] this indirection in madSelfToReturn | ParameterNode | madSelfToReturn | madSelfToReturn |
| tests.cpp:285:6:285:20 | [summary] to write: ReturnValue in madSelfToReturn | ReturnNode | madSelfToReturn | madSelfToReturn |
| tests.cpp:287:7:287:20 | [summary param] 0 in madArg0ToField | ParameterNode | madArg0ToField | madArg0ToField |
| tests.cpp:287:7:287:20 | [summary param] this indirection in madArg0ToField | ParameterNode | madArg0ToField | madArg0ToField |
| tests.cpp:287:7:287:20 | [summary] to write: Argument[this indirection] in madArg0ToField | PostUpdateNode | madArg0ToField | madArg0ToField |
| tests.cpp:287:7:287:20 | [summary] to write: Argument[this indirection].Field[val] in madArg0ToField | | madArg0ToField | madArg0ToField |
| tests.cpp:288:6:288:21 | [summary param] this indirection in madFieldToReturn | ParameterNode | madFieldToReturn | madFieldToReturn |
| tests.cpp:288:6:288:21 | [summary] read: Argument[this indirection].Field[val] in madFieldToReturn | | madFieldToReturn | madFieldToReturn |
| tests.cpp:288:6:288:21 | [summary] to write: ReturnValue in madFieldToReturn | ReturnNode | madFieldToReturn | madFieldToReturn |
| tests.cpp:313:7:313:30 | [summary param] this indirection in namespaceMadSelfToReturn | ParameterNode | namespaceMadSelfToReturn | namespaceMadSelfToReturn |
| tests.cpp:313:7:313:30 | [summary] to write: ReturnValue in namespaceMadSelfToReturn | ReturnNode | namespaceMadSelfToReturn | namespaceMadSelfToReturn |
| tests.cpp:434:5:434:29 | [summary param] 0 in madCallArg0ReturnToReturn | ParameterNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn |
| tests.cpp:434:5:434:29 | [summary] read: Argument[0].Parameter[this] in madCallArg0ReturnToReturn | PostUpdateNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn |
| tests.cpp:434:5:434:29 | [summary] read: Argument[0].ReturnValue in madCallArg0ReturnToReturn | OutNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn |
| tests.cpp:434:5:434:29 | [summary] to write: Argument[0].Parameter[this] in madCallArg0ReturnToReturn | ArgumentNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn |
| tests.cpp:434:5:434:29 | [summary] to write: ReturnValue in madCallArg0ReturnToReturn | ReturnNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn |
| tests.cpp:435:9:435:38 | [summary param] 0 in madCallArg0ReturnToReturnFirst | ParameterNode | madCallArg0ReturnToReturnFirst | madCallArg0ReturnToReturnFirst |
| tests.cpp:435:9:435:38 | [summary] read: Argument[0].Parameter[this] in madCallArg0ReturnToReturnFirst | PostUpdateNode | madCallArg0ReturnToReturnFirst | madCallArg0ReturnToReturnFirst |
| tests.cpp:435:9:435:38 | [summary] read: Argument[0].ReturnValue in madCallArg0ReturnToReturnFirst | OutNode | madCallArg0ReturnToReturnFirst | madCallArg0ReturnToReturnFirst |
| tests.cpp:435:9:435:38 | [summary] to write: Argument[0].Parameter[this] in madCallArg0ReturnToReturnFirst | ArgumentNode | madCallArg0ReturnToReturnFirst | madCallArg0ReturnToReturnFirst |
| tests.cpp:435:9:435:38 | [summary] to write: ReturnValue in madCallArg0ReturnToReturnFirst | ReturnNode | madCallArg0ReturnToReturnFirst | madCallArg0ReturnToReturnFirst |
| tests.cpp:435:9:435:38 | [summary] to write: ReturnValue.Field[first] in madCallArg0ReturnToReturnFirst | | madCallArg0ReturnToReturnFirst | madCallArg0ReturnToReturnFirst |
| tests.cpp:436:6:436:25 | [summary param] 0 in madCallArg0WithValue | ParameterNode | madCallArg0WithValue | madCallArg0WithValue |
| tests.cpp:436:6:436:25 | [summary param] 1 in madCallArg0WithValue | ParameterNode | madCallArg0WithValue | madCallArg0WithValue |
| tests.cpp:436:6:436:25 | [summary] read: Argument[0].Parameter[0] in madCallArg0WithValue | PostUpdateNode | madCallArg0WithValue | madCallArg0WithValue |
| tests.cpp:436:6:436:25 | [summary] read: Argument[0].Parameter[this] in madCallArg0WithValue | PostUpdateNode | madCallArg0WithValue | madCallArg0WithValue |
| tests.cpp:436:6:436:25 | [summary] to write: Argument[0].Parameter[0] in madCallArg0WithValue | ArgumentNode | madCallArg0WithValue | madCallArg0WithValue |
| tests.cpp:436:6:436:25 | [summary] to write: Argument[0].Parameter[this] in madCallArg0WithValue | ArgumentNode | madCallArg0WithValue | madCallArg0WithValue |
| tests.cpp:436:6:436:25 | [summary] to write: Argument[1] in madCallArg0WithValue | PostUpdateNode | madCallArg0WithValue | madCallArg0WithValue |
| tests.cpp:437:5:437:36 | [summary param] 1 in madCallReturnValueIgnoreFunction | ParameterNode | madCallReturnValueIgnoreFunction | madCallReturnValueIgnoreFunction |
| tests.cpp:437:5:437:36 | [summary] to write: ReturnValue in madCallReturnValueIgnoreFunction | ReturnNode | madCallReturnValueIgnoreFunction | madCallReturnValueIgnoreFunction |

View File

@@ -0,0 +1,19 @@
import testModels
private import semmle.code.cpp.ir.dataflow.internal.DataFlowPrivate
private import semmle.code.cpp.ir.dataflow.internal.DataFlowUtil
string describe(DataFlow::Node n) {
n instanceof ParameterNode and result = "ParameterNode"
or
n instanceof PostUpdateNode and result = "PostUpdateNode"
or
n instanceof ArgumentNode and result = "ArgumentNode"
or
n instanceof ReturnNode and result = "ReturnNode"
or
n instanceof OutNode and result = "OutNode"
}
from FlowSummaryNode n
select n, concat(describe(n), ", "), concat(n.getSummarizedCallable().toString(), ", "),
concat(n.getEnclosingCallable().toString(), ", ")

View File

@@ -0,0 +1,220 @@
summaryCalls
| file://:0:0:0:0 | [summary] call to [summary param] 0 in madCallArg0ReturnToReturn in madCallArg0ReturnToReturn |
| file://:0:0:0:0 | [summary] call to [summary param] 0 in madCallArg0ReturnToReturnFirst in madCallArg0ReturnToReturnFirst |
| file://:0:0:0:0 | [summary] call to [summary param] 0 in madCallArg0WithValue in madCallArg0WithValue |
summarizedCallables
| tests.cpp:144:5:144:19 | madArg0ToReturn |
| tests.cpp:145:6:145:28 | madArg0ToReturnIndirect |
| tests.cpp:147:5:147:28 | madArg0ToReturnValueFlow |
| tests.cpp:148:5:148:27 | madArg0IndirectToReturn |
| tests.cpp:149:5:149:33 | madArg0DoubleIndirectToReturn |
| tests.cpp:150:5:150:30 | madArg0NotIndirectToReturn |
| tests.cpp:151:6:151:26 | madArg0ToArg1Indirect |
| tests.cpp:152:6:152:34 | madArg0IndirectToArg1Indirect |
| tests.cpp:153:5:153:18 | madArgsComplex |
| tests.cpp:154:5:154:14 | madArgsAny |
| tests.cpp:155:5:155:28 | madAndImplementedComplex |
| tests.cpp:160:5:160:24 | madArg0FieldToReturn |
| tests.cpp:161:5:161:32 | madArg0IndirectFieldToReturn |
| tests.cpp:162:5:162:32 | madArg0FieldIndirectToReturn |
| tests.cpp:163:13:163:32 | madArg0ToReturnField |
| tests.cpp:164:14:164:41 | madArg0ToReturnIndirectField |
| tests.cpp:165:13:165:40 | madArg0ToReturnFieldIndirect |
| tests.cpp:284:7:284:19 | madArg0ToSelf |
| tests.cpp:285:6:285:20 | madSelfToReturn |
| tests.cpp:287:7:287:20 | madArg0ToField |
| tests.cpp:288:6:288:21 | madFieldToReturn |
| tests.cpp:313:7:313:30 | namespaceMadSelfToReturn |
| tests.cpp:434:5:434:29 | madCallArg0ReturnToReturn |
| tests.cpp:435:9:435:38 | madCallArg0ReturnToReturnFirst |
| tests.cpp:436:6:436:25 | madCallArg0WithValue |
| tests.cpp:437:5:437:36 | madCallReturnValueIgnoreFunction |
sourceCallables
| tests.cpp:3:5:3:10 | source |
| tests.cpp:4:6:4:14 | sourcePtr |
| tests.cpp:5:6:5:19 | sourceIndirect |
| tests.cpp:6:6:6:9 | sink |
| tests.cpp:6:15:6:17 | val |
| tests.cpp:7:6:7:9 | sink |
| tests.cpp:7:16:7:18 | ptr |
| tests.cpp:11:5:11:18 | localMadSource |
| tests.cpp:12:5:12:19 | remoteMadSource |
| tests.cpp:13:5:13:14 | notASource |
| tests.cpp:14:5:14:22 | localMadSourceVoid |
| tests.cpp:15:5:15:25 | localMadSourceHasBody |
| tests.cpp:16:6:16:28 | remoteMadSourceIndirect |
| tests.cpp:17:7:17:35 | remoteMadSourceDoubleIndirect |
| tests.cpp:18:6:18:32 | remoteMadSourceIndirectArg0 |
| tests.cpp:18:39:18:39 | x |
| tests.cpp:18:47:18:47 | y |
| tests.cpp:19:6:19:32 | remoteMadSourceIndirectArg1 |
| tests.cpp:19:39:19:39 | x |
| tests.cpp:19:47:19:47 | y |
| tests.cpp:20:5:20:22 | remoteMadSourceVar |
| tests.cpp:21:6:21:31 | remoteMadSourceVarIndirect |
| tests.cpp:24:6:24:28 | namespaceLocalMadSource |
| tests.cpp:25:6:25:31 | namespaceLocalMadSourceVar |
| tests.cpp:28:7:28:30 | namespace2LocalMadSource |
| tests.cpp:31:6:31:19 | localMadSource |
| tests.cpp:33:5:33:27 | namespaceLocalMadSource |
| tests.cpp:35:6:35:17 | test_sources |
| tests.cpp:50:6:50:6 | v |
| tests.cpp:51:7:51:16 | v_indirect |
| tests.cpp:52:6:52:13 | v_direct |
| tests.cpp:63:6:63:6 | a |
| tests.cpp:63:9:63:9 | b |
| tests.cpp:63:12:63:12 | c |
| tests.cpp:63:15:63:15 | d |
| tests.cpp:75:6:75:6 | e |
| tests.cpp:85:6:85:26 | remoteMadSourceParam0 |
| tests.cpp:85:32:85:32 | x |
| tests.cpp:92:6:92:16 | madSinkArg0 |
| tests.cpp:92:22:92:22 | x |
| tests.cpp:93:6:93:13 | notASink |
| tests.cpp:93:19:93:19 | x |
| tests.cpp:94:6:94:16 | madSinkArg1 |
| tests.cpp:94:22:94:22 | x |
| tests.cpp:94:29:94:29 | y |
| tests.cpp:95:6:95:17 | madSinkArg01 |
| tests.cpp:95:23:95:23 | x |
| tests.cpp:95:30:95:30 | y |
| tests.cpp:95:37:95:37 | z |
| tests.cpp:96:6:96:17 | madSinkArg02 |
| tests.cpp:96:23:96:23 | x |
| tests.cpp:96:30:96:30 | y |
| tests.cpp:96:37:96:37 | z |
| tests.cpp:97:6:97:24 | madSinkIndirectArg0 |
| tests.cpp:97:31:97:31 | x |
| tests.cpp:98:6:98:30 | madSinkDoubleIndirectArg0 |
| tests.cpp:98:38:98:38 | x |
| tests.cpp:99:5:99:14 | madSinkVar |
| tests.cpp:100:6:100:23 | madSinkVarIndirect |
| tests.cpp:102:6:102:15 | test_sinks |
| tests.cpp:116:6:116:6 | a |
| tests.cpp:117:7:117:11 | a_ptr |
| tests.cpp:132:6:132:18 | madSinkParam0 |
| tests.cpp:132:24:132:24 | x |
| tests.cpp:138:8:138:8 | operator= |
| tests.cpp:138:8:138:8 | operator= |
| tests.cpp:138:8:138:18 | MyContainer |
| tests.cpp:139:6:139:10 | value |
| tests.cpp:140:6:140:11 | value2 |
| tests.cpp:141:7:141:9 | ptr |
| tests.cpp:144:25:144:25 | x |
| tests.cpp:145:34:145:34 | x |
| tests.cpp:146:5:146:15 | notASummary |
| tests.cpp:146:21:146:21 | x |
| tests.cpp:147:34:147:34 | x |
| tests.cpp:148:34:148:34 | x |
| tests.cpp:149:41:149:41 | x |
| tests.cpp:150:37:150:37 | x |
| tests.cpp:151:32:151:32 | x |
| tests.cpp:151:40:151:40 | y |
| tests.cpp:152:47:152:47 | x |
| tests.cpp:152:55:152:55 | y |
| tests.cpp:153:25:153:25 | a |
| tests.cpp:153:33:153:33 | b |
| tests.cpp:153:40:153:40 | c |
| tests.cpp:153:47:153:47 | d |
| tests.cpp:154:20:154:20 | a |
| tests.cpp:154:28:154:28 | b |
| tests.cpp:155:34:155:34 | a |
| tests.cpp:155:41:155:41 | b |
| tests.cpp:155:48:155:48 | c |
| tests.cpp:160:38:160:39 | mc |
| tests.cpp:161:47:161:48 | mc |
| tests.cpp:162:46:162:47 | mc |
| tests.cpp:163:38:163:38 | x |
| tests.cpp:164:47:164:47 | x |
| tests.cpp:165:46:165:46 | x |
| tests.cpp:167:13:167:30 | madFieldToFieldVar |
| tests.cpp:168:13:168:38 | madFieldToIndirectFieldVar |
| tests.cpp:169:14:169:39 | madIndirectFieldToFieldVar |
| tests.cpp:171:6:171:19 | test_summaries |
| tests.cpp:174:6:174:6 | a |
| tests.cpp:174:9:174:9 | b |
| tests.cpp:174:12:174:12 | c |
| tests.cpp:174:15:174:15 | d |
| tests.cpp:174:18:174:18 | e |
| tests.cpp:175:7:175:11 | a_ptr |
| tests.cpp:218:14:218:16 | mc1 |
| tests.cpp:218:19:218:21 | mc2 |
| tests.cpp:237:15:237:18 | rtn1 |
| tests.cpp:240:14:240:17 | rtn2 |
| tests.cpp:241:7:241:14 | rtn2_ptr |
| tests.cpp:267:7:267:7 | operator= |
| tests.cpp:267:7:267:7 | operator= |
| tests.cpp:267:7:267:13 | MyClass |
| tests.cpp:270:6:270:26 | memberRemoteMadSource |
| tests.cpp:271:7:271:39 | memberRemoteMadSourceIndirectArg0 |
| tests.cpp:271:46:271:46 | x |
| tests.cpp:272:6:272:29 | memberRemoteMadSourceVar |
| tests.cpp:273:7:273:21 | qualifierSource |
| tests.cpp:274:7:274:26 | qualifierFieldSource |
| tests.cpp:277:7:277:23 | memberMadSinkArg0 |
| tests.cpp:277:29:277:29 | x |
| tests.cpp:278:6:278:21 | memberMadSinkVar |
| tests.cpp:279:7:279:19 | qualifierSink |
| tests.cpp:280:7:280:23 | qualifierArg0Sink |
| tests.cpp:280:29:280:29 | x |
| tests.cpp:281:7:281:24 | qualifierFieldSink |
| tests.cpp:284:25:284:25 | x |
| tests.cpp:286:6:286:16 | notASummary |
| tests.cpp:287:26:287:26 | x |
| tests.cpp:290:6:290:8 | val |
| tests.cpp:293:7:293:7 | MyDerivedClass |
| tests.cpp:293:7:293:7 | operator= |
| tests.cpp:293:7:293:7 | operator= |
| tests.cpp:293:7:293:20 | MyDerivedClass |
| tests.cpp:295:6:295:28 | subtypeRemoteMadSource1 |
| tests.cpp:296:6:296:21 | subtypeNonSource |
| tests.cpp:297:6:297:28 | subtypeRemoteMadSource2 |
| tests.cpp:300:9:300:15 | source2 |
| tests.cpp:301:6:301:9 | sink |
| tests.cpp:301:19:301:20 | mc |
| tests.cpp:304:8:304:8 | operator= |
| tests.cpp:304:8:304:8 | operator= |
| tests.cpp:304:8:304:14 | MyClass |
| tests.cpp:307:8:307:33 | namespaceMemberMadSinkArg0 |
| tests.cpp:307:39:307:39 | x |
| tests.cpp:308:15:308:46 | namespaceStaticMemberMadSinkArg0 |
| tests.cpp:308:52:308:52 | x |
| tests.cpp:309:7:309:31 | namespaceMemberMadSinkVar |
| tests.cpp:310:14:310:44 | namespaceStaticMemberMadSinkVar |
| tests.cpp:317:22:317:28 | source3 |
| tests.cpp:319:6:319:23 | test_class_members |
| tests.cpp:320:10:320:11 | mc |
| tests.cpp:320:14:320:16 | mc2 |
| tests.cpp:320:19:320:21 | mc3 |
| tests.cpp:320:24:320:26 | mc4 |
| tests.cpp:320:29:320:31 | mc5 |
| tests.cpp:320:34:320:36 | mc6 |
| tests.cpp:320:39:320:41 | mc7 |
| tests.cpp:320:44:320:46 | mc8 |
| tests.cpp:320:49:320:51 | mc9 |
| tests.cpp:320:54:320:57 | mc10 |
| tests.cpp:320:60:320:63 | mc11 |
| tests.cpp:321:11:321:13 | ptr |
| tests.cpp:321:17:321:23 | mc4_ptr |
| tests.cpp:322:17:322:19 | mdc |
| tests.cpp:323:23:323:25 | mnc |
| tests.cpp:323:28:323:31 | mnc2 |
| tests.cpp:324:24:324:31 | mnc2_ptr |
| tests.cpp:330:6:330:6 | a |
| tests.cpp:429:8:429:8 | operator= |
| tests.cpp:429:8:429:8 | operator= |
| tests.cpp:429:8:429:14 | intPair |
| tests.cpp:430:6:430:10 | first |
| tests.cpp:431:6:431:11 | second |
| tests.cpp:434:37:434:43 | fun_ptr |
| tests.cpp:435:46:435:52 | fun_ptr |
| tests.cpp:436:34:436:40 | fun_ptr |
| tests.cpp:436:53:436:57 | value |
| tests.cpp:437:45:437:51 | fun_ptr |
| tests.cpp:437:64:437:68 | value |
| tests.cpp:439:5:439:14 | getTainted |
| tests.cpp:440:6:440:13 | useValue |
| tests.cpp:440:19:440:19 | x |
| tests.cpp:441:6:441:17 | dontUseValue |
| tests.cpp:441:23:441:23 | x |
| tests.cpp:443:6:443:27 | test_function_pointers |

View File

@@ -0,0 +1,9 @@
import testModels
private import semmle.code.cpp.ir.dataflow.internal.DataFlowPrivate
private import semmle.code.cpp.ir.dataflow.internal.DataFlowUtil
query predicate summaryCalls(SummaryCall c) { any() }
query predicate summarizedCallables(SummarizedCallable c) { any() }
query predicate sourceCallables(SourceCallable c) { c.getLocation().getFile().toString() != "" }

View File

@@ -0,0 +1,2 @@
testFailures
failures

View File

@@ -0,0 +1,18 @@
import TestUtilities.InlineExpectationsTest
import testModels
module InterpretElementTest implements TestSig {
string getARelevantTag() { result = "interpretElement" }
predicate hasActualResult(Location location, string element, string tag, string value) {
exists(Element e |
e = interpretElement(_, _, _, _, _, _) and
location = e.getLocation() and
element = e.toString() and
tag = "interpretElement" and
value = ""
)
}
}
import MakeTest<InterpretElementTest>

View File

@@ -0,0 +1,2 @@
testFailures
failures

View File

@@ -0,0 +1,32 @@
import TestUtilities.dataflow.FlowTestCommon
import testModels
module IRTest {
private import semmle.code.cpp.ir.IR
private import semmle.code.cpp.ir.dataflow.TaintTracking
/** Common data flow configuration to be used by tests. */
module TestAllocationConfig implements DataFlow::ConfigSig {
predicate isSource(DataFlow::Node source) {
source instanceof FlowSource
or
source.asExpr().(FunctionCall).getTarget().getName() =
["source", "source2", "source3", "sourcePtr"]
or
source.asIndirectExpr(1).(FunctionCall).getTarget().getName() = "sourceIndirect"
}
predicate isSink(DataFlow::Node sink) {
sinkNode(sink, "test-sink")
or
exists(FunctionCall call |
call.getTarget().getName() = "sink" and
sink.asExpr() = call.getAnArgument()
)
}
}
module IRFlow = TaintTracking::Global<TestAllocationConfig>;
}
import MakeTest<IRFlowTest<IRTest::IRFlow>>

View File

@@ -0,0 +1,103 @@
import semmle.code.cpp.security.FlowSources
/**
* Models-as-data source models for this test.
*/
private class TestSources extends SourceModelCsv {
override predicate row(string row) {
row =
[
";;false;localMadSource;;;ReturnValue;local",
";;false;remoteMadSource;;;ReturnValue;remote",
";;false;localMadSourceVoid;;;ReturnValue;local",
";;false;localMadSourceHasBody;;;ReturnValue;local",
";;false;remoteMadSourceIndirect;;;ReturnValue[*];remote",
";;false;remoteMadSourceDoubleIndirect;;;ReturnValue[**];remote",
";;false;remoteMadSourceIndirectArg0;;;Argument[*0];remote",
";;false;remoteMadSourceIndirectArg1;;;Argument[*1];remote",
";;false;remoteMadSourceVar;;;;remote",
";;false;remoteMadSourceVarIndirect;;;*;remote", // not correctly expressed
";;false;remoteMadSourceParam0;;;Parameter[0];remote",
"MyNamespace;;false;namespaceLocalMadSource;;;ReturnValue;local",
"MyNamespace;;false;namespaceLocalMadSourceVar;;;;local",
"MyNamespace::MyNamespace2;;false;namespace2LocalMadSource;;;ReturnValue;local",
";MyClass;true;memberRemoteMadSource;;;ReturnValue;remote",
";MyClass;true;memberRemoteMadSourceIndirectArg0;;;Argument[*0];remote",
";MyClass;true;memberRemoteMadSourceVar;;;;remote",
";MyClass;true;subtypeRemoteMadSource1;;;ReturnValue;remote",
";MyClass;false;subtypeNonSource;;;ReturnValue;remote", // the tests define this in MyDerivedClass, so it should *not* be recongized as a source
";MyClass;true;qualifierSource;;;Argument[-1];remote",
";MyClass;true;qualifierFieldSource;;;Argument[-1].val;remote",
";MyDerivedClass;false;subtypeRemoteMadSource2;;;ReturnValue;remote",
]
}
}
/**
* Models-as-data sink models for this test.
*/
private class TestSinks extends SinkModelCsv {
override predicate row(string row) {
row =
[
";;false;madSinkArg0;;;Argument[0];test-sink",
";;false;madSinkArg1;;;Argument[1];test-sink",
";;false;madSinkArg01;;;Argument[0..1];test-sink",
";;false;madSinkArg02;;;Argument[0,2];test-sink",
";;false;madSinkIndirectArg0;;;Argument[*0];test-sink",
";;false;madSinkDoubleIndirectArg0;;;Argument[**0];test-sink",
";;false;madSinkVar;;;;test-sink",
";;false;madSinkVarIndirect;;;*;test-sink", // not correctly expressed
";;false;madSinkParam0;;;Parameter[0];test-sink",
";MyClass;true;memberMadSinkArg0;;;Argument[0];test-sink",
";MyClass;true;memberMadSinkVar;;;;test-sink",
";MyClass;true;qualifierSink;;;Argument[-1];test-sink",
";MyClass;true;qualifierArg0Sink;;;Argument[-1..0];test-sink",
";MyClass;true;qualifierFieldSink;;;Argument[-1].val;test-sink",
"MyNamespace;MyClass;true;namespaceMemberMadSinkArg0;;;Argument[0];test-sink",
"MyNamespace;MyClass;true;namespaceStaticMemberMadSinkArg0;;;Argument[0];test-sink",
"MyNamespace;MyClass;true;namespaceMemberMadSinkVar;;;;test-sink",
"MyNamespace;MyClass;true;namespaceStaticMemberMadSinkVar;;;;test-sink",
]
}
}
/**
* Models-as-data summary models for this test.
*/
private class TestSummaries extends SummaryModelCsv {
override predicate row(string row) {
row =
[
";;false;madArg0ToReturn;;;Argument[0];ReturnValue;taint",
";;false;madArg0ToReturnIndirect;;;Argument[0];ReturnValue[*];taint",
";;false;madArg0ToReturnValueFlow;;;Argument[0];ReturnValue;value",
";;false;madArg0IndirectToReturn;;;Argument[*0];ReturnValue;taint",
";;false;madArg0DoubleIndirectToReturn;;;Argument[**0];ReturnValue;taint",
";;false;madArg0NotIndirectToReturn;;;Argument[0];ReturnValue;taint",
";;false;madArg0ToArg1Indirect;;;Argument[0];Argument[*1];taint",
";;false;madArg0IndirectToArg1Indirect;;;Argument[*0];Argument[*1];taint",
";;false;madArgsComplex;;;Argument[*0..1,2];ReturnValue;taint",
";;false;madAndImplementedComplex;;;Argument[2];ReturnValue;taint",
";;false;madArgsAny;;;Argument;ReturnValue;taint", // (syntax not supported)
";;false;madArg0FieldToReturn;;;Argument[0].value;ReturnValue;taint",
";;false;madArg0IndirectFieldToReturn;;;Argument[*0].value;ReturnValue;taint",
";;false;madArg0FieldIndirectToReturn;;;Argument[0].ptr[*];ReturnValue;taint",
";;false;madArg0ToReturnField;;;Argument[0];ReturnValue.value;taint",
";;false;madArg0ToReturnIndirectField;;;Argument[0];ReturnValue[*].value;taint",
";;false;madArg0ToReturnFieldIndirect;;;Argument[0];ReturnValue.ptr[*];taint",
";;false;madFieldToFieldVar;;;value;value2;taint",
";;false;madFieldToIndirectFieldVar;;;value;ptr[*];taint",
";;false;madIndirectFieldToFieldVar;;;;value;value2;taint", // not correctly expressed
";MyClass;true;madArg0ToSelf;;;Argument[0];Argument[-1];taint",
";MyClass;true;madSelfToReturn;;;Argument[-1];ReturnValue;taint",
";MyClass;true;madArg0ToField;;;Argument[0];Argument[-1].val;taint",
";MyClass;true;madFieldToReturn;;;Argument[-1].val;ReturnValue;taint",
"MyNamespace;MyClass;true;namespaceMadSelfToReturn;;;Argument[-1];ReturnValue;taint",
";;false;madCallArg0ReturnToReturn;;;Argument[0].ReturnValue;ReturnValue;value",
";;false;madCallArg0ReturnToReturnFirst;;;Argument[0].ReturnValue;ReturnValue.first;value",
";;false;madCallArg0WithValue;;;Argument[1];Argument[0].Parameter[0];value",
";;false;madCallReturnValueIgnoreFunction;;;Argument[1];ReturnValue;value",
]
}
}

View File

@@ -0,0 +1,454 @@
// non-MAD sources / sinks
int source();
int *sourcePtr();
int *sourceIndirect();
void sink(int val);
void sink(int *ptr);
// --- global MAD sources ---
int localMadSource(); // $ interpretElement
int remoteMadSource(); // $ interpretElement
int notASource();
int localMadSourceVoid(void); // $ interpretElement
int localMadSourceHasBody() { return 0; } // $ interpretElement
int *remoteMadSourceIndirect(); // $ interpretElement
int **remoteMadSourceDoubleIndirect(); // $ interpretElement
void remoteMadSourceIndirectArg0(int *x, int *y); // $ interpretElement
void remoteMadSourceIndirectArg1(int &x, int &y); // $ interpretElement
int remoteMadSourceVar; // $ interpretElement
int *remoteMadSourceVarIndirect; // $ interpretElement
namespace MyNamespace {
int namespaceLocalMadSource(); // $ interpretElement
int namespaceLocalMadSourceVar; // $ interpretElement
namespace MyNamespace2 {
int namespace2LocalMadSource(); // $ interpretElement
}
int localMadSource(); // (not a source)
}
int namespaceLocalMadSource(); // (not a source)
void test_sources() {
sink(0);
sink(source()); // $ ir
// test sources
sink(localMadSource()); // $ ir
sink(remoteMadSource()); // $ ir
sink(notASource());
sink(localMadSourceVoid()); // $ ir
sink(localMadSourceHasBody()); // $ ir
sink(sourceIndirect());
sink(*sourceIndirect()); // $ ir
int v = localMadSource();
int *v_indirect = &v;
int v_direct = *v_indirect;
sink(v); // $ ir
sink(v_indirect);
sink(*v_indirect); // $ ir
sink(v_direct); // $ ir
sink(remoteMadSourceIndirect());
sink(*remoteMadSourceIndirect()); // $ MISSING: ir
sink(*remoteMadSourceDoubleIndirect());
sink(**remoteMadSourceDoubleIndirect()); // $ MISSING: ir
int a, b, c, d;
remoteMadSourceIndirectArg0(&a, &b);
sink(a); // $ ir
sink(b);
remoteMadSourceIndirectArg1(c, d);
sink(c);
sink(d); // $ ir
sink(remoteMadSourceVar); // $ ir
sink(*remoteMadSourceVarIndirect); // $ MISSING: ir
int e = localMadSource();
sink(e); // $ ir
sink(MyNamespace::namespaceLocalMadSource()); // $: ir
sink(MyNamespace::namespaceLocalMadSourceVar); // $ ir
sink(MyNamespace::MyNamespace2::namespace2LocalMadSource()); // $ ir
sink(MyNamespace::localMadSource()); // $ (the MyNamespace version of this function is not a source)
sink(namespaceLocalMadSource()); // (the global namespace version of this function is not a source)
}
void remoteMadSourceParam0(int x) // $ interpretElement
{
sink(x); // $ ir
}
// --- global MAD sinks ---
void madSinkArg0(int x); // $ interpretElement
void notASink(int x);
void madSinkArg1(int x, int y); // $ interpretElement
void madSinkArg01(int x, int y, int z); // $ interpretElement
void madSinkArg02(int x, int y, int z); // $ interpretElement
void madSinkIndirectArg0(int *x); // $ interpretElement
void madSinkDoubleIndirectArg0(int **x); // $ interpretElement
int madSinkVar; // $ interpretElement
int *madSinkVarIndirect; // $ interpretElement
void test_sinks() {
// test sinks
madSinkArg0(source()); // $ ir
notASink(source());
madSinkArg1(source(), 0);
madSinkArg1(0, source()); // $ ir
madSinkArg01(source(), 0, 0); // $ ir
madSinkArg01(0, source(), 0); // $ ir
madSinkArg01(0, 0, source());
madSinkArg02(source(), 0, 0); // $ ir
madSinkArg02(0, source(), 0);
madSinkArg02(0, 0, source()); // $ ir
int a = source();
int *a_ptr = &a;
madSinkIndirectArg0(&a); // $ ir
madSinkIndirectArg0(a_ptr); // $ ir
madSinkDoubleIndirectArg0(&a_ptr); // $ ir
madSinkVar = source(); // $ ir
// test sources + sinks together
madSinkArg0(localMadSource()); // $ ir
madSinkIndirectArg0(remoteMadSourceIndirect()); // $ MISSING: ir
madSinkVar = remoteMadSourceVar; // $ ir
*madSinkVarIndirect = remoteMadSourceVar; // $ MISSING: ir
}
void madSinkParam0(int x) { // $ interpretElement
x = source(); // $ MISSING: ir
}
// --- global MAD summaries ---
struct MyContainer {
int value;
int value2;
int *ptr;
};
int madArg0ToReturn(int x); // $ interpretElement
int *madArg0ToReturnIndirect(int x); // $ interpretElement
int notASummary(int x);
int madArg0ToReturnValueFlow(int x); // $ interpretElement
int madArg0IndirectToReturn(int *x); // $ interpretElement
int madArg0DoubleIndirectToReturn(int **x); // $ interpretElement
int madArg0NotIndirectToReturn(int *x); // $ interpretElement
void madArg0ToArg1Indirect(int x, int &y); // $ interpretElement
void madArg0IndirectToArg1Indirect(const int *x, int *y); // $ interpretElement
int madArgsComplex(int *a, int *b, int c, int d); // $ interpretElement
int madArgsAny(int a, int *b); // $ interpretElement
int madAndImplementedComplex(int a, int b, int c) { // $ interpretElement
// (`b` can be seen to flow to the return value in code, `c` via the MAD model)
return b;
}
int madArg0FieldToReturn(MyContainer mc); // $ interpretElement
int madArg0IndirectFieldToReturn(MyContainer *mc); // $ interpretElement
int madArg0FieldIndirectToReturn(MyContainer mc); // $ interpretElement
MyContainer madArg0ToReturnField(int x); // $ interpretElement
MyContainer *madArg0ToReturnIndirectField(int x); // $ interpretElement
MyContainer madArg0ToReturnFieldIndirect(int x); // $ interpretElement
MyContainer madFieldToFieldVar; // $ interpretElement
MyContainer madFieldToIndirectFieldVar; // $ interpretElement
MyContainer *madIndirectFieldToFieldVar; // $ interpretElement
void test_summaries() {
// test summaries
int a, b, c, d, e;
int *a_ptr;
sink(madArg0ToReturn(0));
sink(madArg0ToReturn(source())); // $ ir
sink(*madArg0ToReturnIndirect(0));
sink(*madArg0ToReturnIndirect(source())); // $ ir
sink(notASummary(source()));
sink(madArg0ToReturnValueFlow(0));
sink(madArg0ToReturnValueFlow(source())); // $ ir
a = source();
a_ptr = &a;
sink(madArg0IndirectToReturn(&a)); // $ ir
sink(madArg0IndirectToReturn(a_ptr)); // $ ir
sink(madArg0DoubleIndirectToReturn(&a_ptr)); // $ ir
sink(madArg0NotIndirectToReturn(a_ptr));
sink(madArg0NotIndirectToReturn(sourcePtr())); // $ ir
sink(madArg0NotIndirectToReturn(sourceIndirect()));
madArg0ToArg1Indirect(source(), b);
sink(b); // $ ir
madArg0IndirectToArg1Indirect(&a, &c);
sink(c); // $ ir
sink(madArgsComplex(0, 0, 0, 0));
sink(madArgsComplex(sourceIndirect(), 0, 0, 0)); // $ ir
sink(madArgsComplex(0, sourceIndirect(), 0, 0)); // $ ir
sink(madArgsComplex(0, 0, source(), 0)); // $ ir
sink(madArgsComplex(0, 0, 0, source()));
sink(madAndImplementedComplex(0, 0, 0));
sink(madAndImplementedComplex(source(), 0, 0));
sink(madAndImplementedComplex(0, source(), 0)); // $ ir
sink(madAndImplementedComplex(0, 0, source())); // $ ir
sink(madArgsAny(0, 0));
sink(madArgsAny(source(), 0)); // (syntax not supported)
sink(madArgsAny(0, sourcePtr())); // (syntax not supported)
sink(madArgsAny(0, sourceIndirect())); // (syntax not supported)
// test summaries involving structs / fields
MyContainer mc1, mc2;
d = 0;
mc1.value = 0;
mc1.ptr = &d;
sink(madArg0FieldToReturn(mc1));
sink(madArg0IndirectFieldToReturn(&mc1));
sink(madArg0FieldIndirectToReturn(mc1));
e = source();
mc2.value = source();
mc2.ptr = &e;
sink(madArg0FieldToReturn(mc2)); // $ ir
sink(madArg0IndirectFieldToReturn(&mc2)); // $ ir
sink(madArg0FieldIndirectToReturn(mc2)); // $ ir
sink(madArg0ToReturnField(0).value);
sink(madArg0ToReturnField(source()).value); // $ ir
MyContainer *rtn1 = madArg0ToReturnIndirectField(source());
sink(rtn1->value); // $ ir
MyContainer rtn2 = madArg0ToReturnFieldIndirect(source());
int *rtn2_ptr = rtn2.ptr;
sink(*rtn2_ptr); // $ ir
// test global variable summaries
madFieldToFieldVar.value = source();
sink(madFieldToFieldVar.value2); // $ MISSING: ir
madFieldToIndirectFieldVar.value = source();
sink(madFieldToIndirectFieldVar.ptr);
sink(*(madFieldToIndirectFieldVar.ptr)); // $ MISSING: ir
madIndirectFieldToFieldVar->value = source();
sink((*madIndirectFieldToFieldVar).value2); // $ MISSING: ir
sink(madIndirectFieldToFieldVar->value2); // $ MISSING: ir
// test source + sinks + summaries together
madSinkArg0(madArg0ToReturn(remoteMadSource())); // $ ir
madSinkArg0(madArg0ToReturnValueFlow(remoteMadSource())); // $ ir
madSinkArg0(madArg0IndirectToReturn(sourcePtr()));
madSinkArg0(madArg0IndirectToReturn(sourceIndirect())); // $ ir
}
// --- MAD class members ---
class MyClass {
public:
// sources
int memberRemoteMadSource(); // $ interpretElement
void memberRemoteMadSourceIndirectArg0(int *x); // $ interpretElement
int memberRemoteMadSourceVar; // $ interpretElement
void qualifierSource(); // $ interpretElement
void qualifierFieldSource(); // $ interpretElement
// sinks
void memberMadSinkArg0(int x); // $ interpretElement
int memberMadSinkVar; // $ interpretElement
void qualifierSink(); // $ interpretElement
void qualifierArg0Sink(int x); // $ interpretElement
void qualifierFieldSink(); // $ interpretElement
// summaries
void madArg0ToSelf(int x); // $ interpretElement
int madSelfToReturn(); // $ interpretElement
int notASummary();
void madArg0ToField(int x); // $ interpretElement
int madFieldToReturn(); // $ interpretElement
int val;
};
class MyDerivedClass : public MyClass {
public:
int subtypeRemoteMadSource1(); // $ interpretElement
int subtypeNonSource();
int subtypeRemoteMadSource2(); // $ interpretElement
};
MyClass source2();
void sink(MyClass mc);
namespace MyNamespace {
class MyClass {
public:
// sinks
void namespaceMemberMadSinkArg0(int x); // $ interpretElement
static void namespaceStaticMemberMadSinkArg0(int x); // $ interpretElement
int namespaceMemberMadSinkVar; // $ interpretElement
static int namespaceStaticMemberMadSinkVar; // $ interpretElement
// summaries
int namespaceMadSelfToReturn(); // $ interpretElement
};
}
MyNamespace::MyClass source3();
void test_class_members() {
MyClass mc, mc2, mc3, mc4, mc5, mc6, mc7, mc8, mc9, mc10, mc11;
MyClass *ptr, *mc4_ptr;
MyDerivedClass mdc;
MyNamespace::MyClass mnc, mnc2;
MyNamespace::MyClass *mnc2_ptr;
// test class member sources
sink(mc.memberRemoteMadSource()); // $ ir
int a;
mc.memberRemoteMadSourceIndirectArg0(&a);
sink(a); // $ ir
sink(mc.memberRemoteMadSourceVar); // $ ir
// test subtype sources
sink(mdc.memberRemoteMadSource()); // $ ir
sink(mdc.subtypeRemoteMadSource1()); // $ ir
sink(mdc.subtypeNonSource());
sink(mdc.subtypeRemoteMadSource2()); // $ ir
// test class member sinks
mc.memberMadSinkArg0(source()); // $ ir
mc.memberMadSinkVar = source(); // $ ir
mnc.namespaceMemberMadSinkArg0(source()); // $ ir
MyNamespace::MyClass::namespaceStaticMemberMadSinkArg0(source()); // $ ir
mnc.namespaceMemberMadSinkVar = source(); // $ ir
MyNamespace::MyClass::namespaceStaticMemberMadSinkVar = source(); // $ ir
// test class member summaries
sink(mc2);
mc2.madArg0ToSelf(0);
sink(mc2);
mc2.madArg0ToSelf(source());
sink(mc2); // $ ir
ptr = new MyClass();
sink(*ptr);
ptr->madArg0ToSelf(0);
sink(*ptr);
ptr->madArg0ToSelf(source());
sink(*ptr); // $ ir
mc3.madArg0ToField(source());
sink(mc3.val); // $ ir
mc4 = source2();
mc4_ptr = &mc4;
sink(mc4); // $ ir
sink(mc4.madSelfToReturn()); // $ ir
sink(mc4.notASummary());
sink(mc4_ptr->madSelfToReturn()); // $ ir
sink(mc4_ptr->notASummary());
sink(source2().madSelfToReturn()); // $ ir
sink(source2().notASummary());
mc5.val = source();
sink(mc5.madFieldToReturn()); // $ ir
mnc2 = source3();
mnc2_ptr = &mnc2;
sink(mnc2.namespaceMadSelfToReturn()); // $ ir
sink(mnc2_ptr->namespaceMadSelfToReturn()); // $ ir
sink(source3().namespaceMadSelfToReturn()); // $ ir
// test class member sources + sinks + summaries together
mc.memberMadSinkArg0(mc.memberRemoteMadSource()); // $ ir
mc6.madArg0ToSelf(source());
sink(mc6.madSelfToReturn()); // $ ir
mc7.madArg0ToField(source());
sink(mc7.madFieldToReturn()); // $ ir
// test taint involving qualifier
sink(mc8);
mc8.qualifierArg0Sink(0);
mc8.qualifierArg0Sink(source()); // $ ir
mc9 = source2();
mc9.qualifierSink(); // $ ir
mc9.qualifierArg0Sink(0); // $ ir
mc8.qualifierSource();
sink(mc8); // $ ir
mc8.qualifierSink(); // $ ir
mc9.qualifierArg0Sink(0); // $ ir
// test taint involving qualifier field
sink(mc10.val);
mc10.qualifierFieldSource();
sink(mc10.val); // $ MISSING: ir
mc11.val = source();
sink(mc11.val); // $ ir
mc11.qualifierFieldSink(); // $ MISSING: ir
}
// --- MAD cases involving function pointers ---
struct intPair {
int first;
int second;
};
int madCallArg0ReturnToReturn(int (*fun_ptr)()); // $ interpretElement
intPair madCallArg0ReturnToReturnFirst(int (*fun_ptr)()); // $ interpretElement
void madCallArg0WithValue(void (*fun_ptr)(int), int value); // $ interpretElement
int madCallReturnValueIgnoreFunction(void (*fun_ptr)(int), int value); // $ interpretElement
int getTainted() { return source(); }
void useValue(int x) { sink(x); } // $ ir
void dontUseValue(int x) { }
void test_function_pointers() {
sink(madCallArg0ReturnToReturn(&notASource));
sink(madCallArg0ReturnToReturn(&getTainted)); // $ ir
sink(madCallArg0ReturnToReturn(&source)); // $ MISSING: ir
sink(madCallArg0ReturnToReturnFirst(&getTainted).first); // $ ir
sink(madCallArg0ReturnToReturnFirst(&getTainted).second);
madCallArg0WithValue(&useValue, source());
madCallArg0WithValue(&sink, source()); // $ MISSING: ir
madCallReturnValueIgnoreFunction(&sink, source());
sink(madCallReturnValueIgnoreFunction(&dontUseValue, source())); // $ ir
}

View File

@@ -1,2 +1,2 @@
failures
testFailures
failures

View File

@@ -50,3 +50,68 @@ void test_inet(char *hostname, char *servname, struct addrinfo *hints) {
addrinfo *res;
int ret = getaddrinfo(hostname, servname, hints, &res); // $ remote_source
}
typedef unsigned int wint_t;
// getc variants
int getc(FILE *stream);
wint_t getwc(FILE *stream);
int _getc_nolock(FILE *stream);
wint_t _getwc_nolock(FILE *stream);
int getch(void);
int _getch(void);
wint_t _getwch(void);
int _getch_nolock(void);
wint_t _getwch_nolock(void);
int getchar(void);
wint_t getwchar();
int _getchar_nolock(void);
wint_t _getwchar_nolock(void);
void test_getchar(FILE *stream) {
int a = getc(stream); // $ remote_source
wint_t b = getwc(stream); // $ remote_source
int c = _getc_nolock(stream); // $ remote_source
wint_t d = _getwc_nolock(stream); // $ remote_source
int e = getch(); // $ local_source
int f = _getch(); // $ local_source
wint_t g = _getwch(); // $ local_source
int h = _getch_nolock(); // $ local_source
wint_t i = _getwch_nolock(); // $ local_source
int j = getchar(); // $ local_source
wint_t k = getwchar(); // $ local_source
int l = _getchar_nolock(); // $ local_source
wint_t m = _getwchar_nolock(); // $ local_source
}
// ZMC networking library
typedef unsigned long size_t;
struct zmq_msg_t {
};
int zmq_msg_init(zmq_msg_t *msg);
int zmq_msg_recv(zmq_msg_t *msg, void *socket, int flags);
int zmq_recvmsg(void *socket, zmq_msg_t *msg, int flags); // deprecated
int zmq_recv(void *socket, void *buf, size_t len, int flags);
void test_zmc(void *socket) {
zmq_msg_t msg1, msg2;
char buffer[1024];
if (zmq_recv(socket, buffer, sizeof(buffer), 0) >= 0) { // $ remote_source
// ...
}
zmq_msg_init(&msg1);
if (zmq_msg_recv(&msg1, socket, 0) >= 0) { // $ remote_source
// ...
}
zmq_msg_init(&msg2);
if (zmq_recvmsg(socket, &msg2, 0) >= 0) { // $ remote_source
// ...
}
}

View File

@@ -8223,3 +8223,50 @@ WARNING: Module TaintTracking has been deprecated and may be removed in future (
| vector.cpp:531:9:531:10 | it | vector.cpp:531:8:531:8 | call to operator* | TAINT |
| vector.cpp:532:8:532:9 | ref arg vs | vector.cpp:533:2:533:2 | vs | |
| vector.cpp:532:8:532:9 | vs | vector.cpp:532:10:532:10 | call to operator[] | TAINT |
| zmq.cpp:17:21:17:26 | socket | zmq.cpp:17:21:17:26 | socket | |
| zmq.cpp:17:35:17:46 | message_data | zmq.cpp:17:35:17:46 | message_data | |
| zmq.cpp:17:35:17:46 | message_data | zmq.cpp:20:35:20:46 | message_data | |
| zmq.cpp:17:35:17:46 | message_data | zmq.cpp:25:3:25:14 | message_data | |
| zmq.cpp:17:35:17:46 | message_data | zmq.cpp:26:8:26:19 | message_data | |
| zmq.cpp:17:35:17:46 | message_data | zmq.cpp:28:35:28:46 | message_data | |
| zmq.cpp:17:56:17:66 | message_len | zmq.cpp:20:49:20:59 | message_len | |
| zmq.cpp:17:56:17:66 | message_len | zmq.cpp:28:49:28:59 | message_len | |
| zmq.cpp:18:13:18:19 | message | zmq.cpp:20:26:20:32 | message | |
| zmq.cpp:18:13:18:19 | message | zmq.cpp:21:10:21:16 | message | |
| zmq.cpp:18:13:18:19 | message | zmq.cpp:22:24:22:30 | message | |
| zmq.cpp:18:13:18:19 | message | zmq.cpp:28:26:28:32 | message | |
| zmq.cpp:18:13:18:19 | message | zmq.cpp:29:10:29:16 | message | |
| zmq.cpp:18:13:18:19 | message | zmq.cpp:30:24:30:30 | message | |
| zmq.cpp:20:25:20:32 | ref arg & ... | zmq.cpp:20:26:20:32 | message [inner post update] | |
| zmq.cpp:20:25:20:32 | ref arg & ... | zmq.cpp:21:10:21:16 | message | |
| zmq.cpp:20:25:20:32 | ref arg & ... | zmq.cpp:22:24:22:30 | message | |
| zmq.cpp:20:25:20:32 | ref arg & ... | zmq.cpp:28:26:28:32 | message | |
| zmq.cpp:20:25:20:32 | ref arg & ... | zmq.cpp:29:10:29:16 | message | |
| zmq.cpp:20:25:20:32 | ref arg & ... | zmq.cpp:30:24:30:30 | message | |
| zmq.cpp:20:26:20:32 | message | zmq.cpp:20:25:20:32 | & ... | |
| zmq.cpp:20:35:20:46 | ref arg message_data | zmq.cpp:17:35:17:46 | message_data | |
| zmq.cpp:20:35:20:46 | ref arg message_data | zmq.cpp:25:3:25:14 | message_data | |
| zmq.cpp:20:35:20:46 | ref arg message_data | zmq.cpp:26:8:26:19 | message_data | |
| zmq.cpp:20:35:20:46 | ref arg message_data | zmq.cpp:28:35:28:46 | message_data | |
| zmq.cpp:22:23:22:30 | ref arg & ... | zmq.cpp:22:24:22:30 | message [inner post update] | |
| zmq.cpp:22:23:22:30 | ref arg & ... | zmq.cpp:28:26:28:32 | message | |
| zmq.cpp:22:23:22:30 | ref arg & ... | zmq.cpp:29:10:29:16 | message | |
| zmq.cpp:22:23:22:30 | ref arg & ... | zmq.cpp:30:24:30:30 | message | |
| zmq.cpp:22:24:22:30 | message | zmq.cpp:22:23:22:30 | & ... | |
| zmq.cpp:25:3:25:14 | message_data | zmq.cpp:25:3:25:17 | access to array | TAINT |
| zmq.cpp:25:3:25:17 | access to array [post update] | zmq.cpp:17:35:17:46 | message_data | |
| zmq.cpp:25:3:25:17 | access to array [post update] | zmq.cpp:25:3:25:14 | message_data [inner post update] | |
| zmq.cpp:25:3:25:17 | access to array [post update] | zmq.cpp:26:8:26:19 | message_data | |
| zmq.cpp:25:3:25:17 | access to array [post update] | zmq.cpp:28:35:28:46 | message_data | |
| zmq.cpp:25:3:25:28 | ... = ... | zmq.cpp:25:3:25:17 | access to array [post update] | |
| zmq.cpp:25:16:25:16 | 0 | zmq.cpp:25:3:25:17 | access to array | TAINT |
| zmq.cpp:25:21:25:26 | call to source | zmq.cpp:25:3:25:28 | ... = ... | |
| zmq.cpp:26:8:26:19 | ref arg message_data | zmq.cpp:17:35:17:46 | message_data | |
| zmq.cpp:26:8:26:19 | ref arg message_data | zmq.cpp:28:35:28:46 | message_data | |
| zmq.cpp:28:25:28:32 | ref arg & ... | zmq.cpp:28:26:28:32 | message [inner post update] | |
| zmq.cpp:28:25:28:32 | ref arg & ... | zmq.cpp:29:10:29:16 | message | |
| zmq.cpp:28:25:28:32 | ref arg & ... | zmq.cpp:30:24:30:30 | message | |
| zmq.cpp:28:26:28:32 | message | zmq.cpp:28:25:28:32 | & ... | |
| zmq.cpp:28:35:28:46 | ref arg message_data | zmq.cpp:17:35:17:46 | message_data | |
| zmq.cpp:30:23:30:30 | ref arg & ... | zmq.cpp:30:24:30:30 | message [inner post update] | |
| zmq.cpp:30:24:30:30 | message | zmq.cpp:30:23:30:30 | & ... | |

View File

@@ -0,0 +1,32 @@
int source();
void sink(...);
// --- ZMC networking library ---
typedef unsigned long size_t;
struct zmq_msg_t {
// ...
};
typedef void (*zmq_free_fn)();
int zmq_msg_init_data(zmq_msg_t *msg, void *data, size_t size, zmq_free_fn *ffn, void *hint);
void *zmq_msg_data(zmq_msg_t *msg);
void test_zmc(void *socket, char *message_data, size_t message_len) {
zmq_msg_t message;
if (zmq_msg_init_data(&message, message_data, message_len, 0, 0)) {
sink(message); // $ SPURIOUS: ast
sink(zmq_msg_data(&message));
}
message_data[0] = source();
sink(message_data); // $ ast,ir
if (zmq_msg_init_data(&message, message_data, message_len, 0, 0)) {
sink(message); // $ ast,ir
sink(zmq_msg_data(&message)); // $ ir MISSING: ast
}
}

View File

@@ -1,13 +1,18 @@
| fields.cpp:3:8:3:12 | Entry | fields.cpp:4:9:4:12 | name | public | CharPointerType | char |
| fields.cpp:3:8:3:12 | Entry | fields.cpp:4:9:4:12 | name | public | PointerOrArrayOrReferenceType | char |
| fields.cpp:3:8:3:12 | Entry | fields.cpp:5:8:5:8 | t | public | Enum | |
| fields.cpp:3:8:3:12 | Entry | fields.cpp:6:9:6:9 | s | public | CharPointerType | char |
| fields.cpp:3:8:3:12 | Entry | fields.cpp:6:9:6:9 | s | public | PointerOrArrayOrReferenceType | char |
| fields.cpp:3:8:3:12 | Entry | fields.cpp:7:7:7:7 | i | public | IntType | |
| fields.cpp:3:8:3:12 | Entry | fields.cpp:7:7:7:7 | i | public | MicrosoftInt32Type | |
| fields.cpp:3:8:3:12 | Entry | fields.cpp:9:7:9:14 | internal | private | IntType | |
| fields.cpp:3:8:3:12 | Entry | fields.cpp:9:7:9:14 | internal | private | MicrosoftInt32Type | |
| fields.cpp:12:7:12:10 | Name | fields.cpp:13:15:13:15 | s | private | PointerOrArrayOrReferenceType | const char |
| fields.cpp:12:7:12:10 | Name | fields.cpp:13:15:13:15 | s | private | PointerType | const char |
| fields.cpp:16:7:16:11 | Table | fields.cpp:17:9:17:9 | p | private | PointerOrArrayOrReferenceType | Name |
| fields.cpp:16:7:16:11 | Table | fields.cpp:17:9:17:9 | p | private | PointerType | Name |
| fields.cpp:16:7:16:11 | Table | fields.cpp:18:7:18:8 | sz | private | IntType | |
| fields.cpp:16:7:16:11 | Table | fields.cpp:18:7:18:8 | sz | private | MicrosoftInt32Type | |
| fields.cpp:26:7:26:10 | Date | fields.cpp:28:16:28:26 | cache_valid | private | BoolType | |
| fields.cpp:26:7:26:10 | Date | fields.cpp:30:17:30:21 | cache | public | CharPointerType | char |
| fields.cpp:26:7:26:10 | Date | fields.cpp:30:17:30:21 | cache | public | PointerOrArrayOrReferenceType | char |

View File

@@ -1,3 +1,3 @@
| file://:0:0:0:0 | __wchar_t * | IteratorByPointer, PointerType | Wchar_t, WideCharType |
| file://:0:0:0:0 | __wchar_t * | IteratorByPointer, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection, PointerType | Wchar_t, WideCharType |
| file://:0:0:0:0 | const __wchar_t | SpecifiedType | Wchar_t, WideCharType |
| file://:0:0:0:0 | wchar_t | Wchar_t, WideCharType | |

View File

@@ -1,3 +1,3 @@
| file://:0:0:0:0 | wchar_t | Wchar_t, WideCharType | |
| file://:0:0:0:0 | wchar_t * | IteratorByPointer, PointerType | CTypedefType, Wchar_t |
| file://:0:0:0:0 | wchar_t * | IteratorByPointer, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection, PointerType | CTypedefType, Wchar_t |
| ms.c:2:24:2:30 | wchar_t | CTypedefType, Wchar_t | |

View File

@@ -27,59 +27,59 @@
| __fp16 | BinaryFloatingPointType, RealNumberType | | | | |
| __int128 | Int128Type | | | | |
| __va_list_tag | DirectAccessHolder, MetricClass, Struct, StructLikeClass | | | | |
| __va_list_tag & | LValueReferenceType | | __va_list_tag | | |
| __va_list_tag && | RValueReferenceType | | __va_list_tag | | |
| __va_list_tag & | LValueReferenceType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | | __va_list_tag | | |
| __va_list_tag && | PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection, RValueReferenceType | | __va_list_tag | | |
| address | DirectAccessHolder, MetricClass, Struct, StructLikeClass | | | | |
| address & | LValueReferenceType | | address | | |
| address && | RValueReferenceType | | address | | |
| address & | LValueReferenceType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | | address | | |
| address && | PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection, RValueReferenceType | | address | | |
| auto | AutoType | | | | |
| bool | BoolType | | | | |
| char | MicrosoftInt8Type, PlainCharType | | | | |
| char8_t | Char8Type | | | | |
| char16_t | Char16Type | | | | |
| char32_t | Char32Type | | | | |
| char * | CharPointerType, IteratorByPointer | | char | | |
| char *[3] | ArrayType | char * | char * | | |
| char *[32] | ArrayType | char * | char * | | |
| char *[] | ArrayType | char * | char * | | |
| char[2] | ArrayType | char | char | | |
| char[3] | ArrayType | char | char | | |
| char[5] | ArrayType | char | char | | |
| char[6] | ArrayType | char | char | | |
| char[8] | ArrayType | char | char | | |
| char[9] | ArrayType | char | char | | |
| char[10] | ArrayType | char | char | | |
| char[53] | ArrayType | char | char | | |
| char[] | ArrayType | char | char | | |
| char * | CharPointerType, IteratorByPointer, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | | char | | |
| char *[3] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | char * | char * | | |
| char *[32] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | char * | char * | | |
| char *[] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | char * | char * | | |
| char[2] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | char | char | | |
| char[3] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | char | char | | |
| char[5] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | char | char | | |
| char[6] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | char | char | | |
| char[8] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | char | char | | |
| char[9] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | char | char | | |
| char[10] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | char | char | | |
| char[53] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | char | char | | |
| char[] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | char | char | | |
| const __va_list_tag | SpecifiedType | | __va_list_tag | | |
| const __va_list_tag & | LValueReferenceType | | const __va_list_tag | | |
| const __va_list_tag & | LValueReferenceType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | | const __va_list_tag | | |
| const address | SpecifiedType | | address | | |
| const address & | LValueReferenceType | | const address | | |
| const address & | LValueReferenceType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | | const address | | |
| const char | SpecifiedType | | char | | |
| const char * | IteratorByPointer, PointerType | | const char | | |
| const char *[3] | ArrayType | const char * | const char * | | |
| const char *[] | ArrayType | const char * | const char * | | |
| const char[5] | ArrayType | const char | const char | | |
| const char[6] | ArrayType | const char | const char | | |
| const char[8] | ArrayType | const char | const char | | |
| const char[9] | ArrayType | const char | const char | | |
| const char[10] | ArrayType | const char | const char | | |
| const char[53] | ArrayType | const char | const char | | |
| const char * | IteratorByPointer, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection, PointerType | | const char | | |
| const char *[3] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | const char * | const char * | | |
| const char *[] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | const char * | const char * | | |
| const char[5] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | const char | const char | | |
| const char[6] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | const char | const char | | |
| const char[8] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | const char | const char | | |
| const char[9] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | const char | const char | | |
| const char[10] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | const char | const char | | |
| const char[53] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | const char | const char | | |
| const double | SpecifiedType | | double | | |
| const int | SpecifiedType | | int | | |
| decltype(nullptr) | NullPointerType | | | | |
| double | DoubleType | | | | |
| error | ErroneousType | | | | |
| float | FloatType | | | | |
| float[3] | ArrayType | float | float | | |
| float[3] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | float | float | | |
| int | IntType, MicrosoftInt32Type | | | | |
| int * | IntPointerType, IteratorByPointer | | int | | |
| int[4] | ArrayType | int | int | | |
| int[8] | ArrayType | int | int | | |
| int[10] | ArrayType | int | int | | |
| int[10][20] | ArrayType | int[20] | int[20] | | |
| int[20] | ArrayType | int | int | | |
| int[] | ArrayType | int | int | | |
| int * | IntPointerType, IteratorByPointer, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | | int | | |
| int[4] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | int | int | | |
| int[8] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | int | int | | |
| int[10] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | int | int | | |
| int[10][20] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | int[20] | int[20] | | |
| int[20] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | int | int | | |
| int[] | ArrayType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | int | int | | |
| long | LongType | | | | |
| long double | LongDoubleType | | | | |
| long long | LongLongType, MicrosoftInt64Type | | | | |
@@ -99,5 +99,5 @@
| unsigned long long | LongLongType | | | | unsigned integral |
| unsigned short | ShortType | | | | unsigned integral |
| void | VoidType | | | | |
| void * | IteratorByPointer, VoidPointerType | | void | | |
| void * | IteratorByPointer, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection, VoidPointerType | | void | | |
| wchar_t | Wchar_t, WideCharType | | | | |

View File

@@ -6,64 +6,36 @@
| file://:0:0:0:0 | gp_offset | file://:0:0:0:0 | unsigned int | Field | | |
| file://:0:0:0:0 | overflow_arg_area | file://:0:0:0:0 | void * | Field | | |
| file://:0:0:0:0 | reg_save_area | file://:0:0:0:0 | void * | Field | | |
| variables.cpp:1:12:1:12 | i | file://:0:0:0:0 | int | GlobalVariable | | |
| variables.cpp:1:12:1:12 | i | file://:0:0:0:0 | int | StaticStorageDurationVariable | | |
| variables.cpp:2:12:2:12 | i | file://:0:0:0:0 | int | GlobalVariable | | |
| variables.cpp:2:12:2:12 | i | file://:0:0:0:0 | int | StaticStorageDurationVariable | | |
| variables.cpp:3:12:3:12 | i | file://:0:0:0:0 | int | GlobalVariable | | |
| variables.cpp:3:12:3:12 | i | file://:0:0:0:0 | int | StaticStorageDurationVariable | | |
| variables.cpp:5:11:5:11 | c | file://:0:0:0:0 | const int | GlobalVariable | const | static |
| variables.cpp:5:11:5:11 | c | file://:0:0:0:0 | const int | StaticStorageDurationVariable | const | static |
| variables.cpp:6:14:6:15 | pi | file://:0:0:0:0 | const double | GlobalVariable | const | static |
| variables.cpp:6:14:6:15 | pi | file://:0:0:0:0 | const double | StaticStorageDurationVariable | const | static |
| variables.cpp:8:10:8:10 | a | file://:0:0:0:0 | unsigned int | GlobalVariable | | |
| variables.cpp:8:10:8:10 | a | file://:0:0:0:0 | unsigned int | StaticStorageDurationVariable | | |
| variables.cpp:10:14:10:14 | b | file://:0:0:0:0 | unsigned int | GlobalVariable | | |
| variables.cpp:10:14:10:14 | b | file://:0:0:0:0 | unsigned int | StaticStorageDurationVariable | | |
| variables.cpp:12:13:12:17 | kings | file://:0:0:0:0 | const char *[] | GlobalVariable | | |
| variables.cpp:12:13:12:17 | kings | file://:0:0:0:0 | const char *[] | StaticStorageDurationVariable | | |
| variables.cpp:14:6:14:6 | p | file://:0:0:0:0 | int * | GlobalVariable | | |
| variables.cpp:14:6:14:6 | p | file://:0:0:0:0 | int * | StaticStorageDurationVariable | | |
| variables.cpp:14:9:14:9 | q | file://:0:0:0:0 | int | GlobalVariable | | |
| variables.cpp:14:9:14:9 | q | file://:0:0:0:0 | int | StaticStorageDurationVariable | | |
| variables.cpp:15:12:15:13 | v1 | file://:0:0:0:0 | int[10] | GlobalVariable | | static |
| variables.cpp:15:12:15:13 | v1 | file://:0:0:0:0 | int[10] | StaticStorageDurationVariable | | static |
| variables.cpp:15:21:15:22 | pv | file://:0:0:0:0 | int * | GlobalVariable | | static |
| variables.cpp:15:21:15:22 | pv | file://:0:0:0:0 | int * | StaticStorageDurationVariable | | static |
| variables.cpp:17:7:17:8 | fp | file://:0:0:0:0 | ..(*)(..) | GlobalVariable | | |
| variables.cpp:17:7:17:8 | fp | file://:0:0:0:0 | ..(*)(..) | StaticStorageDurationVariable | | |
| variables.cpp:19:7:19:8 | v2 | file://:0:0:0:0 | float[3] | GlobalVariable | | |
| variables.cpp:19:7:19:8 | v2 | file://:0:0:0:0 | float[3] | StaticStorageDurationVariable | | |
| variables.cpp:20:7:20:8 | v3 | file://:0:0:0:0 | char *[32] | GlobalVariable | | |
| variables.cpp:20:7:20:8 | v3 | file://:0:0:0:0 | char *[32] | StaticStorageDurationVariable | | |
| variables.cpp:22:5:22:6 | d2 | file://:0:0:0:0 | int[10][20] | GlobalVariable | | |
| variables.cpp:22:5:22:6 | d2 | file://:0:0:0:0 | int[10][20] | StaticStorageDurationVariable | | |
| variables.cpp:24:6:24:7 | v4 | file://:0:0:0:0 | char[3] | GlobalVariable | | |
| variables.cpp:24:6:24:7 | v4 | file://:0:0:0:0 | char[3] | StaticStorageDurationVariable | | |
| variables.cpp:26:5:26:6 | v5 | file://:0:0:0:0 | int[8] | GlobalVariable | | |
| variables.cpp:26:5:26:6 | v5 | file://:0:0:0:0 | int[8] | StaticStorageDurationVariable | | |
| variables.cpp:28:7:28:8 | p2 | file://:0:0:0:0 | char * | GlobalVariable | | |
| variables.cpp:28:7:28:8 | p2 | file://:0:0:0:0 | char * | StaticStorageDurationVariable | | |
| variables.cpp:29:6:29:7 | p3 | file://:0:0:0:0 | char[] | GlobalVariable | | |
| variables.cpp:29:6:29:7 | p3 | file://:0:0:0:0 | char[] | StaticStorageDurationVariable | | |
| variables.cpp:31:6:31:10 | alpha | file://:0:0:0:0 | char[] | GlobalVariable | | |
| variables.cpp:31:6:31:10 | alpha | file://:0:0:0:0 | char[] | StaticStorageDurationVariable | | |
| variables.cpp:34:5:34:6 | av | file://:0:0:0:0 | int[] | GlobalVariable | | |
| variables.cpp:34:5:34:6 | av | file://:0:0:0:0 | int[] | StaticStorageDurationVariable | | |
| variables.cpp:35:6:35:8 | ap1 | file://:0:0:0:0 | int * | GlobalVariable | | |
| variables.cpp:35:6:35:8 | ap1 | file://:0:0:0:0 | int * | StaticStorageDurationVariable | | |
| variables.cpp:36:6:36:8 | ap2 | file://:0:0:0:0 | int * | GlobalVariable | | |
| variables.cpp:36:6:36:8 | ap2 | file://:0:0:0:0 | int * | StaticStorageDurationVariable | | |
| variables.cpp:37:6:37:8 | ap3 | file://:0:0:0:0 | int * | GlobalVariable | | |
| variables.cpp:37:6:37:8 | ap3 | file://:0:0:0:0 | int * | StaticStorageDurationVariable | | |
| variables.cpp:41:7:41:11 | local | file://:0:0:0:0 | char[] | LocalVariable | | |
| variables.cpp:41:7:41:11 | local | file://:0:0:0:0 | char[] | SemanticStackVariable | | |
| variables.cpp:43:14:43:18 | local | file://:0:0:0:0 | int | StaticLocalVariable | | static |
| variables.cpp:1:12:1:12 | i | file://:0:0:0:0 | int | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:2:12:2:12 | i | file://:0:0:0:0 | int | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:3:12:3:12 | i | file://:0:0:0:0 | int | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:5:11:5:11 | c | file://:0:0:0:0 | const int | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | const | static |
| variables.cpp:6:14:6:15 | pi | file://:0:0:0:0 | const double | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | const | static |
| variables.cpp:8:10:8:10 | a | file://:0:0:0:0 | unsigned int | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:10:14:10:14 | b | file://:0:0:0:0 | unsigned int | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:12:13:12:17 | kings | file://:0:0:0:0 | const char *[] | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:14:6:14:6 | p | file://:0:0:0:0 | int * | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:14:9:14:9 | q | file://:0:0:0:0 | int | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:15:12:15:13 | v1 | file://:0:0:0:0 | int[10] | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | static |
| variables.cpp:15:21:15:22 | pv | file://:0:0:0:0 | int * | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | static |
| variables.cpp:17:7:17:8 | fp | file://:0:0:0:0 | ..(*)(..) | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:19:7:19:8 | v2 | file://:0:0:0:0 | float[3] | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:20:7:20:8 | v3 | file://:0:0:0:0 | char *[32] | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:22:5:22:6 | d2 | file://:0:0:0:0 | int[10][20] | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:24:6:24:7 | v4 | file://:0:0:0:0 | char[3] | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:26:5:26:6 | v5 | file://:0:0:0:0 | int[8] | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:28:7:28:8 | p2 | file://:0:0:0:0 | char * | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:29:6:29:7 | p3 | file://:0:0:0:0 | char[] | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:31:6:31:10 | alpha | file://:0:0:0:0 | char[] | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:34:5:34:6 | av | file://:0:0:0:0 | int[] | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:35:6:35:8 | ap1 | file://:0:0:0:0 | int * | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:36:6:36:8 | ap2 | file://:0:0:0:0 | int * | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:37:6:37:8 | ap3 | file://:0:0:0:0 | int * | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |
| variables.cpp:41:7:41:11 | local | file://:0:0:0:0 | char[] | LocalVariable, SemanticStackVariable | | |
| variables.cpp:43:14:43:18 | local | file://:0:0:0:0 | int | GlobalLikeVariable, StaticLocalVariable | | static |
| variables.cpp:48:9:48:12 | name | file://:0:0:0:0 | char * | Field | | |
| variables.cpp:49:12:49:17 | number | file://:0:0:0:0 | long | Field | | |
| variables.cpp:50:9:50:14 | street | file://:0:0:0:0 | char * | Field | | |
| variables.cpp:51:9:51:12 | town | file://:0:0:0:0 | char * | Field | | |
| variables.cpp:52:16:52:22 | country | file://:0:0:0:0 | char * | MemberVariable | | static |
| variables.cpp:52:16:52:22 | country | file://:0:0:0:0 | char * | StaticStorageDurationVariable | | static |
| variables.cpp:56:14:56:29 | externInFunction | file://:0:0:0:0 | int | GlobalVariable | | |
| variables.cpp:56:14:56:29 | externInFunction | file://:0:0:0:0 | int | StaticStorageDurationVariable | | |
| variables.cpp:52:16:52:22 | country | file://:0:0:0:0 | char * | MemberVariable, StaticStorageDurationVariable | | static |
| variables.cpp:56:14:56:29 | externInFunction | file://:0:0:0:0 | int | GlobalLikeVariable, GlobalVariable, StaticStorageDurationVariable | | |

View File

@@ -1,10 +1,17 @@
import cpp
from Variable v, Type t, string qlClass, string const, string static
string interestingQlClass(Variable v) {
result = v.getAQlClass() and
(
result.matches("%Variable%")
or
result.matches("%Field%")
)
}
from Variable v, Type t, string const, string static
where
t = v.getType() and
qlClass = v.getAQlClass() and
(qlClass.matches("%Variable%") or qlClass.matches("%Field%")) and
(if v.isConst() then const = "const" else const = "") and
if v.isStatic() then static = "static" else static = ""
select v, t, qlClass, const, static
select v, t, concat(interestingQlClass(v), ", "), const, static

View File

@@ -0,0 +1 @@
| test.cpp:27:5:27:6 | f1 | The variable 'b' is used in this function but may not be initialized when it is called. |

View File

@@ -0,0 +1 @@
Critical/GlobalUseBeforeInit.ql

View File

@@ -0,0 +1,38 @@
typedef __builtin_va_list va_list;
typedef struct {} FILE;
extern FILE * stdin;
extern FILE * stdout;
extern FILE * stderr;
#define va_start(args, fmt) __builtin_va_start(args,fmt)
#define va_end(args) __builtin_va_end(args);
int vfprintf (FILE *, const char *, va_list);
int a = 1;
int b;
int my_printf(const char * fmt, ...)
{
va_list vl;
int ret;
va_start(vl, fmt);
ret = vfprintf(stdout, fmt, vl);
ret = vfprintf(stderr, fmt, vl);
va_end(vl);
return ret;
}
int f1()
{
my_printf("%d\n", a + 2);
my_printf("%d\n", b + 2); // BAD
return 0;
}
int main()
{
int b = f1();
return 0;
}

View File

@@ -12,6 +12,16 @@ edges
| tests2.cpp:111:14:111:15 | *c1 [*ptr] | tests2.cpp:111:14:111:19 | *ptr | provenance | |
| tests2.cpp:111:14:111:15 | *c1 [*ptr] | tests2.cpp:111:17:111:19 | *ptr | provenance | |
| tests2.cpp:111:17:111:19 | *ptr | tests2.cpp:111:14:111:19 | *ptr | provenance | |
| tests2.cpp:120:5:120:21 | [summary param] 1 indirection in zmq_msg_init_data | tests2.cpp:120:5:120:21 | [summary] to write: Argument[0 indirection] in zmq_msg_init_data | provenance | |
| tests2.cpp:134:2:134:30 | *... = ... | tests2.cpp:138:23:138:34 | *message_data | provenance | |
| tests2.cpp:134:2:134:30 | *... = ... | tests2.cpp:143:34:143:45 | *message_data | provenance | |
| tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:134:2:134:30 | *... = ... | provenance | |
| tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | tests2.cpp:144:33:144:40 | *& ... | provenance | |
| tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | tests2.cpp:147:20:147:27 | *& ... | provenance | |
| tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | tests2.cpp:155:32:155:39 | *& ... | provenance | |
| tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | tests2.cpp:158:20:158:27 | *& ... | provenance | |
| tests2.cpp:143:34:143:45 | *message_data | tests2.cpp:120:5:120:21 | [summary param] 1 indirection in zmq_msg_init_data | provenance | |
| tests2.cpp:143:34:143:45 | *message_data | tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | provenance | |
| tests_sockets.cpp:26:15:26:20 | *call to getenv | tests_sockets.cpp:26:15:26:20 | *call to getenv | provenance | |
| tests_sockets.cpp:26:15:26:20 | *call to getenv | tests_sockets.cpp:39:19:39:22 | *path | provenance | |
| tests_sockets.cpp:26:15:26:20 | *call to getenv | tests_sockets.cpp:43:20:43:23 | *path | provenance | |
@@ -42,6 +52,17 @@ nodes
| tests2.cpp:111:14:111:15 | *c1 [*ptr] | semmle.label | *c1 [*ptr] |
| tests2.cpp:111:14:111:19 | *ptr | semmle.label | *ptr |
| tests2.cpp:111:17:111:19 | *ptr | semmle.label | *ptr |
| tests2.cpp:120:5:120:21 | [summary param] 1 indirection in zmq_msg_init_data | semmle.label | [summary param] 1 indirection in zmq_msg_init_data |
| tests2.cpp:120:5:120:21 | [summary] to write: Argument[0 indirection] in zmq_msg_init_data | semmle.label | [summary] to write: Argument[0 indirection] in zmq_msg_init_data |
| tests2.cpp:134:2:134:30 | *... = ... | semmle.label | *... = ... |
| tests2.cpp:134:17:134:22 | *call to getenv | semmle.label | *call to getenv |
| tests2.cpp:138:23:138:34 | *message_data | semmle.label | *message_data |
| tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument | semmle.label | zmq_msg_init_data output argument |
| tests2.cpp:143:34:143:45 | *message_data | semmle.label | *message_data |
| tests2.cpp:144:33:144:40 | *& ... | semmle.label | *& ... |
| tests2.cpp:147:20:147:27 | *& ... | semmle.label | *& ... |
| tests2.cpp:155:32:155:39 | *& ... | semmle.label | *& ... |
| tests2.cpp:158:20:158:27 | *& ... | semmle.label | *& ... |
| tests_sockets.cpp:26:15:26:20 | *call to getenv | semmle.label | *call to getenv |
| tests_sockets.cpp:26:15:26:20 | *call to getenv | semmle.label | *call to getenv |
| tests_sockets.cpp:39:19:39:22 | *path | semmle.label | *path |
@@ -53,6 +74,7 @@ nodes
| tests_sysconf.cpp:36:21:36:27 | confstr output argument | semmle.label | confstr output argument |
| tests_sysconf.cpp:39:19:39:25 | *pathbuf | semmle.label | *pathbuf |
subpaths
| tests2.cpp:143:34:143:45 | *message_data | tests2.cpp:120:5:120:21 | [summary param] 1 indirection in zmq_msg_init_data | tests2.cpp:120:5:120:21 | [summary] to write: Argument[0 indirection] in zmq_msg_init_data | tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument |
#select
| tests2.cpp:63:13:63:26 | *call to getenv | tests2.cpp:63:13:63:26 | *call to getenv | tests2.cpp:63:13:63:26 | *call to getenv | This operation exposes system data from $@. | tests2.cpp:63:13:63:26 | *call to getenv | *call to getenv |
| tests2.cpp:64:13:64:26 | *call to getenv | tests2.cpp:64:13:64:26 | *call to getenv | tests2.cpp:64:13:64:26 | *call to getenv | This operation exposes system data from $@. | tests2.cpp:64:13:64:26 | *call to getenv | *call to getenv |
@@ -64,6 +86,11 @@ subpaths
| tests2.cpp:93:14:93:17 | *str1 | tests2.cpp:91:42:91:45 | *str1 | tests2.cpp:93:14:93:17 | *str1 | This operation exposes system data from $@. | tests2.cpp:91:42:91:45 | *str1 | *str1 |
| tests2.cpp:102:14:102:15 | *pw | tests2.cpp:101:8:101:15 | *call to getpwuid | tests2.cpp:102:14:102:15 | *pw | This operation exposes system data from $@. | tests2.cpp:101:8:101:15 | *call to getpwuid | *call to getpwuid |
| tests2.cpp:111:14:111:19 | *ptr | tests2.cpp:109:12:109:17 | *call to getenv | tests2.cpp:111:14:111:19 | *ptr | This operation exposes system data from $@. | tests2.cpp:109:12:109:17 | *call to getenv | *call to getenv |
| tests2.cpp:138:23:138:34 | *message_data | tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:138:23:138:34 | *message_data | This operation exposes system data from $@. | tests2.cpp:134:17:134:22 | *call to getenv | *call to getenv |
| tests2.cpp:144:33:144:40 | *& ... | tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:144:33:144:40 | *& ... | This operation exposes system data from $@. | tests2.cpp:134:17:134:22 | *call to getenv | *call to getenv |
| tests2.cpp:147:20:147:27 | *& ... | tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:147:20:147:27 | *& ... | This operation exposes system data from $@. | tests2.cpp:134:17:134:22 | *call to getenv | *call to getenv |
| tests2.cpp:155:32:155:39 | *& ... | tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:155:32:155:39 | *& ... | This operation exposes system data from $@. | tests2.cpp:134:17:134:22 | *call to getenv | *call to getenv |
| tests2.cpp:158:20:158:27 | *& ... | tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:158:20:158:27 | *& ... | This operation exposes system data from $@. | tests2.cpp:134:17:134:22 | *call to getenv | *call to getenv |
| tests_sockets.cpp:39:19:39:22 | *path | tests_sockets.cpp:26:15:26:20 | *call to getenv | tests_sockets.cpp:39:19:39:22 | *path | This operation exposes system data from $@. | tests_sockets.cpp:26:15:26:20 | *call to getenv | *call to getenv |
| tests_sockets.cpp:43:20:43:23 | *path | tests_sockets.cpp:26:15:26:20 | *call to getenv | tests_sockets.cpp:43:20:43:23 | *path | This operation exposes system data from $@. | tests_sockets.cpp:26:15:26:20 | *call to getenv | *call to getenv |
| tests_sockets.cpp:76:19:76:22 | *path | tests_sockets.cpp:63:15:63:20 | *call to getenv | tests_sockets.cpp:76:19:76:22 | *path | This operation exposes system data from $@. | tests_sockets.cpp:63:15:63:20 | *call to getenv | *call to getenv |

View File

@@ -1,15 +1,15 @@
// Semmle test cases for rule CWE-497
// library functions etc
// --- library functions etc ---
#include "tests.h"
typedef unsigned long size_t;
void *memcpy(void *dest, const void *src, size_t count);
char *getenv(const char *name);
char *strcpy(char *s1, const char *s2);
size_t strlen(const char *s);
@@ -45,7 +45,7 @@ passwd *getpwuid(int uid);
int val();
// test cases
// --- test cases ---
const char *global1 = mysql_get_client_info();
const char *global2 = "abc";
@@ -112,3 +112,51 @@ void test1()
send(sock, c2.ptr, val(), val()); // GOOD: not system data
}
}
struct zmq_msg_t {
};
typedef void (*zmq_free_fn)();
int zmq_msg_init_data(zmq_msg_t *msg, void *data, size_t size, zmq_free_fn *ffn, void *hint);
int zmq_msg_init_size(zmq_msg_t *msg, size_t size);
void *zmq_msg_data(zmq_msg_t *msg);
int zmq_send(void *socket, const void *buf, size_t len, int flags);
int zmq_sendmsg(void *socket, zmq_msg_t *msg, int flags); // deprecated
int zmq_msg_send(zmq_msg_t *msg, void *socket, int flags);
void test_zmq(void *remoteSocket)
{
zmq_msg_t message;
char *message_data;
size_t message_len;
// prepare data
message_data = getenv("HOME");
message_len = strlen(message_data) + 1;
// send as data
if (zmq_send(socket, message_data, message_len, 0) >= 0) { // BAD: outputs HOME environment variable
// ...
}
// send as message
if (zmq_msg_init_data(&message, message_data, message_len, 0, 0)) {
if (zmq_sendmsg(remoteSocket, &message, message_len)) { // BAD: outputs HOME environment variable
// ...
}
if (zmq_msg_send(&message, remoteSocket, message_len)) { // BAD: outputs HOME environment variable
// ...
}
}
// send as message (alternative path)
if (zmq_msg_init_size(&message, message_len) == 0) {
memcpy(zmq_msg_data(&message), message_data, message_len);
if (zmq_sendmsg(remoteSocket,&message, message_len)) { // BAD: outputs HOME environment variable
// ...
}
if (zmq_msg_send(&message, remoteSocket, message_len)) { // BAD: outputs HOME environment variable
// ...
}
}
}

View File

@@ -43,7 +43,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
}
else
{
logger.LogInfo($"AssemblyLookupLocation: Skipping {dll.FullName}.");
logger.LogDebug($"AssemblyLookupLocation: Skipping {dll.FullName}.");
}
}
}
@@ -68,19 +68,19 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
}
else
{
logger.LogInfo($"AssemblyLookupLocation: Skipping {path}.");
logger.LogDebug($"AssemblyLookupLocation: Skipping {path}.");
}
return dllsToIndex;
}
if (Directory.Exists(path))
{
logger.LogInfo($"AssemblyLookupLocation: Finding reference DLLs in {path}...");
logger.LogDebug($"AssemblyLookupLocation: Finding reference DLLs in {path}...");
AddReferenceDirectory(dllsToIndex, logger);
}
else
{
logger.LogInfo("AssemblyLookupLocation: Path not found: " + path);
logger.LogDebug("AssemblyLookupLocation: Path not found: " + path);
}
return dllsToIndex;
}

View File

@@ -12,14 +12,26 @@ using Semmle.Util.Logging;
namespace Semmle.Extraction.CSharp.DependencyFetching
{
public interface ICompilationInfoContainer
{
/// <summary>
/// List of `(key, value)` tuples, that are stored in the DB for telemetry purposes.
/// </summary>
List<(string, string)> CompilationInfos { get; }
}
/// <summary>
/// Main implementation of the build analysis.
/// </summary>
public sealed partial class DependencyManager : IDisposable
public sealed partial class DependencyManager : IDisposable, ICompilationInfoContainer
{
private readonly AssemblyCache assemblyCache;
private readonly ILogger logger;
private readonly IDiagnosticsWriter diagnosticsWriter;
private readonly NugetPackageRestorer nugetPackageRestorer;
private readonly IDotNet dotnet;
private readonly FileContent fileContent;
private readonly FileProvider fileProvider;
// Only used as a set, but ConcurrentDictionary is the only concurrent set in .NET.
private readonly IDictionary<string, bool> usedReferences = new ConcurrentDictionary<string, bool>();
@@ -30,17 +42,14 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
private int conflictedReferences = 0;
private readonly DirectoryInfo sourceDir;
private string? dotnetPath;
private readonly IDotNet dotnet;
private readonly FileContent fileContent;
private readonly TemporaryDirectory packageDirectory;
private readonly TemporaryDirectory legacyPackageDirectory;
private readonly TemporaryDirectory missingPackageDirectory;
private readonly TemporaryDirectory tempWorkingDirectory;
private readonly bool cleanupTempWorkingDirectory;
private readonly Lazy<Runtime> runtimeLazy;
private Runtime Runtime => runtimeLazy.Value;
private readonly int threads = EnvironmentVariables.GetDefaultNumberOfThreads();
internal static readonly int Threads = EnvironmentVariables.GetDefaultNumberOfThreads();
/// <summary>
/// Performs C# dependency fetching.
@@ -73,26 +82,15 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
$"dependency-manager-{DateTime.UtcNow:yyyyMMddHHmm}-{Environment.ProcessId}.jsonc"));
this.sourceDir = new DirectoryInfo(srcDir);
packageDirectory = new TemporaryDirectory(ComputeTempDirectory(sourceDir.FullName, "packages"));
legacyPackageDirectory = new TemporaryDirectory(ComputeTempDirectory(sourceDir.FullName, "legacypackages"));
missingPackageDirectory = new TemporaryDirectory(ComputeTempDirectory(sourceDir.FullName, "missingpackages"));
tempWorkingDirectory = new TemporaryDirectory(
FileUtils.GetTemporaryWorkingDirectory(out cleanupTempWorkingDirectory),
"temporary working",
logger);
tempWorkingDirectory = new TemporaryDirectory(FileUtils.GetTemporaryWorkingDirectory(out cleanupTempWorkingDirectory));
logger.LogInfo($"Finding files in {srcDir}...");
var allFiles = GetAllFiles().ToList();
var binaryFileExtensions = new HashSet<string>(new[] { ".dll", ".exe" }); // TODO: add more binary file extensions.
var allNonBinaryFiles = allFiles.Where(f => !binaryFileExtensions.Contains(f.Extension.ToLowerInvariant())).ToList();
var smallNonBinaryFiles = allNonBinaryFiles.SelectSmallFiles(logger).SelectFileNames().ToList();
this.fileContent = new FileContent(logger, smallNonBinaryFiles);
this.nonGeneratedSources = allNonBinaryFiles.SelectFileNamesByExtension(".cs").ToList();
this.generatedSources = new();
var allProjects = allNonBinaryFiles.SelectFileNamesByExtension(".csproj").ToList();
var allSolutions = allNonBinaryFiles.SelectFileNamesByExtension(".sln").ToList();
var dllLocations = allFiles.SelectFileNamesByExtension(".dll").Select(x => new AssemblyLookupLocation(x)).ToHashSet();
logger.LogInfo($"Found {allFiles.Count} files, {nonGeneratedSources.Count} source files, {allProjects.Count} project files, {allSolutions.Count} solution files, {dllLocations.Count} DLLs.");
this.fileProvider = new FileProvider(sourceDir, logger);
this.fileContent = new FileContent(logger, this.fileProvider.SmallNonBinary);
this.nonGeneratedSources = fileProvider.Sources.ToList();
this.generatedSources = [];
void startCallback(string s, bool silent)
{
@@ -104,7 +102,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
logger.Log(silent ? Severity.Debug : Severity.Info, $"Exit code {ret}{(string.IsNullOrEmpty(msg) ? "" : $": {msg}")}");
}
DotNet.WithDotNet(SystemBuildActions.Instance, logger, smallNonBinaryFiles, tempWorkingDirectory.ToString(), shouldCleanUp: false, ensureDotNetAvailable: true, version: null, installDir =>
DotNet.WithDotNet(SystemBuildActions.Instance, logger, fileProvider.GlobalJsons, tempWorkingDirectory.ToString(), shouldCleanUp: false, ensureDotNetAvailable: true, version: null, installDir =>
{
this.dotnetPath = installDir;
return BuildScript.Success;
@@ -121,13 +119,16 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
throw;
}
RestoreNugetPackages(allNonBinaryFiles, allProjects, allSolutions, dllLocations);
nugetPackageRestorer = new NugetPackageRestorer(fileProvider, fileContent, dotnet, diagnosticsWriter, logger, this);
var dllLocations = fileProvider.Dlls.Select(x => new AssemblyLookupLocation(x)).ToHashSet();
dllLocations.UnionWith(nugetPackageRestorer.Restore());
// Find DLLs in the .Net / Asp.Net Framework
// This needs to come after the nuget restore, because the nuget restore might fetch the .NET Core/Framework reference assemblies.
var frameworkLocations = AddFrameworkDlls(dllLocations);
assemblyCache = new AssemblyCache(dllLocations, frameworkLocations, logger);
AnalyseSolutions(allSolutions);
AnalyseSolutions(fileProvider.Solutions);
foreach (var filename in assemblyCache.AllAssemblies.Select(a => a.Filename))
{
@@ -140,39 +141,35 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
// Output the findings
foreach (var r in usedReferences.Keys.OrderBy(r => r))
{
logger.LogInfo($"Resolved reference {r}");
logger.LogDebug($"Resolved reference {r}");
}
foreach (var r in unresolvedReferences.OrderBy(r => r.Key))
{
logger.LogInfo($"Unresolved reference {r.Key} in project {r.Value}");
logger.LogDebug($"Unresolved reference {r.Key} in project {r.Value}");
}
var webViewExtractionOption = Environment.GetEnvironmentVariable(EnvironmentVariableNames.WebViewGeneration);
if (webViewExtractionOption == null ||
bool.TryParse(webViewExtractionOption, out var shouldExtractWebViews) &&
shouldExtractWebViews)
var sourceGenerators = new ISourceGenerator[]
{
CompilationInfos.Add(("WebView extraction enabled", "1"));
GenerateSourceFilesFromWebViews(allNonBinaryFiles);
}
else
new ImplicitUsingsGenerator(fileContent, logger, tempWorkingDirectory),
new WebViewGenerator(fileProvider, fileContent, dotnet, this, logger, tempWorkingDirectory, usedReferences.Keys)
};
foreach (var sourceGenerator in sourceGenerators)
{
CompilationInfos.Add(("WebView extraction enabled", "0"));
this.generatedSources.AddRange(sourceGenerator.Generate());
}
CompilationInfos.Add(("UseWPF set", fileContent.UseWpf ? "1" : "0"));
CompilationInfos.Add(("UseWindowsForms set", fileContent.UseWindowsForms ? "1" : "0"));
GenerateSourceFileFromImplicitUsings();
const int align = 6;
logger.LogInfo("");
logger.LogInfo("Build analysis summary:");
logger.LogInfo($"{nonGeneratedSources.Count,align} source files found on the filesystem");
logger.LogInfo($"{generatedSources.Count,align} source files have been generated");
logger.LogInfo($"{allSolutions.Count,align} solution files found on the filesystem");
logger.LogInfo($"{allProjects.Count,align} project files found on the filesystem");
logger.LogInfo($"{fileProvider.Solutions.Count,align} solution files found on the filesystem");
logger.LogInfo($"{fileProvider.Projects.Count,align} project files found on the filesystem");
logger.LogInfo($"{usedReferences.Keys.Count,align} resolved references");
logger.LogInfo($"{unresolvedReferences.Count,align} unresolved references");
logger.LogInfo($"{conflictedReferences,align} resolved assembly conflicts");
@@ -182,8 +179,8 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
CompilationInfos.AddRange([
("Source files on filesystem", nonGeneratedSources.Count.ToString()),
("Source files generated", generatedSources.Count.ToString()),
("Solution files on filesystem", allSolutions.Count.ToString()),
("Project files on filesystem", allProjects.Count.ToString()),
("Solution files on filesystem", fileProvider.Solutions.Count.ToString()),
("Project files on filesystem", fileProvider.Projects.Count.ToString()),
("Resolved references", usedReferences.Keys.Count.ToString()),
("Unresolved references", unresolvedReferences.Count.ToString()),
("Resolved assembly conflicts", conflictedReferences.ToString()),
@@ -229,11 +226,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
private void RemoveNugetAnalyzerReferences()
{
var packageFolder = packageDirectory.DirInfo.FullName.ToLowerInvariant();
if (packageFolder == null)
{
return;
}
var packageFolder = nugetPackageRestorer.PackageDirectory.DirInfo.FullName.ToLowerInvariant();
foreach (var filename in usedReferences.Keys)
{
@@ -256,7 +249,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
if (isInAnalyzersFolder)
{
usedReferences.Remove(filename);
logger.LogInfo($"Removed analyzer reference {filename}");
logger.LogDebug($"Removed analyzer reference {filename}");
}
}
}
@@ -268,19 +261,19 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
if (versionFolders.Length > 1)
{
var versions = string.Join(", ", versionFolders.Select(d => d.Name));
logger.LogInfo($"Found multiple {frameworkType} DLLs in NuGet packages at {frameworkPath}. Using the latest version ({versionFolders[0].Name}) from: {versions}.");
logger.LogDebug($"Found multiple {frameworkType} DLLs in NuGet packages at {frameworkPath}. Using the latest version ({versionFolders[0].Name}) from: {versions}.");
}
var selectedFrameworkFolder = versionFolders.FirstOrDefault()?.FullName;
if (selectedFrameworkFolder is null)
{
logger.LogInfo($"Found {frameworkType} DLLs in NuGet packages at {frameworkPath}, but no version folder was found.");
logger.LogDebug($"Found {frameworkType} DLLs in NuGet packages at {frameworkPath}, but no version folder was found.");
selectedFrameworkFolder = frameworkPath;
}
dllLocations.Add(selectedFrameworkFolder);
frameworkLocations.Add(selectedFrameworkFolder);
logger.LogInfo($"Found {frameworkType} DLLs in NuGet packages at {selectedFrameworkFolder}.");
logger.LogDebug($"Found {frameworkType} DLLs in NuGet packages at {selectedFrameworkFolder}.");
}
private static DirectoryInfo[] GetPackageVersionSubDirectories(string packagePath)
@@ -307,7 +300,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
var packagesInPrioOrder = FrameworkPackageNames.NetFrameworks;
var frameworkPaths = packagesInPrioOrder
.Select((s, index) => (Index: index, Path: GetPackageDirectory(s, packageDirectory)))
.Select((s, index) => (Index: index, Path: GetPackageDirectory(s)))
.Where(pair => pair.Path is not null)
.ToArray();
@@ -338,11 +331,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
if (runtimeLocation is null)
{
logger.LogInfo("No .NET Desktop Runtime location found. Attempting to restore the .NET Framework reference assemblies manually.");
if (TryRestorePackageManually(FrameworkPackageNames.LatestNetFrameworkReferenceAssemblies))
{
runtimeLocation = GetPackageDirectory(FrameworkPackageNames.LatestNetFrameworkReferenceAssemblies, missingPackageDirectory);
}
runtimeLocation = nugetPackageRestorer.TryRestoreLatestNetFrameworkReferenceAssemblies();
}
}
@@ -362,35 +351,25 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
private void RemoveNugetPackageReference(string packagePrefix, ISet<AssemblyLookupLocation> dllLocations)
{
var packageFolder = packageDirectory.DirInfo.FullName.ToLowerInvariant();
if (packageFolder == null)
{
return;
}
var packageFolder = nugetPackageRestorer.PackageDirectory.DirInfo.FullName.ToLowerInvariant();
var packagePathPrefix = Path.Combine(packageFolder, packagePrefix.ToLowerInvariant());
var toRemove = dllLocations.Where(s => s.Path.StartsWith(packagePathPrefix, StringComparison.InvariantCultureIgnoreCase));
foreach (var path in toRemove)
{
dllLocations.Remove(path);
logger.LogInfo($"Removed reference {path}");
logger.LogDebug($"Removed reference {path}");
}
}
private bool IsAspNetCoreDetected()
{
return fileContent.IsNewProjectStructureUsed && fileContent.UseAspNetCoreDlls;
}
private void AddAspNetCoreFrameworkDlls(ISet<AssemblyLookupLocation> dllLocations, ISet<string> frameworkLocations)
{
if (!IsAspNetCoreDetected())
if (!fileContent.IsAspNetCoreDetected)
{
return;
}
// First try to find ASP.NET Core assemblies in the NuGet packages
if (GetPackageDirectory(FrameworkPackageNames.AspNetCoreFramework, packageDirectory) is string aspNetCorePackage)
if (GetPackageDirectory(FrameworkPackageNames.AspNetCoreFramework) is string aspNetCorePackage)
{
SelectNewestFrameworkPath(aspNetCorePackage, "ASP.NET Core", dllLocations, frameworkLocations);
return;
@@ -406,165 +385,25 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
private void AddMicrosoftWindowsDesktopDlls(ISet<AssemblyLookupLocation> dllLocations, ISet<string> frameworkLocations)
{
if (GetPackageDirectory(FrameworkPackageNames.WindowsDesktopFramework, packageDirectory) is string windowsDesktopApp)
if (GetPackageDirectory(FrameworkPackageNames.WindowsDesktopFramework) is string windowsDesktopApp)
{
SelectNewestFrameworkPath(windowsDesktopApp, "Windows Desktop App", dllLocations, frameworkLocations);
}
}
private string? GetPackageDirectory(string packagePrefix, TemporaryDirectory root)
private string? GetPackageDirectory(string packagePrefix)
{
return new DirectoryInfo(root.DirInfo.FullName)
return GetPackageDirectory(packagePrefix, nugetPackageRestorer.PackageDirectory.DirInfo);
}
internal static string? GetPackageDirectory(string packagePrefix, DirectoryInfo root)
{
return new DirectoryInfo(root.FullName)
.EnumerateDirectories(packagePrefix + "*", new EnumerationOptions { MatchCasing = MatchCasing.CaseInsensitive, RecurseSubdirectories = false })
.FirstOrDefault()?
.FullName;
}
private void GenerateSourceFileFromImplicitUsings()
{
var usings = new HashSet<string>();
if (!fileContent.UseImplicitUsings)
{
return;
}
// Hardcoded values from https://learn.microsoft.com/en-us/dotnet/core/project-sdk/overview#implicit-using-directives
usings.UnionWith([ "System", "System.Collections.Generic", "System.IO", "System.Linq", "System.Net.Http", "System.Threading",
"System.Threading.Tasks" ]);
if (fileContent.UseAspNetCoreDlls)
{
usings.UnionWith([ "System.Net.Http.Json", "Microsoft.AspNetCore.Builder", "Microsoft.AspNetCore.Hosting",
"Microsoft.AspNetCore.Http", "Microsoft.AspNetCore.Routing", "Microsoft.Extensions.Configuration",
"Microsoft.Extensions.DependencyInjection", "Microsoft.Extensions.Hosting", "Microsoft.Extensions.Logging" ]);
}
if (fileContent.UseWindowsForms)
{
usings.UnionWith(["System.Drawing", "System.Windows.Forms"]);
}
usings.UnionWith(fileContent.CustomImplicitUsings);
logger.LogInfo($"Generating source file for implicit usings. Namespaces: {string.Join(", ", usings.OrderBy(u => u))}");
if (usings.Count > 0)
{
var tempDir = GetTemporaryWorkingDirectory("implicitUsings");
var path = Path.Combine(tempDir, "GlobalUsings.g.cs");
using (var writer = new StreamWriter(path))
{
writer.WriteLine("// <auto-generated/>");
writer.WriteLine("");
foreach (var u in usings.OrderBy(u => u))
{
writer.WriteLine($"global using global::{u};");
}
}
this.generatedSources.Add(path);
}
}
private void GenerateSourceFilesFromWebViews(List<FileInfo> allFiles)
{
var views = allFiles.SelectFileNamesByExtension(".cshtml", ".razor").ToArray();
if (views.Length == 0)
{
return;
}
logger.LogInfo($"Found {views.Length} cshtml and razor files.");
if (!IsAspNetCoreDetected())
{
logger.LogInfo("Generating source files from cshtml files is only supported for new (SDK-style) project files");
return;
}
logger.LogInfo("Generating source files from cshtml and razor files...");
var sdk = new Sdk(dotnet).GetNewestSdk();
if (sdk != null)
{
try
{
var razor = new Razor(sdk, dotnet, logger);
var targetDir = GetTemporaryWorkingDirectory("razor");
var generatedFiles = razor.GenerateFiles(views, usedReferences.Keys, targetDir);
this.generatedSources.AddRange(generatedFiles);
}
catch (Exception ex)
{
// It's okay, we tried our best to generate source files from cshtml files.
logger.LogInfo($"Failed to generate source files from cshtml files: {ex.Message}");
}
}
}
private IEnumerable<FileInfo> GetAllFiles()
{
IEnumerable<FileInfo> files = sourceDir.GetFiles("*.*", new EnumerationOptions { RecurseSubdirectories = true });
if (dotnetPath != null)
{
files = files.Where(f => !f.FullName.StartsWith(dotnetPath, StringComparison.OrdinalIgnoreCase));
}
files = files.Where(f =>
{
try
{
if (f.Exists)
{
return true;
}
logger.LogWarning($"File {f.FullName} could not be processed.");
return false;
}
catch (Exception ex)
{
logger.LogWarning($"File {f.FullName} could not be processed: {ex.Message}");
return false;
}
});
files = new FilePathFilter(sourceDir, logger).Filter(files);
return files;
}
/// <summary>
/// Computes a unique temp directory for the packages associated
/// with this source tree. Use a SHA1 of the directory name.
/// </summary>
/// <returns>The full path of the temp directory.</returns>
private static string ComputeTempDirectory(string srcDir, string subfolderName)
{
var bytes = Encoding.Unicode.GetBytes(srcDir);
var sha = SHA1.HashData(bytes);
var sb = new StringBuilder();
foreach (var b in sha.Take(8))
sb.AppendFormat("{0:x2}", b);
return Path.Combine(FileUtils.GetTemporaryWorkingDirectory(out var _), sb.ToString(), subfolderName);
}
/// <summary>
/// Creates a temporary directory with the given subfolder name.
/// The created directory might be inside the repo folder, and it is deleted when the object is disposed.
/// </summary>
/// <param name="subfolder"></param>
/// <returns></returns>
private string GetTemporaryWorkingDirectory(string subfolder)
{
var temp = Path.Combine(tempWorkingDirectory.ToString(), subfolder);
Directory.CreateDirectory(temp);
return temp;
}
/// <summary>
/// Resolves conflicts between all of the resolved references.
/// If the same assembly name is duplicated with different versions,
@@ -616,7 +455,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
if (resolvedInfo.Version != r.Version || resolvedInfo.NetCoreVersion != r.NetCoreVersion)
{
var asm = resolvedInfo.Id + (resolvedInfo.NetCoreVersion is null ? "" : $" (.NET Core {resolvedInfo.NetCoreVersion})");
logger.LogInfo($"Resolved {r.Id} as {asm}");
logger.LogDebug($"Resolved {r.Id} as {asm}");
++conflictedReferences;
}
@@ -674,7 +513,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
private void AnalyseSolutions(IEnumerable<string> solutions)
{
Parallel.ForEach(solutions, new ParallelOptions { MaxDegreeOfParallelism = threads }, solutionFile =>
Parallel.ForEach(solutions, new ParallelOptions { MaxDegreeOfParallelism = Threads }, solutionFile =>
{
try
{
@@ -723,29 +562,11 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
}
}
public void Dispose(TemporaryDirectory? dir, string name)
{
try
{
dir?.Dispose();
}
catch (Exception exc)
{
logger.LogInfo($"Couldn't delete {name} directory {exc.Message}");
}
}
public void Dispose()
{
Dispose(packageDirectory, "package");
Dispose(legacyPackageDirectory, "legacy package");
Dispose(missingPackageDirectory, "missing package");
if (cleanupTempWorkingDirectory)
{
Dispose(tempWorkingDirectory, "temporary working");
}
tempWorkingDirectory?.Dispose();
diagnosticsWriter?.Dispose();
nugetPackageRestorer?.Dispose();
}
}
}

View File

@@ -35,7 +35,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
private void Info()
{
var res = dotnetCliInvoker.RunCommand("--info");
var res = dotnetCliInvoker.RunCommand("--info", silent: false);
if (!res)
{
throw new Exception($"{dotnetCliInvoker.Exec} --info failed.");
@@ -91,13 +91,13 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
return dotnetCliInvoker.RunCommand(args);
}
public IList<string> GetListedRuntimes() => GetResultList("--list-runtimes");
public IList<string> GetListedRuntimes() => GetResultList("--list-runtimes", null, false);
public IList<string> GetListedSdks() => GetResultList("--list-sdks");
public IList<string> GetListedSdks() => GetResultList("--list-sdks", null, false);
private IList<string> GetResultList(string args, string? workingDirectory = null)
private IList<string> GetResultList(string args, string? workingDirectory = null, bool silent = true)
{
if (dotnetCliInvoker.RunCommand(args, workingDirectory, out var results))
if (dotnetCliInvoker.RunCommand(args, workingDirectory, out var results, silent))
{
return results;
}
@@ -316,4 +316,4 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
});
}
}
}
}

View File

@@ -40,13 +40,13 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
return startInfo;
}
private bool RunCommandAux(string args, string? workingDirectory, out IList<string> output)
private bool RunCommandAux(string args, string? workingDirectory, out IList<string> output, bool silent)
{
var dirLog = string.IsNullOrWhiteSpace(workingDirectory) ? "" : $" in {workingDirectory}";
logger.LogInfo($"Running {Exec} {args}{dirLog}");
var pi = MakeDotnetStartInfo(args, workingDirectory);
var threadId = Environment.CurrentManagedThreadId;
void onOut(string s) => logger.LogInfo(s, threadId);
void onOut(string s) => logger.Log(silent ? Severity.Debug : Severity.Info, s, threadId);
void onError(string s) => logger.LogError(s, threadId);
var exitCode = pi.ReadOutput(out output, onOut, onError);
if (exitCode != 0)
@@ -57,13 +57,13 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
return true;
}
public bool RunCommand(string args) =>
RunCommandAux(args, null, out _);
public bool RunCommand(string args, bool silent) =>
RunCommandAux(args, null, out _, silent);
public bool RunCommand(string args, out IList<string> output) =>
RunCommandAux(args, null, out output);
public bool RunCommand(string args, out IList<string> output, bool silent) =>
RunCommandAux(args, null, out output, silent);
public bool RunCommand(string args, string? workingDirectory, out IList<string> output) =>
RunCommandAux(args, workingDirectory, out output);
public bool RunCommand(string args, string? workingDirectory, out IList<string> output, bool silent) =>
RunCommandAux(args, workingDirectory, out output, silent);
}
}

View File

@@ -50,6 +50,14 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
}
}
public bool IsAspNetCoreDetected
{
get
{
return IsNewProjectStructureUsed && UseAspNetCoreDlls;
}
}
private bool useImplicitUsings = false;
public bool UseImplicitUsings

View File

@@ -14,20 +14,6 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
public static IEnumerable<FileInfo> SelectRootFiles(this IEnumerable<FileInfo> files, DirectoryInfo dir) =>
files.Where(file => file.DirectoryName == dir.FullName);
internal static IEnumerable<FileInfo> SelectSmallFiles(this IEnumerable<FileInfo> files, ILogger logger)
{
const int oneMb = 1_048_576;
return files.Where(file =>
{
if (file.Length > oneMb)
{
logger.LogDebug($"Skipping {file.FullName} because it is bigger than 1MB.");
return false;
}
return true;
});
}
public static IEnumerable<string> SelectFileNamesByExtension(this IEnumerable<FileInfo> files, params string[] extensions) =>
files.SelectFilesAux(fi => extensions.Contains(fi.Extension));

View File

@@ -0,0 +1,120 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Policy;
using Semmle.Util.Logging;
namespace Semmle.Extraction.CSharp.DependencyFetching
{
public class FileProvider
{
private static readonly HashSet<string> binaryFileExtensions = [".dll", ".exe"]; // TODO: add more binary file extensions.
private readonly ILogger logger;
private readonly FileInfo[] all;
private readonly Lazy<FileInfo[]> allNonBinary;
private readonly Lazy<string[]> smallNonBinary;
private readonly Lazy<string[]> sources;
private readonly Lazy<string[]> projects;
private readonly Lazy<string[]> solutions;
private readonly Lazy<string[]> dlls;
private readonly Lazy<string[]> nugetConfigs;
private readonly Lazy<string[]> globalJsons;
private readonly Lazy<string[]> razorViews;
private readonly Lazy<string?> rootNugetConfig;
public FileProvider(DirectoryInfo sourceDir, ILogger logger)
{
SourceDir = sourceDir;
this.logger = logger;
all = GetAllFiles();
allNonBinary = new Lazy<FileInfo[]>(() => all.Where(f => !binaryFileExtensions.Contains(f.Extension.ToLowerInvariant())).ToArray());
smallNonBinary = new Lazy<string[]>(() =>
{
var ret = SelectSmallFiles(allNonBinary.Value).SelectFileNames().ToArray();
logger.LogInfo($"Found {ret.Length} small non-binary files in {SourceDir}.");
return ret;
});
sources = new Lazy<string[]>(() => SelectTextFileNamesByExtension("source", ".cs"));
projects = new Lazy<string[]>(() => SelectTextFileNamesByExtension("project", ".csproj"));
solutions = new Lazy<string[]>(() => SelectTextFileNamesByExtension("solution", ".sln"));
dlls = new Lazy<string[]>(() => SelectBinaryFileNamesByExtension("DLL", ".dll"));
nugetConfigs = new Lazy<string[]>(() => allNonBinary.Value.SelectFileNamesByName("nuget.config").ToArray());
globalJsons = new Lazy<string[]>(() => allNonBinary.Value.SelectFileNamesByName("global.json").ToArray());
razorViews = new Lazy<string[]>(() => SelectTextFileNamesByExtension("razor view", ".cshtml", ".razor"));
rootNugetConfig = new Lazy<string?>(() => all.SelectRootFiles(SourceDir).SelectFileNamesByName("nuget.config").FirstOrDefault());
}
private string[] SelectTextFileNamesByExtension(string filetype, params string[] extensions)
{
var ret = allNonBinary.Value.SelectFileNamesByExtension(extensions).ToArray();
logger.LogInfo($"Found {ret.Length} {filetype} files in {SourceDir}.");
return ret;
}
private string[] SelectBinaryFileNamesByExtension(string filetype, params string[] extensions)
{
var ret = all.SelectFileNamesByExtension(extensions).ToArray();
logger.LogInfo($"Found {ret.Length} {filetype} files in {SourceDir}.");
return ret;
}
private IEnumerable<FileInfo> SelectSmallFiles(IEnumerable<FileInfo> files)
{
const int oneMb = 1_048_576;
return files.Where(file =>
{
if (file.Length > oneMb)
{
logger.LogDebug($"Skipping {file.FullName} because it is bigger than 1MB.");
return false;
}
return true;
});
}
private FileInfo[] GetAllFiles()
{
logger.LogInfo($"Finding files in {SourceDir}...");
var files = SourceDir.GetFiles("*.*", new EnumerationOptions { RecurseSubdirectories = true });
var filteredFiles = files.Where(f =>
{
try
{
if (f.Exists)
{
return true;
}
logger.LogWarning($"File {f.FullName} could not be processed.");
return false;
}
catch (Exception ex)
{
logger.LogWarning($"File {f.FullName} could not be processed: {ex.Message}");
return false;
}
});
var allFiles = new FilePathFilter(SourceDir, logger).Filter(filteredFiles).ToArray();
logger.LogInfo($"Found {allFiles.Length} files in {SourceDir}.");
return allFiles;
}
public DirectoryInfo SourceDir { get; }
public IEnumerable<string> SmallNonBinary => smallNonBinary.Value;
public IEnumerable<string> Sources => sources.Value;
public ICollection<string> Projects => projects.Value;
public ICollection<string> Solutions => solutions.Value;
public IEnumerable<string> Dlls => dlls.Value;
public ICollection<string> NugetConfigs => nugetConfigs.Value;
public string? RootNugetConfig => rootNugetConfig.Value;
public IEnumerable<string> GlobalJsons => globalJsons.Value;
public ICollection<string> RazorViews => razorViews.Value;
}
}

View File

@@ -11,19 +11,22 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
/// <summary>
/// Execute `dotnet <args>` and return true if the command succeeded, otherwise false.
/// If `silent` is true the output of the command is logged as `debug` otherwise as `info`.
/// </summary>
bool RunCommand(string args);
bool RunCommand(string args, bool silent = true);
/// <summary>
/// Execute `dotnet <args>` and return true if the command succeeded, otherwise false.
/// The output of the command is returned in `output`.
/// If `silent` is true the output of the command is logged as `debug` otherwise as `info`.
/// </summary>
bool RunCommand(string args, out IList<string> output);
bool RunCommand(string args, out IList<string> output, bool silent = true);
/// <summary>
/// Execute `dotnet <args>` in `<workingDirectory>` and return true if the command succeeded, otherwise false.
/// The output of the command is returned in `output`.
/// If `silent` is true the output of the command is logged as `debug` otherwise as `info`.
/// </summary>
bool RunCommand(string args, string? workingDirectory, out IList<string> output);
bool RunCommand(string args, string? workingDirectory, out IList<string> output, bool silent = true);
}
}

View File

@@ -8,11 +8,11 @@ using Semmle.Util;
namespace Semmle.Extraction.CSharp.DependencyFetching
{
/// <summary>
/// Manage the downloading of NuGet packages.
/// Manage the downloading of NuGet packages with nuget.exe.
/// Locates packages in a source tree and downloads all of the
/// referenced assemblies to a temp folder.
/// </summary>
internal class NugetPackages : IDisposable
internal class NugetExeWrapper : IDisposable
{
private readonly string? nugetExe;
private readonly Util.Logging.ILogger logger;
@@ -37,7 +37,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
/// <summary>
/// Create the package manager for a specified source tree.
/// </summary>
public NugetPackages(string sourceDir, TemporaryDirectory packageDirectory, Util.Logging.ILogger logger)
public NugetExeWrapper(string sourceDir, TemporaryDirectory packageDirectory, Util.Logging.ILogger logger)
{
this.packageDirectory = packageDirectory;
this.logger = logger;
@@ -175,7 +175,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
};
var threadId = Environment.CurrentManagedThreadId;
void onOut(string s) => logger.LogInfo(s, threadId);
void onOut(string s) => logger.LogDebug(s, threadId);
void onError(string s) => logger.LogError(s, threadId);
var exitCode = pi.ReadOutput(out var _, onOut, onError);
if (exitCode != 0)
@@ -235,7 +235,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
};
var threadId = Environment.CurrentManagedThreadId;
void onOut(string s) => logger.LogInfo(s, threadId);
void onOut(string s) => logger.LogDebug(s, threadId);
void onError(string s) => logger.LogError(s, threadId);
pi.ReadOutput(out stdout, onOut, onError);
}
@@ -243,7 +243,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
private void AddDefaultPackageSource(string nugetConfig)
{
logger.LogInfo("Adding default package source...");
RunMonoNugetCommand($"sources add -Name DefaultNugetOrg -Source {DependencyManager.PublicNugetFeed} -ConfigFile \"{nugetConfig}\"", out var _);
RunMonoNugetCommand($"sources add -Name DefaultNugetOrg -Source {NugetPackageRestorer.PublicNugetOrgFeed} -ConfigFile \"{nugetConfig}\"", out var _);
}
public void Dispose()

View File

@@ -3,36 +3,84 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using Semmle.Util;
using Semmle.Util.Logging;
namespace Semmle.Extraction.CSharp.DependencyFetching
{
public sealed partial class DependencyManager
internal sealed partial class NugetPackageRestorer : IDisposable
{
private void RestoreNugetPackages(List<FileInfo> allNonBinaryFiles, IEnumerable<string> allProjects, IEnumerable<string> allSolutions, HashSet<AssemblyLookupLocation> dllLocations)
internal const string PublicNugetOrgFeed = "https://api.nuget.org/v3/index.json";
private readonly FileProvider fileProvider;
private readonly FileContent fileContent;
private readonly IDotNet dotnet;
private readonly IDiagnosticsWriter diagnosticsWriter;
private readonly TemporaryDirectory legacyPackageDirectory;
private readonly TemporaryDirectory missingPackageDirectory;
private readonly ILogger logger;
private readonly ICompilationInfoContainer compilationInfoContainer;
public TemporaryDirectory PackageDirectory { get; }
public NugetPackageRestorer(
FileProvider fileProvider,
FileContent fileContent,
IDotNet dotnet,
IDiagnosticsWriter diagnosticsWriter,
ILogger logger,
ICompilationInfoContainer compilationInfoContainer)
{
this.fileProvider = fileProvider;
this.fileContent = fileContent;
this.dotnet = dotnet;
this.diagnosticsWriter = diagnosticsWriter;
this.logger = logger;
this.compilationInfoContainer = compilationInfoContainer;
PackageDirectory = new TemporaryDirectory(ComputeTempDirectoryPath(fileProvider.SourceDir.FullName, "packages"), "package", logger);
legacyPackageDirectory = new TemporaryDirectory(ComputeTempDirectoryPath(fileProvider.SourceDir.FullName, "legacypackages"), "legacy package", logger);
missingPackageDirectory = new TemporaryDirectory(ComputeTempDirectoryPath(fileProvider.SourceDir.FullName, "missingpackages"), "missing package", logger);
}
public string? TryRestoreLatestNetFrameworkReferenceAssemblies()
{
if (TryRestorePackageManually(FrameworkPackageNames.LatestNetFrameworkReferenceAssemblies))
{
return DependencyManager.GetPackageDirectory(FrameworkPackageNames.LatestNetFrameworkReferenceAssemblies, missingPackageDirectory.DirInfo);
}
return null;
}
public HashSet<AssemblyLookupLocation> Restore()
{
var assemblyLookupLocations = new HashSet<AssemblyLookupLocation>();
var checkNugetFeedResponsiveness = EnvironmentVariables.GetBoolean(EnvironmentVariableNames.CheckNugetFeedResponsiveness);
try
{
if (checkNugetFeedResponsiveness && !CheckFeeds(allNonBinaryFiles))
if (checkNugetFeedResponsiveness && !CheckFeeds())
{
// todo: we could also check the reachability of the inherited nuget feeds, but to use those in the fallback we would need to handle authentication too.
DownloadMissingPackagesFromSpecificFeeds(allNonBinaryFiles, dllLocations);
return;
var unresponsiveMissingPackageLocation = DownloadMissingPackagesFromSpecificFeeds();
return unresponsiveMissingPackageLocation is null
? []
: [unresponsiveMissingPackageLocation];
}
using (var nuget = new NugetPackages(sourceDir.FullName, legacyPackageDirectory, logger))
using (var nuget = new NugetExeWrapper(fileProvider.SourceDir.FullName, legacyPackageDirectory, logger))
{
var count = nuget.InstallPackages();
if (nuget.PackageCount > 0)
{
CompilationInfos.Add(("packages.config files", nuget.PackageCount.ToString()));
CompilationInfos.Add(("Successfully restored packages.config files", count.ToString()));
compilationInfoContainer.CompilationInfos.Add(("packages.config files", nuget.PackageCount.ToString()));
compilationInfoContainer.CompilationInfos.Add(("Successfully restored packages.config files", count.ToString()));
}
}
@@ -57,46 +105,45 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
}
nugetPackageDllPaths.ExceptWith(excludedPaths);
dllLocations.UnionWith(nugetPackageDllPaths.Select(p => new AssemblyLookupLocation(p)));
assemblyLookupLocations.UnionWith(nugetPackageDllPaths.Select(p => new AssemblyLookupLocation(p)));
}
catch (Exception exc)
{
logger.LogError($"Failed to restore Nuget packages with nuget.exe: {exc.Message}");
}
var restoredProjects = RestoreSolutions(allSolutions, out var assets1);
var projects = allProjects.Except(restoredProjects);
var restoredProjects = RestoreSolutions(out var assets1);
var projects = fileProvider.Projects.Except(restoredProjects);
RestoreProjects(projects, out var assets2);
var dependencies = Assets.GetCompilationDependencies(logger, assets1.Union(assets2));
var paths = dependencies
.Paths
.Select(d => Path.Combine(packageDirectory.DirInfo.FullName, d))
.Select(d => Path.Combine(PackageDirectory.DirInfo.FullName, d))
.ToList();
dllLocations.UnionWith(paths.Select(p => new AssemblyLookupLocation(p)));
assemblyLookupLocations.UnionWith(paths.Select(p => new AssemblyLookupLocation(p)));
LogAllUnusedPackages(dependencies);
if (checkNugetFeedResponsiveness)
{
DownloadMissingPackagesFromSpecificFeeds(allNonBinaryFiles, dllLocations);
}
else
{
DownloadMissingPackages(allNonBinaryFiles, dllLocations);
}
}
var missingPackageLocation = checkNugetFeedResponsiveness
? DownloadMissingPackagesFromSpecificFeeds()
: DownloadMissingPackages();
internal const string PublicNugetFeed = "https://api.nuget.org/v3/index.json";
if (missingPackageLocation is not null)
{
assemblyLookupLocations.Add(missingPackageLocation);
}
return assemblyLookupLocations;
}
private List<string> GetReachableFallbackNugetFeeds()
{
var fallbackFeeds = EnvironmentVariables.GetURLs(EnvironmentVariableNames.FallbackNugetFeeds).ToHashSet();
if (fallbackFeeds.Count == 0)
{
fallbackFeeds.Add(PublicNugetFeed);
logger.LogInfo($"No fallback Nuget feeds specified. Using default feed: {PublicNugetFeed}");
fallbackFeeds.Add(PublicNugetOrgFeed);
logger.LogInfo($"No fallback Nuget feeds specified. Using default feed: {PublicNugetOrgFeed}");
}
logger.LogInfo($"Checking fallback Nuget feed reachability on feeds: {string.Join(", ", fallbackFeeds.OrderBy(f => f))}");
@@ -122,16 +169,15 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
/// Populates assets with the relative paths to the assets files generated by the restore.
/// Returns a list of projects that are up to date with respect to restore.
/// </summary>
/// <param name="solutions">A list of paths to solution files.</param>
private IEnumerable<string> RestoreSolutions(IEnumerable<string> solutions, out IEnumerable<string> assets)
private IEnumerable<string> RestoreSolutions(out IEnumerable<string> assets)
{
var successCount = 0;
var nugetSourceFailures = 0;
var assetFiles = new List<string>();
var projects = solutions.SelectMany(solution =>
var projects = fileProvider.Solutions.SelectMany(solution =>
{
logger.LogInfo($"Restoring solution {solution}...");
var res = dotnet.Restore(new(solution, packageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true));
var res = dotnet.Restore(new(solution, PackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true));
if (res.Success)
{
successCount++;
@@ -144,9 +190,9 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
return res.RestoredProjects;
}).ToList();
assets = assetFiles;
CompilationInfos.Add(("Successfully restored solution files", successCount.ToString()));
CompilationInfos.Add(("Failed solution restore with package source error", nugetSourceFailures.ToString()));
CompilationInfos.Add(("Restored projects through solution files", projects.Count.ToString()));
compilationInfoContainer.CompilationInfos.Add(("Successfully restored solution files", successCount.ToString()));
compilationInfoContainer.CompilationInfos.Add(("Failed solution restore with package source error", nugetSourceFailures.ToString()));
compilationInfoContainer.CompilationInfos.Add(("Restored projects through solution files", projects.Count.ToString()));
return projects;
}
@@ -162,10 +208,10 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
var nugetSourceFailures = 0;
var assetFiles = new List<string>();
var sync = new object();
Parallel.ForEach(projects, new ParallelOptions { MaxDegreeOfParallelism = threads }, project =>
Parallel.ForEach(projects, new ParallelOptions { MaxDegreeOfParallelism = DependencyManager.Threads }, project =>
{
logger.LogInfo($"Restoring project {project}...");
var res = dotnet.Restore(new(project, packageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true));
var res = dotnet.Restore(new(project, PackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true));
lock (sync)
{
if (res.Success)
@@ -180,26 +226,25 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
}
});
assets = assetFiles;
CompilationInfos.Add(("Successfully restored project files", successCount.ToString()));
CompilationInfos.Add(("Failed project restore with package source error", nugetSourceFailures.ToString()));
compilationInfoContainer.CompilationInfos.Add(("Successfully restored project files", successCount.ToString()));
compilationInfoContainer.CompilationInfos.Add(("Failed project restore with package source error", nugetSourceFailures.ToString()));
}
private void DownloadMissingPackagesFromSpecificFeeds(List<FileInfo> allNonBinaryFiles, HashSet<AssemblyLookupLocation> dllLocations)
private AssemblyLookupLocation? DownloadMissingPackagesFromSpecificFeeds()
{
var reachableFallbackFeeds = GetReachableFallbackNugetFeeds();
if (reachableFallbackFeeds.Count > 0)
{
DownloadMissingPackages(allNonBinaryFiles, dllLocations, fallbackNugetFeeds: reachableFallbackFeeds);
}
else
{
logger.LogWarning("Skipping download of missing packages from specific feeds as no fallback Nuget feeds are reachable.");
return DownloadMissingPackages(fallbackNugetFeeds: reachableFallbackFeeds);
}
logger.LogWarning("Skipping download of missing packages from specific feeds as no fallback Nuget feeds are reachable.");
return null;
}
private void DownloadMissingPackages(List<FileInfo> allFiles, HashSet<AssemblyLookupLocation> dllLocations, IEnumerable<string>? fallbackNugetFeeds = null)
private AssemblyLookupLocation? DownloadMissingPackages(IEnumerable<string>? fallbackNugetFeeds = null)
{
var alreadyDownloadedPackages = GetRestoredPackageDirectoryNames(packageDirectory.DirInfo);
var alreadyDownloadedPackages = GetRestoredPackageDirectoryNames(PackageDirectory.DirInfo);
var alreadyDownloadedLegacyPackages = GetRestoredLegacyPackageNames();
var notYetDownloadedPackages = new HashSet<PackageReference>(fileContent.AllPackages);
@@ -214,7 +259,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
if (notYetDownloadedPackages.Count == 0)
{
return;
return null;
}
var multipleVersions = notYetDownloadedPackages
@@ -230,17 +275,17 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
}
logger.LogInfo($"Found {notYetDownloadedPackages.Count} packages that are not yet restored");
using var tempDir = new TemporaryDirectory(ComputeTempDirectory(sourceDir.FullName, "nugetconfig"));
using var tempDir = new TemporaryDirectory(ComputeTempDirectoryPath(fileProvider.SourceDir.FullName, "nugetconfig"), "generated nuget config", logger);
var nugetConfig = fallbackNugetFeeds is null
? GetNugetConfig(allFiles)
? GetNugetConfig()
: CreateFallbackNugetConfig(fallbackNugetFeeds, tempDir.DirInfo.FullName);
CompilationInfos.Add(("Fallback nuget restore", notYetDownloadedPackages.Count.ToString()));
compilationInfoContainer.CompilationInfos.Add(("Fallback nuget restore", notYetDownloadedPackages.Count.ToString()));
var successCount = 0;
var sync = new object();
Parallel.ForEach(notYetDownloadedPackages, new ParallelOptions { MaxDegreeOfParallelism = threads }, package =>
Parallel.ForEach(notYetDownloadedPackages, new ParallelOptions { MaxDegreeOfParallelism = DependencyManager.Threads }, package =>
{
var success = TryRestorePackageManually(package.Name, nugetConfig, package.PackageReferenceSource, tryWithoutNugetConfig: fallbackNugetFeeds is null);
if (!success)
@@ -254,9 +299,9 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
}
});
CompilationInfos.Add(("Successfully ran fallback nuget restore", successCount.ToString()));
compilationInfoContainer.CompilationInfos.Add(("Successfully ran fallback nuget restore", successCount.ToString()));
dllLocations.Add(missingPackageDirectory.DirInfo.FullName);
return missingPackageDirectory.DirInfo.FullName;
}
private string? CreateFallbackNugetConfig(IEnumerable<string> fallbackNugetFeeds, string folderPath)
@@ -280,19 +325,14 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
return nugetConfigPath;
}
private string[] GetAllNugetConfigs(List<FileInfo> allFiles) => allFiles.SelectFileNamesByName("nuget.config").ToArray();
private string? GetNugetConfig(List<FileInfo> allFiles)
private string? GetNugetConfig()
{
var nugetConfigs = GetAllNugetConfigs(allFiles);
var nugetConfigs = fileProvider.NugetConfigs;
string? nugetConfig;
if (nugetConfigs.Length > 1)
if (nugetConfigs.Count > 1)
{
logger.LogInfo($"Found multiple nuget.config files: {string.Join(", ", nugetConfigs)}.");
nugetConfig = allFiles
.SelectRootFiles(sourceDir)
.SelectFileNamesByName("nuget.config")
.FirstOrDefault();
nugetConfig = fileProvider.RootNugetConfig;
if (nugetConfig == null)
{
logger.LogInfo("Could not find a top-level nuget.config file.");
@@ -321,13 +361,12 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
allPackageDirectories
.Where(package => !dependencies.Packages.Contains(package))
.Order()
.ForEach(package => logger.LogInfo($"Unused package: {package}"));
.ForEach(package => logger.LogDebug($"Unused package: {package}"));
}
private ICollection<string> GetAllPackageDirectories()
{
return new DirectoryInfo(packageDirectory.DirInfo.FullName)
return new DirectoryInfo(PackageDirectory.DirInfo.FullName)
.EnumerateDirectories("*", new EnumerationOptions { MatchCasing = MatchCasing.CaseInsensitive, RecurseSubdirectories = false })
.Select(d => d.Name)
.ToList();
@@ -372,7 +411,8 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
private bool TryRestorePackageManually(string package, string? nugetConfig = null, PackageReferenceSource packageReferenceSource = PackageReferenceSource.SdkCsProj, bool tryWithoutNugetConfig = true)
{
logger.LogInfo($"Restoring package {package}...");
using var tempDir = new TemporaryDirectory(ComputeTempDirectory(package, "missingpackages_workingdir"));
using var tempDir = new TemporaryDirectory(
ComputeTempDirectoryPath(package, "missingpackages_workingdir"), "missing package working", logger);
var success = dotnet.New(tempDir.DirInfo.FullName);
if (!success)
{
@@ -512,10 +552,10 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
return (timeoutMilliSeconds, tryCount);
}
private bool CheckFeeds(List<FileInfo> allFiles)
private bool CheckFeeds()
{
logger.LogInfo("Checking Nuget feeds...");
var (explicitFeeds, allFeeds) = GetAllFeeds(allFiles);
var (explicitFeeds, allFeeds) = GetAllFeeds();
var excludedFeeds = EnvironmentVariables.GetURLs(EnvironmentVariableNames.ExcludedNugetFeedsFromResponsivenessCheck)
.ToHashSet() ?? [];
@@ -540,14 +580,14 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
severity: DiagnosticMessage.TspSeverity.Warning
));
}
CompilationInfos.Add(("All Nuget feeds reachable", allFeedsReachable ? "1" : "0"));
compilationInfoContainer.CompilationInfos.Add(("All Nuget feeds reachable", allFeedsReachable ? "1" : "0"));
var inheritedFeeds = allFeeds.Except(explicitFeeds).ToHashSet();
if (inheritedFeeds.Count > 0)
{
logger.LogInfo($"Inherited Nuget feeds (not checked for reachability): {string.Join(", ", inheritedFeeds.OrderBy(f => f))}");
CompilationInfos.Add(("Inherited Nuget feed count", inheritedFeeds.Count.ToString()));
compilationInfoContainer.CompilationInfos.Add(("Inherited Nuget feed count", inheritedFeeds.Count.ToString()));
}
return allFeedsReachable;
@@ -581,15 +621,11 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
}
}
private (HashSet<string> explicitFeeds, HashSet<string> allFeeds) GetAllFeeds(List<FileInfo> allFiles)
private (HashSet<string> explicitFeeds, HashSet<string> allFeeds) GetAllFeeds()
{
IList<string> GetNugetFeeds(string nugetConfig) => dotnet.GetNugetFeeds(nugetConfig);
IList<string> GetNugetFeedsFromFolder(string folderPath) => dotnet.GetNugetFeedsFromFolder(folderPath);
var nugetConfigs = GetAllNugetConfigs(allFiles);
var nugetConfigs = fileProvider.NugetConfigs;
var explicitFeeds = nugetConfigs
.SelectMany(config => GetFeeds(() => GetNugetFeeds(config)))
.SelectMany(config => GetFeeds(() => dotnet.GetNugetFeeds(config)))
.ToHashSet();
if (explicitFeeds.Count > 0)
@@ -617,7 +653,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
return null;
})
.Where(folder => folder != null)
.SelectMany(folder => GetFeeds(() => GetNugetFeedsFromFolder(folder!)))
.SelectMany(folder => GetFeeds(() => dotnet.GetNugetFeedsFromFolder(folder!)))
.ToHashSet();
logger.LogInfo($"Found {allFeeds.Count} Nuget feeds (with inherited ones) in nuget.config files: {string.Join(", ", allFeeds.OrderBy(f => f))}");
@@ -633,5 +669,28 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
[GeneratedRegex(@"^E\s(.*)$", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)]
private static partial Regex EnabledNugetFeed();
public void Dispose()
{
PackageDirectory?.Dispose();
legacyPackageDirectory?.Dispose();
missingPackageDirectory?.Dispose();
}
/// <summary>
/// Computes a unique temp directory for the packages associated
/// with this source tree. Use a SHA1 of the directory name.
/// </summary>
/// <returns>The full path of the temp directory.</returns>
private static string ComputeTempDirectoryPath(string srcDir, string subfolderName)
{
var bytes = Encoding.Unicode.GetBytes(srcDir);
var sha = SHA1.HashData(bytes);
var sb = new StringBuilder();
foreach (var b in sha.Take(8))
sb.AppendFormat("{0:x2}", b);
return Path.Combine(FileUtils.GetTemporaryWorkingDirectory(out var _), sb.ToString(), subfolderName);
}
}
}

View File

@@ -0,0 +1,12 @@
using System.Collections.Generic;
namespace Semmle.Extraction.CSharp.DependencyFetching
{
public interface ISourceGenerator
{
/// <summary>
/// Returns the paths to the generated source files.
/// </summary>
IEnumerable<string> Generate();
}
}

View File

@@ -0,0 +1,69 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Semmle.Util;
using Semmle.Util.Logging;
namespace Semmle.Extraction.CSharp.DependencyFetching
{
internal class ImplicitUsingsGenerator : SourceGeneratorBase
{
private readonly FileContent fileContent;
public ImplicitUsingsGenerator(FileContent fileContent, ILogger logger, TemporaryDirectory tempWorkingDirectory)
: base(logger, tempWorkingDirectory)
{
this.fileContent = fileContent;
}
public override IEnumerable<string> Generate()
{
var usings = new HashSet<string>();
if (!fileContent.UseImplicitUsings)
{
logger.LogDebug("Skipping implicit usings generation");
return [];
}
// Hardcoded values from https://learn.microsoft.com/en-us/dotnet/core/project-sdk/overview#implicit-using-directives
usings.UnionWith([ "System", "System.Collections.Generic", "System.IO", "System.Linq", "System.Net.Http", "System.Threading",
"System.Threading.Tasks" ]);
if (fileContent.UseAspNetCoreDlls)
{
usings.UnionWith([ "System.Net.Http.Json", "Microsoft.AspNetCore.Builder", "Microsoft.AspNetCore.Hosting",
"Microsoft.AspNetCore.Http", "Microsoft.AspNetCore.Routing", "Microsoft.Extensions.Configuration",
"Microsoft.Extensions.DependencyInjection", "Microsoft.Extensions.Hosting", "Microsoft.Extensions.Logging" ]);
}
if (fileContent.UseWindowsForms)
{
usings.UnionWith(["System.Drawing", "System.Windows.Forms"]);
}
usings.UnionWith(fileContent.CustomImplicitUsings);
logger.LogInfo($"Generating source file for implicit usings. Namespaces: {string.Join(", ", usings.OrderBy(u => u))}");
if (usings.Count > 0)
{
var tempDir = GetTemporaryWorkingDirectory("implicitUsings");
var path = Path.Combine(tempDir, "GlobalUsings.g.cs");
using (var writer = new StreamWriter(path))
{
writer.WriteLine("// <auto-generated/>");
writer.WriteLine("");
foreach (var u in usings.OrderBy(u => u))
{
writer.WriteLine($"global using global::{u};");
}
}
return [path];
}
return [];
}
}
}

View File

@@ -64,9 +64,10 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
try
{
logger.LogInfo("Produce analyzer config content.");
GenerateAnalyzerConfig(cshtmls, analyzerConfig);
logger.LogInfo($"Analyzer config content: {File.ReadAllText(analyzerConfig)}");
logger.LogDebug($"Analyzer config content: {File.ReadAllText(analyzerConfig)}");
var args = new StringBuilder();
args.Append($"/target:exe /generatedfilesout:\"{outputFolder}\" /out:\"{dllPath}\" /analyzerconfig:\"{analyzerConfig}\" ");
@@ -88,7 +89,8 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
var argsString = args.ToString();
logger.LogInfo($"Running CSC to generate Razor source files with arguments: {argsString}.");
logger.LogInfo($"Running CSC to generate Razor source files.");
logger.LogDebug($"Running CSC to generate Razor source files with arguments: {argsString}.");
using (var sw = new StreamWriter(cscArgsPath))
{
@@ -126,4 +128,4 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
}
}
}
}
}

View File

@@ -0,0 +1,33 @@
using System.Collections.Generic;
using System.IO;
using Semmle.Util;
using Semmle.Util.Logging;
namespace Semmle.Extraction.CSharp.DependencyFetching
{
internal abstract class SourceGeneratorBase : ISourceGenerator
{
protected readonly ILogger logger;
protected readonly TemporaryDirectory tempWorkingDirectory;
public SourceGeneratorBase(ILogger logger, TemporaryDirectory tempWorkingDirectory)
{
this.logger = logger;
this.tempWorkingDirectory = tempWorkingDirectory;
}
public abstract IEnumerable<string> Generate();
/// <summary>
/// Creates a temporary directory with the given subfolder name.
/// The created directory might be inside the repo folder, and it is deleted when the temporary working directory is disposed.
/// </summary>
protected string GetTemporaryWorkingDirectory(string subfolder)
{
var temp = Path.Combine(tempWorkingDirectory.ToString(), subfolder);
Directory.CreateDirectory(temp);
return temp;
}
}
}

View File

@@ -0,0 +1,86 @@
using System;
using System.Collections.Generic;
using Semmle.Util;
using Semmle.Util.Logging;
namespace Semmle.Extraction.CSharp.DependencyFetching
{
internal class WebViewGenerator : SourceGeneratorBase
{
private readonly FileProvider fileProvider;
private readonly FileContent fileContent;
private readonly IDotNet dotnet;
private readonly ICompilationInfoContainer compilationInfoContainer;
private readonly IEnumerable<string> references;
public WebViewGenerator(
FileProvider fileProvider,
FileContent fileContent,
IDotNet dotnet,
ICompilationInfoContainer compilationInfoContainer,
ILogger logger,
TemporaryDirectory tempWorkingDirectory,
IEnumerable<string> references) : base(logger, tempWorkingDirectory)
{
this.fileProvider = fileProvider;
this.fileContent = fileContent;
this.dotnet = dotnet;
this.compilationInfoContainer = compilationInfoContainer;
this.references = references;
}
public override IEnumerable<string> Generate()
{
var webViewExtractionOption = Environment.GetEnvironmentVariable(EnvironmentVariableNames.WebViewGeneration);
if (webViewExtractionOption == null ||
bool.TryParse(webViewExtractionOption, out var shouldExtractWebViews) &&
shouldExtractWebViews)
{
compilationInfoContainer.CompilationInfos.Add(("WebView extraction enabled", "1"));
return GenerateSourceFilesFromWebViews();
}
compilationInfoContainer.CompilationInfos.Add(("WebView extraction enabled", "0"));
return [];
}
private IEnumerable<string> GenerateSourceFilesFromWebViews()
{
var views = fileProvider.RazorViews;
if (views.Count == 0)
{
logger.LogDebug("No cshtml or razor files found.");
return [];
}
logger.LogInfo($"Found {views.Count} cshtml and razor files.");
if (!fileContent.IsAspNetCoreDetected)
{
logger.LogInfo("Generating source files from cshtml files is only supported for new (SDK-style) project files");
return [];
}
logger.LogInfo("Generating source files from cshtml and razor files...");
var sdk = new Sdk(dotnet).GetNewestSdk();
if (sdk != null)
{
try
{
var razor = new Razor(sdk, dotnet, logger);
var targetDir = GetTemporaryWorkingDirectory("razor");
var generatedFiles = razor.GenerateFiles(views, references, targetDir);
return generatedFiles ?? [];
}
catch (Exception ex)
{
// It's okay, we tried our best to generate source files from cshtml files.
logger.LogInfo($"Failed to generate source files from cshtml files: {ex.Message}");
}
}
return [];
}
}
}

View File

@@ -111,12 +111,12 @@ namespace Semmle.Extraction.CSharp.Standalone
AnalysisAction.UpToDate => "up to date",
_ => "unknown action"
};
logger.LogInfo($"[{item}/{total}] {source} ({extra})");
logger.LogDebug($"[{item}/{total}] {source} ({extra})");
}
public void Started(int item, int total, string source)
{
logger.LogInfo($"[{item}/{total}] {source} (processing started)");
logger.LogDebug($"[{item}/{total}] {source} (processing started)");
}
public void MissingType(string type)
@@ -166,4 +166,4 @@ namespace Semmle.Extraction.CSharp.Standalone
return ExitCode.Ok;
}
}
}
}

View File

@@ -9,7 +9,7 @@ namespace Semmle.Extraction.CSharp.Entities
/// </summary>
public static ExprKind AdjustKind(this Expression.CallType ct, ExprKind k)
{
if (k == ExprKind.ADDRESS_OF)
if (k == ExprKind.ADDRESS_OF || k == ExprKind.SUPPRESS_NULLABLE_WARNING)
{
return k;
}

View File

@@ -21,11 +21,11 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
protected override void PopulateExpression(TextWriter trapFile)
{
Create(Context, operand, this, 0);
OperatorCall(trapFile, Syntax);
if ((operatorKind == ExprKind.POST_INCR || operatorKind == ExprKind.POST_DECR) &&
Kind == ExprKind.OPERATOR_INVOCATION)
{
OperatorCall(trapFile, Syntax);
trapFile.mutator_invocation_mode(this, 2);
}
}

View File

@@ -20,23 +20,23 @@ namespace Semmle.Extraction.Tests
public string Exec => "dotnet";
public bool RunCommand(string args)
public bool RunCommand(string args, bool silent)
{
lastArgs = args;
return Success;
}
public bool RunCommand(string args, out IList<string> output)
public bool RunCommand(string args, out IList<string> output, bool silent)
{
lastArgs = args;
output = this.output;
return Success;
}
public bool RunCommand(string args, string? workingDirectory, out IList<string> output)
public bool RunCommand(string args, string? workingDirectory, out IList<string> output, bool silent)
{
WorkingDirectory = workingDirectory ?? "";
return RunCommand(args, out output);
return RunCommand(args, out output, silent);
}
public string GetLastArgs() => lastArgs;

View File

@@ -1,5 +1,6 @@
using System;
using System.IO;
using Semmle.Util.Logging;
namespace Semmle.Util
{
@@ -9,17 +10,29 @@ namespace Semmle.Util
/// </summary>
public sealed class TemporaryDirectory : IDisposable
{
private readonly string userReportedDirectoryPurpose;
private readonly ILogger logger;
public DirectoryInfo DirInfo { get; }
public TemporaryDirectory(string name)
public TemporaryDirectory(string name, string userReportedDirectoryPurpose, ILogger logger)
{
DirInfo = new DirectoryInfo(name);
DirInfo.Create();
this.userReportedDirectoryPurpose = userReportedDirectoryPurpose;
this.logger = logger;
}
public void Dispose()
{
DirInfo.Delete(true);
try
{
DirInfo.Delete(true);
}
catch (Exception exc)
{
logger.LogInfo($"Couldn't delete {userReportedDirectoryPurpose} directory {exc.Message}");
}
}
public override string ToString() => DirInfo.FullName.ToString();

View File

@@ -0,0 +1,4 @@
---
category: minorAnalysis
---
* Generated .NET Runtime models for properties with both getters and setters have been removed as this is now handled by the data flow library.

View File

@@ -0,0 +1,4 @@
---
category: minorAnalysis
---
* Extracting suppress nullable warning expressions did not work when applied directly to a method call (like `System.Console.Readline()!`). This has been fixed.

View File

@@ -9,6 +9,9 @@ extensions:
- ["System.Diagnostics", "ActivityTagsCollection", False, "Add", "(System.Collections.Generic.KeyValuePair<System.String,System.Object>)", "", "Argument[0].Property[System.Collections.Generic.KeyValuePair`2.Value]", "Argument[this].Element.Property[System.Collections.Generic.KeyValuePair`2.Value]", "value", "manual"]
- ["System.Diagnostics", "ActivityTagsCollection", False, "GetEnumerator", "()", "", "Argument[this].Element", "ReturnValue.Property[System.Diagnostics.ActivityTagsCollection+Enumerator.Current]", "value", "manual"]
- ["System.Diagnostics", "ProcessModuleCollection", False, "CopyTo", "(System.Diagnostics.ProcessModule[],System.Int32)", "", "Argument[this].Element", "Argument[0].Element", "value", "manual"]
- ["System.Diagnostics", "ProcessStartInfo", False, "ProcessStartInfo", "(System.String)", "", "Argument[0]", "Argument[this].Property[System.Diagnostics.ProcessStartInfo.FileName]", "value", "manual"]
- ["System.Diagnostics", "ProcessStartInfo", False, "ProcessStartInfo", "(System.String,System.String)", "", "Argument[0]", "Argument[this].Property[System.Diagnostics.ProcessStartInfo.FileName]", "value", "manual"]
- ["System.Diagnostics", "ProcessStartInfo", False, "ProcessStartInfo", "(System.String,System.String)", "", "Argument[1]", "Argument[this].Property[System.Diagnostics.ProcessStartInfo.Arguments]", "value", "manual"]
- ["System.Diagnostics", "ProcessThreadCollection", False, "Add", "(System.Diagnostics.ProcessThread)", "", "Argument[0]", "Argument[this].Element", "value", "manual"]
- ["System.Diagnostics", "ProcessThreadCollection", False, "CopyTo", "(System.Diagnostics.ProcessThread[],System.Int32)", "", "Argument[this].Element", "Argument[0].Element", "value", "manual"]
- ["System.Diagnostics", "TraceListenerCollection", False, "Add", "(System.Diagnostics.TraceListener)", "", "Argument[0]", "Argument[this].Element", "value", "manual"]
@@ -19,12 +22,3 @@ extensions:
- ["System.Diagnostics", "TraceListenerCollection", False, "get_Item", "(System.Int32)", "", "Argument[this].Element", "ReturnValue", "value", "manual"]
- ["System.Diagnostics", "TraceListenerCollection", False, "get_Item", "(System.String)", "", "Argument[this].Element", "ReturnValue", "value", "manual"]
- ["System.Diagnostics", "TraceListenerCollection", False, "set_Item", "(System.Int32,System.Diagnostics.TraceListener)", "", "Argument[1]", "Argument[this].Element", "value", "manual"]
- addsTo:
pack: codeql/csharp-all
extensible: neutralModel
data:
- ["System.Diagnostics", "ProcessStartInfo", "set_Arguments", "(System.String)", "summary", "manual"]
- ["System.Diagnostics", "ProcessStartInfo", "set_FileName", "(System.String)", "summary", "manual"]
- ["System.Diagnostics", "ProcessStartInfo", "set_UserName", "(System.String)", "summary", "manual"]
- ["System.Diagnostics", "ProcessStartInfo", "set_Verb", "(System.String)", "summary", "manual"]
- ["System.Diagnostics", "ProcessStartInfo", "set_WorkingDirectory", "(System.String)", "summary", "manual"]

View File

@@ -5,123 +5,17 @@ extensions:
extensible: neutralModel
data:
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo+SafePointOffset", "SafePointOffset", "(System.Int32,System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo+SafePointOffset", "get_Index", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo+SafePointOffset", "get_Value", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo+SafePointOffset", "set_Index", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo+SafePointOffset", "set_Value", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "GcInfo", "(System.Byte[],System.Int32,System.Reflection.PortableExecutable.Machine,System.UInt16)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "get_GSCookieStackSlot", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "get_GenericsInstContextStackSlot", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "get_InterruptibleRanges", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "get_NumInterruptibleRanges", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "get_NumSafePoints", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "get_PSPSymStackSlot", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "get_ReturnKind", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "get_ReversePInvokeFrameStackSlot", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "get_SafePointOffsets", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "get_SecurityObjectStackSlot", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "get_SizeOfEditAndContinuePreservedArea", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "get_SizeOfStackOutgoingAndScratchArea", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "get_SlotTable", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "get_StackBaseRegister", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "get_ValidRangeEnd", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "get_ValidRangeStart", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "get_Version", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "set_GSCookieStackSlot", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "set_GenericsInstContextStackSlot", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "set_InterruptibleRanges", "(System.Collections.Generic.List<ILCompiler.Reflection.ReadyToRun.Amd64.InterruptibleRange>)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "set_NumInterruptibleRanges", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "set_NumSafePoints", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "set_PSPSymStackSlot", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "set_ReturnKind", "(ILCompiler.Reflection.ReadyToRun.ReturnKinds)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "set_ReversePInvokeFrameStackSlot", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "set_SafePointOffsets", "(System.Collections.Generic.List<ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo+SafePointOffset>)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "set_SecurityObjectStackSlot", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "set_SizeOfEditAndContinuePreservedArea", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "set_SizeOfStackOutgoingAndScratchArea", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "set_SlotTable", "(ILCompiler.Reflection.ReadyToRun.Amd64.GcSlotTable)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "set_StackBaseRegister", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "set_ValidRangeEnd", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "set_ValidRangeStart", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcInfo", "set_Version", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable+GcSlot", "GcSlot", "(System.Int32,System.Int32,ILCompiler.Reflection.ReadyToRun.GcStackSlot,ILCompiler.Reflection.ReadyToRun.GcSlotFlags,System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable+GcSlot", "WriteTo", "(System.Text.StringBuilder,System.Reflection.PortableExecutable.Machine,ILCompiler.Reflection.ReadyToRun.GcSlotFlags)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable+GcSlot", "get_Flags", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable+GcSlot", "get_Index", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable+GcSlot", "get_RegisterNumber", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable+GcSlot", "get_StackSlot", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable+GcSlot", "set_Flags", "(ILCompiler.Reflection.ReadyToRun.GcSlotFlags)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable+GcSlot", "set_Index", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable+GcSlot", "set_RegisterNumber", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable+GcSlot", "set_StackSlot", "(ILCompiler.Reflection.ReadyToRun.GcStackSlot)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable", "GcSlotTable", "(System.Byte[],System.Reflection.PortableExecutable.Machine,ILCompiler.Reflection.ReadyToRun.GcInfoTypes,System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable", "get_GcSlots", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable", "get_NumRegisters", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable", "get_NumSlots", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable", "get_NumStackSlots", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable", "get_NumTracked", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable", "get_NumUntracked", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable", "set_GcSlots", "(System.Collections.Generic.List<ILCompiler.Reflection.ReadyToRun.Amd64.GcSlotTable+GcSlot>)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable", "set_NumRegisters", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable", "set_NumSlots", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable", "set_NumStackSlots", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcSlotTable", "set_NumUntracked", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcTransition", "GcTransition", "(System.Int32,System.Int32,System.Boolean,System.Int32,ILCompiler.Reflection.ReadyToRun.Amd64.GcSlotTable,System.Reflection.PortableExecutable.Machine)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcTransition", "GetSlotState", "(ILCompiler.Reflection.ReadyToRun.Amd64.GcSlotTable,System.Reflection.PortableExecutable.Machine)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcTransition", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcTransition", "get_ChunkId", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcTransition", "get_IsLive", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcTransition", "get_SlotId", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcTransition", "get_SlotState", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcTransition", "set_ChunkId", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcTransition", "set_IsLive", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcTransition", "set_SlotId", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "GcTransition", "set_SlotState", "(System.String)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "InterruptibleRange", "InterruptibleRange", "(System.UInt32,System.UInt32,System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "InterruptibleRange", "get_Index", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "InterruptibleRange", "get_StartOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "InterruptibleRange", "get_StopOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "InterruptibleRange", "set_Index", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "InterruptibleRange", "set_StartOffset", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "InterruptibleRange", "set_StopOffset", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "UnwindCode", "(System.Byte[],System.Int32,System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "get_CodeOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "get_FrameOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "get_IsOpInfo", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "get_NextFrameOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "get_OffsetHigh", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "get_OffsetLow", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "get_OpInfo", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "get_OpInfoStr", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "get_UnwindOp", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "set_CodeOffset", "(System.Byte)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "set_FrameOffset", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "set_IsOpInfo", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "set_NextFrameOffset", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "set_OffsetHigh", "(System.Byte)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "set_OffsetLow", "(System.Byte)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "set_OpInfo", "(System.Byte)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "set_OpInfoStr", "(System.String)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindCode", "set_UnwindOp", "(ILCompiler.Reflection.ReadyToRun.Amd64.UnwindOpCodes)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "UnwindInfo", "(System.Byte[],System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "get_CodeOffsetToUnwindCodeIndex", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "get_CountOfUnwindCodes", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "get_Flags", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "get_FrameOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "get_FrameRegister", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "get_PersonalityRoutineRVA", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "get_SizeOfProlog", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "get_UnwindCodes", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "get_Version", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "set_CodeOffsetToUnwindCodeIndex", "(System.Collections.Generic.Dictionary<System.Int32,System.Int32>)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "set_CountOfUnwindCodes", "(System.Byte)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "set_Flags", "(System.Byte)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "set_FrameOffset", "(System.Byte)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "set_FrameRegister", "(ILCompiler.Reflection.ReadyToRun.Amd64.Registers)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "set_PersonalityRoutineRVA", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "set_SizeOfProlog", "(System.Byte)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "set_UnwindCodes", "(System.Collections.Generic.List<ILCompiler.Reflection.ReadyToRun.Amd64.UnwindCode>)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Amd64", "UnwindInfo", "set_Version", "(System.Byte)", "summary", "df-generated"]

View File

@@ -6,40 +6,6 @@ extensions:
data:
- ["ILCompiler.Reflection.ReadyToRun.Arm", "Epilog", "Epilog", "(System.Int32,System.Int32,System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "Epilog", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "Epilog", "get_Condition", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "Epilog", "get_EpilogStartIndex", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "Epilog", "get_EpilogStartOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "Epilog", "get_EpilogStartOffsetFromMainFunctionBegin", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "Epilog", "get_Index", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "Epilog", "get_Res", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "Epilog", "set_Condition", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "Epilog", "set_EpilogStartIndex", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "Epilog", "set_EpilogStartOffset", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "Epilog", "set_EpilogStartOffsetFromMainFunctionBegin", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "Epilog", "set_Index", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "Epilog", "set_Res", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindCode", "UnwindCode", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindCode", "get_Index", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindCode", "set_Index", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "UnwindInfo", "(System.Byte[],System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "get_CodeWords", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "get_EBit", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "get_EpilogCount", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "get_Epilogs", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "get_ExtendedCodeWords", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "get_ExtendedEpilogCount", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "get_FBit", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "get_FunctionLength", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "get_Vers", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "get_XBit", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "set_CodeWords", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "set_EBit", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "set_EpilogCount", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "set_Epilogs", "(ILCompiler.Reflection.ReadyToRun.Arm.Epilog[])", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "set_ExtendedCodeWords", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "set_ExtendedEpilogCount", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "set_FBit", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "set_FunctionLength", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "set_Vers", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm", "UnwindInfo", "set_XBit", "(System.UInt32)", "summary", "df-generated"]

View File

@@ -6,38 +6,6 @@ extensions:
data:
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "Epilog", "Epilog", "(System.Int32,System.Int32,System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "Epilog", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "Epilog", "get_Condition", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "Epilog", "get_EpilogStartIndex", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "Epilog", "get_EpilogStartOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "Epilog", "get_EpilogStartOffsetFromMainFunctionBegin", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "Epilog", "get_Index", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "Epilog", "get_Res", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "Epilog", "set_Condition", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "Epilog", "set_EpilogStartIndex", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "Epilog", "set_EpilogStartOffset", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "Epilog", "set_EpilogStartOffsetFromMainFunctionBegin", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "Epilog", "set_Index", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "Epilog", "set_Res", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindCode", "UnwindCode", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindCode", "get_Index", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindCode", "set_Index", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "UnwindInfo", "(System.Byte[],System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "get_CodeWords", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "get_EBit", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "get_EpilogCount", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "get_Epilogs", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "get_ExtendedCodeWords", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "get_ExtendedEpilogCount", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "get_FunctionLength", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "get_Vers", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "get_XBit", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "set_CodeWords", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "set_EBit", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "set_EpilogCount", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "set_Epilogs", "(ILCompiler.Reflection.ReadyToRun.Arm64.Epilog[])", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "set_ExtendedCodeWords", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "set_ExtendedEpilogCount", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "set_FunctionLength", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "set_Vers", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.Arm64", "UnwindInfo", "set_XBit", "(System.UInt32)", "summary", "df-generated"]

View File

@@ -6,38 +6,6 @@ extensions:
data:
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "Epilog", "Epilog", "(System.Int32,System.Int32,System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "Epilog", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "Epilog", "get_Condition", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "Epilog", "get_EpilogStartIndex", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "Epilog", "get_EpilogStartOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "Epilog", "get_EpilogStartOffsetFromMainFunctionBegin", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "Epilog", "get_Index", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "Epilog", "get_Res", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "Epilog", "set_Condition", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "Epilog", "set_EpilogStartIndex", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "Epilog", "set_EpilogStartOffset", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "Epilog", "set_EpilogStartOffsetFromMainFunctionBegin", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "Epilog", "set_Index", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "Epilog", "set_Res", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindCode", "UnwindCode", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindCode", "get_Index", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindCode", "set_Index", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "UnwindInfo", "(System.Byte[],System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "get_CodeWords", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "get_EBit", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "get_EpilogCount", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "get_Epilogs", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "get_ExtendedCodeWords", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "get_ExtendedEpilogCount", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "get_FunctionLength", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "get_Vers", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "get_XBit", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "set_CodeWords", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "set_EBit", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "set_EpilogCount", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "set_Epilogs", "(ILCompiler.Reflection.ReadyToRun.LoongArch64.Epilog[])", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "set_ExtendedCodeWords", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "set_ExtendedEpilogCount", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "set_FunctionLength", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "set_Vers", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.LoongArch64", "UnwindInfo", "set_XBit", "(System.UInt32)", "summary", "df-generated"]

View File

@@ -82,22 +82,8 @@ extensions:
pack: codeql/csharp-all
extensible: neutralModel
data:
- ["ILCompiler.Reflection.ReadyToRun", "BaseGcInfo", "get_CodeLength", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "BaseGcInfo", "get_LiveSlotsAtSafepoints", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "BaseGcInfo", "get_Offset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "BaseGcInfo", "get_Size", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "BaseGcInfo", "get_Transitions", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "BaseGcInfo", "set_CodeLength", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "BaseGcInfo", "set_LiveSlotsAtSafepoints", "(System.Collections.Generic.List<System.Collections.Generic.List<ILCompiler.Reflection.ReadyToRun.BaseGcSlot>>)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "BaseGcInfo", "set_Offset", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "BaseGcInfo", "set_Size", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "BaseGcInfo", "set_Transitions", "(System.Collections.Generic.Dictionary<System.Int32,System.Collections.Generic.List<ILCompiler.Reflection.ReadyToRun.BaseGcTransition>>)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "BaseGcSlot", "WriteTo", "(System.Text.StringBuilder,System.Reflection.PortableExecutable.Machine,ILCompiler.Reflection.ReadyToRun.GcSlotFlags)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "BaseGcTransition", "BaseGcTransition", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "BaseGcTransition", "get_CodeOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "BaseGcTransition", "set_CodeOffset", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "BaseUnwindInfo", "get_Size", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "BaseUnwindInfo", "set_Size", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ComponentAssembly", "ComponentAssembly", "(System.Byte[],System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "DebugInfo", "GetPlatformSpecificRegister", "(System.Reflection.PortableExecutable.Machine,System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "DebugInfo", "get_Machine", "()", "summary", "df-generated"]
@@ -127,10 +113,6 @@ extensions:
- ["ILCompiler.Reflection.ReadyToRun", "GCRefMapEntry", "GCRefMapEntry", "(System.Int32,ILCompiler.Reflection.ReadyToRun.CORCOMPILE_GCREFMAP_TOKENS)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "GcStackSlot", "GcStackSlot", "(System.Int32,ILCompiler.Reflection.ReadyToRun.GcStackSlotBase)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "GcStackSlot", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "GcStackSlot", "get_Base", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "GcStackSlot", "get_SpOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "GcStackSlot", "set_Base", "(ILCompiler.Reflection.ReadyToRun.GcStackSlotBase)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "GcStackSlot", "set_SpOffset", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "IAssemblyMetadata", "get_ImageReader", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "IAssemblyMetadata", "get_MetadataReader", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "IAssemblyResolver", "FindAssembly", "(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.AssemblyReferenceHandle,System.String)", "summary", "df-generated"]
@@ -145,11 +127,7 @@ extensions:
- ["ILCompiler.Reflection.ReadyToRun", "InliningInfoSection", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "MetadataNameFormatter", "FormatSignature", "(ILCompiler.Reflection.ReadyToRun.IAssemblyResolver,ILCompiler.Reflection.ReadyToRun.ReadyToRunReader,System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "MethodDefEntrySignature", "MethodDefEntrySignature", "(ILCompiler.Reflection.ReadyToRun.SignatureDecoder)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "MethodDefEntrySignature", "get_MethodDefToken", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "MethodDefEntrySignature", "set_MethodDefToken", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "MethodRefEntrySignature", "MethodRefEntrySignature", "(ILCompiler.Reflection.ReadyToRun.SignatureDecoder)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "MethodRefEntrySignature", "get_MethodRefToken", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "MethodRefEntrySignature", "set_MethodRefToken", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "NativeArray", "GetCount", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "NativeArray", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "NativeArray", "TryGetAt", "(System.Byte[],System.UInt32,System.Int32)", "summary", "df-generated"]
@@ -162,8 +140,6 @@ extensions:
- ["ILCompiler.Reflection.ReadyToRun", "NativeParser", "GetUnsigned", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "NativeParser", "IsNull", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "NativeParser", "get_LowHashcode", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "NativeParser", "get_Offset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "NativeParser", "set_Offset", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "NativeReader", "DecodeSigned", "(System.Byte[],System.UInt32,System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "NativeReader", "DecodeSignedGc", "(System.Byte[],System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "NativeReader", "DecodeUDelta", "(System.Byte[],System.Int32,System.UInt32)", "summary", "df-generated"]
@@ -178,8 +154,6 @@ extensions:
- ["ILCompiler.Reflection.ReadyToRun", "NativeReader", "ReadInt64", "(System.Byte[],System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "NativeReader", "ReadUInt16", "(System.Byte[],System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "NativeReader", "ReadUInt32", "(System.Byte[],System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "NativeVarInfo", "get_Variable", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "NativeVarInfo", "set_Variable", "(ILCompiler.Reflection.ReadyToRun.Variable)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "NativeVarInfoComparer", "Compare", "(ILCompiler.Reflection.ReadyToRun.NativeVarInfo,ILCompiler.Reflection.ReadyToRun.NativeVarInfo)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "PEExportTable", "Parse", "(System.Reflection.PortableExecutable.PEReader)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "PEExportTable", "TryGetValue", "(System.Int32,System.Int32)", "summary", "df-generated"]
@@ -220,89 +194,15 @@ extensions:
- ["ILCompiler.Reflection.ReadyToRun", "R2RSignatureDecoder<TType,TMethod,TGenericContext>", "get_Offset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunCoreHeader", "ParseCoreHeader", "(System.Byte[],System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunCoreHeader", "ReadyToRunCoreHeader", "(System.Byte[],System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunCoreHeader", "get_Flags", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunCoreHeader", "get_Sections", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunCoreHeader", "set_Flags", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunCoreHeader", "set_Sections", "(System.Collections.Generic.IDictionary<Internal.Runtime.ReadyToRunSectionType,ILCompiler.Reflection.ReadyToRun.ReadyToRunSection>)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunHeader", "ReadyToRunHeader", "(System.Byte[],System.Int32,System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunHeader", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunHeader", "get_MajorVersion", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunHeader", "get_MinorVersion", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunHeader", "get_RelativeVirtualAddress", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunHeader", "get_Signature", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunHeader", "get_SignatureString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunHeader", "get_Size", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunHeader", "set_MajorVersion", "(System.UInt16)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunHeader", "set_MinorVersion", "(System.UInt16)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunHeader", "set_RelativeVirtualAddress", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunHeader", "set_Signature", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunHeader", "set_SignatureString", "(System.String)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunHeader", "set_Size", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection+ImportSectionEntry", "ImportSectionEntry", "(System.Int32,System.Int32,System.Int32,System.Int64,System.UInt32,ILCompiler.Reflection.ReadyToRun.ReadyToRunSignature)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection+ImportSectionEntry", "get_GCRefMap", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection+ImportSectionEntry", "get_Index", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection+ImportSectionEntry", "get_Section", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection+ImportSectionEntry", "get_Signature", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection+ImportSectionEntry", "get_SignatureRVA", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection+ImportSectionEntry", "get_StartOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection+ImportSectionEntry", "get_StartRVA", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection+ImportSectionEntry", "set_GCRefMap", "(ILCompiler.Reflection.ReadyToRun.GCRefMap)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection+ImportSectionEntry", "set_Index", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection+ImportSectionEntry", "set_Section", "(System.Int64)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection+ImportSectionEntry", "set_Signature", "(ILCompiler.Reflection.ReadyToRun.ReadyToRunSignature)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection+ImportSectionEntry", "set_SignatureRVA", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection+ImportSectionEntry", "set_StartOffset", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection+ImportSectionEntry", "set_StartRVA", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "ReadyToRunImportSection", "(System.Int32,ILCompiler.Reflection.ReadyToRun.ReadyToRunReader,System.Int32,System.Int32,Internal.ReadyToRunConstants.ReadyToRunImportSectionFlags,Internal.ReadyToRunConstants.ReadyToRunImportSectionType,System.Byte,System.Int32,System.Collections.Generic.List<ILCompiler.Reflection.ReadyToRun.ReadyToRunImportSection+ImportSectionEntry>,System.Int32,System.Int32,System.Reflection.PortableExecutable.Machine,System.UInt16)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "WriteTo", "(System.IO.TextWriter)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "get_AuxiliaryDataRVA", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "get_AuxiliaryDataSize", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "get_Entries", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "get_EntrySize", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "get_Flags", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "get_Index", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "get_SectionRVA", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "get_SectionSize", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "get_SignatureRVA", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "get_Type", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "set_AuxiliaryDataRVA", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "set_AuxiliaryDataSize", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "set_Entries", "(System.Collections.Generic.List<ILCompiler.Reflection.ReadyToRun.ReadyToRunImportSection+ImportSectionEntry>)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "set_EntrySize", "(System.Byte)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "set_Flags", "(Internal.ReadyToRunConstants.ReadyToRunImportSectionFlags)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "set_Index", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "set_SectionRVA", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "set_SectionSize", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "set_SignatureRVA", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunImportSection", "set_Type", "(Internal.ReadyToRunConstants.ReadyToRunImportSectionType)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "get_ColdRuntimeFunctionCount", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "get_ColdRuntimeFunctionId", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "get_ComponentReader", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "get_DeclaringType", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "get_EntryPointRuntimeFunctionId", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "get_GcInfoRva", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "get_InstanceArgs", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "get_LocalSignature", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "get_MethodHandle", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "get_Name", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "get_Rid", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "get_RuntimeFunctionCount", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "get_Signature", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "get_SignatureString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "get_Size", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "set_ColdRuntimeFunctionCount", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "set_ColdRuntimeFunctionId", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "set_ComponentReader", "(ILCompiler.Reflection.ReadyToRun.IAssemblyMetadata)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "set_DeclaringType", "(System.String)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "set_EntryPointRuntimeFunctionId", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "set_GcInfoRva", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "set_InstanceArgs", "(System.String[])", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "set_MethodHandle", "(System.Reflection.Metadata.EntityHandle)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "set_Name", "(System.String)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "set_Rid", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "set_RuntimeFunctionCount", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunMethod", "set_SignatureString", "(System.String)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunReader", "CheckNonEmptyDebugInfo", "(ILCompiler.Reflection.ReadyToRun.RuntimeFunction)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunReader", "GetAssemblyIndex", "(ILCompiler.Reflection.ReadyToRun.ReadyToRunSection)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunReader", "GetAssemblyMvid", "(System.Int32)", "summary", "df-generated"]
@@ -316,27 +216,13 @@ extensions:
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunReader", "get_ComponentAssemblyIndexOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunReader", "get_ComponentAssemblyIndicesStartAtTwo", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunReader", "get_Composite", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunReader", "get_CompositeReader", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunReader", "get_Filename", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunReader", "get_Image", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunReader", "get_ImageBase", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunReader", "get_Machine", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunReader", "get_OperatingSystem", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunReader", "get_TargetPointerSize", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunReader", "set_CompositeReader", "(System.Reflection.PortableExecutable.PEReader)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunReader", "set_Filename", "(System.String)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunReader", "set_Image", "(System.Byte[])", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunSection", "ReadyToRunSection", "(Internal.Runtime.ReadyToRunSectionType,System.Int32,System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunSection", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunSection", "get_RelativeVirtualAddress", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunSection", "get_Size", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunSection", "get_Type", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunSection", "set_RelativeVirtualAddress", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunSection", "set_Size", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunSection", "set_Type", "(Internal.Runtime.ReadyToRunSectionType)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunSignature", "ToString", "(ILCompiler.Reflection.ReadyToRun.SignatureFormattingOptions)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunSignature", "get_FixupKind", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "ReadyToRunSignature", "set_FixupKind", "(Internal.ReadyToRunConstants.ReadyToRunFixupKind)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "RuntimeFunction", "get_CodeOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "RuntimeFunction", "get_EndAddress", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "RuntimeFunction", "get_Id", "()", "summary", "df-generated"]
@@ -348,12 +234,6 @@ extensions:
- ["ILCompiler.Reflection.ReadyToRun", "SignatureDecoder", "ReadTypeSignature", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "SignatureDecoder", "ReadTypeSignatureNoEmit", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "SignatureDecoder", "SignatureDecoder", "(ILCompiler.Reflection.ReadyToRun.IAssemblyResolver,ILCompiler.Reflection.ReadyToRun.SignatureFormattingOptions,System.Reflection.Metadata.MetadataReader,ILCompiler.Reflection.ReadyToRun.ReadyToRunReader,System.Int32,System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "SignatureFormattingOptions", "get_InlineSignatureBinary", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "SignatureFormattingOptions", "get_Naked", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "SignatureFormattingOptions", "get_SignatureBinary", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "SignatureFormattingOptions", "set_InlineSignatureBinary", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "SignatureFormattingOptions", "set_Naked", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "SignatureFormattingOptions", "set_SignatureBinary", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "StringExtensions", "ToEscapedString", "(System.String,System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "StringTypeProviderBase<TGenericContext>", "GetFunctionPointerType", "(System.Reflection.Metadata.MethodSignature<System.String>)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "StringTypeProviderBase<TGenericContext>", "GetGenericMethodParameter", "(TGenericContext,System.Int32)", "summary", "df-generated"]
@@ -364,8 +244,6 @@ extensions:
- ["ILCompiler.Reflection.ReadyToRun", "StringTypeProviderBase<TGenericContext>", "GetTypeFromSpecification", "(System.Reflection.Metadata.MetadataReader,TGenericContext,System.Reflection.Metadata.TypeSpecificationHandle,System.Byte)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "TextSignatureDecoderContext", "TextSignatureDecoderContext", "(ILCompiler.Reflection.ReadyToRun.IAssemblyResolver,ILCompiler.Reflection.ReadyToRun.SignatureFormattingOptions)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "TextSignatureDecoderContext", "get_AssemblyResolver", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "TextSignatureDecoderContext", "get_Options", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "TextSignatureDecoderContext", "set_Options", "(ILCompiler.Reflection.ReadyToRun.SignatureFormattingOptions)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "TodoSignature", "TodoSignature", "(ILCompiler.Reflection.ReadyToRun.SignatureDecoder,Internal.ReadyToRunConstants.ReadyToRunFixupKind)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "TransitionBlock", "FromReader", "(ILCompiler.Reflection.ReadyToRun.ReadyToRunReader)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "TransitionBlock", "OffsetFromGCRefMapPos", "(System.Int32)", "summary", "df-generated"]
@@ -378,7 +256,3 @@ extensions:
- ["ILCompiler.Reflection.ReadyToRun", "TransitionBlock", "get_SizeOfArgumentRegisters", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "TransitionBlock", "get_SizeOfCalleeSavedRegisters", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "TransitionBlock", "get_SizeOfTransitionBlock", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "Variable", "get_Index", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "Variable", "get_Type", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "Variable", "set_Index", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun", "Variable", "set_Type", "(ILCompiler.Reflection.ReadyToRun.VariableType)", "summary", "df-generated"]

View File

@@ -6,154 +6,28 @@ extensions:
data:
- ["ILCompiler.Reflection.ReadyToRun.x86", "CalleeSavedRegister", "CalleeSavedRegister", "(System.Int32,ILCompiler.Reflection.ReadyToRun.x86.CalleeSavedRegisters)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "CalleeSavedRegister", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "CalleeSavedRegister", "get_Register", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "CalleeSavedRegister", "set_Register", "(ILCompiler.Reflection.ReadyToRun.x86.CalleeSavedRegisters)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcInfo", "GcInfo", "(System.Byte[],System.Int32,System.Reflection.PortableExecutable.Machine,System.UInt16)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcInfo", "GetRegisterName", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcInfo", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcInfo", "get_Header", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcInfo", "get_SlotTable", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcInfo", "set_Header", "(ILCompiler.Reflection.ReadyToRun.x86.InfoHdrSmall)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcInfo", "set_SlotTable", "(ILCompiler.Reflection.ReadyToRun.x86.GcSlotTable)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable+GcSlot", "GcSlot", "(System.Int32,System.String,System.Int32,System.Int32,ILCompiler.Reflection.ReadyToRun.GcSlotFlags)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable+GcSlot", "GcSlot", "(System.Int32,System.String,System.Int32,System.Int32,System.Int32,System.Int32,ILCompiler.Reflection.ReadyToRun.GcSlotFlags)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable+GcSlot", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable+GcSlot", "get_BeginOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable+GcSlot", "get_EndOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable+GcSlot", "get_Flags", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable+GcSlot", "get_Index", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable+GcSlot", "get_LowBits", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable+GcSlot", "get_Register", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable+GcSlot", "get_StackOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable+GcSlot", "set_BeginOffset", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable+GcSlot", "set_EndOffset", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable+GcSlot", "set_Flags", "(ILCompiler.Reflection.ReadyToRun.GcSlotFlags)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable+GcSlot", "set_Index", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable+GcSlot", "set_LowBits", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable+GcSlot", "set_Register", "(System.String)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable+GcSlot", "set_StackOffset", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable", "GcSlotTable", "(System.Byte[],ILCompiler.Reflection.ReadyToRun.x86.InfoHdrSmall,System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable", "get_GcSlots", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcSlotTable", "set_GcSlots", "(System.Collections.Generic.List<ILCompiler.Reflection.ReadyToRun.x86.GcSlotTable+GcSlot>)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall+CallRegister", "CallRegister", "(ILCompiler.Reflection.ReadyToRun.x86.Registers,System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall+CallRegister", "get_IsByRef", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall+CallRegister", "get_Register", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall+CallRegister", "set_IsByRef", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall+CallRegister", "set_Register", "(ILCompiler.Reflection.ReadyToRun.x86.Registers)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall+PtrArg", "PtrArg", "(System.UInt32,System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall+PtrArg", "get_LowBit", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall+PtrArg", "get_StackOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall+PtrArg", "set_LowBit", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall+PtrArg", "set_StackOffset", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall", "GcTransitionCall", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall", "GcTransitionCall", "(System.Int32,System.Boolean,System.UInt32,System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall", "get_ArgMask", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall", "get_CallRegisters", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall", "get_IArgs", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall", "get_PtrArgs", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall", "set_ArgMask", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall", "set_CallRegisters", "(System.Collections.Generic.List<ILCompiler.Reflection.ReadyToRun.x86.GcTransitionCall+CallRegister>)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall", "set_IArgs", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionCall", "set_PtrArgs", "(System.Collections.Generic.List<ILCompiler.Reflection.ReadyToRun.x86.GcTransitionCall+PtrArg>)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionPointer", "GcTransitionPointer", "(System.Int32,System.UInt32,System.UInt32,ILCompiler.Reflection.ReadyToRun.x86.Action,System.Boolean,System.Boolean,System.Boolean,System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionPointer", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionPointer", "get_Act", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionPointer", "get_ArgCount", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionPointer", "get_ArgOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionPointer", "get_Iptr", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionPointer", "get_IsPtr", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionPointer", "get_IsThis", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionPointer", "set_Act", "(ILCompiler.Reflection.ReadyToRun.x86.Action)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionPointer", "set_ArgCount", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionPointer", "set_ArgOffset", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionPointer", "set_Iptr", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionPointer", "set_IsPtr", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionPointer", "set_IsThis", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionRegister", "GcTransitionRegister", "(System.Int32,ILCompiler.Reflection.ReadyToRun.x86.Registers,ILCompiler.Reflection.ReadyToRun.x86.Action,System.Boolean,System.Boolean,System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionRegister", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionRegister", "get_Iptr", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionRegister", "get_IsLive", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionRegister", "get_IsThis", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionRegister", "get_PushCountOrPopSize", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionRegister", "get_Register", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionRegister", "set_Iptr", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionRegister", "set_IsLive", "(ILCompiler.Reflection.ReadyToRun.x86.Action)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionRegister", "set_IsThis", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionRegister", "set_PushCountOrPopSize", "(System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "GcTransitionRegister", "set_Register", "(ILCompiler.Reflection.ReadyToRun.x86.Registers)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "IPtrMask", "IPtrMask", "(System.Int32,System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "IPtrMask", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "IPtrMask", "get_IMask", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "IPtrMask", "set_IMask", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrDecoder", "DecodeHeader", "(System.Byte[],System.Int32,System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrDecoder", "GetInfoHdr", "(System.Byte)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "InfoHdrSmall", "(System.UInt32,System.UInt32,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.UInt16,System.UInt32,System.UInt32,System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_ArgCount", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_ArgTabOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_DoubleAlign", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_EbpFrame", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_EbpSaved", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_EbxSaved", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_EdiSaved", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_EditNcontinue", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_EpilogAtEnd", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_EpilogCount", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_EpilogSize", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_Epilogs", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_EsiSaved", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_FrameSize", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_GenericsContext", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_GenericsContextIsMethodDesc", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_GsCookieOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_Handlers", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_HasArgTabOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_Interruptible", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_Localloc", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_ProfCallbacks", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_PrologSize", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_ReturnKind", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_RevPInvokeOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_Security", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_SyncEndOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_SyncStartOffset", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_UntrackedCnt", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_VarPtrTableSize", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "get_Varargs", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_ArgCount", "(System.UInt16)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_ArgTabOffset", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_DoubleAlign", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_EbpFrame", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_EbpSaved", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_EbxSaved", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_EdiSaved", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_EditNcontinue", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_EpilogAtEnd", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_EpilogCount", "(System.Byte)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_EpilogSize", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_Epilogs", "(System.Collections.Generic.List<System.Int32>)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_EsiSaved", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_FrameSize", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_GenericsContext", "(System.Byte)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_GenericsContextIsMethodDesc", "(System.Byte)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_GsCookieOffset", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_Handlers", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_HasArgTabOffset", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_Interruptible", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_Localloc", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_ProfCallbacks", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_PrologSize", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_ReturnKind", "(ILCompiler.Reflection.ReadyToRun.ReturnKinds)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_RevPInvokeOffset", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_Security", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_SyncEndOffset", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_SyncStartOffset", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_UntrackedCnt", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_VarPtrTableSize", "(System.UInt32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "InfoHdrSmall", "set_Varargs", "(System.Boolean)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "UnwindInfo", "ToString", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "UnwindInfo", "UnwindInfo", "(System.Byte[],System.Int32)", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "UnwindInfo", "get_FunctionLength", "()", "summary", "df-generated"]
- ["ILCompiler.Reflection.ReadyToRun.x86", "UnwindInfo", "set_FunctionLength", "(System.UInt32)", "summary", "df-generated"]

View File

@@ -32,8 +32,6 @@ extensions:
- ["ILLink.RoslynAnalyzer.DataFlow", "InterproceduralStateLattice<TValue,TValueLattice>", False, "get_Top", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "LocalDataFlowAnalysis<TValue,TContext,TLattice,TContextLattice,TTransfer,TConditionValue>", False, "LocalDataFlowAnalysis", "(Microsoft.CodeAnalysis.Diagnostics.OperationBlockAnalysisContext,Microsoft.CodeAnalysis.IOperation,TContext)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "LocalDataFlowAnalysis<TValue,TContext,TLattice,TContextLattice,TTransfer,TConditionValue>", False, "LocalDataFlowAnalysis", "(Microsoft.CodeAnalysis.Diagnostics.OperationBlockAnalysisContext,Microsoft.CodeAnalysis.IOperation,TContext)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "LocalDataFlowState<TValue,TContext,TValueLattice,TContextLattice>", False, "get_Current", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "LocalDataFlowState<TValue,TContext,TValueLattice,TContextLattice>", False, "set_Current", "(ILLink.RoslynAnalyzer.DataFlow.LocalStateAndContext<TValue,TContext>)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "LocalDataFlowVisitor<TValue,TContext,TValueLattice,TContextLattice,TConditionValue>", False, "LocalDataFlowVisitor", "(Microsoft.CodeAnalysis.Compilation,ILLink.RoslynAnalyzer.DataFlow.LocalStateAndContextLattice<TValue,TContext,TValueLattice,TContextLattice>,Microsoft.CodeAnalysis.ISymbol,Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph,System.Collections.Immutable.ImmutableDictionary<Microsoft.CodeAnalysis.FlowAnalysis.CaptureId,ILLink.RoslynAnalyzer.DataFlow.FlowCaptureKind>,ILLink.RoslynAnalyzer.DataFlow.InterproceduralState<TValue,TValueLattice>)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "LocalDataFlowVisitor<TValue,TContext,TValueLattice,TContextLattice,TConditionValue>", False, "LocalDataFlowVisitor", "(Microsoft.CodeAnalysis.Compilation,ILLink.RoslynAnalyzer.DataFlow.LocalStateAndContextLattice<TValue,TContext,TValueLattice,TContextLattice>,Microsoft.CodeAnalysis.ISymbol,Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph,System.Collections.Immutable.ImmutableDictionary<Microsoft.CodeAnalysis.FlowAnalysis.CaptureId,ILLink.RoslynAnalyzer.DataFlow.FlowCaptureKind>,ILLink.RoslynAnalyzer.DataFlow.InterproceduralState<TValue,TValueLattice>)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "LocalDataFlowVisitor<TValue,TContext,TValueLattice,TContextLattice,TConditionValue>", False, "LocalDataFlowVisitor", "(Microsoft.CodeAnalysis.Compilation,ILLink.RoslynAnalyzer.DataFlow.LocalStateAndContextLattice<TValue,TContext,TValueLattice,TContextLattice>,Microsoft.CodeAnalysis.ISymbol,Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph,System.Collections.Immutable.ImmutableDictionary<Microsoft.CodeAnalysis.FlowAnalysis.CaptureId,ILLink.RoslynAnalyzer.DataFlow.FlowCaptureKind>,ILLink.RoslynAnalyzer.DataFlow.InterproceduralState<TValue,TValueLattice>)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"]
@@ -59,15 +57,15 @@ extensions:
pack: codeql/csharp-all
extensible: neutralModel
data:
- ["ILLink.RoslynAnalyzer.DataFlow", "BlockProxy", "BlockProxy", "(Microsoft.CodeAnalysis.FlowAnalysis.BasicBlock)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "BlockProxy", "ToString", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "BlockProxy", "get_Block", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "BlockProxy", "get_ConditionKind", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "BlockProxy", "op_Equality", "(ILLink.RoslynAnalyzer.DataFlow.BlockProxy,ILLink.RoslynAnalyzer.DataFlow.BlockProxy)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "BlockProxy", "op_Inequality", "(ILLink.RoslynAnalyzer.DataFlow.BlockProxy,ILLink.RoslynAnalyzer.DataFlow.BlockProxy)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "BlockProxy", "set_Block", "(Microsoft.CodeAnalysis.FlowAnalysis.BasicBlock)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "CapturedReferenceValue", "Equals", "(ILLink.RoslynAnalyzer.DataFlow.CapturedReferenceValue)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "CapturedReferenceValue", "Equals", "(System.Object)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "CapturedReferenceValue", "GetHashCode", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "ControlFlowGraphProxy", "ControlFlowGraphProxy", "(Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "ControlFlowGraphProxy", "CreateProxyBranch", "(Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowBranch)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "ControlFlowGraphProxy", "FirstBlock", "(ILLink.RoslynAnalyzer.DataFlow.RegionProxy)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "ControlFlowGraphProxy", "GetConditionalSuccessor", "(ILLink.RoslynAnalyzer.DataFlow.BlockProxy)", "summary", "df-generated"]
@@ -81,11 +79,9 @@ extensions:
- ["ILLink.RoslynAnalyzer.DataFlow", "ControlFlowGraphProxy", "TryGetEnclosingTryOrCatchOrFilter", "(ILLink.RoslynAnalyzer.DataFlow.BlockProxy,ILLink.RoslynAnalyzer.DataFlow.RegionProxy)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "ControlFlowGraphProxy", "TryGetEnclosingTryOrCatchOrFilter", "(ILLink.RoslynAnalyzer.DataFlow.RegionProxy,ILLink.RoslynAnalyzer.DataFlow.RegionProxy)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "ControlFlowGraphProxy", "get_Blocks", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "ControlFlowGraphProxy", "get_ControlFlowGraph", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "ControlFlowGraphProxy", "get_Entry", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "ControlFlowGraphProxy", "op_Equality", "(ILLink.RoslynAnalyzer.DataFlow.ControlFlowGraphProxy,ILLink.RoslynAnalyzer.DataFlow.ControlFlowGraphProxy)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "ControlFlowGraphProxy", "op_Inequality", "(ILLink.RoslynAnalyzer.DataFlow.ControlFlowGraphProxy,ILLink.RoslynAnalyzer.DataFlow.ControlFlowGraphProxy)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "ControlFlowGraphProxy", "set_ControlFlowGraph", "(Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "FeatureChecksValue", "op_Equality", "(ILLink.RoslynAnalyzer.DataFlow.FeatureChecksValue,ILLink.RoslynAnalyzer.DataFlow.FeatureChecksValue)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "FeatureChecksValue", "op_Inequality", "(ILLink.RoslynAnalyzer.DataFlow.FeatureChecksValue,ILLink.RoslynAnalyzer.DataFlow.FeatureChecksValue)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "FeatureChecksVisitor", "GetLiteralBool", "(Microsoft.CodeAnalysis.IOperation)", "summary", "df-generated"]
@@ -112,10 +108,6 @@ extensions:
- ["ILLink.RoslynAnalyzer.DataFlow", "LocalDataFlowAnalysis<TValue,TContext,TLattice,TContextLattice,TTransfer,TConditionValue>", "InterproceduralAnalyze", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "LocalDataFlowState<TValue,TContext,TValueLattice,TContextLattice>", "Get", "(ILLink.RoslynAnalyzer.DataFlow.LocalKey)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "LocalDataFlowState<TValue,TContext,TValueLattice,TContextLattice>", "Set", "(ILLink.RoslynAnalyzer.DataFlow.LocalKey,TValue)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "LocalDataFlowState<TValue,TContext,TValueLattice,TContextLattice>", "get_Exception", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "LocalDataFlowState<TValue,TContext,TValueLattice,TContextLattice>", "get_Lattice", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "LocalDataFlowState<TValue,TContext,TValueLattice,TContextLattice>", "set_Exception", "(ILLink.Shared.DataFlow.Box<ILLink.RoslynAnalyzer.DataFlow.LocalStateAndContext<TValue,TContext>>)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "LocalDataFlowState<TValue,TContext,TValueLattice,TContextLattice>", "set_Lattice", "(ILLink.RoslynAnalyzer.DataFlow.LocalStateAndContextLattice<TValue,TContext,TValueLattice,TContextLattice>)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "LocalDataFlowVisitor<TValue,TContext,TValueLattice,TContextLattice,TConditionValue>", "ApplyCondition", "(TConditionValue,ILLink.RoslynAnalyzer.DataFlow.LocalStateAndContext<TValue,TContext>)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "LocalDataFlowVisitor<TValue,TContext,TValueLattice,TContextLattice,TConditionValue>", "GetConditionValue", "(Microsoft.CodeAnalysis.IOperation,ILLink.RoslynAnalyzer.DataFlow.LocalDataFlowState<TValue,TContext,TValueLattice,TContextLattice>)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "LocalDataFlowVisitor<TValue,TContext,TValueLattice,TContextLattice,TConditionValue>", "GetFieldTargetValue", "(Microsoft.CodeAnalysis.IFieldSymbol,Microsoft.CodeAnalysis.Operations.IFieldReferenceOperation,TContext)", "summary", "df-generated"]
@@ -174,8 +166,7 @@ extensions:
- ["ILLink.RoslynAnalyzer.DataFlow", "MethodBodyValue", "get_OwningSymbol", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "OperationWalker<TArgument,TResult>", "DefaultVisit", "(Microsoft.CodeAnalysis.IOperation,TArgument)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "OperationWalker<TArgument,TResult>", "Visit", "(Microsoft.CodeAnalysis.IOperation,TArgument)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "RegionProxy", "RegionProxy", "(Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowRegion)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "RegionProxy", "get_Kind", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "RegionProxy", "get_Region", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "RegionProxy", "op_Equality", "(ILLink.RoslynAnalyzer.DataFlow.RegionProxy,ILLink.RoslynAnalyzer.DataFlow.RegionProxy)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "RegionProxy", "op_Inequality", "(ILLink.RoslynAnalyzer.DataFlow.RegionProxy,ILLink.RoslynAnalyzer.DataFlow.RegionProxy)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.DataFlow", "RegionProxy", "set_Region", "(Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowRegion)", "summary", "df-generated"]

View File

@@ -9,6 +9,8 @@ extensions:
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisPatternStore", False, "TrimAnalysisPatternStore", "(ILLink.Shared.DataFlow.ValueSetLattice<ILLink.Shared.DataFlow.SingleValue>,ILLink.RoslynAnalyzer.DataFlow.FeatureContextLattice)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisVisitor", False, "ApplyCondition", "(ILLink.RoslynAnalyzer.DataFlow.FeatureChecksValue,ILLink.RoslynAnalyzer.DataFlow.LocalStateAndContext<ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,ILLink.RoslynAnalyzer.DataFlow.FeatureContext>)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisVisitor", False, "GetFieldTargetValue", "(Microsoft.CodeAnalysis.IFieldSymbol,Microsoft.CodeAnalysis.Operations.IFieldReferenceOperation,ILLink.RoslynAnalyzer.DataFlow.FeatureContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisVisitor", False, "HandleMethodCall", "(Microsoft.CodeAnalysis.IMethodSymbol,ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,System.Collections.Immutable.ImmutableArray<ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>>,Microsoft.CodeAnalysis.IOperation,ILLink.RoslynAnalyzer.DataFlow.FeatureContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisVisitor", False, "HandleMethodCall", "(Microsoft.CodeAnalysis.IMethodSymbol,ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,System.Collections.Immutable.ImmutableArray<ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>>,Microsoft.CodeAnalysis.IOperation,ILLink.RoslynAnalyzer.DataFlow.FeatureContext)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisVisitor", False, "TrimAnalysisVisitor", "(Microsoft.CodeAnalysis.Compilation,ILLink.RoslynAnalyzer.DataFlow.LocalStateAndContextLattice<ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,ILLink.RoslynAnalyzer.DataFlow.FeatureContext,ILLink.Shared.DataFlow.ValueSetLattice<ILLink.Shared.DataFlow.SingleValue>,ILLink.RoslynAnalyzer.DataFlow.FeatureContextLattice>,Microsoft.CodeAnalysis.ISymbol,Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph,System.Collections.Immutable.ImmutableDictionary<Microsoft.CodeAnalysis.FlowAnalysis.CaptureId,ILLink.RoslynAnalyzer.DataFlow.FlowCaptureKind>,ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisPatternStore,ILLink.RoslynAnalyzer.DataFlow.InterproceduralState<ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,ILLink.Shared.DataFlow.ValueSetLattice<ILLink.Shared.DataFlow.SingleValue>>,ILLink.RoslynAnalyzer.DataFlowAnalyzerContext)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisVisitor", False, "TrimAnalysisVisitor", "(Microsoft.CodeAnalysis.Compilation,ILLink.RoslynAnalyzer.DataFlow.LocalStateAndContextLattice<ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,ILLink.RoslynAnalyzer.DataFlow.FeatureContext,ILLink.Shared.DataFlow.ValueSetLattice<ILLink.Shared.DataFlow.SingleValue>,ILLink.RoslynAnalyzer.DataFlow.FeatureContextLattice>,Microsoft.CodeAnalysis.ISymbol,Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph,System.Collections.Immutable.ImmutableDictionary<Microsoft.CodeAnalysis.FlowAnalysis.CaptureId,ILLink.RoslynAnalyzer.DataFlow.FlowCaptureKind>,ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisPatternStore,ILLink.RoslynAnalyzer.DataFlow.InterproceduralState<ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,ILLink.Shared.DataFlow.ValueSetLattice<ILLink.Shared.DataFlow.SingleValue>>,ILLink.RoslynAnalyzer.DataFlowAnalyzerContext)", "", "Argument[7]", "Argument[this]", "taint", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimDataFlowAnalysis", False, "GetVisitor", "(Microsoft.CodeAnalysis.ISymbol,Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph,System.Collections.Immutable.ImmutableDictionary<Microsoft.CodeAnalysis.FlowAnalysis.CaptureId,ILLink.RoslynAnalyzer.DataFlow.FlowCaptureKind>,ILLink.RoslynAnalyzer.DataFlow.InterproceduralState<ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,ILLink.Shared.DataFlow.ValueSetLattice<ILLink.Shared.DataFlow.SingleValue>>)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
@@ -21,48 +23,18 @@ extensions:
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisAssignmentPattern", "CollectDiagnostics", "(ILLink.RoslynAnalyzer.DataFlowAnalyzerContext)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisAssignmentPattern", "Merge", "(ILLink.Shared.DataFlow.ValueSetLattice<ILLink.Shared.DataFlow.SingleValue>,ILLink.RoslynAnalyzer.DataFlow.FeatureContextLattice,ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisAssignmentPattern)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisAssignmentPattern", "TrimAnalysisAssignmentPattern", "(ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,Microsoft.CodeAnalysis.IOperation,Microsoft.CodeAnalysis.ISymbol,ILLink.RoslynAnalyzer.DataFlow.FeatureContext)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisAssignmentPattern", "get_FeatureContext", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisAssignmentPattern", "get_Operation", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisAssignmentPattern", "get_OwningSymbol", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisAssignmentPattern", "get_Source", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisAssignmentPattern", "get_Target", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisAssignmentPattern", "op_Equality", "(ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisAssignmentPattern,ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisAssignmentPattern)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisAssignmentPattern", "op_Inequality", "(ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisAssignmentPattern,ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisAssignmentPattern)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisAssignmentPattern", "set_FeatureContext", "(ILLink.RoslynAnalyzer.DataFlow.FeatureContext)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisAssignmentPattern", "set_Operation", "(Microsoft.CodeAnalysis.IOperation)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisAssignmentPattern", "set_OwningSymbol", "(Microsoft.CodeAnalysis.ISymbol)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisAssignmentPattern", "set_Source", "(ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisAssignmentPattern", "set_Target", "(ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisFieldAccessPattern", "CollectDiagnostics", "(ILLink.RoslynAnalyzer.DataFlowAnalyzerContext)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisFieldAccessPattern", "Merge", "(ILLink.Shared.DataFlow.ValueSetLattice<ILLink.Shared.DataFlow.SingleValue>,ILLink.RoslynAnalyzer.DataFlow.FeatureContextLattice,ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisFieldAccessPattern)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisFieldAccessPattern", "TrimAnalysisFieldAccessPattern", "(Microsoft.CodeAnalysis.IFieldSymbol,Microsoft.CodeAnalysis.Operations.IFieldReferenceOperation,Microsoft.CodeAnalysis.ISymbol,ILLink.RoslynAnalyzer.DataFlow.FeatureContext)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisFieldAccessPattern", "get_FeatureContext", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisFieldAccessPattern", "get_Field", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisFieldAccessPattern", "get_Operation", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisFieldAccessPattern", "get_OwningSymbol", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisFieldAccessPattern", "op_Equality", "(ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisFieldAccessPattern,ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisFieldAccessPattern)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisFieldAccessPattern", "op_Inequality", "(ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisFieldAccessPattern,ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisFieldAccessPattern)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisFieldAccessPattern", "set_FeatureContext", "(ILLink.RoslynAnalyzer.DataFlow.FeatureContext)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisFieldAccessPattern", "set_Field", "(Microsoft.CodeAnalysis.IFieldSymbol)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisFieldAccessPattern", "set_Operation", "(Microsoft.CodeAnalysis.Operations.IFieldReferenceOperation)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisFieldAccessPattern", "set_OwningSymbol", "(Microsoft.CodeAnalysis.ISymbol)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisMethodCallPattern", "CollectDiagnostics", "(ILLink.RoslynAnalyzer.DataFlowAnalyzerContext)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisMethodCallPattern", "Merge", "(ILLink.Shared.DataFlow.ValueSetLattice<ILLink.Shared.DataFlow.SingleValue>,ILLink.RoslynAnalyzer.DataFlow.FeatureContextLattice,ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisMethodCallPattern)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisMethodCallPattern", "TrimAnalysisMethodCallPattern", "(Microsoft.CodeAnalysis.IMethodSymbol,ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,System.Collections.Immutable.ImmutableArray<ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>>,Microsoft.CodeAnalysis.IOperation,Microsoft.CodeAnalysis.ISymbol,ILLink.RoslynAnalyzer.DataFlow.FeatureContext)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisMethodCallPattern", "get_Arguments", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisMethodCallPattern", "get_CalledMethod", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisMethodCallPattern", "get_FeatureContext", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisMethodCallPattern", "get_Instance", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisMethodCallPattern", "get_Operation", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisMethodCallPattern", "get_OwningSymbol", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisMethodCallPattern", "op_Equality", "(ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisMethodCallPattern,ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisMethodCallPattern)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisMethodCallPattern", "op_Inequality", "(ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisMethodCallPattern,ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisMethodCallPattern)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisMethodCallPattern", "set_Arguments", "(System.Collections.Immutable.ImmutableArray<ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>>)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisMethodCallPattern", "set_CalledMethod", "(Microsoft.CodeAnalysis.IMethodSymbol)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisMethodCallPattern", "set_FeatureContext", "(ILLink.RoslynAnalyzer.DataFlow.FeatureContext)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisMethodCallPattern", "set_Instance", "(ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisMethodCallPattern", "set_Operation", "(Microsoft.CodeAnalysis.IOperation)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisMethodCallPattern", "set_OwningSymbol", "(Microsoft.CodeAnalysis.ISymbol)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisPatternStore", "Add", "(ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisAssignmentPattern,System.Boolean)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisPatternStore", "Add", "(ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisFieldAccessPattern)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisPatternStore", "Add", "(ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisMethodCallPattern)", "summary", "df-generated"]
@@ -71,23 +43,14 @@ extensions:
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisReflectionAccessPattern", "CollectDiagnostics", "(ILLink.RoslynAnalyzer.DataFlowAnalyzerContext)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisReflectionAccessPattern", "Merge", "(ILLink.Shared.DataFlow.ValueSetLattice<ILLink.Shared.DataFlow.SingleValue>,ILLink.RoslynAnalyzer.DataFlow.FeatureContextLattice,ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisReflectionAccessPattern)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisReflectionAccessPattern", "TrimAnalysisReflectionAccessPattern", "(Microsoft.CodeAnalysis.IMethodSymbol,Microsoft.CodeAnalysis.IOperation,Microsoft.CodeAnalysis.ISymbol,ILLink.RoslynAnalyzer.DataFlow.FeatureContext)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisReflectionAccessPattern", "get_FeatureContext", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisReflectionAccessPattern", "get_Operation", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisReflectionAccessPattern", "get_OwningSymbol", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisReflectionAccessPattern", "get_ReferencedMethod", "()", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisReflectionAccessPattern", "op_Equality", "(ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisReflectionAccessPattern,ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisReflectionAccessPattern)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisReflectionAccessPattern", "op_Inequality", "(ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisReflectionAccessPattern,ILLink.RoslynAnalyzer.TrimAnalysis.TrimAnalysisReflectionAccessPattern)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisReflectionAccessPattern", "set_FeatureContext", "(ILLink.RoslynAnalyzer.DataFlow.FeatureContext)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisReflectionAccessPattern", "set_Operation", "(Microsoft.CodeAnalysis.IOperation)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisReflectionAccessPattern", "set_OwningSymbol", "(Microsoft.CodeAnalysis.ISymbol)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisReflectionAccessPattern", "set_ReferencedMethod", "(Microsoft.CodeAnalysis.IMethodSymbol)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisVisitor", "GetConditionValue", "(Microsoft.CodeAnalysis.IOperation,ILLink.RoslynAnalyzer.DataFlow.LocalDataFlowState<ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,ILLink.RoslynAnalyzer.DataFlow.FeatureContext,ILLink.Shared.DataFlow.ValueSetLattice<ILLink.Shared.DataFlow.SingleValue>,ILLink.RoslynAnalyzer.DataFlow.FeatureContextLattice>)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisVisitor", "GetParameterTargetValue", "(Microsoft.CodeAnalysis.IParameterSymbol)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisVisitor", "HandleArrayElementRead", "(ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,Microsoft.CodeAnalysis.IOperation)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisVisitor", "HandleArrayElementWrite", "(ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,Microsoft.CodeAnalysis.IOperation,System.Boolean)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisVisitor", "HandleAssignment", "(ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,Microsoft.CodeAnalysis.IOperation,ILLink.RoslynAnalyzer.DataFlow.FeatureContext)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisVisitor", "HandleDelegateCreation", "(Microsoft.CodeAnalysis.IMethodSymbol,Microsoft.CodeAnalysis.IOperation,ILLink.RoslynAnalyzer.DataFlow.FeatureContext)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisVisitor", "HandleMethodCall", "(Microsoft.CodeAnalysis.IMethodSymbol,ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,System.Collections.Immutable.ImmutableArray<ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>>,Microsoft.CodeAnalysis.IOperation,ILLink.RoslynAnalyzer.DataFlow.FeatureContext)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisVisitor", "HandleReturnValue", "(ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,Microsoft.CodeAnalysis.IOperation,ILLink.RoslynAnalyzer.DataFlow.FeatureContext)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisVisitor", "Visit", "(Microsoft.CodeAnalysis.IOperation,ILLink.RoslynAnalyzer.DataFlow.LocalDataFlowState<ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,ILLink.RoslynAnalyzer.DataFlow.FeatureContext,ILLink.Shared.DataFlow.ValueSetLattice<ILLink.Shared.DataFlow.SingleValue>,ILLink.RoslynAnalyzer.DataFlow.FeatureContextLattice>)", "summary", "df-generated"]
- ["ILLink.RoslynAnalyzer.TrimAnalysis", "TrimAnalysisVisitor", "VisitArrayCreation", "(Microsoft.CodeAnalysis.Operations.IArrayCreationOperation,ILLink.RoslynAnalyzer.DataFlow.LocalDataFlowState<ILLink.Shared.DataFlow.ValueSet<ILLink.Shared.DataFlow.SingleValue>,ILLink.RoslynAnalyzer.DataFlow.FeatureContext,ILLink.Shared.DataFlow.ValueSetLattice<ILLink.Shared.DataFlow.SingleValue>,ILLink.RoslynAnalyzer.DataFlow.FeatureContextLattice>)", "summary", "df-generated"]

View File

@@ -32,8 +32,6 @@ extensions:
extensible: neutralModel
data:
- ["ILLink.Shared.DataFlow", "Box<T>", "Box", "(T)", "summary", "df-generated"]
- ["ILLink.Shared.DataFlow", "Box<T>", "get_Value", "()", "summary", "df-generated"]
- ["ILLink.Shared.DataFlow", "Box<T>", "set_Value", "(T)", "summary", "df-generated"]
- ["ILLink.Shared.DataFlow", "DefaultValueDictionary<TKey,TValue>", "Equals", "(ILLink.Shared.DataFlow.DefaultValueDictionary<TKey,TValue>)", "summary", "df-generated"]
- ["ILLink.Shared.DataFlow", "DefaultValueDictionary<TKey,TValue>", "Equals", "(System.Object)", "summary", "df-generated"]
- ["ILLink.Shared.DataFlow", "DefaultValueDictionary<TKey,TValue>", "GetHashCode", "()", "summary", "df-generated"]
@@ -64,12 +62,6 @@ extensions:
- ["ILLink.Shared.DataFlow", "IControlFlowGraph<TBlock,TRegion>", "TryGetEnclosingTryOrCatchOrFilter", "(TRegion,TRegion)", "summary", "df-generated"]
- ["ILLink.Shared.DataFlow", "IControlFlowGraph<TBlock,TRegion>", "get_Blocks", "()", "summary", "df-generated"]
- ["ILLink.Shared.DataFlow", "IControlFlowGraph<TBlock,TRegion>", "get_Entry", "()", "summary", "df-generated"]
- ["ILLink.Shared.DataFlow", "IDataFlowState<TValue,TValueLattice>", "get_Current", "()", "summary", "df-generated"]
- ["ILLink.Shared.DataFlow", "IDataFlowState<TValue,TValueLattice>", "get_Exception", "()", "summary", "df-generated"]
- ["ILLink.Shared.DataFlow", "IDataFlowState<TValue,TValueLattice>", "get_Lattice", "()", "summary", "df-generated"]
- ["ILLink.Shared.DataFlow", "IDataFlowState<TValue,TValueLattice>", "set_Current", "(TValue)", "summary", "df-generated"]
- ["ILLink.Shared.DataFlow", "IDataFlowState<TValue,TValueLattice>", "set_Exception", "(ILLink.Shared.DataFlow.Box<TValue>)", "summary", "df-generated"]
- ["ILLink.Shared.DataFlow", "IDataFlowState<TValue,TValueLattice>", "set_Lattice", "(TValueLattice)", "summary", "df-generated"]
- ["ILLink.Shared.DataFlow", "IDeepCopyValue<TSingleValue>", "DeepCopy", "()", "summary", "df-generated"]
- ["ILLink.Shared.DataFlow", "ILattice<TValue>", "Meet", "(TValue,TValue)", "summary", "df-generated"]
- ["ILLink.Shared.DataFlow", "ILattice<TValue>", "get_Top", "()", "summary", "df-generated"]

View File

@@ -11,11 +11,10 @@ extensions:
pack: codeql/csharp-all
extensible: neutralModel
data:
- ["ILLink.Shared.TrimAnalysis", "FieldReferenceValue", "FieldReferenceValue", "(Mono.Cecil.FieldDefinition)", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "FieldReferenceValue", "get_EqualityContract", "()", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "FieldReferenceValue", "get_FieldDefinition", "()", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "FieldReferenceValue", "op_Equality", "(ILLink.Shared.TrimAnalysis.FieldReferenceValue,ILLink.Shared.TrimAnalysis.FieldReferenceValue)", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "FieldReferenceValue", "op_Inequality", "(ILLink.Shared.TrimAnalysis.FieldReferenceValue,ILLink.Shared.TrimAnalysis.FieldReferenceValue)", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "FieldReferenceValue", "set_FieldDefinition", "(Mono.Cecil.FieldDefinition)", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "FlowAnnotations", "GetFieldAnnotation", "(Mono.Cecil.FieldDefinition)", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "FlowAnnotations", "GetGenericParameterAnnotation", "(Mono.Cecil.GenericParameter)", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "FlowAnnotations", "GetMethodReturnValueAnnotation", "(Microsoft.CodeAnalysis.IMethodSymbol)", "summary", "df-generated"]
@@ -32,16 +31,14 @@ extensions:
- ["ILLink.Shared.TrimAnalysis", "FlowAnnotations", "ShouldWarnWhenAccessedForReflection", "(Mono.Cecil.IMemberDefinition)", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "FlowAnnotations", "ShouldWarnWhenAccessedForReflection", "(Mono.Cecil.MethodDefinition)", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "FlowAnnotations", "get_Instance", "()", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "LocalVariableReferenceValue", "LocalVariableReferenceValue", "(Mono.Cecil.Cil.VariableDefinition)", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "LocalVariableReferenceValue", "get_EqualityContract", "()", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "LocalVariableReferenceValue", "get_LocalDefinition", "()", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "LocalVariableReferenceValue", "op_Equality", "(ILLink.Shared.TrimAnalysis.LocalVariableReferenceValue,ILLink.Shared.TrimAnalysis.LocalVariableReferenceValue)", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "LocalVariableReferenceValue", "op_Inequality", "(ILLink.Shared.TrimAnalysis.LocalVariableReferenceValue,ILLink.Shared.TrimAnalysis.LocalVariableReferenceValue)", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "LocalVariableReferenceValue", "set_LocalDefinition", "(Mono.Cecil.Cil.VariableDefinition)", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "ReferenceValue", "ReferenceValue", "(Mono.Cecil.TypeReference)", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "ReferenceValue", "get_EqualityContract", "()", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "ReferenceValue", "get_ReferencedType", "()", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "ReferenceValue", "op_Equality", "(ILLink.Shared.TrimAnalysis.ReferenceValue,ILLink.Shared.TrimAnalysis.ReferenceValue)", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "ReferenceValue", "op_Inequality", "(ILLink.Shared.TrimAnalysis.ReferenceValue,ILLink.Shared.TrimAnalysis.ReferenceValue)", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "ReferenceValue", "set_ReferencedType", "(Mono.Cecil.TypeReference)", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "ValueWithDynamicallyAccessedMembers", "GetDiagnosticArgumentsForAnnotationMismatch", "()", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "ValueWithDynamicallyAccessedMembers", "get_DynamicallyAccessedMemberTypes", "()", "summary", "df-generated"]
- ["ILLink.Shared.TrimAnalysis", "ValueWithDynamicallyAccessedMembers", "get_EqualityContract", "()", "summary", "df-generated"]

View File

@@ -6,85 +6,25 @@ extensions:
data:
- ["ILLink.Tasks", "ILLink", False, "GenerateCommandLineCommands", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["ILLink.Tasks", "ILLink", False, "GenerateFullPathToTool", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["ILLink.Tasks", "ILLink", False, "get_ILLinkPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["ILLink.Tasks", "ILLink", False, "get_ToolName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["ILLink.Tasks", "ILLink", False, "set_ILLinkPath", "(System.String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- addsTo:
pack: codeql/csharp-all
extensible: neutralModel
data:
- ["ILLink.Tasks", "CombineLinkerXmlFiles", "Execute", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "CombineLinkerXmlFiles", "get_CombinedLinkerXmlFile", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "CombineLinkerXmlFiles", "get_LinkerXmlFiles", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "CombineLinkerXmlFiles", "set_CombinedLinkerXmlFile", "(System.String)", "summary", "df-generated"]
- ["ILLink.Tasks", "CombineLinkerXmlFiles", "set_LinkerXmlFiles", "(Microsoft.Build.Framework.ITaskItem[])", "summary", "df-generated"]
- ["ILLink.Tasks", "ComputeManagedAssemblies", "Execute", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ComputeManagedAssemblies", "get_Assemblies", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ComputeManagedAssemblies", "get_ManagedAssemblies", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ComputeManagedAssemblies", "set_Assemblies", "(Microsoft.Build.Framework.ITaskItem[])", "summary", "df-generated"]
- ["ILLink.Tasks", "ComputeManagedAssemblies", "set_ManagedAssemblies", "(Microsoft.Build.Framework.ITaskItem[])", "summary", "df-generated"]
- ["ILLink.Tasks", "CreateRuntimeRootILLinkDescriptorFile", "Execute", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "CreateRuntimeRootILLinkDescriptorFile", "ProcessCoreTypes", "(System.String)", "summary", "df-generated"]
- ["ILLink.Tasks", "CreateRuntimeRootILLinkDescriptorFile", "ProcessExceptionTypes", "(System.String)", "summary", "df-generated"]
- ["ILLink.Tasks", "CreateRuntimeRootILLinkDescriptorFile", "get_CortypeFilePath", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "CreateRuntimeRootILLinkDescriptorFile", "get_DefineConstants", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "CreateRuntimeRootILLinkDescriptorFile", "get_ILLinkTrimXmlFilePath", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "CreateRuntimeRootILLinkDescriptorFile", "get_MscorlibFilePath", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "CreateRuntimeRootILLinkDescriptorFile", "get_NamespaceFilePath", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "CreateRuntimeRootILLinkDescriptorFile", "get_RexcepFilePath", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "CreateRuntimeRootILLinkDescriptorFile", "get_RuntimeRootDescriptorFilePath", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "CreateRuntimeRootILLinkDescriptorFile", "set_CortypeFilePath", "(Microsoft.Build.Framework.ITaskItem)", "summary", "df-generated"]
- ["ILLink.Tasks", "CreateRuntimeRootILLinkDescriptorFile", "set_DefineConstants", "(Microsoft.Build.Framework.ITaskItem[])", "summary", "df-generated"]
- ["ILLink.Tasks", "CreateRuntimeRootILLinkDescriptorFile", "set_ILLinkTrimXmlFilePath", "(Microsoft.Build.Framework.ITaskItem)", "summary", "df-generated"]
- ["ILLink.Tasks", "CreateRuntimeRootILLinkDescriptorFile", "set_MscorlibFilePath", "(Microsoft.Build.Framework.ITaskItem)", "summary", "df-generated"]
- ["ILLink.Tasks", "CreateRuntimeRootILLinkDescriptorFile", "set_NamespaceFilePath", "(Microsoft.Build.Framework.ITaskItem)", "summary", "df-generated"]
- ["ILLink.Tasks", "CreateRuntimeRootILLinkDescriptorFile", "set_RexcepFilePath", "(Microsoft.Build.Framework.ITaskItem)", "summary", "df-generated"]
- ["ILLink.Tasks", "CreateRuntimeRootILLinkDescriptorFile", "set_RuntimeRootDescriptorFilePath", "(Microsoft.Build.Framework.ITaskItem)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "GenerateResponseFileCommands", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_AssemblyPaths", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_CustomData", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_CustomSteps", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_DefaultAction", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_DependenciesFileFormat", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_DumpDependencies", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_ExtraArgs", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_FeatureSettings", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_KeepMetadata", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_NoWarn", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_OutputDirectory", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_ReferenceAssemblyPaths", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_RootAssemblyNames", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_RootDescriptorFiles", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_StandardErrorLoggingImportance", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_TrimMode", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_Warn", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_WarningsAsErrors", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "get_WarningsNotAsErrors", "()", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_AssemblyPaths", "(Microsoft.Build.Framework.ITaskItem[])", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_BeforeFieldInit", "(System.Boolean)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_CustomData", "(Microsoft.Build.Framework.ITaskItem[])", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_CustomSteps", "(Microsoft.Build.Framework.ITaskItem[])", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_DefaultAction", "(System.String)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_DependenciesFileFormat", "(System.String)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_DumpDependencies", "(System.Boolean)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_ExtraArgs", "(System.String)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_FeatureSettings", "(Microsoft.Build.Framework.ITaskItem[])", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_IPConstProp", "(System.Boolean)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_KeepMetadata", "(Microsoft.Build.Framework.ITaskItem[])", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_NoWarn", "(System.String)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_OutputDirectory", "(Microsoft.Build.Framework.ITaskItem)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_OverrideRemoval", "(System.Boolean)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_ReferenceAssemblyPaths", "(Microsoft.Build.Framework.ITaskItem[])", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_RemoveSymbols", "(System.Boolean)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_RootAssemblyNames", "(Microsoft.Build.Framework.ITaskItem[])", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_RootDescriptorFiles", "(Microsoft.Build.Framework.ITaskItem[])", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_Sealer", "(System.Boolean)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_SingleWarn", "(System.Boolean)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_TreatWarningsAsErrors", "(System.Boolean)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_TrimMode", "(System.String)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_UnreachableBodies", "(System.Boolean)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_UnusedInterfaces", "(System.Boolean)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_Warn", "(System.String)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_WarningsAsErrors", "(System.String)", "summary", "df-generated"]
- ["ILLink.Tasks", "ILLink", "set_WarningsNotAsErrors", "(System.String)", "summary", "df-generated"]
- ["ILLink.Tasks", "Utils", "IsManagedAssembly", "(System.String)", "summary", "df-generated"]

View File

@@ -27,8 +27,6 @@ extensions:
- ["Internal.Pgo", "PgoProcessor+PgoEncodedCompressedIntParser", "MoveNext", "()", "summary", "df-generated"]
- ["Internal.Pgo", "PgoProcessor+PgoEncodedCompressedIntParser", "Reset", "()", "summary", "df-generated"]
- ["Internal.Pgo", "PgoProcessor+PgoEncodedCompressedIntParser", "get_Current", "()", "summary", "df-generated"]
- ["Internal.Pgo", "PgoProcessor+PgoEncodedCompressedIntParser", "get_Offset", "()", "summary", "df-generated"]
- ["Internal.Pgo", "PgoProcessor+PgoEncodedCompressedIntParser", "set_Offset", "(System.Int32)", "summary", "df-generated"]
- ["Internal.Pgo", "PgoProcessor", "EncodePgoData<TType,TMethod>", "(System.Collections.Generic.IEnumerable<Internal.Pgo.PgoSchemaElem>,Internal.Pgo.IPgoEncodedValueEmitter<TType,TMethod>,System.Boolean)", "summary", "df-generated"]
- ["Internal.Pgo", "PgoProcessor", "ParsePgoData<TType,TMethod>", "(Internal.Pgo.IPgoSchemaDataLoader<TType,TMethod>,System.Collections.Generic.IEnumerable<System.Int64>,System.Boolean)", "summary", "df-generated"]
- ["Internal.Pgo", "PgoProcessor", "PgoEncodedCompressedLongGenerator", "(System.Collections.Generic.IEnumerable<System.Int64>)", "summary", "df-generated"]

View File

@@ -771,20 +771,6 @@ extensions:
- ["Internal.TypeSystem", "PInvokeFlags", "GetHashCode", "()", "summary", "df-generated"]
- ["Internal.TypeSystem", "PInvokeFlags", "PInvokeFlags", "(Internal.TypeSystem.PInvokeAttributes)", "summary", "df-generated"]
- ["Internal.TypeSystem", "PInvokeFlags", "get_Attributes", "()", "summary", "df-generated"]
- ["Internal.TypeSystem", "PInvokeFlags", "get_BestFitMapping", "()", "summary", "df-generated"]
- ["Internal.TypeSystem", "PInvokeFlags", "get_CharSet", "()", "summary", "df-generated"]
- ["Internal.TypeSystem", "PInvokeFlags", "get_ExactSpelling", "()", "summary", "df-generated"]
- ["Internal.TypeSystem", "PInvokeFlags", "get_PreserveSig", "()", "summary", "df-generated"]
- ["Internal.TypeSystem", "PInvokeFlags", "get_SetLastError", "()", "summary", "df-generated"]
- ["Internal.TypeSystem", "PInvokeFlags", "get_ThrowOnUnmappableChar", "()", "summary", "df-generated"]
- ["Internal.TypeSystem", "PInvokeFlags", "get_UnmanagedCallingConvention", "()", "summary", "df-generated"]
- ["Internal.TypeSystem", "PInvokeFlags", "set_BestFitMapping", "(System.Boolean)", "summary", "df-generated"]
- ["Internal.TypeSystem", "PInvokeFlags", "set_CharSet", "(System.Runtime.InteropServices.CharSet)", "summary", "df-generated"]
- ["Internal.TypeSystem", "PInvokeFlags", "set_ExactSpelling", "(System.Boolean)", "summary", "df-generated"]
- ["Internal.TypeSystem", "PInvokeFlags", "set_PreserveSig", "(System.Boolean)", "summary", "df-generated"]
- ["Internal.TypeSystem", "PInvokeFlags", "set_SetLastError", "(System.Boolean)", "summary", "df-generated"]
- ["Internal.TypeSystem", "PInvokeFlags", "set_ThrowOnUnmappableChar", "(System.Boolean)", "summary", "df-generated"]
- ["Internal.TypeSystem", "PInvokeFlags", "set_UnmanagedCallingConvention", "(Internal.TypeSystem.MethodSignatureFlags)", "summary", "df-generated"]
- ["Internal.TypeSystem", "ParameterMetadata", "get_HasDefault", "()", "summary", "df-generated"]
- ["Internal.TypeSystem", "ParameterMetadata", "get_HasFieldMarshal", "()", "summary", "df-generated"]
- ["Internal.TypeSystem", "ParameterMetadata", "get_In", "()", "summary", "df-generated"]
@@ -1010,9 +996,7 @@ extensions:
- ["Internal.TypeSystem", "TypeSystemContext", "get_SupportsCanon", "()", "summary", "df-generated"]
- ["Internal.TypeSystem", "TypeSystemContext", "get_SupportsTypeEquivalence", "()", "summary", "df-generated"]
- ["Internal.TypeSystem", "TypeSystemContext", "get_SupportsUniversalCanon", "()", "summary", "df-generated"]
- ["Internal.TypeSystem", "TypeSystemContext", "get_SystemModule", "()", "summary", "df-generated"]
- ["Internal.TypeSystem", "TypeSystemContext", "get_Target", "()", "summary", "df-generated"]
- ["Internal.TypeSystem", "TypeSystemContext", "set_SystemModule", "(Internal.TypeSystem.ModuleDesc)", "summary", "df-generated"]
- ["Internal.TypeSystem", "TypeSystemEntity", "get_Context", "()", "summary", "df-generated"]
- ["Internal.TypeSystem", "TypeSystemException+MissingMemberException", "MissingMemberException", "(Internal.TypeSystem.ExceptionStringID,System.String[])", "summary", "df-generated"]
- ["Internal.TypeSystem", "TypeSystemException+TypeLoadException", "get_AssemblyName", "()", "summary", "df-generated"]

View File

@@ -7,8 +7,6 @@ extensions:
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+CaseInsensitiveDictionaryConverter", False, "Read", "(System.Text.Json.Utf8JsonReader,System.Type,System.Text.Json.JsonSerializerOptions)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonModelItemConverter", False, "Read", "(System.Text.Json.Utf8JsonReader,System.Type,System.Text.Json.JsonSerializerOptions)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonToItemsTask", False, "SetPropertyValue", "(Microsoft.Build.Framework.TaskPropertyInfo,System.Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonToItemsTask", False, "get_BuildEngine", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonToItemsTask", False, "set_BuildEngine", "(Microsoft.Build.Framework.IBuildEngine)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory", False, "GetTaskParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory", False, "Initialize", "(System.String,System.Collections.Generic.IDictionary<System.String,Microsoft.Build.Framework.TaskPropertyInfo>,System.String,Microsoft.Build.Framework.IBuildEngine)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- addsTo:
@@ -20,20 +18,14 @@ extensions:
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonModelItem", "get_Identity", "()", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonModelItem", "get_Metadata", "()", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonModelItemConverter", "Write", "(System.Text.Json.Utf8JsonWriter,JsonToItemsTaskFactory.JsonToItemsTaskFactory+JsonModelItem,System.Text.Json.JsonSerializerOptions)", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonModelRoot", "get_Items", "()", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonModelRoot", "get_Properties", "()", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonModelRoot", "set_Items", "(System.Collections.Generic.Dictionary<System.String,JsonToItemsTaskFactory.JsonToItemsTaskFactory+JsonModelItem[]>)", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonModelRoot", "set_Properties", "(System.Collections.Generic.Dictionary<System.String,System.String>)", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonToItemsTask", "ConvertItems", "(JsonToItemsTaskFactory.JsonToItemsTaskFactory+JsonModelItem[])", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonToItemsTask", "Execute", "()", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonToItemsTask", "GetJsonAsync", "(System.String,System.IO.FileStream)", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonToItemsTask", "GetPropertyValue", "(Microsoft.Build.Framework.TaskPropertyInfo)", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonToItemsTask", "JsonToItemsTask", "(System.String,System.Boolean)", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonToItemsTask", "TryGetJson", "(System.String,JsonToItemsTaskFactory.JsonToItemsTaskFactory+JsonModelRoot)", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonToItemsTask", "get_HostObject", "()", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonToItemsTask", "get_JsonOptions", "()", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonToItemsTask", "get_TaskName", "()", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory+JsonToItemsTask", "set_HostObject", "(Microsoft.Build.Framework.ITaskHost)", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory", "CleanupTask", "(Microsoft.Build.Framework.ITask)", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory", "CreateTask", "(Microsoft.Build.Framework.IBuildEngine)", "summary", "df-generated"]
- ["JsonToItemsTaskFactory", "JsonToItemsTaskFactory", "get_FactoryName", "()", "summary", "df-generated"]

View File

@@ -16,12 +16,6 @@ extensions:
extensible: neutralModel
data:
- ["Microsoft.Android.Build.Ndk", "AndroidArch", "AndroidArch", "(System.String,System.String,System.String)", "summary", "df-generated"]
- ["Microsoft.Android.Build.Ndk", "AndroidArch", "get_Abi", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build.Ndk", "AndroidArch", "get_ArchName", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build.Ndk", "AndroidArch", "get_Triple", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build.Ndk", "AndroidArch", "set_Abi", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Android.Build.Ndk", "AndroidArch", "set_ArchName", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Android.Build.Ndk", "AndroidArch", "set_Triple", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Android.Build.Ndk", "Ndk", "get_NdkPath", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build.Ndk", "Ndk", "get_NdkVersion", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build.Ndk", "NdkTools", "get_Triple", "()", "summary", "df-generated"]

View File

@@ -5,21 +5,3 @@ extensions:
extensible: neutralModel
data:
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "Execute", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "get_Architecture", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "get_AsPrefixPath", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "get_ClangPath", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "get_HostOS", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "get_LdName", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "get_LdPath", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "get_MinApiLevel", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "get_ToolPrefixPath", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "get_Triple", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "set_Architecture", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "set_AsPrefixPath", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "set_ClangPath", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "set_HostOS", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "set_LdName", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "set_LdPath", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "set_MinApiLevel", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "set_ToolPrefixPath", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Android.Build.Tasks", "NdkToolFinderTask", "set_Triple", "(System.String)", "summary", "df-generated"]

View File

@@ -17,13 +17,9 @@ extensions:
data:
- ["Microsoft.Android.Build", "AndroidBuildOptions", "get_CompilerArguments", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build", "AndroidBuildOptions", "get_IncludePaths", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build", "AndroidBuildOptions", "get_IntermediateOutputPath", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build", "AndroidBuildOptions", "get_LinkerArguments", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build", "AndroidBuildOptions", "get_NativeLibraryPaths", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build", "AndroidBuildOptions", "get_OutputPath", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build", "AndroidBuildOptions", "get_Sources", "()", "summary", "df-generated"]
- ["Microsoft.Android.Build", "AndroidBuildOptions", "set_IntermediateOutputPath", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Android.Build", "AndroidBuildOptions", "set_OutputPath", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Android.Build", "AndroidProject", "AndroidProject", "(System.String,System.String,Microsoft.Build.Utilities.TaskLoggingHelper)", "summary", "df-generated"]
- ["Microsoft.Android.Build", "AndroidProject", "Build", "(System.String,Microsoft.Mobile.Build.Clang.ClangBuildOptions,System.Boolean,System.String)", "summary", "df-generated"]
- ["Microsoft.Android.Build", "AndroidProject", "GenerateCMake", "(System.String,System.Boolean)", "summary", "df-generated"]

View File

@@ -6,8 +6,6 @@ extensions:
data:
- ["Microsoft.Apple.Build", "AppleProject", False, "AppleProject", "(System.String,System.String,Microsoft.Build.Utilities.TaskLoggingHelper)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["Microsoft.Apple.Build", "AppleProject", False, "AppleProject", "(System.String,System.String,Microsoft.Build.Utilities.TaskLoggingHelper)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"]
- ["Microsoft.Apple.Build", "AppleProject", False, "get_SdkRoot", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Apple.Build", "AppleProject", False, "set_SdkRoot", "(System.String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["Microsoft.Apple.Build", "AppleSdk", False, "AppleSdk", "(System.String,Microsoft.Build.Utilities.TaskLoggingHelper)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["Microsoft.Apple.Build", "AppleSdk", False, "get_DeveloperRoot", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Apple.Build", "AppleSdk", False, "get_SdkRoot", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]

View File

@@ -5,83 +5,19 @@ extensions:
extensible: neutralModel
data:
- ["Microsoft.DotNet.Build.Tasks", "BuildTask", "Execute", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "BuildTask", "get_BuildEngine", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "BuildTask", "get_HostObject", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "BuildTask", "set_BuildEngine", "(Microsoft.Build.Framework.IBuildEngine)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "BuildTask", "set_HostObject", "(Microsoft.Build.Framework.ITaskHost)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateChecksums", "Execute", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateChecksums", "get_Items", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateChecksums", "set_Items", "(Microsoft.Build.Framework.ITaskItem[])", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateFileVersionProps", "Execute", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateFileVersionProps", "get_Files", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateFileVersionProps", "get_PackageId", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateFileVersionProps", "get_PackageVersion", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateFileVersionProps", "get_PermitDllAndExeFilesLackingFileVersion", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateFileVersionProps", "get_PlatformManifestFile", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateFileVersionProps", "get_PreferredPackages", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateFileVersionProps", "get_PropsFile", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateFileVersionProps", "set_Files", "(Microsoft.Build.Framework.ITaskItem[])", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateFileVersionProps", "set_PackageId", "(System.String)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateFileVersionProps", "set_PackageVersion", "(System.String)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateFileVersionProps", "set_PermitDllAndExeFilesLackingFileVersion", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateFileVersionProps", "set_PlatformManifestFile", "(System.String)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateFileVersionProps", "set_PreferredPackages", "(System.String)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateFileVersionProps", "set_PropsFile", "(System.String)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateRunScript", "Execute", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateRunScript", "get_OutputPath", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateRunScript", "get_RunCommands", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateRunScript", "get_SetCommands", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateRunScript", "get_TemplatePath", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateRunScript", "set_OutputPath", "(System.String)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateRunScript", "set_RunCommands", "(System.String[])", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateRunScript", "set_SetCommands", "(System.String[])", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateRunScript", "set_TemplatePath", "(System.String)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateTestSharedFrameworkDepsFile", "Execute", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateTestSharedFrameworkDepsFile", "get_RuntimeGraphFiles", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateTestSharedFrameworkDepsFile", "get_SharedFrameworkDirectory", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateTestSharedFrameworkDepsFile", "get_TargetRuntimeIdentifier", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateTestSharedFrameworkDepsFile", "set_RuntimeGraphFiles", "(System.String[])", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateTestSharedFrameworkDepsFile", "set_SharedFrameworkDirectory", "(System.String)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "GenerateTestSharedFrameworkDepsFile", "set_TargetRuntimeIdentifier", "(System.String)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "RegenerateDownloadTable", "Execute", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "RegenerateDownloadTable", "get_Branches", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "RegenerateDownloadTable", "get_Platforms", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "RegenerateDownloadTable", "get_ReadmeFile", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "RegenerateDownloadTable", "set_Branches", "(Microsoft.Build.Framework.ITaskItem[])", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "RegenerateDownloadTable", "set_Platforms", "(Microsoft.Build.Framework.ITaskItem[])", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "RegenerateDownloadTable", "set_ReadmeFile", "(System.String)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "RegenerateThirdPartyNotices", "Execute", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "RegenerateThirdPartyNotices", "ExecuteAsync", "(System.Net.Http.HttpClient)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "RegenerateThirdPartyNotices", "get_PotentialTpnPaths", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "RegenerateThirdPartyNotices", "get_TpnFile", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "RegenerateThirdPartyNotices", "get_TpnRepos", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "RegenerateThirdPartyNotices", "set_PotentialTpnPaths", "(System.String[])", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "RegenerateThirdPartyNotices", "set_TpnFile", "(System.String)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "RegenerateThirdPartyNotices", "set_TpnRepos", "(Microsoft.Build.Framework.ITaskItem[])", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnDocument", "Parse", "(System.String[])", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnDocument", "ToString", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnDocument", "get_Preamble", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnDocument", "get_Sections", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnDocument", "set_Preamble", "(System.String)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnDocument", "set_Sections", "(System.Collections.Generic.IEnumerable<Microsoft.DotNet.Build.Tasks.TpnSection>)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSection+ByHeaderNameComparer", "Equals", "(Microsoft.DotNet.Build.Tasks.TpnSection,Microsoft.DotNet.Build.Tasks.TpnSection)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSection+ByHeaderNameComparer", "GetHashCode", "(Microsoft.DotNet.Build.Tasks.TpnSection)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSection", "ToString", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSection", "get_Content", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSection", "get_Header", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSection", "set_Content", "(System.String)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSection", "set_Header", "(Microsoft.DotNet.Build.Tasks.TpnSectionHeader)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSectionHeader", "IsSeparatorLine", "(System.String)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSectionHeader", "ParseAll", "(System.String[])", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSectionHeader", "ToString", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSectionHeader", "get_Format", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSectionHeader", "get_LineLength", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSectionHeader", "get_Name", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSectionHeader", "get_SeparatorLine", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSectionHeader", "get_SingleLineName", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSectionHeader", "get_StartLine", "()", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSectionHeader", "set_Format", "(Microsoft.DotNet.Build.Tasks.TpnSectionHeaderFormat)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSectionHeader", "set_LineLength", "(System.Int32)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSectionHeader", "set_Name", "(System.String)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSectionHeader", "set_SeparatorLine", "(System.String)", "summary", "df-generated"]
- ["Microsoft.DotNet.Build.Tasks", "TpnSectionHeader", "set_StartLine", "(System.Int32)", "summary", "df-generated"]

View File

@@ -13,12 +13,6 @@ extensions:
- ["Microsoft.Extensions.Caching.Distributed", "DistributedCacheEntryExtensions", False, "SetSlidingExpiration", "(Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions,System.TimeSpan)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Distributed", "DistributedCacheEntryExtensions", False, "SetSlidingExpiration", "(Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions,System.TimeSpan)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Distributed", "DistributedCacheEntryExtensions", False, "SetSlidingExpiration", "(Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions,System.TimeSpan)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Distributed", "DistributedCacheEntryOptions", False, "get_AbsoluteExpiration", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Distributed", "DistributedCacheEntryOptions", False, "get_AbsoluteExpirationRelativeToNow", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Distributed", "DistributedCacheEntryOptions", False, "get_SlidingExpiration", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Distributed", "DistributedCacheEntryOptions", False, "set_AbsoluteExpiration", "(System.Nullable<System.DateTimeOffset>)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Distributed", "DistributedCacheEntryOptions", False, "set_AbsoluteExpirationRelativeToNow", "(System.Nullable<System.TimeSpan>)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Distributed", "DistributedCacheEntryOptions", False, "set_SlidingExpiration", "(System.Nullable<System.TimeSpan>)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- addsTo:
pack: codeql/csharp-all
extensible: neutralModel

View File

@@ -33,14 +33,6 @@ extensions:
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheEntryExtensions", False, "SetSlidingExpiration", "(Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions,System.TimeSpan)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheEntryExtensions", False, "SetSlidingExpiration", "(Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions,System.TimeSpan)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheEntryExtensions", False, "SetSlidingExpiration", "(Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions,System.TimeSpan)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheEntryOptions", False, "get_AbsoluteExpiration", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheEntryOptions", False, "get_AbsoluteExpirationRelativeToNow", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheEntryOptions", False, "get_Size", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheEntryOptions", False, "get_SlidingExpiration", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheEntryOptions", False, "set_AbsoluteExpiration", "(System.Nullable<System.DateTimeOffset>)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheEntryOptions", False, "set_AbsoluteExpirationRelativeToNow", "(System.Nullable<System.TimeSpan>)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheEntryOptions", False, "set_Size", "(System.Nullable<System.Int64>)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheEntryOptions", False, "set_SlidingExpiration", "(System.Nullable<System.TimeSpan>)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheOptions", False, "get_Value", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- addsTo:
pack: codeql/csharp-all
@@ -49,21 +41,9 @@ extensions:
- ["Microsoft.Extensions.Caching.Memory", "CacheExtensions", "Get", "(Microsoft.Extensions.Caching.Memory.IMemoryCache,System.Object)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "CacheExtensions", "Get<TItem>", "(Microsoft.Extensions.Caching.Memory.IMemoryCache,System.Object)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "CacheExtensions", "TryGetValue<TItem>", "(Microsoft.Extensions.Caching.Memory.IMemoryCache,System.Object,TItem)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "ICacheEntry", "get_AbsoluteExpiration", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "ICacheEntry", "get_AbsoluteExpirationRelativeToNow", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "ICacheEntry", "get_ExpirationTokens", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "ICacheEntry", "get_Key", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "ICacheEntry", "get_PostEvictionCallbacks", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "ICacheEntry", "get_Priority", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "ICacheEntry", "get_Size", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "ICacheEntry", "get_SlidingExpiration", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "ICacheEntry", "get_Value", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "ICacheEntry", "set_AbsoluteExpiration", "(System.Nullable<System.DateTimeOffset>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "ICacheEntry", "set_AbsoluteExpirationRelativeToNow", "(System.Nullable<System.TimeSpan>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "ICacheEntry", "set_Priority", "(Microsoft.Extensions.Caching.Memory.CacheItemPriority)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "ICacheEntry", "set_Size", "(System.Nullable<System.Int64>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "ICacheEntry", "set_SlidingExpiration", "(System.Nullable<System.TimeSpan>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "ICacheEntry", "set_Value", "(System.Object)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "IMemoryCache", "CreateEntry", "(System.Object)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "IMemoryCache", "GetCurrentStatistics", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "IMemoryCache", "Remove", "(System.Object)", "summary", "df-generated"]
@@ -79,30 +59,3 @@ extensions:
- ["Microsoft.Extensions.Caching.Memory", "MemoryCache", "get_Count", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheEntryOptions", "get_ExpirationTokens", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheEntryOptions", "get_PostEvictionCallbacks", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheEntryOptions", "get_Priority", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheEntryOptions", "set_Priority", "(Microsoft.Extensions.Caching.Memory.CacheItemPriority)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheOptions", "get_Clock", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheOptions", "get_CompactOnMemoryPressure", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheOptions", "get_CompactionPercentage", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheOptions", "get_ExpirationScanFrequency", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheOptions", "get_SizeLimit", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheOptions", "get_TrackLinkedCacheEntries", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheOptions", "get_TrackStatistics", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheOptions", "set_Clock", "(Microsoft.Extensions.Internal.ISystemClock)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheOptions", "set_CompactOnMemoryPressure", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheOptions", "set_CompactionPercentage", "(System.Double)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheOptions", "set_ExpirationScanFrequency", "(System.TimeSpan)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheOptions", "set_SizeLimit", "(System.Nullable<System.Int64>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheOptions", "set_TrackLinkedCacheEntries", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheOptions", "set_TrackStatistics", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheStatistics", "get_CurrentEntryCount", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheStatistics", "get_CurrentEstimatedSize", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheStatistics", "get_TotalHits", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheStatistics", "get_TotalMisses", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheStatistics", "set_CurrentEntryCount", "(System.Int64)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheStatistics", "set_CurrentEstimatedSize", "(System.Nullable<System.Int64>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheStatistics", "set_TotalHits", "(System.Int64)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "MemoryCacheStatistics", "set_TotalMisses", "(System.Int64)", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "PostEvictionCallbackRegistration", "get_EvictionCallback", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "PostEvictionCallbackRegistration", "get_State", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Caching.Memory", "PostEvictionCallbackRegistration", "set_State", "(System.Object)", "summary", "df-generated"]

View File

@@ -22,26 +22,8 @@ extensions:
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingExtensions", "Bind_SimpleConsoleFormatterOptions", "(Microsoft.Extensions.Configuration.IConfiguration,System.Object)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingExtensions", "GetValueCore", "(Microsoft.Extensions.Configuration.IConfiguration,System.Type,System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingExtensions", "ValidateConfigurationKeys", "(System.Type,System.Lazy<System.Collections.Generic.HashSet<System.String>>,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Configuration.BinderOptions)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "get_EmitConfigurationKeyCaches", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "get_MethodsToGen", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "get_Namespaces", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "get_TypesForGen_BindCore", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "get_TypesForGen_BindCoreMain", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "get_TypesForGen_GetCore", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "get_TypesForGen_GetValueCore", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "get_TypesForGen_Initialize", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "get_TypesForGen_ParsePrimitive", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "op_Equality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo,Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "op_Inequality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo,Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "set_EmitConfigurationKeyCaches", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "set_MethodsToGen", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.MethodsToGen_CoreBindingHelper)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "set_Namespaces", "(SourceGenerators.ImmutableEquatableArray<System.String>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "set_TypesForGen_BindCore", "(SourceGenerators.ImmutableEquatableArray<Microsoft.Extensions.Configuration.Binder.SourceGeneration.ComplexTypeSpec>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "set_TypesForGen_BindCoreMain", "(SourceGenerators.ImmutableEquatableArray<Microsoft.Extensions.Configuration.Binder.SourceGeneration.ComplexTypeSpec>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "set_TypesForGen_GetCore", "(SourceGenerators.ImmutableEquatableArray<Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "set_TypesForGen_GetValueCore", "(SourceGenerators.ImmutableEquatableArray<Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "set_TypesForGen_Initialize", "(SourceGenerators.ImmutableEquatableArray<Microsoft.Extensions.Configuration.Binder.SourceGeneration.ObjectSpec>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "BindingHelperInfo", "set_TypesForGen_ParsePrimitive", "(SourceGenerators.ImmutableEquatableArray<Microsoft.Extensions.Configuration.Binder.SourceGeneration.ParsableFromStringSpec>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ComplexTypeSpec", "ComplexTypeSpec", "(Microsoft.CodeAnalysis.ITypeSymbol)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ComplexTypeSpec", "get_EqualityContract", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ComplexTypeSpec", "op_Equality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.ComplexTypeSpec,Microsoft.Extensions.Configuration.Binder.SourceGeneration.ComplexTypeSpec)", "summary", "df-generated"]
@@ -49,24 +31,9 @@ extensions:
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ConfigurationBindingGenerator+Suppressor", "ReportSuppressions", "(Microsoft.CodeAnalysis.Diagnostics.SuppressionAnalysisContext)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ConfigurationBindingGenerator+Suppressor", "get_SupportedSuppressions", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ConfigurationBindingGenerator", "Initialize", "(Microsoft.CodeAnalysis.IncrementalGeneratorInitializationContext)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ConfigurationBindingGenerator", "get_OnSourceEmitting", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InterceptorInfo", "GetInfo", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.MethodsToGen)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InterceptorInfo", "get_ConfigBinder", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InterceptorInfo", "get_ConfigBinder_Bind_instance", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InterceptorInfo", "get_ConfigBinder_Bind_instance_BinderOptions", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InterceptorInfo", "get_ConfigBinder_Bind_key_instance", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InterceptorInfo", "get_MethodsToGen", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InterceptorInfo", "get_OptionsBuilderExt", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InterceptorInfo", "get_ServiceCollectionExt", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InterceptorInfo", "op_Equality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.InterceptorInfo,Microsoft.Extensions.Configuration.Binder.SourceGeneration.InterceptorInfo)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InterceptorInfo", "op_Inequality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.InterceptorInfo,Microsoft.Extensions.Configuration.Binder.SourceGeneration.InterceptorInfo)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InterceptorInfo", "set_ConfigBinder", "(SourceGenerators.ImmutableEquatableArray<Microsoft.Extensions.Configuration.Binder.SourceGeneration.InvocationLocationInfo>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InterceptorInfo", "set_ConfigBinder_Bind_instance", "(SourceGenerators.ImmutableEquatableArray<Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypedInterceptorInvocationInfo>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InterceptorInfo", "set_ConfigBinder_Bind_instance_BinderOptions", "(SourceGenerators.ImmutableEquatableArray<Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypedInterceptorInvocationInfo>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InterceptorInfo", "set_ConfigBinder_Bind_key_instance", "(SourceGenerators.ImmutableEquatableArray<Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypedInterceptorInvocationInfo>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InterceptorInfo", "set_MethodsToGen", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.MethodsToGen)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InterceptorInfo", "set_OptionsBuilderExt", "(SourceGenerators.ImmutableEquatableArray<Microsoft.Extensions.Configuration.Binder.SourceGeneration.InvocationLocationInfo>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InterceptorInfo", "set_ServiceCollectionExt", "(SourceGenerators.ImmutableEquatableArray<Microsoft.Extensions.Configuration.Binder.SourceGeneration.InvocationLocationInfo>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InvocationLocationInfo", "InvocationLocationInfo", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.MethodsToGen,Microsoft.CodeAnalysis.Operations.IInvocationOperation)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InvocationLocationInfo", "get_CharacterNumber", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "InvocationLocationInfo", "get_FilePath", "()", "summary", "df-generated"]
@@ -77,15 +44,11 @@ extensions:
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "MemberSpec", "MemberSpec", "(Microsoft.CodeAnalysis.ISymbol,SourceGenerators.TypeRef)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "MemberSpec", "get_CanGet", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "MemberSpec", "get_CanSet", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "MemberSpec", "get_ConfigurationKeyName", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "MemberSpec", "get_DefaultValueExpr", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "MemberSpec", "get_EqualityContract", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "MemberSpec", "get_Name", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "MemberSpec", "get_TypeRef", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "MemberSpec", "op_Equality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.MemberSpec,Microsoft.Extensions.Configuration.Binder.SourceGeneration.MemberSpec)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "MemberSpec", "op_Inequality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.MemberSpec,Microsoft.Extensions.Configuration.Binder.SourceGeneration.MemberSpec)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "MemberSpec", "set_ConfigurationKeyName", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "MemberSpec", "set_DefaultValueExpr", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ObjectSpec", "ObjectSpec", "(Microsoft.CodeAnalysis.INamedTypeSymbol,Microsoft.Extensions.Configuration.Binder.SourceGeneration.ObjectInstantiationStrategy,SourceGenerators.ImmutableEquatableArray<Microsoft.Extensions.Configuration.Binder.SourceGeneration.PropertySpec>,SourceGenerators.ImmutableEquatableArray<Microsoft.Extensions.Configuration.Binder.SourceGeneration.ParameterSpec>,System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ObjectSpec", "get_ConstructorParameters", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ObjectSpec", "get_EqualityContract", "()", "summary", "df-generated"]
@@ -98,48 +61,29 @@ extensions:
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ParameterSpec", "get_CanGet", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ParameterSpec", "get_CanSet", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ParameterSpec", "get_EqualityContract", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ParameterSpec", "get_ErrorOnFailedBinding", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ParameterSpec", "get_RefKind", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ParameterSpec", "op_Equality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.ParameterSpec,Microsoft.Extensions.Configuration.Binder.SourceGeneration.ParameterSpec)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ParameterSpec", "op_Inequality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.ParameterSpec,Microsoft.Extensions.Configuration.Binder.SourceGeneration.ParameterSpec)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ParameterSpec", "set_ErrorOnFailedBinding", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ParsableFromStringSpec", "ParsableFromStringSpec", "(Microsoft.CodeAnalysis.ITypeSymbol)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ParsableFromStringSpec", "get_EqualityContract", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ParsableFromStringSpec", "get_StringParsableTypeKind", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ParsableFromStringSpec", "op_Equality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.ParsableFromStringSpec,Microsoft.Extensions.Configuration.Binder.SourceGeneration.ParsableFromStringSpec)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ParsableFromStringSpec", "op_Inequality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.ParsableFromStringSpec,Microsoft.Extensions.Configuration.Binder.SourceGeneration.ParsableFromStringSpec)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "ParsableFromStringSpec", "set_StringParsableTypeKind", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.StringParsableTypeKind)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "PropertySpec", "PropertySpec", "(Microsoft.CodeAnalysis.IPropertySymbol,SourceGenerators.TypeRef)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "PropertySpec", "get_CanGet", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "PropertySpec", "get_CanSet", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "PropertySpec", "get_EqualityContract", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "PropertySpec", "get_IsStatic", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "PropertySpec", "get_MatchingCtorParam", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "PropertySpec", "get_SetOnInit", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "PropertySpec", "op_Equality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.PropertySpec,Microsoft.Extensions.Configuration.Binder.SourceGeneration.PropertySpec)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "PropertySpec", "op_Inequality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.PropertySpec,Microsoft.Extensions.Configuration.Binder.SourceGeneration.PropertySpec)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "PropertySpec", "set_MatchingCtorParam", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.ParameterSpec)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "SimpleTypeSpec", "SimpleTypeSpec", "(Microsoft.CodeAnalysis.ITypeSymbol)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "SimpleTypeSpec", "get_EqualityContract", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "SimpleTypeSpec", "op_Equality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.SimpleTypeSpec,Microsoft.Extensions.Configuration.Binder.SourceGeneration.SimpleTypeSpec)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "SimpleTypeSpec", "op_Inequality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.SimpleTypeSpec,Microsoft.Extensions.Configuration.Binder.SourceGeneration.SimpleTypeSpec)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "SourceGenerationSpec", "get_BindingHelperInfo", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "SourceGenerationSpec", "get_ConfigTypes", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "SourceGenerationSpec", "get_EmitEnumParseMethod", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "SourceGenerationSpec", "get_EmitGenericParseEnum", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "SourceGenerationSpec", "get_EmitThrowIfNullMethod", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "SourceGenerationSpec", "get_InterceptorInfo", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "SourceGenerationSpec", "op_Equality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.SourceGenerationSpec,Microsoft.Extensions.Configuration.Binder.SourceGeneration.SourceGenerationSpec)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "SourceGenerationSpec", "op_Inequality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.SourceGenerationSpec,Microsoft.Extensions.Configuration.Binder.SourceGeneration.SourceGenerationSpec)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "SourceGenerationSpec", "set_BindingHelperInfo", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "SourceGenerationSpec", "set_ConfigTypes", "(SourceGenerators.ImmutableEquatableArray<Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "SourceGenerationSpec", "set_EmitEnumParseMethod", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "SourceGenerationSpec", "set_EmitGenericParseEnum", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "SourceGenerationSpec", "set_EmitThrowIfNullMethod", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "SourceGenerationSpec", "set_InterceptorInfo", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.InterceptorInfo)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypeSpec", "TypeSpec", "(Microsoft.CodeAnalysis.ITypeSymbol)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypeSpec", "get_DisplayString", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypeSpec", "get_EffectiveTypeRef", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypeSpec", "get_EqualityContract", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypeSpec", "get_FullName", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypeSpec", "get_IdentifierCompatibleSubstring", "()", "summary", "df-generated"]
@@ -147,13 +91,9 @@ extensions:
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypeSpec", "get_TypeRef", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypeSpec", "op_Equality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec,Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypeSpec", "op_Inequality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec,Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypeSpec", "set_EffectiveTypeRef", "(SourceGenerators.TypeRef)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypedInterceptorInvocationInfo+Builder", "Builder", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.MethodsToGen,Microsoft.Extensions.Configuration.Binder.SourceGeneration.ComplexTypeSpec)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypedInterceptorInvocationInfo+Builder", "RegisterInvocation", "(Microsoft.CodeAnalysis.Operations.IInvocationOperation)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypedInterceptorInvocationInfo+Builder", "ToIncrementalValue", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypedInterceptorInvocationInfo", "get_Locations", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypedInterceptorInvocationInfo", "get_TargetType", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypedInterceptorInvocationInfo", "TypedInterceptorInvocationInfo", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.ComplexTypeSpec,SourceGenerators.ImmutableEquatableArray<Microsoft.Extensions.Configuration.Binder.SourceGeneration.InvocationLocationInfo>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypedInterceptorInvocationInfo", "op_Equality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypedInterceptorInvocationInfo,Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypedInterceptorInvocationInfo)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypedInterceptorInvocationInfo", "op_Inequality", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypedInterceptorInvocationInfo,Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypedInterceptorInvocationInfo)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypedInterceptorInvocationInfo", "set_Locations", "(SourceGenerators.ImmutableEquatableArray<Microsoft.Extensions.Configuration.Binder.SourceGeneration.InvocationLocationInfo>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Binder.SourceGeneration", "TypedInterceptorInvocationInfo", "set_TargetType", "(Microsoft.Extensions.Configuration.Binder.SourceGeneration.ComplexTypeSpec)", "summary", "df-generated"]

View File

@@ -6,10 +6,4 @@ extensions:
data:
- ["Microsoft.Extensions.Configuration.CommandLine", "CommandLineConfigurationProvider", "CommandLineConfigurationProvider", "(System.Collections.Generic.IEnumerable<System.String>,System.Collections.Generic.IDictionary<System.String,System.String>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.CommandLine", "CommandLineConfigurationProvider", "Load", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.CommandLine", "CommandLineConfigurationProvider", "get_Args", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.CommandLine", "CommandLineConfigurationProvider", "set_Args", "(System.Collections.Generic.IEnumerable<System.String>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.CommandLine", "CommandLineConfigurationSource", "Build", "(Microsoft.Extensions.Configuration.IConfigurationBuilder)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.CommandLine", "CommandLineConfigurationSource", "get_Args", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.CommandLine", "CommandLineConfigurationSource", "get_SwitchMappings", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.CommandLine", "CommandLineConfigurationSource", "set_Args", "(System.Collections.Generic.IEnumerable<System.String>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.CommandLine", "CommandLineConfigurationSource", "set_SwitchMappings", "(System.Collections.Generic.IDictionary<System.String,System.String>)", "summary", "df-generated"]

View File

@@ -12,5 +12,3 @@ extensions:
data:
- ["Microsoft.Extensions.Configuration.EnvironmentVariables", "EnvironmentVariablesConfigurationProvider", "Load", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.EnvironmentVariables", "EnvironmentVariablesConfigurationSource", "Build", "(Microsoft.Extensions.Configuration.IConfigurationBuilder)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.EnvironmentVariables", "EnvironmentVariablesConfigurationSource", "get_Prefix", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.EnvironmentVariables", "EnvironmentVariablesConfigurationSource", "set_Prefix", "(System.String)", "summary", "df-generated"]

View File

@@ -11,5 +11,3 @@ extensions:
extensible: neutralModel
data:
- ["Microsoft.Extensions.Configuration.Memory", "MemoryConfigurationProvider", "Add", "(System.String,System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Memory", "MemoryConfigurationSource", "get_InitialData", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration.Memory", "MemoryConfigurationSource", "set_InitialData", "(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<System.String,System.String>>)", "summary", "df-generated"]

View File

@@ -10,8 +10,6 @@ extensions:
- ["Microsoft.Extensions.Configuration", "ChainedConfigurationProvider", False, "GetReloadToken", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ChainedConfigurationProvider", False, "TryGet", "(System.String,System.String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ChainedConfigurationProvider", False, "get_Configuration", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "CommandLineConfigurationExtensions", False, "AddCommandLine", "(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "CommandLineConfigurationExtensions", False, "AddCommandLine", "(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String[],System.Collections.Generic.IDictionary<System.String,System.String>)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationBinder", False, "GetValue", "(Microsoft.Extensions.Configuration.IConfiguration,System.Type,System.String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationBinder", False, "GetValue", "(Microsoft.Extensions.Configuration.IConfiguration,System.Type,System.String,System.Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationBinder", False, "GetValue", "(Microsoft.Extensions.Configuration.IConfiguration,System.Type,System.String,System.Object)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"]
@@ -26,7 +24,6 @@ extensions:
- ["Microsoft.Extensions.Configuration", "ConfigurationExtensions", False, "GetRequiredSection", "(Microsoft.Extensions.Configuration.IConfiguration,System.String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationManager", False, "Add", "(Microsoft.Extensions.Configuration.IConfigurationSource)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationManager", False, "Add", "(Microsoft.Extensions.Configuration.IConfigurationSource)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationManager", False, "Build", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationManager", False, "GetReloadToken", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationManager", False, "GetSection", "(System.String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationManager", False, "GetSection", "(System.String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
@@ -42,14 +39,11 @@ extensions:
- ["Microsoft.Extensions.Configuration", "ConfigurationRoot", False, "GetReloadToken", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationRoot", False, "GetSection", "(System.String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationRoot", False, "GetSection", "(System.String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationRoot", False, "get_Item", "(System.String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationRoot", False, "get_Providers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationRootExtensions", False, "GetDebugView", "(Microsoft.Extensions.Configuration.IConfigurationRoot)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationSection", False, "ConfigurationSection", "(Microsoft.Extensions.Configuration.IConfigurationRoot,System.String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationSection", False, "ConfigurationSection", "(Microsoft.Extensions.Configuration.IConfigurationRoot,System.String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationSection", False, "get_Item", "(System.String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationSection", False, "get_Path", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationSection", False, "get_Value", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "EnvironmentVariablesExtensions", False, "AddEnvironmentVariables", "(Microsoft.Extensions.Configuration.IConfigurationBuilder)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "EnvironmentVariablesExtensions", False, "AddEnvironmentVariables", "(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileConfigurationExtensions", False, "SetBasePath", "(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
@@ -83,24 +77,15 @@ extensions:
pack: codeql/csharp-all
extensible: neutralModel
data:
- ["Microsoft.Extensions.Configuration", "BinderOptions", "get_BindNonPublicProperties", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "BinderOptions", "get_ErrorOnUnknownConfiguration", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "BinderOptions", "set_BindNonPublicProperties", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "BinderOptions", "set_ErrorOnUnknownConfiguration", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ChainedConfigurationProvider", "ChainedConfigurationProvider", "(Microsoft.Extensions.Configuration.ChainedConfigurationSource)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ChainedConfigurationProvider", "Dispose", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ChainedConfigurationProvider", "Load", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ChainedConfigurationProvider", "Set", "(System.String,System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ChainedConfigurationSource", "Build", "(Microsoft.Extensions.Configuration.IConfigurationBuilder)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ChainedConfigurationSource", "get_Configuration", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ChainedConfigurationSource", "get_ShouldDisposeConfiguration", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ChainedConfigurationSource", "set_Configuration", "(Microsoft.Extensions.Configuration.IConfiguration)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ChainedConfigurationSource", "set_ShouldDisposeConfiguration", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationBinder", "Bind", "(Microsoft.Extensions.Configuration.IConfiguration,System.Object)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationBinder", "Bind", "(Microsoft.Extensions.Configuration.IConfiguration,System.String,System.Object)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationBinder", "Get", "(Microsoft.Extensions.Configuration.IConfiguration,System.Type)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationBinder", "Get<T>", "(Microsoft.Extensions.Configuration.IConfiguration)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationBuilder", "Build", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationBuilder", "get_Properties", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationDebugViewContext", "ConfigurationDebugViewContext", "(System.String,System.String,System.String,Microsoft.Extensions.Configuration.IConfigurationProvider)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationDebugViewContext", "get_ConfigurationProvider", "()", "summary", "df-generated"]
@@ -117,7 +102,6 @@ extensions:
- ["Microsoft.Extensions.Configuration", "ConfigurationManager", "Dispose", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationManager", "GetChildren", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationManager", "Reload", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationManager", "get_Item", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationManager", "get_Providers", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationManager", "set_Item", "(System.String,System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationProvider", "Load", "()", "summary", "df-generated"]
@@ -125,12 +109,8 @@ extensions:
- ["Microsoft.Extensions.Configuration", "ConfigurationProvider", "Set", "(System.String,System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationProvider", "ToString", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationProvider", "TryGet", "(System.String,System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationProvider", "get_Data", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationProvider", "set_Data", "(System.Collections.Generic.IDictionary<System.String,System.String>)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationReloadToken", "OnReload", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationReloadToken", "get_ActiveChangeCallbacks", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationReloadToken", "get_HasChanged", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationReloadToken", "set_ActiveChangeCallbacks", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationRoot", "Dispose", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationRoot", "GetChildren", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationRoot", "Reload", "()", "summary", "df-generated"]
@@ -140,7 +120,6 @@ extensions:
- ["Microsoft.Extensions.Configuration", "ConfigurationSection", "GetSection", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationSection", "get_Key", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationSection", "set_Item", "(System.String,System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "ConfigurationSection", "set_Value", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileConfigurationExtensions", "GetFileLoadExceptionHandler", "(Microsoft.Extensions.Configuration.IConfigurationBuilder)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileConfigurationExtensions", "GetFileProvider", "(Microsoft.Extensions.Configuration.IConfigurationBuilder)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileConfigurationProvider", "Dispose", "()", "summary", "df-generated"]
@@ -153,30 +132,11 @@ extensions:
- ["Microsoft.Extensions.Configuration", "FileConfigurationSource", "Build", "(Microsoft.Extensions.Configuration.IConfigurationBuilder)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileConfigurationSource", "EnsureDefaults", "(Microsoft.Extensions.Configuration.IConfigurationBuilder)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileConfigurationSource", "ResolveFileProvider", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileConfigurationSource", "get_FileProvider", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileConfigurationSource", "get_OnLoadException", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileConfigurationSource", "get_Optional", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileConfigurationSource", "get_Path", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileConfigurationSource", "get_ReloadDelay", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileConfigurationSource", "get_ReloadOnChange", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileConfigurationSource", "set_FileProvider", "(Microsoft.Extensions.FileProviders.IFileProvider)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileConfigurationSource", "set_Optional", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileConfigurationSource", "set_Path", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileConfigurationSource", "set_ReloadDelay", "(System.Int32)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileConfigurationSource", "set_ReloadOnChange", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileLoadExceptionContext", "get_Exception", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileLoadExceptionContext", "get_Ignore", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileLoadExceptionContext", "get_Provider", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileLoadExceptionContext", "set_Exception", "(System.Exception)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileLoadExceptionContext", "set_Ignore", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "FileLoadExceptionContext", "set_Provider", "(Microsoft.Extensions.Configuration.FileConfigurationProvider)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "IConfiguration", "GetChildren", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "IConfiguration", "GetReloadToken", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "IConfiguration", "GetSection", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "IConfiguration", "get_Item", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "IConfiguration", "set_Item", "(System.String,System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "IConfigurationBuilder", "Add", "(Microsoft.Extensions.Configuration.IConfigurationSource)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "IConfigurationBuilder", "Build", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "IConfigurationBuilder", "get_Properties", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "IConfigurationBuilder", "get_Sources", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "IConfigurationProvider", "GetChildKeys", "(System.Collections.Generic.IEnumerable<System.String>,System.String)", "summary", "df-generated"]
@@ -188,13 +148,9 @@ extensions:
- ["Microsoft.Extensions.Configuration", "IConfigurationRoot", "get_Providers", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "IConfigurationSection", "get_Key", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "IConfigurationSection", "get_Path", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "IConfigurationSection", "get_Value", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "IConfigurationSection", "set_Value", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "IConfigurationSource", "Build", "(Microsoft.Extensions.Configuration.IConfigurationBuilder)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "StreamConfigurationProvider", "Load", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "StreamConfigurationProvider", "Load", "(System.IO.Stream)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "StreamConfigurationProvider", "StreamConfigurationProvider", "(Microsoft.Extensions.Configuration.StreamConfigurationSource)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "StreamConfigurationProvider", "get_Source", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "StreamConfigurationSource", "Build", "(Microsoft.Extensions.Configuration.IConfigurationBuilder)", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "StreamConfigurationSource", "get_Stream", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.Configuration", "StreamConfigurationSource", "set_Stream", "(System.IO.Stream)", "summary", "df-generated"]

View File

@@ -23,16 +23,12 @@ extensions:
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ClassWithAmbiguousCtors", "ClassWithAmbiguousCtors", "(Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeService,System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ClassWithAmbiguousCtors", "ClassWithAmbiguousCtors", "(Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeService,System.String,System.Int32)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ClassWithAmbiguousCtors", "ClassWithAmbiguousCtors", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ClassWithAmbiguousCtors", "get_CtorUsed", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ClassWithAmbiguousCtors", "get_Data1", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ClassWithAmbiguousCtors", "get_Data2", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ClassWithAmbiguousCtors", "get_FakeService", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ClassWithAmbiguousCtors", "set_CtorUsed", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ClassWithAmbiguousCtorsAndAttribute", "ClassWithAmbiguousCtorsAndAttribute", "(Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeService,Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeOuterService,System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ClassWithAmbiguousCtorsAndAttribute", "ClassWithAmbiguousCtorsAndAttribute", "(Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeService,System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ClassWithAmbiguousCtorsAndAttribute", "ClassWithAmbiguousCtorsAndAttribute", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ClassWithAmbiguousCtorsAndAttribute", "get_CtorUsed", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ClassWithAmbiguousCtorsAndAttribute", "set_CtorUsed", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ClassWithClassConstraint<T>", "get_Value", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ClassWithInterfaceConstraint<T>", "ClassWithInterfaceConstraint", "(T)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ClassWithInterfaceConstraint<T>", "get_Value", "()", "summary", "df-generated"]
@@ -50,9 +46,7 @@ extensions:
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ConstrainedFakeOpenGenericService<TVal>", "ConstrainedFakeOpenGenericService", "(TVal)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ConstrainedFakeOpenGenericService<TVal>", "get_Value", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "CreationCountFakeService", "CreationCountFakeService", "(Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeService)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "CreationCountFakeService", "get_InstanceCount", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "CreationCountFakeService", "get_InstanceId", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "CreationCountFakeService", "set_InstanceCount", "(System.Int32)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "FakeDisposableCallbackInnerService", "FakeDisposableCallbackInnerService", "(Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeDisposeCallback)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "FakeDisposableCallbackOuterService", "FakeDisposableCallbackOuterService", "(Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeService,System.Collections.Generic.IEnumerable<Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeMultipleService>,Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeDisposeCallback)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "FakeDisposableCallbackOuterService", "get_MultipleServices", "()", "summary", "df-generated"]
@@ -66,26 +60,12 @@ extensions:
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "FakeOuterService", "get_MultipleServices", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "FakeOuterService", "get_SingleService", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "FakeService", "Dispose", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "FakeService", "get_Disposed", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "FakeService", "get_Value", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "FakeService", "set_Disposed", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "FakeService", "set_Value", "(Microsoft.Extensions.DependencyInjection.Specification.Fakes.PocoClass)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "IFactoryService", "get_FakeService", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "IFactoryService", "get_Value", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "IFakeOpenGenericService<TValue>", "get_Value", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "IFakeOuterService", "get_MultipleServices", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "IFakeOuterService", "get_SingleService", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ScopedFactoryService", "get_FakeService", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ScopedFactoryService", "set_FakeService", "(Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeService)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ServiceAcceptingFactoryService", "ServiceAcceptingFactoryService", "(Microsoft.Extensions.DependencyInjection.Specification.Fakes.ScopedFactoryService,Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFactoryService)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ServiceAcceptingFactoryService", "get_ScopedService", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ServiceAcceptingFactoryService", "get_TransientService", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ServiceAcceptingFactoryService", "set_ScopedService", "(Microsoft.Extensions.DependencyInjection.Specification.Fakes.ScopedFactoryService)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "ServiceAcceptingFactoryService", "set_TransientService", "(Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFactoryService)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "TransientFactoryService", "get_FakeService", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "TransientFactoryService", "get_Value", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "TransientFactoryService", "set_FakeService", "(Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeService)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "TransientFactoryService", "set_Value", "(System.Int32)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "TypeWithSupersetConstructors", "TypeWithSupersetConstructors", "(Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFactoryService)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "TypeWithSupersetConstructors", "TypeWithSupersetConstructors", "(Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeMultipleService,Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFactoryService,Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeService,Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeScopedService)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification.Fakes", "TypeWithSupersetConstructors", "TypeWithSupersetConstructors", "(Microsoft.Extensions.DependencyInjection.Specification.Fakes.IFakeService)", "summary", "df-generated"]

View File

@@ -10,10 +10,6 @@ extensions:
extensible: neutralModel
data:
- ["Microsoft.Extensions.DependencyInjection.Specification", "ClassWithOptionalArgsCtor", "ClassWithOptionalArgsCtor", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification", "ClassWithOptionalArgsCtor", "get_Whatever", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification", "ClassWithOptionalArgsCtor", "set_Whatever", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification", "ClassWithOptionalArgsCtorWithStructs+StructWithPublicDefaultConstructor", "get_ConstructorInvoked", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification", "ClassWithOptionalArgsCtorWithStructs+StructWithPublicDefaultConstructor", "set_ConstructorInvoked", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification", "ClassWithOptionalArgsCtorWithStructs", "ClassWithOptionalArgsCtorWithStructs", "(System.DateTime,System.DateTime,System.TimeSpan,System.TimeSpan,System.DateTimeOffset,System.DateTimeOffset,System.Guid,System.Guid,Microsoft.Extensions.DependencyInjection.Specification.ClassWithOptionalArgsCtorWithStructs+CustomStruct,Microsoft.Extensions.DependencyInjection.Specification.ClassWithOptionalArgsCtorWithStructs+CustomStruct,System.Nullable<System.ConsoleColor>,System.Nullable<System.ConsoleColor>,System.Nullable<System.Int32>,System.Nullable<System.Int32>,Microsoft.Extensions.DependencyInjection.Specification.ClassWithOptionalArgsCtorWithStructs+StructWithPublicDefaultConstructor)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification", "ClassWithOptionalArgsCtorWithStructs", "get_Color", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection.Specification", "ClassWithOptionalArgsCtorWithStructs", "get_ColorNull", "()", "summary", "df-generated"]

View File

@@ -171,10 +171,6 @@ extensions:
- ["Microsoft.Extensions.DependencyInjection", "ServiceProviderKeyedServiceExtensions", "GetKeyedServices<T>", "(System.IServiceProvider,System.Object)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection", "ServiceProviderKeyedServiceExtensions", "GetRequiredKeyedService", "(System.IServiceProvider,System.Type,System.Object)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection", "ServiceProviderKeyedServiceExtensions", "GetRequiredKeyedService<T>", "(System.IServiceProvider,System.Object)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection", "ServiceProviderOptions", "get_ValidateOnBuild", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection", "ServiceProviderOptions", "get_ValidateScopes", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection", "ServiceProviderOptions", "set_ValidateOnBuild", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection", "ServiceProviderOptions", "set_ValidateScopes", "(System.Boolean)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection", "ServiceProviderServiceExtensions", "CreateAsyncScope", "(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection", "ServiceProviderServiceExtensions", "CreateAsyncScope", "(System.IServiceProvider)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyInjection", "ServiceProviderServiceExtensions", "CreateScope", "(System.IServiceProvider)", "summary", "df-generated"]

View File

@@ -80,20 +80,12 @@ extensions:
- ["Microsoft.Extensions.DependencyModel", "Library", "get_Type", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "Library", "get_Version", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "ResourceAssembly", "ResourceAssembly", "(System.String,System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "ResourceAssembly", "get_Locale", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "ResourceAssembly", "get_Path", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "ResourceAssembly", "set_Locale", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "ResourceAssembly", "set_Path", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "RuntimeAssembly", "get_Name", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "RuntimeAssembly", "get_Path", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "RuntimeAssetGroup", "RuntimeAssetGroup", "(System.String,System.String[])", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "RuntimeAssetGroup", "get_Runtime", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "RuntimeFallbacks", "RuntimeFallbacks", "(System.String,System.Collections.Generic.IEnumerable<System.String>)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "RuntimeFallbacks", "RuntimeFallbacks", "(System.String,System.String[])", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "RuntimeFallbacks", "get_Fallbacks", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "RuntimeFallbacks", "get_Runtime", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "RuntimeFallbacks", "set_Fallbacks", "(System.Collections.Generic.IReadOnlyList<System.String>)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "RuntimeFallbacks", "set_Runtime", "(System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "RuntimeFile", "RuntimeFile", "(System.String,System.String,System.String)", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "RuntimeFile", "get_AssemblyVersion", "()", "summary", "df-generated"]
- ["Microsoft.Extensions.DependencyModel", "RuntimeFile", "get_FileVersion", "()", "summary", "df-generated"]

Some files were not shown because too many files have changed in this diff Show More