mirror of
https://github.com/github/codeql.git
synced 2026-05-01 11:45:14 +02:00
Merge remote-tracking branch 'origin/main' into ruby/rails-cookie-config
This commit is contained in:
@@ -11,7 +11,9 @@
|
||||
"misc/legacy-support/*/qlpack.yml",
|
||||
"misc/suite-helpers/qlpack.yml",
|
||||
"ruby/extractor-pack/codeql-extractor.yml",
|
||||
"ruby/ql/consistency-queries/qlpack.yml"
|
||||
"ruby/ql/consistency-queries/qlpack.yml",
|
||||
"ql/ql/consistency-queries/qlpack.yml",
|
||||
"ql/extractor-pack/codeql-extractor.yml"
|
||||
],
|
||||
"versionPolicies": {
|
||||
"default": {
|
||||
|
||||
3
.github/labeler.yml
vendored
3
.github/labeler.yml
vendored
@@ -26,3 +26,6 @@ documentation:
|
||||
- "**/*.qhelp"
|
||||
- "**/*.md"
|
||||
- docs/**/*
|
||||
|
||||
"QL-for-QL":
|
||||
- ql/**/*
|
||||
1
.github/workflows/check-change-note.yml
vendored
1
.github/workflows/check-change-note.yml
vendored
@@ -7,6 +7,7 @@ on:
|
||||
- "*/ql/src/**/*.ql"
|
||||
- "*/ql/src/**/*.qll"
|
||||
- "!**/experimental/**"
|
||||
- "!ql/**"
|
||||
|
||||
jobs:
|
||||
check-change-note:
|
||||
|
||||
192
.github/workflows/ql-for-ql-build.yml
vendored
Normal file
192
.github/workflows/ql-for-ql-build.yml
vendored
Normal file
@@ -0,0 +1,192 @@
|
||||
name: Run QL for QL
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
branches: [main]
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
|
||||
jobs:
|
||||
queries:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Find codeql
|
||||
id: find-codeql
|
||||
uses: github/codeql-action/init@erik-krogh/ql
|
||||
with:
|
||||
languages: javascript # does not matter
|
||||
- name: Get CodeQL version
|
||||
id: get-codeql-version
|
||||
run: |
|
||||
echo "::set-output name=version::$("${CODEQL}" --version | head -n 1 | rev | cut -d " " -f 1 | rev)"
|
||||
shell: bash
|
||||
env:
|
||||
CODEQL: ${{ steps.find-codeql.outputs.codeql-path }}
|
||||
- name: Cache queries
|
||||
id: cache-queries
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ${{ runner.temp }}/query-pack.zip
|
||||
key: queries-${{ hashFiles('ql/**/*.ql*') }}-${{ hashFiles('ql/ql/src/ql.dbscheme*') }}-${{ steps.get-codeql-version.outputs.version }}
|
||||
- name: Build query pack
|
||||
if: steps.cache-queries.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd ql/ql/src
|
||||
"${CODEQL}" pack create
|
||||
cd .codeql/pack/codeql/ql-all/0.0.0
|
||||
zip "${PACKZIP}" -r .
|
||||
env:
|
||||
CODEQL: ${{ steps.find-codeql.outputs.codeql-path }}
|
||||
PACKZIP: ${{ runner.temp }}/query-pack.zip
|
||||
- name: Upload query pack
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: query-pack-zip
|
||||
path: ${{ runner.temp }}/query-pack.zip
|
||||
|
||||
extractors:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Cache entire extractor
|
||||
id: cache-extractor
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: |
|
||||
ql/target/release/ql-autobuilder
|
||||
ql/target/release/ql-autobuilder.exe
|
||||
ql/target/release/ql-extractor
|
||||
ql/target/release/ql-extractor.exe
|
||||
key: ${{ runner.os }}-extractor-${{ hashFiles('ql/**/Cargo.lock') }}-${{ hashFiles('ql/**/*.rs') }}
|
||||
- name: Cache cargo
|
||||
if: steps.cache-extractor.outputs.cache-hit != 'true'
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
ql/target
|
||||
key: ${{ runner.os }}-rust-cargo-${{ hashFiles('ql/**/Cargo.lock') }}
|
||||
- name: Check formatting
|
||||
if: steps.cache-extractor.outputs.cache-hit != 'true'
|
||||
run: cd ql; cargo fmt --all -- --check
|
||||
- name: Build
|
||||
if: steps.cache-extractor.outputs.cache-hit != 'true'
|
||||
run: cd ql; cargo build --verbose
|
||||
- name: Run tests
|
||||
if: steps.cache-extractor.outputs.cache-hit != 'true'
|
||||
run: cd ql; cargo test --verbose
|
||||
- name: Release build
|
||||
if: steps.cache-extractor.outputs.cache-hit != 'true'
|
||||
run: cd ql; cargo build --release
|
||||
- name: Generate dbscheme
|
||||
if: steps.cache-extractor.outputs.cache-hit != 'true'
|
||||
run: ql/target/release/ql-generator --dbscheme ql/ql/src/ql.dbscheme --library ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: extractor-ubuntu-latest
|
||||
path: |
|
||||
ql/target/release/ql-autobuilder
|
||||
ql/target/release/ql-autobuilder.exe
|
||||
ql/target/release/ql-extractor
|
||||
ql/target/release/ql-extractor.exe
|
||||
retention-days: 1
|
||||
package:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs:
|
||||
- extractors
|
||||
- queries
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: query-pack-zip
|
||||
path: query-pack-zip
|
||||
- uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: extractor-ubuntu-latest
|
||||
path: linux64
|
||||
- run: |
|
||||
unzip query-pack-zip/*.zip -d pack
|
||||
cp -r ql/codeql-extractor.yml ql/tools ql/ql/src/ql.dbscheme.stats pack/
|
||||
mkdir -p pack/tools/linux64
|
||||
if [[ -f linux64/ql-autobuilder ]]; then
|
||||
cp linux64/ql-autobuilder pack/tools/linux64/autobuilder
|
||||
chmod +x pack/tools/linux64/autobuilder
|
||||
fi
|
||||
if [[ -f linux64/ql-extractor ]]; then
|
||||
cp linux64/ql-extractor pack/tools/linux64/extractor
|
||||
chmod +x pack/tools/linux64/extractor
|
||||
fi
|
||||
cd pack
|
||||
zip -rq ../codeql-ql.zip .
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: codeql-ql-pack
|
||||
path: codeql-ql.zip
|
||||
retention-days: 1
|
||||
analyze:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
folder: [cpp, csharp, java, javascript, python, ql, ruby]
|
||||
|
||||
needs:
|
||||
- package
|
||||
|
||||
steps:
|
||||
- name: Download pack
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: codeql-ql-pack
|
||||
path: ${{ runner.temp }}/codeql-ql-pack-artifact
|
||||
|
||||
- name: Prepare pack
|
||||
run: |
|
||||
unzip "${PACK_ARTIFACT}/*.zip" -d "${PACK}"
|
||||
env:
|
||||
PACK_ARTIFACT: ${{ runner.temp }}/codeql-ql-pack-artifact
|
||||
PACK: ${{ runner.temp }}/pack
|
||||
- name: Hack codeql-action options
|
||||
run: |
|
||||
JSON=$(jq -nc --arg pack "${PACK}" '.resolve.queries=["--search-path", $pack] | .resolve.extractor=["--search-path", $pack] | .database.init=["--search-path", $pack]')
|
||||
echo "CODEQL_ACTION_EXTRA_OPTIONS=${JSON}" >> ${GITHUB_ENV}
|
||||
env:
|
||||
PACK: ${{ runner.temp }}/pack
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
- name: Create CodeQL config file
|
||||
run: |
|
||||
echo "paths:" > ${CONF}
|
||||
echo " - ${FOLDER}" >> ${CONF}
|
||||
echo "paths-ignore:" >> ${CONF}
|
||||
echo " - ql/ql/test" >> ${CONF}
|
||||
echo "Config file: "
|
||||
cat ${CONF}
|
||||
env:
|
||||
CONF: ./ql-for-ql-config.yml
|
||||
FOLDER: ${{ matrix.folder }}
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@erik-krogh/ql
|
||||
with:
|
||||
languages: ql
|
||||
db-location: ${{ runner.temp }}/db
|
||||
config-file: ./ql-for-ql-config.yml
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@erik-krogh/ql
|
||||
with:
|
||||
category: "ql-for-ql-${{ matrix.folder }}"
|
||||
|
||||
84
.github/workflows/ql-for-ql-dataset_measure.yml
vendored
Normal file
84
.github/workflows/ql-for-ql-dataset_measure.yml
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
name: Collect database stats for QL for QL
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- ql/ql/src/ql.dbscheme
|
||||
pull_request:
|
||||
branches: [main]
|
||||
paths:
|
||||
- ql/ql/src/ql.dbscheme
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
measure:
|
||||
env:
|
||||
CODEQL_THREADS: 4 # TODO: remove this once it's set by the CLI
|
||||
strategy:
|
||||
matrix:
|
||||
repo:
|
||||
- github/codeql
|
||||
- github/codeql-go
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Find codeql
|
||||
id: find-codeql
|
||||
uses: github/codeql-action/init@erik-krogh/ql
|
||||
with:
|
||||
languages: javascript # does not matter
|
||||
- uses: actions/cache@v2
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
ql/target
|
||||
key: ${{ runner.os }}-qltest-cargo-${{ hashFiles('**/Cargo.lock') }}
|
||||
- name: Build Extractor
|
||||
run: cd ql; env "PATH=$PATH:`dirname ${CODEQL}`" ./create-extractor-pack.sh
|
||||
env:
|
||||
CODEQL: ${{ steps.find-codeql.outputs.codeql-path }}
|
||||
- name: Checkout ${{ matrix.repo }}
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: ${{ matrix.repo }}
|
||||
path: ${{ github.workspace }}/repo
|
||||
- name: Create database
|
||||
run: |
|
||||
"${CODEQL}" database create \
|
||||
--search-path "ql/extractor-pack" \
|
||||
--threads 4 \
|
||||
--language ql --source-root "${{ github.workspace }}/repo" \
|
||||
"${{ runner.temp }}/database"
|
||||
env:
|
||||
CODEQL: ${{ steps.find-codeql.outputs.codeql-path }}
|
||||
- name: Measure database
|
||||
run: |
|
||||
mkdir -p "stats/${{ matrix.repo }}"
|
||||
"${CODEQL}" dataset measure --threads 4 --output "stats/${{ matrix.repo }}/stats.xml" "${{ runner.temp }}/database/db-ql"
|
||||
env:
|
||||
CODEQL: ${{ steps.find-codeql.outputs.codeql-path }}
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: measurements
|
||||
path: stats
|
||||
retention-days: 1
|
||||
|
||||
merge:
|
||||
runs-on: ubuntu-latest
|
||||
needs: measure
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: measurements
|
||||
path: stats
|
||||
- run: |
|
||||
python -m pip install --user lxml
|
||||
find stats -name 'stats.xml' -print0 | sort -z | xargs -0 python ql/scripts/merge_stats.py --output ql/ql/src/ql.dbscheme.stats --normalise ql_tokeninfo
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: ql.dbscheme.stats
|
||||
path: ql/ql/src/ql.dbscheme.stats
|
||||
52
.github/workflows/ql-for-ql-tests.yml
vendored
Normal file
52
.github/workflows/ql-for-ql-tests.yml
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
name: Run QL for QL Tests
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- "ql/**"
|
||||
pull_request:
|
||||
branches: [main]
|
||||
paths:
|
||||
- "ql/**"
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
|
||||
jobs:
|
||||
qltest:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Find codeql
|
||||
id: find-codeql
|
||||
uses: github/codeql-action/init@erik-krogh/ql
|
||||
with:
|
||||
languages: javascript # does not matter
|
||||
- uses: actions/cache@v2
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
ql/target
|
||||
key: ${{ runner.os }}-qltest-cargo-${{ hashFiles('**/Cargo.lock') }}
|
||||
- name: Build extractor
|
||||
run: |
|
||||
cd ql;
|
||||
codeqlpath=$(dirname ${{ steps.find-codeql.outputs.codeql-path }});
|
||||
env "PATH=$PATH:$codeqlpath" ./create-extractor-pack.sh
|
||||
- name: Run QL tests
|
||||
run: |
|
||||
"${CODEQL}" test run --check-databases --check-unused-labels --check-repeated-labels --check-redefined-labels --check-use-before-definition --search-path "${{ github.workspace }}/ql/extractor-pack" --consistency-queries ql/ql/consistency-queries ql/ql/test
|
||||
env:
|
||||
CODEQL: ${{ steps.find-codeql.outputs.codeql-path }}
|
||||
- name: Check QL formatting
|
||||
run: |
|
||||
find ql/ql "(" -name "*.ql" -or -name "*.qll" ")" -print0 | xargs -0 "${CODEQL}" query format --check-only
|
||||
env:
|
||||
CODEQL: ${{ steps.find-codeql.outputs.codeql-path }}
|
||||
- name: Check QL compilation
|
||||
run: |
|
||||
"${CODEQL}" query compile --check-only --threads=4 --warnings=error --search-path "${{ github.workspace }}/ql/extractor-pack" "ql/ql/src" "ql/ql/examples"
|
||||
env:
|
||||
CODEQL: ${{ steps.find-codeql.outputs.codeql-path }}
|
||||
@@ -25,3 +25,6 @@
|
||||
/docs/codeql-for-visual-studio-code/ @github/codeql-vscode-reviewers
|
||||
/docs/ql-language-reference/ @github/codeql-frontend-reviewers
|
||||
/docs/query-*-style-guide.md @github/codeql-analysis-reviewers
|
||||
|
||||
# QL for QL reviewers
|
||||
/ql/ @erik-krogh @tausbn
|
||||
@@ -452,9 +452,15 @@
|
||||
"ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImplCommon.qll",
|
||||
"cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaImplCommon.qll"
|
||||
],
|
||||
"CryptoAlgorithms Python/JS": [
|
||||
"CryptoAlgorithms Python/JS/Ruby": [
|
||||
"javascript/ql/lib/semmle/javascript/security/CryptoAlgorithms.qll",
|
||||
"python/ql/lib/semmle/python/concepts/CryptoAlgorithms.qll"
|
||||
"python/ql/lib/semmle/python/concepts/CryptoAlgorithms.qll",
|
||||
"ruby/ql/lib/codeql/ruby/security/CryptoAlgorithms.qll"
|
||||
],
|
||||
"CryptoAlgorithmNames Python/JS/Ruby": [
|
||||
"javascript/ql/lib/semmle/javascript/security/internal/CryptoAlgorithmNames.qll",
|
||||
"python/ql/lib/semmle/python/concepts/internal/CryptoAlgorithmNames.qll",
|
||||
"ruby/ql/lib/codeql/ruby/security/internal/CryptoAlgorithmNames.qll"
|
||||
],
|
||||
"SensitiveDataHeuristics Python/JS": [
|
||||
"javascript/ql/lib/semmle/javascript/security/internal/SensitiveDataHeuristics.qll",
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Build" Version="16.9.0" />
|
||||
<PackageReference Include="Microsoft.Build" Version="16.11.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
2
cpp/change-notes/2021-10-07-cleartext-transmission.md
Normal file
2
cpp/change-notes/2021-10-07-cleartext-transmission.md
Normal file
@@ -0,0 +1,2 @@
|
||||
lgtm,codescanning
|
||||
* The "Cleartext transmission of sensitive information" (`cpp/cleartext-transmission`) query has been improved, reducing the number of false positive results when encryption is present.
|
||||
@@ -73,7 +73,7 @@ class Options extends string {
|
||||
* __assume(0);
|
||||
* ```
|
||||
* (note that in this case if the hint is wrong and the expression is reached at
|
||||
* runtime, the program's behaviour is undefined)
|
||||
* runtime, the program's behavior is undefined)
|
||||
*/
|
||||
predicate exprExits(Expr e) {
|
||||
e.(AssumeExpr).getChild(0).(CompileTimeConstantInt).getIntValue() = 0 or
|
||||
|
||||
@@ -50,7 +50,7 @@ class CustomOptions extends Options {
|
||||
* __assume(0);
|
||||
* ```
|
||||
* (note that in this case if the hint is wrong and the expression is reached at
|
||||
* runtime, the program's behaviour is undefined)
|
||||
* runtime, the program's behavior is undefined)
|
||||
*/
|
||||
override predicate exprExits(Expr e) { Options.super.exprExits(e) }
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* `Instruction` level), and then using the array length analysis and the range
|
||||
* analysis together to prove that some of these pointer dereferences are safe.
|
||||
*
|
||||
* The analysis is soundy, i.e. it is sound if no undefined behaviour is present
|
||||
* The analysis is soundy, i.e. it is sound if no undefined behavior is present
|
||||
* in the program.
|
||||
* Furthermore, it crucially depends on the soundiness of the range analysis and
|
||||
* the array length analysis.
|
||||
|
||||
@@ -5,4 +5,4 @@ dbscheme: semmlecode.cpp.dbscheme
|
||||
extractor: cpp
|
||||
library: true
|
||||
dependencies:
|
||||
codeql/cpp-upgrades: 0.0.3
|
||||
codeql/cpp-upgrades: ^0.0.3
|
||||
|
||||
@@ -9,6 +9,83 @@ import semmle.code.cpp.models.interfaces.FormattingFunction
|
||||
private import semmle.code.cpp.rangeanalysis.SimpleRangeAnalysis
|
||||
private import semmle.code.cpp.rangeanalysis.RangeAnalysisUtils
|
||||
|
||||
private newtype TBufferWriteEstimationReason =
|
||||
TNoSpecifiedEstimateReason() or
|
||||
TTypeBoundsAnalysis() or
|
||||
TValueFlowAnalysis()
|
||||
|
||||
/**
|
||||
* A reason for a specific buffer write size estimate.
|
||||
*/
|
||||
abstract class BufferWriteEstimationReason extends TBufferWriteEstimationReason {
|
||||
/**
|
||||
* Returns the name of the concrete class.
|
||||
*/
|
||||
abstract string toString();
|
||||
|
||||
/**
|
||||
* Returns a human readable representation of this reason.
|
||||
*/
|
||||
abstract string getDescription();
|
||||
|
||||
/**
|
||||
* Combine estimate reasons. Used to give a reason for the size of a format string
|
||||
* conversion given reasons coming from its individual specifiers.
|
||||
*/
|
||||
abstract BufferWriteEstimationReason combineWith(BufferWriteEstimationReason other);
|
||||
}
|
||||
|
||||
/**
|
||||
* No particular reason given. This is currently used for backward compatibility so that
|
||||
* classes derived from BufferWrite and overriding `getMaxData/0` still work with the
|
||||
* queries as intended.
|
||||
*/
|
||||
class NoSpecifiedEstimateReason extends BufferWriteEstimationReason, TNoSpecifiedEstimateReason {
|
||||
override string toString() { result = "NoSpecifiedEstimateReason" }
|
||||
|
||||
override string getDescription() { result = "no reason specified" }
|
||||
|
||||
override BufferWriteEstimationReason combineWith(BufferWriteEstimationReason other) {
|
||||
// this reason should not be used in format specifiers, so it should not be combined
|
||||
// with other reasons
|
||||
none()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The estimation comes from rough bounds just based on the type (e.g.
|
||||
* `0 <= x < 2^32` for an unsigned 32 bit integer).
|
||||
*/
|
||||
class TypeBoundsAnalysis extends BufferWriteEstimationReason, TTypeBoundsAnalysis {
|
||||
override string toString() { result = "TypeBoundsAnalysis" }
|
||||
|
||||
override string getDescription() { result = "based on type bounds" }
|
||||
|
||||
override BufferWriteEstimationReason combineWith(BufferWriteEstimationReason other) {
|
||||
other != TNoSpecifiedEstimateReason() and result = TTypeBoundsAnalysis()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The estimation comes from non trivial bounds found via actual flow analysis.
|
||||
* For example
|
||||
* ```
|
||||
* unsigned u = x;
|
||||
* if (u < 1000) {
|
||||
* //... <- estimation done here based on u
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
class ValueFlowAnalysis extends BufferWriteEstimationReason, TValueFlowAnalysis {
|
||||
override string toString() { result = "ValueFlowAnalysis" }
|
||||
|
||||
override string getDescription() { result = "based on flow analysis of value bounds" }
|
||||
|
||||
override BufferWriteEstimationReason combineWith(BufferWriteEstimationReason other) {
|
||||
other != TNoSpecifiedEstimateReason() and result = other
|
||||
}
|
||||
}
|
||||
|
||||
class PrintfFormatAttribute extends FormatAttribute {
|
||||
PrintfFormatAttribute() { this.getArchetype() = ["printf", "__printf__"] }
|
||||
}
|
||||
@@ -990,7 +1067,14 @@ class FormatLiteral extends Literal {
|
||||
* conversion specifier of this format string; has no result if this cannot
|
||||
* be determined.
|
||||
*/
|
||||
int getMaxConvertedLength(int n) {
|
||||
int getMaxConvertedLength(int n) { result = max(getMaxConvertedLength(n, _)) }
|
||||
|
||||
/**
|
||||
* Gets the maximum length of the string that can be produced by the nth
|
||||
* conversion specifier of this format string, specifying the estimation reason;
|
||||
* has no result if this cannot be determined.
|
||||
*/
|
||||
int getMaxConvertedLength(int n, BufferWriteEstimationReason reason) {
|
||||
exists(int len |
|
||||
(
|
||||
(
|
||||
@@ -1002,10 +1086,12 @@ class FormatLiteral extends Literal {
|
||||
) and
|
||||
(
|
||||
this.getConversionChar(n) = "%" and
|
||||
len = 1
|
||||
len = 1 and
|
||||
reason = TValueFlowAnalysis()
|
||||
or
|
||||
this.getConversionChar(n).toLowerCase() = "c" and
|
||||
len = 1 // e.g. 'a'
|
||||
len = 1 and
|
||||
reason = TValueFlowAnalysis() // e.g. 'a'
|
||||
or
|
||||
this.getConversionChar(n).toLowerCase() = "f" and
|
||||
exists(int dot, int afterdot |
|
||||
@@ -1019,7 +1105,8 @@ class FormatLiteral extends Literal {
|
||||
afterdot = 6
|
||||
) and
|
||||
len = 1 + 309 + dot + afterdot
|
||||
) // e.g. -1e308="-100000"...
|
||||
) and
|
||||
reason = TTypeBoundsAnalysis() // e.g. -1e308="-100000"...
|
||||
or
|
||||
this.getConversionChar(n).toLowerCase() = "e" and
|
||||
exists(int dot, int afterdot |
|
||||
@@ -1033,7 +1120,8 @@ class FormatLiteral extends Literal {
|
||||
afterdot = 6
|
||||
) and
|
||||
len = 1 + 1 + dot + afterdot + 1 + 1 + 3
|
||||
) // -1e308="-1.000000e+308"
|
||||
) and
|
||||
reason = TTypeBoundsAnalysis() // -1e308="-1.000000e+308"
|
||||
or
|
||||
this.getConversionChar(n).toLowerCase() = "g" and
|
||||
exists(int dot, int afterdot |
|
||||
@@ -1056,67 +1144,80 @@ class FormatLiteral extends Literal {
|
||||
// (e.g. 123456, 0.000123456 are just OK)
|
||||
// so case %f can be at most P characters + 4 zeroes, sign, dot = P + 6
|
||||
len = (afterdot.maximum(1) + 6).maximum(1 + 1 + dot + afterdot + 1 + 1 + 3)
|
||||
) // (e.g. "-1.59203e-319")
|
||||
) and
|
||||
reason = TTypeBoundsAnalysis() // (e.g. "-1.59203e-319")
|
||||
or
|
||||
this.getConversionChar(n).toLowerCase() = ["d", "i"] and
|
||||
// e.g. -2^31 = "-2147483648"
|
||||
len =
|
||||
min(float cand |
|
||||
// The first case handles length sub-specifiers
|
||||
// Subtract one in the exponent because one bit is for the sign.
|
||||
// Add 1 to account for the possible sign in the output.
|
||||
cand = 1 + lengthInBase10(2.pow(this.getIntegralDisplayType(n).getSize() * 8 - 1))
|
||||
or
|
||||
// The second case uses range analysis to deduce a length that's shorter than the length
|
||||
// of the number -2^31.
|
||||
exists(Expr arg, float lower, float upper |
|
||||
arg = this.getUse().getConversionArgument(n) and
|
||||
lower = lowerBound(arg.getFullyConverted()) and
|
||||
upper = upperBound(arg.getFullyConverted())
|
||||
|
|
||||
cand =
|
||||
max(int cand0 |
|
||||
// Include the sign bit in the length if it can be negative
|
||||
(
|
||||
if lower < 0
|
||||
then cand0 = 1 + lengthInBase10(lower.abs())
|
||||
else cand0 = lengthInBase10(lower)
|
||||
)
|
||||
or
|
||||
(
|
||||
if upper < 0
|
||||
then cand0 = 1 + lengthInBase10(upper.abs())
|
||||
else cand0 = lengthInBase10(upper)
|
||||
)
|
||||
exists(float typeBasedBound, float valueBasedBound |
|
||||
// The first case handles length sub-specifiers
|
||||
// Subtract one in the exponent because one bit is for the sign.
|
||||
// Add 1 to account for the possible sign in the output.
|
||||
typeBasedBound =
|
||||
1 + lengthInBase10(2.pow(this.getIntegralDisplayType(n).getSize() * 8 - 1)) and
|
||||
// The second case uses range analysis to deduce a length that's shorter than the length
|
||||
// of the number -2^31.
|
||||
exists(Expr arg, float lower, float upper, float typeLower, float typeUpper |
|
||||
arg = this.getUse().getConversionArgument(n) and
|
||||
lower = lowerBound(arg.getFullyConverted()) and
|
||||
upper = upperBound(arg.getFullyConverted()) and
|
||||
typeLower = exprMinVal(arg.getFullyConverted()) and
|
||||
typeUpper = exprMaxVal(arg.getFullyConverted())
|
||||
|
|
||||
valueBasedBound =
|
||||
max(int cand |
|
||||
// Include the sign bit in the length if it can be negative
|
||||
(
|
||||
if lower < 0
|
||||
then cand = 1 + lengthInBase10(lower.abs())
|
||||
else cand = lengthInBase10(lower)
|
||||
)
|
||||
or
|
||||
(
|
||||
if upper < 0
|
||||
then cand = 1 + lengthInBase10(upper.abs())
|
||||
else cand = lengthInBase10(upper)
|
||||
)
|
||||
) and
|
||||
(
|
||||
if lower > typeLower or upper < typeUpper
|
||||
then reason = TValueFlowAnalysis()
|
||||
else reason = TTypeBoundsAnalysis()
|
||||
)
|
||||
)
|
||||
) and
|
||||
len = valueBasedBound.minimum(typeBasedBound)
|
||||
)
|
||||
or
|
||||
this.getConversionChar(n).toLowerCase() = "u" and
|
||||
// e.g. 2^32 - 1 = "4294967295"
|
||||
len =
|
||||
min(float cand |
|
||||
// The first case handles length sub-specifiers
|
||||
cand = 2.pow(this.getIntegralDisplayType(n).getSize() * 8)
|
||||
or
|
||||
// The second case uses range analysis to deduce a length that's shorter than
|
||||
// the length of the number 2^31 - 1.
|
||||
exists(Expr arg, float lower |
|
||||
arg = this.getUse().getConversionArgument(n) and
|
||||
lower = lowerBound(arg.getFullyConverted())
|
||||
|
|
||||
cand =
|
||||
max(float cand0 |
|
||||
exists(float typeBasedBound, float valueBasedBound |
|
||||
// The first case handles length sub-specifiers
|
||||
typeBasedBound = lengthInBase10(2.pow(this.getIntegralDisplayType(n).getSize() * 8) - 1) and
|
||||
// The second case uses range analysis to deduce a length that's shorter than
|
||||
// the length of the number 2^31 - 1.
|
||||
exists(Expr arg, float lower, float upper, float typeLower, float typeUpper |
|
||||
arg = this.getUse().getConversionArgument(n) and
|
||||
lower = lowerBound(arg.getFullyConverted()) and
|
||||
upper = upperBound(arg.getFullyConverted()) and
|
||||
typeLower = exprMinVal(arg.getFullyConverted()) and
|
||||
typeUpper = exprMaxVal(arg.getFullyConverted())
|
||||
|
|
||||
valueBasedBound =
|
||||
lengthInBase10(max(float cand |
|
||||
// If lower can be negative we use `(unsigned)-1` as the candidate value.
|
||||
lower < 0 and
|
||||
cand0 = 2.pow(any(IntType t | t.isUnsigned()).getSize() * 8)
|
||||
cand = 2.pow(any(IntType t | t.isUnsigned()).getSize() * 8)
|
||||
or
|
||||
cand0 = upperBound(arg.getFullyConverted())
|
||||
)
|
||||
cand = upper
|
||||
)) and
|
||||
(
|
||||
if lower > typeLower or upper < typeUpper
|
||||
then reason = TValueFlowAnalysis()
|
||||
else reason = TTypeBoundsAnalysis()
|
||||
)
|
||||
|
|
||||
lengthInBase10(cand)
|
||||
)
|
||||
) and
|
||||
len = valueBasedBound.minimum(typeBasedBound)
|
||||
)
|
||||
or
|
||||
this.getConversionChar(n).toLowerCase() = "x" and
|
||||
// e.g. "12345678"
|
||||
@@ -1135,7 +1236,8 @@ class FormatLiteral extends Literal {
|
||||
(
|
||||
if this.hasAlternateFlag(n) then len = 2 + baseLen else len = baseLen // "0x"
|
||||
)
|
||||
)
|
||||
) and
|
||||
reason = TTypeBoundsAnalysis()
|
||||
or
|
||||
this.getConversionChar(n).toLowerCase() = "p" and
|
||||
exists(PointerType ptrType, int baseLen |
|
||||
@@ -1144,7 +1246,8 @@ class FormatLiteral extends Literal {
|
||||
(
|
||||
if this.hasAlternateFlag(n) then len = 2 + baseLen else len = baseLen // "0x"
|
||||
)
|
||||
)
|
||||
) and
|
||||
reason = TValueFlowAnalysis()
|
||||
or
|
||||
this.getConversionChar(n).toLowerCase() = "o" and
|
||||
// e.g. 2^32 - 1 = "37777777777"
|
||||
@@ -1163,14 +1266,16 @@ class FormatLiteral extends Literal {
|
||||
(
|
||||
if this.hasAlternateFlag(n) then len = 1 + baseLen else len = baseLen // "0"
|
||||
)
|
||||
)
|
||||
) and
|
||||
reason = TTypeBoundsAnalysis()
|
||||
or
|
||||
this.getConversionChar(n).toLowerCase() = "s" and
|
||||
len =
|
||||
min(int v |
|
||||
v = this.getPrecision(n) or
|
||||
v = this.getUse().getFormatArgument(n).(AnalysedString).getMaxLength() - 1 // (don't count null terminator)
|
||||
)
|
||||
) and
|
||||
reason = TValueFlowAnalysis()
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -1182,10 +1287,19 @@ class FormatLiteral extends Literal {
|
||||
* determining whether a buffer overflow is caused by long float to string
|
||||
* conversions.
|
||||
*/
|
||||
int getMaxConvertedLengthLimited(int n) {
|
||||
int getMaxConvertedLengthLimited(int n) { result = max(getMaxConvertedLengthLimited(n, _)) }
|
||||
|
||||
/**
|
||||
* Gets the maximum length of the string that can be produced by the nth
|
||||
* conversion specifier of this format string, specifying the reason for the
|
||||
* estimation, except that float to string conversions are assumed to be 8
|
||||
* characters. This is helpful for determining whether a buffer overflow is
|
||||
* caused by long float to string conversions.
|
||||
*/
|
||||
int getMaxConvertedLengthLimited(int n, BufferWriteEstimationReason reason) {
|
||||
if this.getConversionChar(n).toLowerCase() = "f"
|
||||
then result = this.getMaxConvertedLength(n).minimum(8)
|
||||
else result = this.getMaxConvertedLength(n)
|
||||
then result = this.getMaxConvertedLength(n, reason).minimum(8)
|
||||
else result = this.getMaxConvertedLength(n, reason)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1225,29 +1339,35 @@ class FormatLiteral extends Literal {
|
||||
)
|
||||
}
|
||||
|
||||
private int getMaxConvertedLengthAfter(int n) {
|
||||
private int getMaxConvertedLengthAfter(int n, BufferWriteEstimationReason reason) {
|
||||
if n = this.getNumConvSpec()
|
||||
then result = this.getConstantSuffix().length() + 1
|
||||
then result = this.getConstantSuffix().length() + 1 and reason = TValueFlowAnalysis()
|
||||
else
|
||||
result =
|
||||
this.getConstantPart(n).length() + this.getMaxConvertedLength(n) +
|
||||
this.getMaxConvertedLengthAfter(n + 1)
|
||||
exists(BufferWriteEstimationReason headReason, BufferWriteEstimationReason tailReason |
|
||||
result =
|
||||
this.getConstantPart(n).length() + this.getMaxConvertedLength(n, headReason) +
|
||||
this.getMaxConvertedLengthAfter(n + 1, tailReason) and
|
||||
reason = headReason.combineWith(tailReason)
|
||||
)
|
||||
}
|
||||
|
||||
private int getMaxConvertedLengthAfterLimited(int n) {
|
||||
private int getMaxConvertedLengthAfterLimited(int n, BufferWriteEstimationReason reason) {
|
||||
if n = this.getNumConvSpec()
|
||||
then result = this.getConstantSuffix().length() + 1
|
||||
then result = this.getConstantSuffix().length() + 1 and reason = TValueFlowAnalysis()
|
||||
else
|
||||
result =
|
||||
this.getConstantPart(n).length() + this.getMaxConvertedLengthLimited(n) +
|
||||
this.getMaxConvertedLengthAfterLimited(n + 1)
|
||||
exists(BufferWriteEstimationReason headReason, BufferWriteEstimationReason tailReason |
|
||||
result =
|
||||
this.getConstantPart(n).length() + this.getMaxConvertedLengthLimited(n, headReason) +
|
||||
this.getMaxConvertedLengthAfterLimited(n + 1, tailReason) and
|
||||
reason = headReason.combineWith(tailReason)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the maximum length of the string that can be produced by this format
|
||||
* string. Has no result if this cannot be determined.
|
||||
*/
|
||||
int getMaxConvertedLength() { result = this.getMaxConvertedLengthAfter(0) }
|
||||
int getMaxConvertedLength() { result = this.getMaxConvertedLengthAfter(0, _) }
|
||||
|
||||
/**
|
||||
* Gets the maximum length of the string that can be produced by this format
|
||||
@@ -1255,5 +1375,24 @@ class FormatLiteral extends Literal {
|
||||
* characters. This is helpful for determining whether a buffer overflow
|
||||
* is caused by long float to string conversions.
|
||||
*/
|
||||
int getMaxConvertedLengthLimited() { result = this.getMaxConvertedLengthAfterLimited(0) }
|
||||
int getMaxConvertedLengthLimited() { result = this.getMaxConvertedLengthAfterLimited(0, _) }
|
||||
|
||||
/**
|
||||
* Gets the maximum length of the string that can be produced by this format
|
||||
* string, specifying the reason for the estimate. Has no result if no estimate
|
||||
* can be found.
|
||||
*/
|
||||
int getMaxConvertedLengthWithReason(BufferWriteEstimationReason reason) {
|
||||
result = this.getMaxConvertedLengthAfter(0, reason)
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the maximum length of the string that can be produced by this format
|
||||
* string, specifying the reason for the estimate, except that float to string
|
||||
* conversions are assumed to be 8 characters. This is helpful for determining
|
||||
* whether a buffer overflow is caused by long float to string conversions.
|
||||
*/
|
||||
int getMaxConvertedLengthLimitedWithReason(BufferWriteEstimationReason reason) {
|
||||
result = this.getMaxConvertedLengthAfterLimited(0, reason)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,9 +153,11 @@ library class SSAHelper extends int {
|
||||
* Modern Compiler Implementation by Andrew Appel.
|
||||
*/
|
||||
private predicate frontier_phi_node(StackVariable v, BasicBlock b) {
|
||||
exists(BasicBlock x | dominanceFrontier(x, b) and ssa_defn_rec(v, x)) and
|
||||
exists(BasicBlock x |
|
||||
dominanceFrontier(x, b) and ssa_defn_rec(pragma[only_bind_into](v), pragma[only_bind_into](x))
|
||||
) and
|
||||
/* We can also eliminate those nodes where the variable is not live on any incoming edge */
|
||||
live_at_start_of_bb(v, b)
|
||||
live_at_start_of_bb(pragma[only_bind_into](v), b)
|
||||
}
|
||||
|
||||
private predicate ssa_defn_rec(StackVariable v, BasicBlock b) {
|
||||
|
||||
@@ -15,11 +15,23 @@ module Consistency {
|
||||
class ConsistencyConfiguration extends TConsistencyConfiguration {
|
||||
string toString() { none() }
|
||||
|
||||
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
||||
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
||||
|
||||
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
||||
predicate uniqueNodeLocationExclude(Node n) { none() }
|
||||
|
||||
/** Holds if `n` should be excluded from the consistency test `missingLocation`. */
|
||||
predicate missingLocationExclude(Node n) { none() }
|
||||
|
||||
/** Holds if `n` should be excluded from the consistency test `postWithInFlow`. */
|
||||
predicate postWithInFlowExclude(Node n) { none() }
|
||||
|
||||
/** Holds if `n` should be excluded from the consistency test `argHasPostUpdate`. */
|
||||
predicate argHasPostUpdateExclude(ArgumentNode n) { none() }
|
||||
|
||||
/** Holds if `n` should be excluded from the consistency test `reverseRead`. */
|
||||
predicate reverseReadExclude(Node n) { none() }
|
||||
}
|
||||
|
||||
private class RelevantNode extends Node {
|
||||
@@ -46,6 +58,7 @@ module Consistency {
|
||||
n instanceof RelevantNode and
|
||||
c = count(nodeGetEnclosingCallable(n)) and
|
||||
c != 1 and
|
||||
not any(ConsistencyConfiguration conf).uniqueEnclosingCallableExclude(n) and
|
||||
msg = "Node should have one enclosing callable but has " + c + "."
|
||||
)
|
||||
}
|
||||
@@ -66,6 +79,7 @@ module Consistency {
|
||||
n.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)
|
||||
) and
|
||||
c != 1 and
|
||||
not any(ConsistencyConfiguration conf).uniqueNodeLocationExclude(n) and
|
||||
msg = "Node should have one location but has " + c + "."
|
||||
)
|
||||
}
|
||||
@@ -76,7 +90,8 @@ module Consistency {
|
||||
strictcount(Node n |
|
||||
not exists(string filepath, int startline, int startcolumn, int endline, int endcolumn |
|
||||
n.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)
|
||||
)
|
||||
) and
|
||||
not any(ConsistencyConfiguration conf).missingLocationExclude(n)
|
||||
) and
|
||||
msg = "Nodes without location: " + c
|
||||
)
|
||||
@@ -172,6 +187,7 @@ module Consistency {
|
||||
|
||||
query predicate reverseRead(Node n, string msg) {
|
||||
exists(Node n2 | readStep(n, _, n2) and hasPost(n2) and not hasPost(n)) and
|
||||
not any(ConsistencyConfiguration conf).reverseReadExclude(n) and
|
||||
msg = "Origin of readStep is missing a PostUpdateNode."
|
||||
}
|
||||
|
||||
|
||||
@@ -118,7 +118,7 @@ class LambdaCapture extends Locatable, @lambdacapture {
|
||||
* An identifier is captured by reference if:
|
||||
* - It is explicitly captured by reference.
|
||||
* - It is implicitly captured, and the lambda's default capture mode is by-reference.
|
||||
* - The identifier is "this". [Said behaviour is dictated by the C++11 standard, but it
|
||||
* - The identifier is "this". [Said behavior is dictated by the C++11 standard, but it
|
||||
* is actually "*this" being captured rather than "this".]
|
||||
*/
|
||||
predicate isCapturedByReference() { lambda_capture(this, _, _, _, true, _, _) }
|
||||
|
||||
@@ -15,11 +15,23 @@ module Consistency {
|
||||
class ConsistencyConfiguration extends TConsistencyConfiguration {
|
||||
string toString() { none() }
|
||||
|
||||
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
||||
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
||||
|
||||
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
||||
predicate uniqueNodeLocationExclude(Node n) { none() }
|
||||
|
||||
/** Holds if `n` should be excluded from the consistency test `missingLocation`. */
|
||||
predicate missingLocationExclude(Node n) { none() }
|
||||
|
||||
/** Holds if `n` should be excluded from the consistency test `postWithInFlow`. */
|
||||
predicate postWithInFlowExclude(Node n) { none() }
|
||||
|
||||
/** Holds if `n` should be excluded from the consistency test `argHasPostUpdate`. */
|
||||
predicate argHasPostUpdateExclude(ArgumentNode n) { none() }
|
||||
|
||||
/** Holds if `n` should be excluded from the consistency test `reverseRead`. */
|
||||
predicate reverseReadExclude(Node n) { none() }
|
||||
}
|
||||
|
||||
private class RelevantNode extends Node {
|
||||
@@ -46,6 +58,7 @@ module Consistency {
|
||||
n instanceof RelevantNode and
|
||||
c = count(nodeGetEnclosingCallable(n)) and
|
||||
c != 1 and
|
||||
not any(ConsistencyConfiguration conf).uniqueEnclosingCallableExclude(n) and
|
||||
msg = "Node should have one enclosing callable but has " + c + "."
|
||||
)
|
||||
}
|
||||
@@ -66,6 +79,7 @@ module Consistency {
|
||||
n.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)
|
||||
) and
|
||||
c != 1 and
|
||||
not any(ConsistencyConfiguration conf).uniqueNodeLocationExclude(n) and
|
||||
msg = "Node should have one location but has " + c + "."
|
||||
)
|
||||
}
|
||||
@@ -76,7 +90,8 @@ module Consistency {
|
||||
strictcount(Node n |
|
||||
not exists(string filepath, int startline, int startcolumn, int endline, int endcolumn |
|
||||
n.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)
|
||||
)
|
||||
) and
|
||||
not any(ConsistencyConfiguration conf).missingLocationExclude(n)
|
||||
) and
|
||||
msg = "Nodes without location: " + c
|
||||
)
|
||||
@@ -172,6 +187,7 @@ module Consistency {
|
||||
|
||||
query predicate reverseRead(Node n, string msg) {
|
||||
exists(Node n2 | readStep(n, _, n2) and hasPost(n2) and not hasPost(n)) and
|
||||
not any(ConsistencyConfiguration conf).reverseReadExclude(n) and
|
||||
msg = "Origin of readStep is missing a PostUpdateNode."
|
||||
}
|
||||
|
||||
|
||||
@@ -266,6 +266,20 @@ private predicate operandReturned(Operand operand, IntValue bitOffset) {
|
||||
bitOffset = Ints::unknown()
|
||||
}
|
||||
|
||||
pragma[nomagic]
|
||||
private predicate initializeParameterInstructionHasVariable(
|
||||
IRVariable var, InitializeParameterInstruction init
|
||||
) {
|
||||
init.getIRVariable() = var
|
||||
}
|
||||
|
||||
private predicate instructionInitializesThisInFunction(
|
||||
Language::Function f, InitializeParameterInstruction init
|
||||
) {
|
||||
initializeParameterInstructionHasVariable(any(IRThisVariable var), pragma[only_bind_into](init)) and
|
||||
init.getEnclosingFunction() = f
|
||||
}
|
||||
|
||||
private predicate isArgumentForParameter(
|
||||
CallInstruction ci, Operand operand, InitializeParameterInstruction init
|
||||
) {
|
||||
@@ -275,8 +289,7 @@ private predicate isArgumentForParameter(
|
||||
(
|
||||
init.getParameter() = f.getParameter(operand.(PositionalArgumentOperand).getIndex())
|
||||
or
|
||||
init.getIRVariable() instanceof IRThisVariable and
|
||||
unique( | | init.getEnclosingFunction()) = f and
|
||||
instructionInitializesThisInFunction(f, init) and
|
||||
operand instanceof ThisArgumentOperand
|
||||
) and
|
||||
not Language::isFunctionVirtual(f) and
|
||||
|
||||
@@ -266,6 +266,20 @@ private predicate operandReturned(Operand operand, IntValue bitOffset) {
|
||||
bitOffset = Ints::unknown()
|
||||
}
|
||||
|
||||
pragma[nomagic]
|
||||
private predicate initializeParameterInstructionHasVariable(
|
||||
IRVariable var, InitializeParameterInstruction init
|
||||
) {
|
||||
init.getIRVariable() = var
|
||||
}
|
||||
|
||||
private predicate instructionInitializesThisInFunction(
|
||||
Language::Function f, InitializeParameterInstruction init
|
||||
) {
|
||||
initializeParameterInstructionHasVariable(any(IRThisVariable var), pragma[only_bind_into](init)) and
|
||||
init.getEnclosingFunction() = f
|
||||
}
|
||||
|
||||
private predicate isArgumentForParameter(
|
||||
CallInstruction ci, Operand operand, InitializeParameterInstruction init
|
||||
) {
|
||||
@@ -275,8 +289,7 @@ private predicate isArgumentForParameter(
|
||||
(
|
||||
init.getParameter() = f.getParameter(operand.(PositionalArgumentOperand).getIndex())
|
||||
or
|
||||
init.getIRVariable() instanceof IRThisVariable and
|
||||
unique( | | init.getEnclosingFunction()) = f and
|
||||
instructionInitializesThisInFunction(f, init) and
|
||||
operand instanceof ThisArgumentOperand
|
||||
) and
|
||||
not Language::isFunctionVirtual(f) and
|
||||
|
||||
@@ -71,13 +71,30 @@ abstract class BufferWrite extends Expr {
|
||||
*/
|
||||
int getMaxData() { none() }
|
||||
|
||||
/**
|
||||
* Gets an upper bound to the amount of data that's being written (if one
|
||||
* can be found), specifying the reason for the estimation.
|
||||
*/
|
||||
int getMaxData(BufferWriteEstimationReason reason) {
|
||||
reason instanceof NoSpecifiedEstimateReason and result = getMaxData()
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an upper bound to the amount of data that's being written (if one
|
||||
* can be found), except that float to string conversions are assumed to be
|
||||
* much smaller (8 bytes) than their true maximum length. This can be
|
||||
* helpful in determining the cause of a buffer overflow issue.
|
||||
*/
|
||||
int getMaxDataLimited() { result = this.getMaxData() }
|
||||
int getMaxDataLimited() { result = getMaxData() }
|
||||
|
||||
/**
|
||||
* Gets an upper bound to the amount of data that's being written (if one
|
||||
* can be found), specifying the reason for the estimation, except that
|
||||
* float to string conversions are assumed to be much smaller (8 bytes)
|
||||
* than their true maximum length. This can be helpful in determining the
|
||||
* cause of a buffer overflow issue.
|
||||
*/
|
||||
int getMaxDataLimited(BufferWriteEstimationReason reason) { result = getMaxData(reason) }
|
||||
|
||||
/**
|
||||
* Gets the size of a single character of the type this
|
||||
@@ -135,10 +152,16 @@ class StrCopyBW extends BufferWriteCall {
|
||||
result = this.getArgument(this.getParamSize()).getValue().toInt() * this.getCharSize()
|
||||
}
|
||||
|
||||
override int getMaxData() {
|
||||
private int getMaxDataImpl(BufferWriteEstimationReason reason) {
|
||||
// when result exists, it is an exact flow analysis
|
||||
reason instanceof ValueFlowAnalysis and
|
||||
result =
|
||||
this.getArgument(this.getParamSrc()).(AnalysedString).getMaxLength() * this.getCharSize()
|
||||
}
|
||||
|
||||
override int getMaxData(BufferWriteEstimationReason reason) { result = getMaxDataImpl(reason) }
|
||||
|
||||
override int getMaxData() { result = max(getMaxDataImpl(_)) }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -173,10 +196,16 @@ class StrCatBW extends BufferWriteCall {
|
||||
result = this.getArgument(this.getParamSize()).getValue().toInt() * this.getCharSize()
|
||||
}
|
||||
|
||||
override int getMaxData() {
|
||||
private int getMaxDataImpl(BufferWriteEstimationReason reason) {
|
||||
// when result exists, it is an exact flow analysis
|
||||
reason instanceof ValueFlowAnalysis and
|
||||
result =
|
||||
this.getArgument(this.getParamSrc()).(AnalysedString).getMaxLength() * this.getCharSize()
|
||||
}
|
||||
|
||||
override int getMaxData(BufferWriteEstimationReason reason) { result = getMaxDataImpl(reason) }
|
||||
|
||||
override int getMaxData() { result = max(getMaxDataImpl(_)) }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -233,19 +262,29 @@ class SprintfBW extends BufferWriteCall {
|
||||
|
||||
override Expr getDest() { result = this.getArgument(f.getOutputParameterIndex(false)) }
|
||||
|
||||
override int getMaxData() {
|
||||
private int getMaxDataImpl(BufferWriteEstimationReason reason) {
|
||||
exists(FormatLiteral fl |
|
||||
fl = this.(FormattingFunctionCall).getFormat() and
|
||||
result = fl.getMaxConvertedLength() * this.getCharSize()
|
||||
result = fl.getMaxConvertedLengthWithReason(reason) * this.getCharSize()
|
||||
)
|
||||
}
|
||||
|
||||
override int getMaxDataLimited() {
|
||||
override int getMaxData(BufferWriteEstimationReason reason) { result = getMaxDataImpl(reason) }
|
||||
|
||||
override int getMaxData() { result = max(getMaxDataImpl(_)) }
|
||||
|
||||
private int getMaxDataLimitedImpl(BufferWriteEstimationReason reason) {
|
||||
exists(FormatLiteral fl |
|
||||
fl = this.(FormattingFunctionCall).getFormat() and
|
||||
result = fl.getMaxConvertedLengthLimited() * this.getCharSize()
|
||||
result = fl.getMaxConvertedLengthLimitedWithReason(reason) * this.getCharSize()
|
||||
)
|
||||
}
|
||||
|
||||
override int getMaxDataLimited(BufferWriteEstimationReason reason) {
|
||||
result = getMaxDataLimitedImpl(reason)
|
||||
}
|
||||
|
||||
override int getMaxDataLimited() { result = max(getMaxDataLimitedImpl(_)) }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -336,19 +375,29 @@ class SnprintfBW extends BufferWriteCall {
|
||||
result = this.getArgument(this.getParamSize()).getValue().toInt() * this.getCharSize()
|
||||
}
|
||||
|
||||
override int getMaxData() {
|
||||
private int getMaxDataImpl(BufferWriteEstimationReason reason) {
|
||||
exists(FormatLiteral fl |
|
||||
fl = this.(FormattingFunctionCall).getFormat() and
|
||||
result = fl.getMaxConvertedLength() * this.getCharSize()
|
||||
result = fl.getMaxConvertedLengthWithReason(reason) * this.getCharSize()
|
||||
)
|
||||
}
|
||||
|
||||
override int getMaxDataLimited() {
|
||||
override int getMaxData(BufferWriteEstimationReason reason) { result = getMaxDataImpl(reason) }
|
||||
|
||||
override int getMaxData() { result = max(getMaxDataImpl(_)) }
|
||||
|
||||
private int getMaxDataLimitedImpl(BufferWriteEstimationReason reason) {
|
||||
exists(FormatLiteral fl |
|
||||
fl = this.(FormattingFunctionCall).getFormat() and
|
||||
result = fl.getMaxConvertedLengthLimited() * this.getCharSize()
|
||||
result = fl.getMaxConvertedLengthLimitedWithReason(reason) * this.getCharSize()
|
||||
)
|
||||
}
|
||||
|
||||
override int getMaxDataLimited(BufferWriteEstimationReason reason) {
|
||||
result = getMaxDataLimitedImpl(reason)
|
||||
}
|
||||
|
||||
override int getMaxDataLimited() { result = max(getMaxDataLimitedImpl(_)) }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -436,7 +485,9 @@ class ScanfBW extends BufferWrite {
|
||||
|
||||
override Expr getDest() { result = this }
|
||||
|
||||
override int getMaxData() {
|
||||
private int getMaxDataImpl(BufferWriteEstimationReason reason) {
|
||||
// when this returns, it is based on exact flow analysis
|
||||
reason instanceof ValueFlowAnalysis and
|
||||
exists(ScanfFunctionCall fc, ScanfFormatLiteral fl, int arg |
|
||||
this = fc.getArgument(arg) and
|
||||
fl = fc.getFormat() and
|
||||
@@ -444,6 +495,10 @@ class ScanfBW extends BufferWrite {
|
||||
)
|
||||
}
|
||||
|
||||
override int getMaxData(BufferWriteEstimationReason reason) { result = getMaxDataImpl(reason) }
|
||||
|
||||
override int getMaxData() { result = max(getMaxDataImpl(_)) }
|
||||
|
||||
override string getBWDesc() {
|
||||
exists(FunctionCall fc |
|
||||
this = fc.getArgument(_) and
|
||||
@@ -474,8 +529,14 @@ class RealpathBW extends BufferWriteCall {
|
||||
|
||||
override Expr getASource() { result = this.getArgument(0) }
|
||||
|
||||
override int getMaxData() {
|
||||
private int getMaxDataImpl(BufferWriteEstimationReason reason) {
|
||||
// although there may be some unknown invariants guaranteeing that a real path is shorter than PATH_MAX, we can consider providing less than PATH_MAX a problem with high precision
|
||||
reason instanceof ValueFlowAnalysis and
|
||||
result = path_max() and
|
||||
this = this // Suppress a compiler warning
|
||||
}
|
||||
|
||||
override int getMaxData(BufferWriteEstimationReason reason) { result = getMaxDataImpl(reason) }
|
||||
|
||||
override int getMaxData() { result = max(getMaxDataImpl(_)) }
|
||||
}
|
||||
|
||||
@@ -85,7 +85,8 @@ private predicate cancelingSubExprs(ComparisonOperation cmp, VariableAccess a1,
|
||||
exists(Variable v |
|
||||
exists(float m | m < 0 and cmpLinearSubVariable(cmp, v, a1, m)) and
|
||||
exists(float m | m > 0 and cmpLinearSubVariable(cmp, v, a2, m))
|
||||
)
|
||||
) and
|
||||
not any(ClassTemplateInstantiation inst).getATemplateArgument() = cmp.getParent*()
|
||||
}
|
||||
|
||||
from ComparisonOperation cmp, VariableAccess a1, VariableAccess a2
|
||||
|
||||
@@ -29,7 +29,9 @@ predicate pointlessSelfComparison(ComparisonOperation cmp) {
|
||||
not exists(lhs.getQualifier()) and // Avoid structure fields
|
||||
not exists(rhs.getQualifier()) and // Avoid structure fields
|
||||
not convertedExprMightOverflow(lhs) and
|
||||
not convertedExprMightOverflow(rhs)
|
||||
not convertedExprMightOverflow(rhs) and
|
||||
// Don't warn if the comparison is part of a template argument.
|
||||
not any(ClassTemplateInstantiation inst).getATemplateArgument() = cmp.getParent*()
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"qhelp.dtd">
|
||||
<qhelp>
|
||||
<overview>
|
||||
<p>The return value of a call to <code>snprintf</code> is the number of characters that <i>would have</i> been written to the buffer assuming there was sufficient space. In the event that the operation reaches the end of the buffer and more than one character is discarded, the return value will be greater than the buffer size. This can cause incorrect behaviour, for example:
|
||||
<p>The return value of a call to <code>snprintf</code> is the number of characters that <i>would have</i> been written to the buffer assuming there was sufficient space. In the event that the operation reaches the end of the buffer and more than one character is discarded, the return value will be greater than the buffer size. This can cause incorrect behavior, for example:
|
||||
</p>
|
||||
</overview>
|
||||
|
||||
|
||||
@@ -21,14 +21,15 @@ import semmle.code.cpp.commons.Alloc
|
||||
* See CWE-120/UnboundedWrite.ql for a summary of CWE-120 alert cases.
|
||||
*/
|
||||
|
||||
from BufferWrite bw, Expr dest, int destSize
|
||||
from BufferWrite bw, Expr dest, int destSize, int estimated
|
||||
where
|
||||
not bw.hasExplicitLimit() and // has no explicit size limit
|
||||
dest = bw.getDest() and
|
||||
destSize = getBufferSize(dest, _) and
|
||||
estimated = bw.getMaxDataLimited(_) and
|
||||
// we can deduce that too much data may be copied (even without
|
||||
// long '%f' conversions)
|
||||
bw.getMaxDataLimited() > destSize
|
||||
estimated > destSize
|
||||
select bw,
|
||||
"This '" + bw.getBWDesc() + "' operation requires " + bw.getMaxData() +
|
||||
"This '" + bw.getBWDesc() + "' operation requires " + estimated +
|
||||
" bytes but the destination is only " + destSize + " bytes."
|
||||
|
||||
@@ -21,14 +21,15 @@ import semmle.code.cpp.security.BufferWrite
|
||||
* See CWE-120/UnboundedWrite.ql for a summary of CWE-120 alert cases.
|
||||
*/
|
||||
|
||||
from BufferWrite bw, int destSize
|
||||
from BufferWrite bw, int destSize, int estimated, BufferWriteEstimationReason reason
|
||||
where
|
||||
not bw.hasExplicitLimit() and
|
||||
// has no explicit size limit
|
||||
destSize = getBufferSize(bw.getDest(), _) and
|
||||
bw.getMaxData() > destSize and
|
||||
estimated = bw.getMaxData(reason) and
|
||||
estimated > destSize and
|
||||
// and we can deduce that too much data may be copied
|
||||
bw.getMaxDataLimited() <= destSize // but it would fit without long '%f' conversions
|
||||
bw.getMaxDataLimited(reason) <= destSize // but it would fit without long '%f' conversions
|
||||
select bw,
|
||||
"This '" + bw.getBWDesc() + "' operation may require " + bw.getMaxData() +
|
||||
"This '" + bw.getBWDesc() + "' operation may require " + estimated +
|
||||
" bytes because of float conversions, but the target is only " + destSize + " bytes."
|
||||
|
||||
@@ -44,7 +44,7 @@ import TaintedWithPath
|
||||
|
||||
predicate isUnboundedWrite(BufferWrite bw) {
|
||||
not bw.hasExplicitLimit() and // has no explicit size limit
|
||||
not exists(bw.getMaxData()) // and we can't deduce an upper bound to the amount copied
|
||||
not exists(bw.getMaxData(_)) // and we can't deduce an upper bound to the amount copied
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -14,105 +14,188 @@
|
||||
import cpp
|
||||
import semmle.code.cpp.security.SensitiveExprs
|
||||
import semmle.code.cpp.dataflow.TaintTracking
|
||||
import semmle.code.cpp.valuenumbering.GlobalValueNumbering
|
||||
import semmle.code.cpp.models.interfaces.FlowSource
|
||||
import DataFlow::PathGraph
|
||||
|
||||
/**
|
||||
* A function call that sends or receives data over a network.
|
||||
* A DataFlow node corresponding to a variable or function call that
|
||||
* might contain or return a password or other sensitive information.
|
||||
*/
|
||||
abstract class NetworkSendRecv extends FunctionCall {
|
||||
class SensitiveNode extends DataFlow::Node {
|
||||
SensitiveNode() {
|
||||
this.asExpr() = any(SensitiveVariable sv).getInitializer().getExpr() or
|
||||
this.asExpr().(VariableAccess).getTarget() =
|
||||
any(SensitiveVariable sv).(GlobalOrNamespaceVariable) or
|
||||
this.asUninitialized() instanceof SensitiveVariable or
|
||||
this.asParameter() instanceof SensitiveVariable or
|
||||
this.asExpr().(FunctionCall).getTarget() instanceof SensitiveFunction
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A function that sends or receives data over a network.
|
||||
*/
|
||||
abstract class SendRecv extends Function {
|
||||
/**
|
||||
* Gets the expression for the socket or similar object used for sending or
|
||||
* receiving data (if any).
|
||||
* receiving data through the function call `call` (if any).
|
||||
*/
|
||||
abstract Expr getSocketExpr();
|
||||
abstract Expr getSocketExpr(Call call);
|
||||
|
||||
/**
|
||||
* Gets the expression for the buffer to be sent from / received into.
|
||||
* Gets the expression for the buffer to be sent from / received into through
|
||||
* the function call `call`.
|
||||
*/
|
||||
abstract Expr getDataExpr();
|
||||
abstract Expr getDataExpr(Call call);
|
||||
}
|
||||
|
||||
/**
|
||||
* A function that sends data over a network.
|
||||
*/
|
||||
class Send extends SendRecv instanceof RemoteFlowSinkFunction {
|
||||
override Expr getSocketExpr(Call call) {
|
||||
call.getTarget() = this and
|
||||
exists(FunctionInput input, int arg |
|
||||
super.hasSocketInput(input) and
|
||||
input.isParameter(arg) and
|
||||
result = call.getArgument(arg)
|
||||
)
|
||||
}
|
||||
|
||||
override Expr getDataExpr(Call call) {
|
||||
call.getTarget() = this and
|
||||
exists(FunctionInput input, int arg |
|
||||
super.hasRemoteFlowSink(input, _) and
|
||||
input.isParameterDeref(arg) and
|
||||
result = call.getArgument(arg)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A function that receives data over a network.
|
||||
*/
|
||||
class Recv extends SendRecv instanceof RemoteFlowSourceFunction {
|
||||
override Expr getSocketExpr(Call call) {
|
||||
call.getTarget() = this and
|
||||
exists(FunctionInput input, int arg |
|
||||
super.hasSocketInput(input) and
|
||||
input.isParameter(arg) and
|
||||
result = call.getArgument(arg)
|
||||
)
|
||||
}
|
||||
|
||||
override Expr getDataExpr(Call call) {
|
||||
call.getTarget() = this and
|
||||
exists(FunctionOutput output, int arg |
|
||||
super.hasRemoteFlowSource(output, _) and
|
||||
output.isParameterDeref(arg) and
|
||||
result = call.getArgument(arg)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A function call that sends or receives data over a network.
|
||||
*
|
||||
* note: function calls such as `write` may be writing to a network source
|
||||
* or a file. We could attempt to determine which, and sort results into
|
||||
* `cpp/cleartext-transmission` and perhaps `cpp/cleartext-storage-file`. In
|
||||
* practice it usually isn't very important which query reports a result as
|
||||
* long as its reported exactly once.
|
||||
*
|
||||
* We do exclude function calls that specify a constant socket, which is
|
||||
* likely to mean standard input, standard output or a similar channel.
|
||||
*/
|
||||
abstract class NetworkSendRecv extends FunctionCall {
|
||||
SendRecv target;
|
||||
|
||||
NetworkSendRecv() {
|
||||
this.getTarget() = target and
|
||||
// exclude calls based on the socket...
|
||||
not exists(GVN g |
|
||||
g = globalValueNumber(target.getSocketExpr(this)) and
|
||||
(
|
||||
// literal constant
|
||||
globalValueNumber(any(Literal l)) = g
|
||||
or
|
||||
// variable (such as a global) initialized to a literal constant
|
||||
exists(Variable v |
|
||||
v.getInitializer().getExpr() instanceof Literal and
|
||||
g = globalValueNumber(v.getAnAccess())
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
final Expr getDataExpr() { result = target.getDataExpr(this) }
|
||||
}
|
||||
|
||||
/**
|
||||
* A function call that sends data over a network.
|
||||
*
|
||||
* note: functions such as `write` may be writing to a network source or a file. We could attempt to determine which, and sort results into `cpp/cleartext-transmission` and perhaps `cpp/cleartext-storage-file`. In practice it usually isn't very important which query reports a result as long as its reported exactly once.
|
||||
*/
|
||||
class NetworkSend extends NetworkSendRecv {
|
||||
RemoteFlowSinkFunction target;
|
||||
|
||||
NetworkSend() { target = this.getTarget() }
|
||||
|
||||
override Expr getSocketExpr() {
|
||||
exists(FunctionInput input, int arg |
|
||||
target.hasSocketInput(input) and
|
||||
input.isParameter(arg) and
|
||||
result = this.getArgument(arg)
|
||||
)
|
||||
}
|
||||
|
||||
override Expr getDataExpr() {
|
||||
exists(FunctionInput input, int arg |
|
||||
target.hasRemoteFlowSink(input, _) and
|
||||
input.isParameterDeref(arg) and
|
||||
result = this.getArgument(arg)
|
||||
)
|
||||
}
|
||||
override Send target;
|
||||
}
|
||||
|
||||
/**
|
||||
* A function call that receives data over a network.
|
||||
*/
|
||||
class NetworkRecv extends NetworkSendRecv {
|
||||
RemoteFlowSourceFunction target;
|
||||
|
||||
NetworkRecv() { target = this.getTarget() }
|
||||
|
||||
override Expr getSocketExpr() {
|
||||
exists(FunctionInput input, int arg |
|
||||
target.hasSocketInput(input) and
|
||||
input.isParameter(arg) and
|
||||
result = this.getArgument(arg)
|
||||
)
|
||||
}
|
||||
|
||||
override Expr getDataExpr() {
|
||||
exists(FunctionOutput output, int arg |
|
||||
target.hasRemoteFlowSource(output, _) and
|
||||
output.isParameterDeref(arg) and
|
||||
result = this.getArgument(arg)
|
||||
)
|
||||
}
|
||||
override Recv target;
|
||||
}
|
||||
|
||||
/**
|
||||
* Taint flow from a sensitive expression to a network operation with data
|
||||
* tainted by that expression.
|
||||
* An expression that is an argument or return value from an encryption or
|
||||
* decryption call.
|
||||
*/
|
||||
class SensitiveSendRecvConfiguration extends TaintTracking::Configuration {
|
||||
SensitiveSendRecvConfiguration() { this = "SensitiveSendRecvConfiguration" }
|
||||
|
||||
override predicate isSource(DataFlow::Node source) { source.asExpr() instanceof SensitiveExpr }
|
||||
|
||||
override predicate isSink(DataFlow::Node sink) {
|
||||
exists(NetworkSendRecv transmission |
|
||||
sink.asExpr() = transmission.getDataExpr() and
|
||||
// a zero socket descriptor is standard input, which is not interesting for this query.
|
||||
not exists(Zero zero |
|
||||
DataFlow::localFlow(DataFlow::exprNode(zero),
|
||||
DataFlow::exprNode(transmission.getSocketExpr()))
|
||||
class Encrypted extends Expr {
|
||||
Encrypted() {
|
||||
exists(FunctionCall fc |
|
||||
fc.getTarget().getName().toLowerCase().regexpMatch(".*(crypt|encode|decode).*") and
|
||||
(
|
||||
this = fc or
|
||||
this = fc.getAnArgument()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Taint flow from a sensitive expression.
|
||||
*/
|
||||
class FromSensitiveConfiguration extends TaintTracking::Configuration {
|
||||
FromSensitiveConfiguration() { this = "FromSensitiveConfiguration" }
|
||||
|
||||
override predicate isSource(DataFlow::Node source) { source instanceof SensitiveNode }
|
||||
|
||||
override predicate isSink(DataFlow::Node sink) {
|
||||
sink.asExpr() = any(NetworkSendRecv nsr).getDataExpr()
|
||||
or
|
||||
sink.asExpr() instanceof Encrypted
|
||||
}
|
||||
|
||||
override predicate isAdditionalTaintStep(DataFlow::Node node1, DataFlow::Node node2) {
|
||||
// flow through encryption functions to the return value (in case we can reach other sinks)
|
||||
node2.asExpr().(Encrypted).(FunctionCall).getAnArgument() = node1.asExpr()
|
||||
}
|
||||
}
|
||||
|
||||
from
|
||||
SensitiveSendRecvConfiguration config, DataFlow::PathNode source, DataFlow::PathNode sink,
|
||||
NetworkSendRecv transmission, string msg
|
||||
FromSensitiveConfiguration config, DataFlow::PathNode source, DataFlow::PathNode sink,
|
||||
NetworkSendRecv networkSendRecv, string msg
|
||||
where
|
||||
// flow from sensitive -> network data
|
||||
config.hasFlowPath(source, sink) and
|
||||
sink.getNode().asExpr() = transmission.getDataExpr() and
|
||||
if transmission instanceof NetworkSend
|
||||
sink.getNode().asExpr() = networkSendRecv.getDataExpr() and
|
||||
// no flow from sensitive -> evidence of encryption
|
||||
not exists(DataFlow::Node encrypted |
|
||||
config.hasFlow(source.getNode(), encrypted) and
|
||||
encrypted.asExpr() instanceof Encrypted
|
||||
) and
|
||||
// construct result
|
||||
if networkSendRecv instanceof NetworkSend
|
||||
then
|
||||
msg =
|
||||
"This operation transmits '" + sink.toString() +
|
||||
@@ -121,4 +204,4 @@ where
|
||||
msg =
|
||||
"This operation receives into '" + sink.toString() +
|
||||
"', which may put unencrypted sensitive data into $@"
|
||||
select transmission, source, sink, msg, source, source.getNode().asExpr().toString()
|
||||
select networkSendRecv, source, sink, msg, source, source.getNode().toString()
|
||||
|
||||
@@ -28,6 +28,11 @@ class PrivateHostName extends string {
|
||||
}
|
||||
}
|
||||
|
||||
pragma[nomagic]
|
||||
predicate privateHostNameFlowsToExpr(Expr e) {
|
||||
TaintTracking::localExprTaint(any(StringLiteral p | p.getValue() instanceof PrivateHostName), e)
|
||||
}
|
||||
|
||||
/**
|
||||
* A string containing an HTTP URL not in a private domain.
|
||||
*/
|
||||
@@ -38,11 +43,9 @@ class HttpStringLiteral extends StringLiteral {
|
||||
or
|
||||
exists(string tail |
|
||||
tail = s.regexpCapture("http://(.*)", 1) and not tail instanceof PrivateHostName
|
||||
) and
|
||||
not TaintTracking::localExprTaint(any(StringLiteral p |
|
||||
p.getValue() instanceof PrivateHostName
|
||||
), this.getParent*())
|
||||
)
|
||||
)
|
||||
) and
|
||||
not privateHostNameFlowsToExpr(this.getParent*())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -20,3 +20,22 @@ bool compareValues() {
|
||||
bool callCompareValues() {
|
||||
return compareValues<C1, C2> || compareValues<C1, C1>();
|
||||
}
|
||||
|
||||
template <bool C, typename T = void>
|
||||
struct enable_if {};
|
||||
|
||||
template <typename T>
|
||||
struct enable_if<true, T> { typedef T type; };
|
||||
|
||||
template<typename T1, typename T2>
|
||||
typename enable_if<T1::value <= T2::value, bool>::type constant_comparison() {
|
||||
return true;
|
||||
}
|
||||
|
||||
struct Value0 {
|
||||
const static int value = 0;
|
||||
};
|
||||
|
||||
void instantiation_with_pointless_comparison() {
|
||||
constant_comparison<Value0, Value0>(); // GOOD
|
||||
}
|
||||
@@ -1,49 +1,228 @@
|
||||
edges
|
||||
| test3.cpp:68:21:68:29 | password1 | test3.cpp:70:15:70:17 | ptr |
|
||||
| test3.cpp:75:15:75:22 | password | test3.cpp:77:15:77:17 | ptr |
|
||||
| test3.cpp:106:20:106:25 | buffer | test3.cpp:108:14:108:19 | buffer |
|
||||
| test3.cpp:111:28:111:33 | buffer | test3.cpp:113:9:113:14 | buffer |
|
||||
| test3.cpp:120:9:120:23 | global_password | test3.cpp:138:16:138:29 | call to get_global_str |
|
||||
| test3.cpp:128:11:128:18 | password | test3.cpp:106:20:106:25 | buffer |
|
||||
| test3.cpp:132:21:132:22 | call to id | test3.cpp:134:15:134:17 | ptr |
|
||||
| test3.cpp:132:24:132:32 | password1 | test3.cpp:111:28:111:33 | buffer |
|
||||
| test3.cpp:132:24:132:32 | password1 | test3.cpp:132:21:132:22 | call to id |
|
||||
| test3.cpp:138:16:138:29 | call to get_global_str | test3.cpp:140:15:140:18 | data |
|
||||
| test3.cpp:151:19:151:26 | password | test3.cpp:153:15:153:20 | buffer |
|
||||
| test3.cpp:17:28:17:36 | password1 | test3.cpp:22:15:22:23 | password1 |
|
||||
| test3.cpp:17:51:17:59 | password2 | test3.cpp:26:15:26:23 | password2 |
|
||||
| test3.cpp:45:8:45:15 | password | test3.cpp:47:15:47:22 | password |
|
||||
| test3.cpp:53:8:53:15 | password | test3.cpp:55:15:55:22 | password |
|
||||
| test3.cpp:71:32:71:40 | password1 | test3.cpp:76:15:76:17 | ptr |
|
||||
| test3.cpp:80:8:80:15 | password | test3.cpp:83:15:83:17 | ptr |
|
||||
| test3.cpp:98:8:98:15 | password | test3.cpp:101:12:101:19 | password |
|
||||
| test3.cpp:112:20:112:25 | buffer | test3.cpp:114:14:114:19 | buffer |
|
||||
| test3.cpp:117:28:117:33 | buffer | test3.cpp:119:9:119:14 | buffer |
|
||||
| test3.cpp:126:9:126:23 | global_password | test3.cpp:144:16:144:29 | call to get_global_str |
|
||||
| test3.cpp:129:39:129:47 | password1 | test3.cpp:138:24:138:32 | password1 |
|
||||
| test3.cpp:132:8:132:15 | password | test3.cpp:134:11:134:18 | password |
|
||||
| test3.cpp:134:11:134:18 | password | test3.cpp:112:20:112:25 | buffer |
|
||||
| test3.cpp:138:21:138:22 | call to id | test3.cpp:140:15:140:17 | ptr |
|
||||
| test3.cpp:138:24:138:32 | password1 | test3.cpp:117:28:117:33 | buffer |
|
||||
| test3.cpp:138:24:138:32 | password1 | test3.cpp:138:21:138:22 | call to id |
|
||||
| test3.cpp:144:16:144:29 | call to get_global_str | test3.cpp:146:15:146:18 | data |
|
||||
| test3.cpp:152:29:152:36 | password | test3.cpp:159:15:159:20 | buffer |
|
||||
| test3.cpp:171:8:171:15 | password | test3.cpp:173:15:173:22 | password |
|
||||
| test3.cpp:171:8:171:15 | password | test3.cpp:175:3:175:17 | call to decrypt_inplace |
|
||||
| test3.cpp:171:8:171:15 | password | test3.cpp:175:19:175:26 | password |
|
||||
| test3.cpp:179:8:179:15 | password | test3.cpp:181:15:181:22 | password |
|
||||
| test3.cpp:179:8:179:15 | password | test3.cpp:184:3:184:17 | call to decrypt_inplace |
|
||||
| test3.cpp:179:8:179:15 | password | test3.cpp:184:19:184:26 | password |
|
||||
| test3.cpp:188:8:188:15 | password | test3.cpp:191:15:191:22 | password |
|
||||
| test3.cpp:188:8:188:15 | password | test3.cpp:193:18:193:28 | call to rtn_decrypt |
|
||||
| test3.cpp:188:8:188:15 | password | test3.cpp:193:30:193:37 | password |
|
||||
| test3.cpp:197:8:197:15 | password | test3.cpp:199:3:199:17 | call to encrypt_inplace |
|
||||
| test3.cpp:197:8:197:15 | password | test3.cpp:199:19:199:26 | password |
|
||||
| test3.cpp:197:8:197:15 | password | test3.cpp:201:15:201:22 | password |
|
||||
| test3.cpp:205:8:205:15 | password | test3.cpp:207:3:207:17 | call to encrypt_inplace |
|
||||
| test3.cpp:205:8:205:15 | password | test3.cpp:207:19:207:26 | password |
|
||||
| test3.cpp:205:8:205:15 | password | test3.cpp:210:15:210:22 | password |
|
||||
| test3.cpp:214:8:214:15 | password | test3.cpp:217:18:217:28 | call to rtn_encrypt |
|
||||
| test3.cpp:214:8:214:15 | password | test3.cpp:217:18:217:28 | call to rtn_encrypt |
|
||||
| test3.cpp:214:8:214:15 | password | test3.cpp:217:30:217:37 | password |
|
||||
| test3.cpp:214:8:214:15 | password | test3.cpp:219:15:219:26 | password_ptr |
|
||||
| test3.cpp:217:18:217:28 | call to rtn_encrypt | test3.cpp:219:15:219:26 | password_ptr |
|
||||
| test3.cpp:225:34:225:41 | password | test3.cpp:227:22:227:29 | password |
|
||||
| test3.cpp:225:34:225:41 | password | test3.cpp:228:26:228:33 | password |
|
||||
| test3.cpp:239:7:239:14 | password | test3.cpp:241:8:241:15 | password |
|
||||
| test3.cpp:239:7:239:14 | password | test3.cpp:242:8:242:15 | password |
|
||||
| test3.cpp:252:8:252:16 | password1 | test3.cpp:254:15:254:23 | password1 |
|
||||
| test3.cpp:252:8:252:16 | password1 | test3.cpp:256:3:256:19 | call to decrypt_to_buffer |
|
||||
| test3.cpp:252:8:252:16 | password1 | test3.cpp:256:21:256:29 | password1 |
|
||||
| test3.cpp:252:24:252:32 | password2 | test3.cpp:256:3:256:19 | call to decrypt_to_buffer |
|
||||
| test3.cpp:252:24:252:32 | password2 | test3.cpp:256:32:256:40 | password2 |
|
||||
| test3.cpp:260:8:260:16 | password1 | test3.cpp:262:3:262:19 | call to encrypt_to_buffer |
|
||||
| test3.cpp:260:8:260:16 | password1 | test3.cpp:262:21:262:29 | password1 |
|
||||
| test3.cpp:260:24:260:32 | password2 | test3.cpp:262:3:262:19 | call to encrypt_to_buffer |
|
||||
| test3.cpp:260:24:260:32 | password2 | test3.cpp:262:32:262:40 | password2 |
|
||||
| test3.cpp:260:24:260:32 | password2 | test3.cpp:264:15:264:23 | password2 |
|
||||
| test3.cpp:268:19:268:26 | password | test3.cpp:272:15:272:18 | data |
|
||||
| test3.cpp:278:20:278:23 | data | test3.cpp:278:20:278:23 | data |
|
||||
| test3.cpp:278:20:278:23 | data | test3.cpp:280:14:280:17 | data |
|
||||
| test3.cpp:283:20:283:23 | data | test3.cpp:283:20:283:23 | data |
|
||||
| test3.cpp:283:20:283:23 | data | test3.cpp:285:14:285:17 | data |
|
||||
| test3.cpp:288:20:288:23 | data | test3.cpp:290:14:290:17 | data |
|
||||
| test3.cpp:293:20:293:23 | data | test3.cpp:293:20:293:23 | data |
|
||||
| test3.cpp:293:20:293:23 | data | test3.cpp:295:14:295:17 | data |
|
||||
| test3.cpp:298:20:298:23 | data | test3.cpp:300:14:300:17 | data |
|
||||
| test3.cpp:308:41:308:49 | password1 | test3.cpp:312:3:312:17 | call to encrypt_inplace |
|
||||
| test3.cpp:308:41:308:49 | password1 | test3.cpp:312:19:312:27 | password1 |
|
||||
| test3.cpp:308:41:308:49 | password1 | test3.cpp:313:11:313:19 | password1 |
|
||||
| test3.cpp:308:41:308:49 | password1 | test3.cpp:314:11:314:19 | password1 |
|
||||
| test3.cpp:308:41:308:49 | password1 | test3.cpp:316:11:316:19 | password1 |
|
||||
| test3.cpp:308:41:308:49 | password1 | test3.cpp:317:11:317:19 | password1 |
|
||||
| test3.cpp:308:58:308:66 | password2 | test3.cpp:324:11:324:14 | data |
|
||||
| test3.cpp:308:58:308:66 | password2 | test3.cpp:325:11:325:14 | data |
|
||||
| test3.cpp:313:11:313:19 | password1 | test3.cpp:278:20:278:23 | data |
|
||||
| test3.cpp:313:11:313:19 | password1 | test3.cpp:313:11:313:19 | ref arg password1 |
|
||||
| test3.cpp:313:11:313:19 | ref arg password1 | test3.cpp:314:11:314:19 | password1 |
|
||||
| test3.cpp:314:11:314:19 | password1 | test3.cpp:283:20:283:23 | data |
|
||||
| test3.cpp:316:11:316:19 | password1 | test3.cpp:283:20:283:23 | data |
|
||||
| test3.cpp:316:11:316:19 | password1 | test3.cpp:316:11:316:19 | ref arg password1 |
|
||||
| test3.cpp:316:11:316:19 | ref arg password1 | test3.cpp:317:11:317:19 | password1 |
|
||||
| test3.cpp:317:11:317:19 | password1 | test3.cpp:288:20:288:23 | data |
|
||||
| test3.cpp:324:11:324:14 | data | test3.cpp:293:20:293:23 | data |
|
||||
| test3.cpp:324:11:324:14 | data | test3.cpp:324:11:324:14 | ref arg data |
|
||||
| test3.cpp:324:11:324:14 | ref arg data | test3.cpp:325:11:325:14 | data |
|
||||
| test3.cpp:325:11:325:14 | data | test3.cpp:298:20:298:23 | data |
|
||||
| test3.cpp:339:9:339:16 | password | test3.cpp:341:16:341:23 | password |
|
||||
| test3.cpp:350:9:350:16 | password | test3.cpp:352:16:352:23 | password |
|
||||
| test3.cpp:350:9:350:16 | password | test3.cpp:353:4:353:18 | call to decrypt_inplace |
|
||||
| test3.cpp:350:9:350:16 | password | test3.cpp:353:20:353:27 | password |
|
||||
| test.cpp:41:23:41:43 | cleartext password! | test.cpp:48:21:48:27 | call to encrypt |
|
||||
| test.cpp:41:23:41:43 | cleartext password! | test.cpp:48:29:48:39 | thePassword |
|
||||
| test.cpp:66:23:66:43 | cleartext password! | test.cpp:76:21:76:27 | call to encrypt |
|
||||
| test.cpp:66:23:66:43 | cleartext password! | test.cpp:76:29:76:39 | thePassword |
|
||||
nodes
|
||||
| test3.cpp:20:15:20:23 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:24:15:24:23 | password2 | semmle.label | password2 |
|
||||
| test3.cpp:41:15:41:22 | password | semmle.label | password |
|
||||
| test3.cpp:49:15:49:22 | password | semmle.label | password |
|
||||
| test3.cpp:68:21:68:29 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:70:15:70:17 | ptr | semmle.label | ptr |
|
||||
| test3.cpp:75:15:75:22 | password | semmle.label | password |
|
||||
| test3.cpp:77:15:77:17 | ptr | semmle.label | ptr |
|
||||
| test3.cpp:95:12:95:19 | password | semmle.label | password |
|
||||
| test3.cpp:106:20:106:25 | buffer | semmle.label | buffer |
|
||||
| test3.cpp:108:14:108:19 | buffer | semmle.label | buffer |
|
||||
| test3.cpp:111:28:111:33 | buffer | semmle.label | buffer |
|
||||
| test3.cpp:113:9:113:14 | buffer | semmle.label | buffer |
|
||||
| test3.cpp:120:9:120:23 | global_password | semmle.label | global_password |
|
||||
| test3.cpp:128:11:128:18 | password | semmle.label | password |
|
||||
| test3.cpp:132:21:132:22 | call to id | semmle.label | call to id |
|
||||
| test3.cpp:132:24:132:32 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:134:15:134:17 | ptr | semmle.label | ptr |
|
||||
| test3.cpp:138:16:138:29 | call to get_global_str | semmle.label | call to get_global_str |
|
||||
| test3.cpp:140:15:140:18 | data | semmle.label | data |
|
||||
| test3.cpp:151:19:151:26 | password | semmle.label | password |
|
||||
| test3.cpp:153:15:153:20 | buffer | semmle.label | buffer |
|
||||
| test3.cpp:17:28:17:36 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:17:51:17:59 | password2 | semmle.label | password2 |
|
||||
| test3.cpp:22:15:22:23 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:26:15:26:23 | password2 | semmle.label | password2 |
|
||||
| test3.cpp:45:8:45:15 | password | semmle.label | password |
|
||||
| test3.cpp:47:15:47:22 | password | semmle.label | password |
|
||||
| test3.cpp:53:8:53:15 | password | semmle.label | password |
|
||||
| test3.cpp:55:15:55:22 | password | semmle.label | password |
|
||||
| test3.cpp:71:32:71:40 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:76:15:76:17 | ptr | semmle.label | ptr |
|
||||
| test3.cpp:80:8:80:15 | password | semmle.label | password |
|
||||
| test3.cpp:83:15:83:17 | ptr | semmle.label | ptr |
|
||||
| test3.cpp:98:8:98:15 | password | semmle.label | password |
|
||||
| test3.cpp:101:12:101:19 | password | semmle.label | password |
|
||||
| test3.cpp:112:20:112:25 | buffer | semmle.label | buffer |
|
||||
| test3.cpp:114:14:114:19 | buffer | semmle.label | buffer |
|
||||
| test3.cpp:117:28:117:33 | buffer | semmle.label | buffer |
|
||||
| test3.cpp:119:9:119:14 | buffer | semmle.label | buffer |
|
||||
| test3.cpp:126:9:126:23 | global_password | semmle.label | global_password |
|
||||
| test3.cpp:129:39:129:47 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:132:8:132:15 | password | semmle.label | password |
|
||||
| test3.cpp:134:11:134:18 | password | semmle.label | password |
|
||||
| test3.cpp:138:21:138:22 | call to id | semmle.label | call to id |
|
||||
| test3.cpp:138:24:138:32 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:140:15:140:17 | ptr | semmle.label | ptr |
|
||||
| test3.cpp:144:16:144:29 | call to get_global_str | semmle.label | call to get_global_str |
|
||||
| test3.cpp:146:15:146:18 | data | semmle.label | data |
|
||||
| test3.cpp:152:29:152:36 | password | semmle.label | password |
|
||||
| test3.cpp:159:15:159:20 | buffer | semmle.label | buffer |
|
||||
| test3.cpp:171:8:171:15 | password | semmle.label | password |
|
||||
| test3.cpp:173:15:173:22 | password | semmle.label | password |
|
||||
| test3.cpp:175:3:175:17 | call to decrypt_inplace | semmle.label | call to decrypt_inplace |
|
||||
| test3.cpp:175:19:175:26 | password | semmle.label | password |
|
||||
| test3.cpp:179:8:179:15 | password | semmle.label | password |
|
||||
| test3.cpp:181:15:181:22 | password | semmle.label | password |
|
||||
| test3.cpp:184:3:184:17 | call to decrypt_inplace | semmle.label | call to decrypt_inplace |
|
||||
| test3.cpp:184:19:184:26 | password | semmle.label | password |
|
||||
| test3.cpp:188:8:188:15 | password | semmle.label | password |
|
||||
| test3.cpp:191:15:191:22 | password | semmle.label | password |
|
||||
| test3.cpp:193:18:193:28 | call to rtn_decrypt | semmle.label | call to rtn_decrypt |
|
||||
| test3.cpp:193:30:193:37 | password | semmle.label | password |
|
||||
| test3.cpp:197:8:197:15 | password | semmle.label | password |
|
||||
| test3.cpp:199:3:199:17 | call to encrypt_inplace | semmle.label | call to encrypt_inplace |
|
||||
| test3.cpp:199:19:199:26 | password | semmle.label | password |
|
||||
| test3.cpp:201:15:201:22 | password | semmle.label | password |
|
||||
| test3.cpp:205:8:205:15 | password | semmle.label | password |
|
||||
| test3.cpp:207:3:207:17 | call to encrypt_inplace | semmle.label | call to encrypt_inplace |
|
||||
| test3.cpp:207:19:207:26 | password | semmle.label | password |
|
||||
| test3.cpp:210:15:210:22 | password | semmle.label | password |
|
||||
| test3.cpp:214:8:214:15 | password | semmle.label | password |
|
||||
| test3.cpp:217:18:217:28 | call to rtn_encrypt | semmle.label | call to rtn_encrypt |
|
||||
| test3.cpp:217:18:217:28 | call to rtn_encrypt | semmle.label | call to rtn_encrypt |
|
||||
| test3.cpp:217:30:217:37 | password | semmle.label | password |
|
||||
| test3.cpp:219:15:219:26 | password_ptr | semmle.label | password_ptr |
|
||||
| test3.cpp:225:34:225:41 | password | semmle.label | password |
|
||||
| test3.cpp:227:22:227:29 | password | semmle.label | password |
|
||||
| test3.cpp:228:26:228:33 | password | semmle.label | password |
|
||||
| test3.cpp:239:7:239:14 | password | semmle.label | password |
|
||||
| test3.cpp:241:8:241:15 | password | semmle.label | password |
|
||||
| test3.cpp:242:8:242:15 | password | semmle.label | password |
|
||||
| test3.cpp:252:8:252:16 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:252:24:252:32 | password2 | semmle.label | password2 |
|
||||
| test3.cpp:254:15:254:23 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:256:3:256:19 | call to decrypt_to_buffer | semmle.label | call to decrypt_to_buffer |
|
||||
| test3.cpp:256:21:256:29 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:256:32:256:40 | password2 | semmle.label | password2 |
|
||||
| test3.cpp:260:8:260:16 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:260:24:260:32 | password2 | semmle.label | password2 |
|
||||
| test3.cpp:262:3:262:19 | call to encrypt_to_buffer | semmle.label | call to encrypt_to_buffer |
|
||||
| test3.cpp:262:21:262:29 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:262:32:262:40 | password2 | semmle.label | password2 |
|
||||
| test3.cpp:264:15:264:23 | password2 | semmle.label | password2 |
|
||||
| test3.cpp:268:19:268:26 | password | semmle.label | password |
|
||||
| test3.cpp:272:15:272:18 | data | semmle.label | data |
|
||||
| test3.cpp:278:20:278:23 | data | semmle.label | data |
|
||||
| test3.cpp:278:20:278:23 | data | semmle.label | data |
|
||||
| test3.cpp:280:14:280:17 | data | semmle.label | data |
|
||||
| test3.cpp:283:20:283:23 | data | semmle.label | data |
|
||||
| test3.cpp:283:20:283:23 | data | semmle.label | data |
|
||||
| test3.cpp:285:14:285:17 | data | semmle.label | data |
|
||||
| test3.cpp:288:20:288:23 | data | semmle.label | data |
|
||||
| test3.cpp:290:14:290:17 | data | semmle.label | data |
|
||||
| test3.cpp:293:20:293:23 | data | semmle.label | data |
|
||||
| test3.cpp:293:20:293:23 | data | semmle.label | data |
|
||||
| test3.cpp:295:14:295:17 | data | semmle.label | data |
|
||||
| test3.cpp:298:20:298:23 | data | semmle.label | data |
|
||||
| test3.cpp:300:14:300:17 | data | semmle.label | data |
|
||||
| test3.cpp:308:41:308:49 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:308:58:308:66 | password2 | semmle.label | password2 |
|
||||
| test3.cpp:312:3:312:17 | call to encrypt_inplace | semmle.label | call to encrypt_inplace |
|
||||
| test3.cpp:312:19:312:27 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:313:11:313:19 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:313:11:313:19 | ref arg password1 | semmle.label | ref arg password1 |
|
||||
| test3.cpp:314:11:314:19 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:316:11:316:19 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:316:11:316:19 | ref arg password1 | semmle.label | ref arg password1 |
|
||||
| test3.cpp:317:11:317:19 | password1 | semmle.label | password1 |
|
||||
| test3.cpp:324:11:324:14 | data | semmle.label | data |
|
||||
| test3.cpp:324:11:324:14 | ref arg data | semmle.label | ref arg data |
|
||||
| test3.cpp:325:11:325:14 | data | semmle.label | data |
|
||||
| test3.cpp:339:9:339:16 | password | semmle.label | password |
|
||||
| test3.cpp:341:16:341:23 | password | semmle.label | password |
|
||||
| test3.cpp:350:9:350:16 | password | semmle.label | password |
|
||||
| test3.cpp:352:16:352:23 | password | semmle.label | password |
|
||||
| test3.cpp:353:4:353:18 | call to decrypt_inplace | semmle.label | call to decrypt_inplace |
|
||||
| test3.cpp:353:20:353:27 | password | semmle.label | password |
|
||||
| test.cpp:41:23:41:43 | cleartext password! | semmle.label | cleartext password! |
|
||||
| test.cpp:48:21:48:27 | call to encrypt | semmle.label | call to encrypt |
|
||||
| test.cpp:48:29:48:39 | thePassword | semmle.label | thePassword |
|
||||
| test.cpp:66:23:66:43 | cleartext password! | semmle.label | cleartext password! |
|
||||
| test.cpp:76:21:76:27 | call to encrypt | semmle.label | call to encrypt |
|
||||
| test.cpp:76:29:76:39 | thePassword | semmle.label | thePassword |
|
||||
subpaths
|
||||
| test3.cpp:132:24:132:32 | password1 | test3.cpp:111:28:111:33 | buffer | test3.cpp:113:9:113:14 | buffer | test3.cpp:132:21:132:22 | call to id |
|
||||
| test3.cpp:138:24:138:32 | password1 | test3.cpp:117:28:117:33 | buffer | test3.cpp:119:9:119:14 | buffer | test3.cpp:138:21:138:22 | call to id |
|
||||
| test3.cpp:313:11:313:19 | password1 | test3.cpp:278:20:278:23 | data | test3.cpp:278:20:278:23 | data | test3.cpp:313:11:313:19 | ref arg password1 |
|
||||
| test3.cpp:316:11:316:19 | password1 | test3.cpp:283:20:283:23 | data | test3.cpp:283:20:283:23 | data | test3.cpp:316:11:316:19 | ref arg password1 |
|
||||
| test3.cpp:324:11:324:14 | data | test3.cpp:293:20:293:23 | data | test3.cpp:293:20:293:23 | data | test3.cpp:324:11:324:14 | ref arg data |
|
||||
#select
|
||||
| test3.cpp:20:3:20:6 | call to send | test3.cpp:20:15:20:23 | password1 | test3.cpp:20:15:20:23 | password1 | This operation transmits 'password1', which may contain unencrypted sensitive data from $@ | test3.cpp:20:15:20:23 | password1 | password1 |
|
||||
| test3.cpp:24:3:24:6 | call to send | test3.cpp:24:15:24:23 | password2 | test3.cpp:24:15:24:23 | password2 | This operation transmits 'password2', which may contain unencrypted sensitive data from $@ | test3.cpp:24:15:24:23 | password2 | password2 |
|
||||
| test3.cpp:41:3:41:6 | call to recv | test3.cpp:41:15:41:22 | password | test3.cpp:41:15:41:22 | password | This operation receives into 'password', which may put unencrypted sensitive data into $@ | test3.cpp:41:15:41:22 | password | password |
|
||||
| test3.cpp:49:3:49:6 | call to recv | test3.cpp:49:15:49:22 | password | test3.cpp:49:15:49:22 | password | This operation receives into 'password', which may put unencrypted sensitive data into $@ | test3.cpp:49:15:49:22 | password | password |
|
||||
| test3.cpp:70:3:70:6 | call to send | test3.cpp:68:21:68:29 | password1 | test3.cpp:70:15:70:17 | ptr | This operation transmits 'ptr', which may contain unencrypted sensitive data from $@ | test3.cpp:68:21:68:29 | password1 | password1 |
|
||||
| test3.cpp:77:3:77:6 | call to recv | test3.cpp:75:15:75:22 | password | test3.cpp:77:15:77:17 | ptr | This operation receives into 'ptr', which may put unencrypted sensitive data into $@ | test3.cpp:75:15:75:22 | password | password |
|
||||
| test3.cpp:95:3:95:6 | call to read | test3.cpp:95:12:95:19 | password | test3.cpp:95:12:95:19 | password | This operation receives into 'password', which may put unencrypted sensitive data into $@ | test3.cpp:95:12:95:19 | password | password |
|
||||
| test3.cpp:108:2:108:5 | call to recv | test3.cpp:128:11:128:18 | password | test3.cpp:108:14:108:19 | buffer | This operation receives into 'buffer', which may put unencrypted sensitive data into $@ | test3.cpp:128:11:128:18 | password | password |
|
||||
| test3.cpp:134:3:134:6 | call to send | test3.cpp:132:24:132:32 | password1 | test3.cpp:134:15:134:17 | ptr | This operation transmits 'ptr', which may contain unencrypted sensitive data from $@ | test3.cpp:132:24:132:32 | password1 | password1 |
|
||||
| test3.cpp:140:3:140:6 | call to send | test3.cpp:120:9:120:23 | global_password | test3.cpp:140:15:140:18 | data | This operation transmits 'data', which may contain unencrypted sensitive data from $@ | test3.cpp:120:9:120:23 | global_password | global_password |
|
||||
| test3.cpp:153:3:153:6 | call to send | test3.cpp:151:19:151:26 | password | test3.cpp:153:15:153:20 | buffer | This operation transmits 'buffer', which may contain unencrypted sensitive data from $@ | test3.cpp:151:19:151:26 | password | password |
|
||||
| test3.cpp:22:3:22:6 | call to send | test3.cpp:17:28:17:36 | password1 | test3.cpp:22:15:22:23 | password1 | This operation transmits 'password1', which may contain unencrypted sensitive data from $@ | test3.cpp:17:28:17:36 | password1 | password1 |
|
||||
| test3.cpp:26:3:26:6 | call to send | test3.cpp:17:51:17:59 | password2 | test3.cpp:26:15:26:23 | password2 | This operation transmits 'password2', which may contain unencrypted sensitive data from $@ | test3.cpp:17:51:17:59 | password2 | password2 |
|
||||
| test3.cpp:47:3:47:6 | call to recv | test3.cpp:45:8:45:15 | password | test3.cpp:47:15:47:22 | password | This operation receives into 'password', which may put unencrypted sensitive data into $@ | test3.cpp:45:8:45:15 | password | password |
|
||||
| test3.cpp:55:3:55:6 | call to recv | test3.cpp:53:8:53:15 | password | test3.cpp:55:15:55:22 | password | This operation receives into 'password', which may put unencrypted sensitive data into $@ | test3.cpp:53:8:53:15 | password | password |
|
||||
| test3.cpp:76:3:76:6 | call to send | test3.cpp:71:32:71:40 | password1 | test3.cpp:76:15:76:17 | ptr | This operation transmits 'ptr', which may contain unencrypted sensitive data from $@ | test3.cpp:71:32:71:40 | password1 | password1 |
|
||||
| test3.cpp:83:3:83:6 | call to recv | test3.cpp:80:8:80:15 | password | test3.cpp:83:15:83:17 | ptr | This operation receives into 'ptr', which may put unencrypted sensitive data into $@ | test3.cpp:80:8:80:15 | password | password |
|
||||
| test3.cpp:101:3:101:6 | call to read | test3.cpp:98:8:98:15 | password | test3.cpp:101:12:101:19 | password | This operation receives into 'password', which may put unencrypted sensitive data into $@ | test3.cpp:98:8:98:15 | password | password |
|
||||
| test3.cpp:114:2:114:5 | call to recv | test3.cpp:132:8:132:15 | password | test3.cpp:114:14:114:19 | buffer | This operation receives into 'buffer', which may put unencrypted sensitive data into $@ | test3.cpp:132:8:132:15 | password | password |
|
||||
| test3.cpp:140:3:140:6 | call to send | test3.cpp:129:39:129:47 | password1 | test3.cpp:140:15:140:17 | ptr | This operation transmits 'ptr', which may contain unencrypted sensitive data from $@ | test3.cpp:129:39:129:47 | password1 | password1 |
|
||||
| test3.cpp:146:3:146:6 | call to send | test3.cpp:126:9:126:23 | global_password | test3.cpp:146:15:146:18 | data | This operation transmits 'data', which may contain unencrypted sensitive data from $@ | test3.cpp:126:9:126:23 | global_password | global_password |
|
||||
| test3.cpp:159:3:159:6 | call to send | test3.cpp:152:29:152:36 | password | test3.cpp:159:15:159:20 | buffer | This operation transmits 'buffer', which may contain unencrypted sensitive data from $@ | test3.cpp:152:29:152:36 | password | password |
|
||||
| test3.cpp:227:2:227:5 | call to send | test3.cpp:225:34:225:41 | password | test3.cpp:227:22:227:29 | password | This operation transmits 'password', which may contain unencrypted sensitive data from $@ | test3.cpp:225:34:225:41 | password | password |
|
||||
| test3.cpp:228:2:228:5 | call to send | test3.cpp:225:34:225:41 | password | test3.cpp:228:26:228:33 | password | This operation transmits 'password', which may contain unencrypted sensitive data from $@ | test3.cpp:225:34:225:41 | password | password |
|
||||
| test3.cpp:241:2:241:6 | call to fgets | test3.cpp:239:7:239:14 | password | test3.cpp:241:8:241:15 | password | This operation receives into 'password', which may put unencrypted sensitive data into $@ | test3.cpp:239:7:239:14 | password | password |
|
||||
| test3.cpp:242:2:242:6 | call to fgets | test3.cpp:239:7:239:14 | password | test3.cpp:242:8:242:15 | password | This operation receives into 'password', which may put unencrypted sensitive data into $@ | test3.cpp:239:7:239:14 | password | password |
|
||||
| test3.cpp:272:3:272:6 | call to send | test3.cpp:268:19:268:26 | password | test3.cpp:272:15:272:18 | data | This operation transmits 'data', which may contain unencrypted sensitive data from $@ | test3.cpp:268:19:268:26 | password | password |
|
||||
| test3.cpp:295:2:295:5 | call to send | test3.cpp:308:58:308:66 | password2 | test3.cpp:295:14:295:17 | data | This operation transmits 'data', which may contain unencrypted sensitive data from $@ | test3.cpp:308:58:308:66 | password2 | password2 |
|
||||
| test3.cpp:300:2:300:5 | call to send | test3.cpp:308:58:308:66 | password2 | test3.cpp:300:14:300:17 | data | This operation transmits 'data', which may contain unencrypted sensitive data from $@ | test3.cpp:308:58:308:66 | password2 | password2 |
|
||||
| test3.cpp:341:4:341:7 | call to recv | test3.cpp:339:9:339:16 | password | test3.cpp:341:16:341:23 | password | This operation receives into 'password', which may put unencrypted sensitive data into $@ | test3.cpp:339:9:339:16 | password | password |
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
|
||||
typedef unsigned long size_t;
|
||||
#define STDIN_FILENO (0)
|
||||
#define STDOUT_FILENO (1)
|
||||
int stdout_fileno = STDOUT_FILENO;
|
||||
|
||||
size_t strlen(const char *s);
|
||||
|
||||
@@ -31,6 +33,10 @@ void test_send(const char *password1, const char *password2, const char *passwor
|
||||
{
|
||||
send(val(), message, strlen(message), val()); // GOOD: `message` is not a password
|
||||
}
|
||||
|
||||
{
|
||||
send(stdout_fileno, password2, strlen(password2), val()); // GOOD: `password2` is sent to stdout, not a network socket (this may be an issue but is not within the scope of the `cpp/cleartext-transmission` query)
|
||||
}
|
||||
}
|
||||
|
||||
void test_receive()
|
||||
@@ -125,7 +131,7 @@ void test_interprocedural(const char *password1)
|
||||
{
|
||||
char password[256];
|
||||
|
||||
my_recv(password, 256); // BAD: `password` is received plaintext [detected on line 108]
|
||||
my_recv(password, 256); // BAD: `password` is received plaintext [detected in `my_recv`]
|
||||
}
|
||||
|
||||
{
|
||||
@@ -153,3 +159,200 @@ void test_taint(const char *password)
|
||||
send(val(), buffer, 16, val()); // BAD: `password` is (partially) sent plaintext
|
||||
}
|
||||
}
|
||||
|
||||
void encrypt_inplace(char *buffer);
|
||||
void decrypt_inplace(char *buffer);
|
||||
char *rtn_encrypt(const char *buffer);
|
||||
char *rtn_decrypt(const char *buffer);
|
||||
|
||||
void test_decrypt()
|
||||
{
|
||||
{
|
||||
char password[256];
|
||||
|
||||
recv(val(), password, 256, val()); // GOOD: password is encrypted
|
||||
|
||||
decrypt_inplace(password); // proof that `password` was in fact encrypted
|
||||
}
|
||||
|
||||
{
|
||||
char password[256];
|
||||
|
||||
recv(val(), password, 256, val()); // GOOD: password is encrypted
|
||||
password[255] = 0;
|
||||
|
||||
decrypt_inplace(password); // proof that `password` was in fact encrypted
|
||||
}
|
||||
|
||||
{
|
||||
char password[256];
|
||||
char *password_ptr;
|
||||
|
||||
recv(val(), password, 256, val()); // GOOD: password is encrypted
|
||||
|
||||
password_ptr = rtn_decrypt(password); // proof that `password` was in fact encrypted
|
||||
}
|
||||
|
||||
{
|
||||
char password[256];
|
||||
|
||||
encrypt_inplace(password); // proof that `password` is in fact encrypted
|
||||
|
||||
send(val(), password, strlen(password), val()); // GOOD: password is encrypted
|
||||
}
|
||||
|
||||
{
|
||||
char password[256];
|
||||
|
||||
encrypt_inplace(password); // proof that `password` is in fact encrypted
|
||||
password[255] = 0;
|
||||
|
||||
send(val(), password, strlen(password), val()); // GOOD: password is encrypted
|
||||
}
|
||||
|
||||
{
|
||||
char password[256];
|
||||
char *password_ptr;
|
||||
|
||||
password_ptr = rtn_encrypt(password); // proof that `password` is in fact encrypted
|
||||
|
||||
send(val(), password_ptr, strlen(password_ptr), val()); // GOOD: password is encrypted
|
||||
}
|
||||
}
|
||||
|
||||
int get_socket(int from);
|
||||
|
||||
void test_more_stdio(const char *password)
|
||||
{
|
||||
send(get_socket(1), password, 128, val()); // GOOD: `getsocket(1)` is probably standard output [FALSE POSITIVE]
|
||||
send(get_socket(val()), password, 128, val()); // BAD
|
||||
}
|
||||
|
||||
typedef struct {} FILE;
|
||||
char *fgets(char *s, int n, FILE *stream);
|
||||
|
||||
FILE *get_stdstream(int index);
|
||||
#define STDIN_STREAM (get_stdstream(0))
|
||||
|
||||
void test_fgets(FILE *stream)
|
||||
{
|
||||
char password[128];
|
||||
|
||||
fgets(password, 128, stream); // BAD
|
||||
fgets(password, 128, STDIN_STREAM); // GOOD: `STDIN_STREAM` is probably standard input [FALSE POSITIVE]
|
||||
}
|
||||
|
||||
void encrypt_to_buffer(const char *input, char* output);
|
||||
void decrypt_to_buffer(const char *input, char* output);
|
||||
char *strcpy(char *s1, const char *s2);
|
||||
|
||||
void test_crypt_more()
|
||||
{
|
||||
{
|
||||
char password1[256], password2[256];
|
||||
|
||||
recv(val(), password1, 256, val()); // GOOD: password is encrypted
|
||||
|
||||
decrypt_to_buffer(password1, password2); // proof that `password1` was in fact encrypted
|
||||
}
|
||||
|
||||
{
|
||||
char password1[256], password2[256];
|
||||
|
||||
encrypt_to_buffer(password1, password2); // proof that `password2` is in fact encrypted
|
||||
|
||||
send(val(), password2, strlen(password2), val()); // GOOD: password is encrypted
|
||||
}
|
||||
|
||||
{
|
||||
char data[256], password[256];
|
||||
|
||||
strcpy(data, password); // not proof of anything
|
||||
|
||||
send(val(), data, strlen(data), val()); // BAD: password is sent plaintext
|
||||
}
|
||||
}
|
||||
|
||||
bool cond();
|
||||
|
||||
void target1(char *data)
|
||||
{
|
||||
send(val(), data, strlen(data), val()); // GOOD: encrypted
|
||||
}
|
||||
|
||||
void target2(char *data)
|
||||
{
|
||||
send(val(), data, strlen(data), val()); // BAD: from one source this is a plaintext password [NOT DETECTED]
|
||||
}
|
||||
|
||||
void target3(char *data)
|
||||
{
|
||||
send(val(), data, strlen(data), val()); // BAD: data is a plaintext password [NOT DETECTED]
|
||||
}
|
||||
|
||||
void target4(char *data)
|
||||
{
|
||||
send(val(), data, strlen(data), val()); // BAD: data is a plaintext password
|
||||
}
|
||||
|
||||
void target5(char *data)
|
||||
{
|
||||
send(val(), data, strlen(data), val()); // BAD: from one source this is a plaintext password
|
||||
}
|
||||
|
||||
void target6(char *data)
|
||||
{
|
||||
send(val(), data, strlen(data), val()); // GOOD: not a password
|
||||
}
|
||||
|
||||
void test_multiple_sources_source(char *password1, char *password2)
|
||||
{
|
||||
if (cond())
|
||||
{
|
||||
encrypt_inplace(password1);
|
||||
target1(password1);
|
||||
target2(password1);
|
||||
} else {
|
||||
target2(password1);
|
||||
target3(password1);
|
||||
}
|
||||
|
||||
if (cond())
|
||||
{
|
||||
char *data = password2;
|
||||
|
||||
target4(data);
|
||||
target5(data);
|
||||
} else {
|
||||
char *data = "harmless";
|
||||
|
||||
target5(data);
|
||||
target6(data);
|
||||
}
|
||||
}
|
||||
|
||||
void test_loops()
|
||||
{
|
||||
{
|
||||
while (cond())
|
||||
{
|
||||
char password[256];
|
||||
|
||||
recv(val(), password, 256, val()); // BAD: not encrypted
|
||||
|
||||
// ...
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
while (cond())
|
||||
{
|
||||
char password[256];
|
||||
|
||||
recv(val(), password, 256, val()); // GOOD: password is encrypted
|
||||
decrypt_inplace(password); // proof that `password` was in fact encrypted
|
||||
|
||||
// ...
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,25 +1,22 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="System.IO.FileSystem" Version="4.3.0" />
|
||||
<PackageReference Include="System.IO.FileSystem.Primitives" Version="4.3.0" />
|
||||
<PackageReference Include="xunit" Version="2.4.1" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Autobuild.CSharp\Semmle.Autobuild.CSharp.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Autobuild.Shared\Semmle.Autobuild.Shared.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="System.IO.FileSystem" Version="4.3.0"/>
|
||||
<PackageReference Include="System.IO.FileSystem.Primitives" Version="4.3.0"/>
|
||||
<PackageReference Include="xunit" Version="2.4.1"/>
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Autobuild.CSharp\Semmle.Autobuild.CSharp.csproj"/>
|
||||
<ProjectReference Include="..\Semmle.Autobuild.Shared\Semmle.Autobuild.Shared.csproj"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -1,30 +1,25 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Autobuild.CSharp</AssemblyName>
|
||||
<RootNamespace>Semmle.Autobuild.CSharp</RootNamespace>
|
||||
<ApplicationIcon />
|
||||
<OutputType>Exe</OutputType>
|
||||
<StartupObject />
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Build" Version="16.9.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\extractor\Semmle.Util\Semmle.Util.csproj" />
|
||||
<ProjectReference Include="..\..\extractor\Semmle.Extraction.CSharp\Semmle.Extraction.CSharp.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Autobuild.Shared\Semmle.Autobuild.Shared.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Autobuild.CSharp</AssemblyName>
|
||||
<RootNamespace>Semmle.Autobuild.CSharp</RootNamespace>
|
||||
<ApplicationIcon/>
|
||||
<OutputType>Exe</OutputType>
|
||||
<StartupObject/>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Build" Version="16.11.0"/>
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\extractor\Semmle.Util\Semmle.Util.csproj"/>
|
||||
<ProjectReference Include="..\..\extractor\Semmle.Extraction.CSharp\Semmle.Extraction.CSharp.csproj"/>
|
||||
<ProjectReference Include="..\Semmle.Autobuild.Shared\Semmle.Autobuild.Shared.csproj"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -1,24 +1,19 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Autobuild.Shared</AssemblyName>
|
||||
<RootNamespace>Semmle.Autobuild.Shared</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Build" Version="16.9.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\extractor\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Autobuild.Shared</AssemblyName>
|
||||
<RootNamespace>Semmle.Autobuild.Shared</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Build" Version="16.11.0"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\extractor\Semmle.Util\Semmle.Util.csproj"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -1,6 +1,8 @@
|
||||
package,sink,source,summary,sink:code,sink:html,sink:remote,sink:sql,sink:xss,source:local,summary:taint
|
||||
Dapper,55,,,,,,55,,,
|
||||
Microsoft.ApplicationBlocks.Data,28,,,,,,28,,,
|
||||
MySql.Data.MySqlClient,48,,,,,,48,,,
|
||||
ServiceStack,194,,7,27,,75,92,,,7
|
||||
System,28,3,25,,4,,23,1,3,25
|
||||
package,sink,source,summary,sink:code,sink:html,sink:remote,sink:sql,sink:xss,source:local,summary:taint,summary:value
|
||||
Dapper,55,,,,,,55,,,,
|
||||
Microsoft.ApplicationBlocks.Data,28,,,,,,28,,,,
|
||||
Microsoft.VisualBasic,,,4,,,,,,,,4
|
||||
MySql.Data.MySqlClient,48,,,,,,48,,,,
|
||||
Newtonsoft.Json,,,91,,,,,,,73,18
|
||||
ServiceStack,194,,7,27,,75,92,,,7,
|
||||
System,28,3,2336,,4,,23,1,3,611,1725
|
||||
|
||||
|
@@ -8,7 +8,7 @@ C# framework & library support
|
||||
|
||||
Framework / library,Package,Flow sources,Taint & value steps,Sinks (total),`CWE-079` :sub:`Cross-site scripting`
|
||||
`ServiceStack <https://servicestack.net/>`_,"``ServiceStack.*``, ``ServiceStack``",,7,194,
|
||||
System,"``System.*``, ``System``",3,25,28,5
|
||||
Others,"``Dapper``, ``Microsoft.ApplicationBlocks.Data``, ``MySql.Data.MySqlClient``",,,131,
|
||||
Totals,,3,32,353,5
|
||||
System,"``System.*``, ``System``",3,2336,28,5
|
||||
Others,"``Dapper``, ``Microsoft.ApplicationBlocks.Data``, ``Microsoft.VisualBasic``, ``MySql.Data.MySqlClient``, ``Newtonsoft.Json``",,95,131,
|
||||
Totals,,3,2438,353,5
|
||||
|
||||
|
||||
@@ -26,7 +26,9 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.DiaSymReader" Version="1.3.0" />
|
||||
<PackageReference Include="Microsoft.DiaSymReader.Native" Version="1.7.0" />
|
||||
<PackageReference Include="Microsoft.DiaSymReader.PortablePdb" Version="1.5.0" />
|
||||
<PackageReference Include="Microsoft.DiaSymReader.PortablePdb" Version="1.6.0"><IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -1,33 +1,28 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Extraction.CSharp.Standalone</AssemblyName>
|
||||
<RootNamespace>Semmle.Extraction.CSharp.Standalone</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
<WarningsAsErrors />
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp\Semmle.Extraction.CSharp.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Build" Version="16.9.0" />
|
||||
<PackageReference Include="Microsoft.Win32.Primitives" Version="4.3.0" />
|
||||
<PackageReference Include="System.Net.Primitives" Version="4.3.1" />
|
||||
<PackageReference Include="System.Security.Principal" Version="4.3.0" />
|
||||
<PackageReference Include="System.Threading.ThreadPool" Version="4.3.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Extraction.CSharp.Standalone</AssemblyName>
|
||||
<RootNamespace>Semmle.Extraction.CSharp.Standalone</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
<WarningsAsErrors/>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp\Semmle.Extraction.CSharp.csproj"/>
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Build" Version="16.11.0"/>
|
||||
<PackageReference Include="Microsoft.Win32.Primitives" Version="4.3.0"/>
|
||||
<PackageReference Include="System.Net.Primitives" Version="4.3.1"/>
|
||||
<PackageReference Include="System.Security.Principal" Version="4.3.0"/>
|
||||
<PackageReference Include="System.Threading.ThreadPool" Version="4.3.0"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -18,6 +18,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
|
||||
private void VisitParameter(ParameterSyntax p)
|
||||
{
|
||||
var symbol = Context.GetModel(p).GetDeclaredSymbol(p)!;
|
||||
Context.CacheLambdaParameterSymbol(symbol, p);
|
||||
Parameter.Create(Context, symbol, this);
|
||||
}
|
||||
|
||||
|
||||
@@ -55,11 +55,17 @@ namespace Semmle.Extraction.CSharp.Entities
|
||||
}
|
||||
}
|
||||
|
||||
public static Parameter Create(Context cx, IParameterSymbol param, IEntity parent, Parameter? original = null) =>
|
||||
ParameterFactory.Instance.CreateEntity(cx, param, (param, parent, original));
|
||||
public static Parameter Create(Context cx, IParameterSymbol param, IEntity parent, Parameter? original = null)
|
||||
{
|
||||
var cachedSymbol = cx.GetPossiblyCachedParameterSymbol(param);
|
||||
return ParameterFactory.Instance.CreateEntity(cx, cachedSymbol, (cachedSymbol, parent, original));
|
||||
}
|
||||
|
||||
public static Parameter Create(Context cx, IParameterSymbol param) =>
|
||||
ParameterFactory.Instance.CreateEntity(cx, param, (param, null, null));
|
||||
public static Parameter Create(Context cx, IParameterSymbol param)
|
||||
{
|
||||
var cachedSymbol = cx.GetPossiblyCachedParameterSymbol(param);
|
||||
return ParameterFactory.Instance.CreateEntity(cx, cachedSymbol, (cachedSymbol, null, null));
|
||||
}
|
||||
|
||||
public override void WriteId(EscapingTextWriter trapFile)
|
||||
{
|
||||
|
||||
@@ -18,18 +18,56 @@ namespace Semmle.Extraction.CSharp
|
||||
/// </summary>
|
||||
public SemanticModel GetModel(SyntaxNode node)
|
||||
{
|
||||
// todo: when this context belongs to a SourceScope, the syntax tree can be retrieved from the scope, and
|
||||
// the node parameter could be removed. Is there any case when we pass in a node that's not from the current
|
||||
// tree?
|
||||
if (cachedModel is null || node.SyntaxTree != cachedModel.SyntaxTree)
|
||||
if (node.SyntaxTree == SourceTree)
|
||||
{
|
||||
cachedModel = Compilation.GetSemanticModel(node.SyntaxTree);
|
||||
if (cachedModelForTree is null)
|
||||
{
|
||||
cachedModelForTree = Compilation.GetSemanticModel(node.SyntaxTree);
|
||||
}
|
||||
|
||||
return cachedModelForTree;
|
||||
}
|
||||
|
||||
return cachedModel;
|
||||
if (cachedModelForOtherTrees is null || node.SyntaxTree != cachedModelForOtherTrees.SyntaxTree)
|
||||
{
|
||||
cachedModelForOtherTrees = Compilation.GetSemanticModel(node.SyntaxTree);
|
||||
}
|
||||
|
||||
return cachedModelForOtherTrees;
|
||||
}
|
||||
|
||||
private SemanticModel? cachedModel;
|
||||
private SemanticModel? cachedModelForTree;
|
||||
private SemanticModel? cachedModelForOtherTrees;
|
||||
|
||||
// The below is a workaround to the bug reported in https://github.com/dotnet/roslyn/issues/58226
|
||||
// Lambda parameters that are equal according to `SymbolEqualityComparer.Default`, might have different
|
||||
// hash-codes, and as a result might not be found in `symbolEntityCache` by hash-code lookup.
|
||||
internal IParameterSymbol GetPossiblyCachedParameterSymbol(IParameterSymbol param)
|
||||
{
|
||||
if ((param.ContainingSymbol as IMethodSymbol)?.MethodKind != MethodKind.AnonymousFunction)
|
||||
{
|
||||
return param;
|
||||
}
|
||||
|
||||
foreach (var sr in param.DeclaringSyntaxReferences)
|
||||
{
|
||||
var syntax = sr.GetSyntax();
|
||||
if (lambdaParameterCache.TryGetValue(syntax, out var cached) &&
|
||||
SymbolEqualityComparer.Default.Equals(param, cached))
|
||||
{
|
||||
return cached;
|
||||
}
|
||||
}
|
||||
|
||||
return param;
|
||||
}
|
||||
|
||||
internal void CacheLambdaParameterSymbol(IParameterSymbol param, SyntaxNode syntax)
|
||||
{
|
||||
lambdaParameterCache[syntax] = param;
|
||||
}
|
||||
|
||||
private readonly Dictionary<SyntaxNode, IParameterSymbol> lambdaParameterCache = new Dictionary<SyntaxNode, IParameterSymbol>();
|
||||
|
||||
/// <summary>
|
||||
/// The current compilation unit.
|
||||
|
||||
@@ -1,29 +1,24 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Extraction.CSharp</AssemblyName>
|
||||
<RootNamespace>Semmle.Extraction.CSharp</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Extraction.CIL\Semmle.Extraction.CIL.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction\Semmle.Extraction.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.9.0" />
|
||||
<PackageReference Include="Microsoft.Build" Version="16.9.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Extraction.CSharp</AssemblyName>
|
||||
<RootNamespace>Semmle.Extraction.CSharp</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Extraction.CIL\Semmle.Extraction.CIL.csproj"/>
|
||||
<ProjectReference Include="..\Semmle.Extraction\Semmle.Extraction.csproj"/>
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.0.1"/>
|
||||
<PackageReference Include="Microsoft.Build" Version="16.11.0"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -1,28 +1,24 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="System.IO.FileSystem" Version="4.3.0" />
|
||||
<PackageReference Include="System.IO.FileSystem.Primitives" Version="4.3.0" />
|
||||
<PackageReference Include="xunit" Version="2.4.1" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp.Standalone\Semmle.Extraction.CSharp.Standalone.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp\Semmle.Extraction.CSharp.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction\Semmle.Extraction.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="System.IO.FileSystem" Version="4.3.0"/>
|
||||
<PackageReference Include="System.IO.FileSystem.Primitives" Version="4.3.0"/>
|
||||
<PackageReference Include="xunit" Version="2.4.1"/>
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp.Standalone\Semmle.Extraction.CSharp.Standalone.csproj"/>
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp\Semmle.Extraction.CSharp.csproj"/>
|
||||
<ProjectReference Include="..\Semmle.Extraction\Semmle.Extraction.csproj"/>
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -1,29 +1,24 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Extraction</AssemblyName>
|
||||
<RootNamespace>Semmle.Extraction</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<CodeAnalysisRuleSet>Semmle.Extraction.ruleset</CodeAnalysisRuleSet>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DefineConstants>TRACE;DEBUG;DEBUG_LABELS</DefineConstants>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.CodeAnalysis" Version="3.9.0" />
|
||||
<PackageReference Include="GitInfo" Version="2.1.2">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Extraction</AssemblyName>
|
||||
<RootNamespace>Semmle.Extraction</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<CodeAnalysisRuleSet>Semmle.Extraction.ruleset</CodeAnalysisRuleSet>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DefineConstants>TRACE;DEBUG;DEBUG_LABELS</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.CodeAnalysis" Version="4.0.1"/>
|
||||
<PackageReference Include="GitInfo" Version="2.2.0">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -1,23 +1,19 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="xunit" Version="2.4.1" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="xunit" Version="2.4.1"/>
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
54
csharp/ql/consistency-queries/DataFlowConsistency.ql
Normal file
54
csharp/ql/consistency-queries/DataFlowConsistency.ql
Normal file
@@ -0,0 +1,54 @@
|
||||
import csharp
|
||||
import cil
|
||||
import semmle.code.csharp.dataflow.internal.DataFlowPrivate
|
||||
import semmle.code.csharp.dataflow.internal.DataFlowPublic
|
||||
import semmle.code.csharp.dataflow.internal.DataFlowImplConsistency::Consistency
|
||||
|
||||
private class MyConsistencyConfiguration extends ConsistencyConfiguration {
|
||||
override predicate uniqueEnclosingCallableExclude(Node n) {
|
||||
// TODO: Remove once static initializers are folded into the
|
||||
// static constructors
|
||||
exists(ControlFlow::Node cfn |
|
||||
cfn.getElement() = any(FieldOrProperty f | f.isStatic()).getAChild+() and
|
||||
cfn = n.getControlFlowNode()
|
||||
)
|
||||
}
|
||||
|
||||
override predicate uniqueNodeLocationExclude(Node n) {
|
||||
// Methods with multiple implementations
|
||||
n instanceof ParameterNode
|
||||
or
|
||||
this.missingLocationExclude(n)
|
||||
}
|
||||
|
||||
override predicate missingLocationExclude(Node n) {
|
||||
// Some CIL methods are missing locations
|
||||
n.asParameter() instanceof CIL::Parameter
|
||||
}
|
||||
|
||||
override predicate postWithInFlowExclude(Node n) {
|
||||
n instanceof SummaryNode
|
||||
or
|
||||
n.asExpr().(ObjectCreation).hasInitializer()
|
||||
}
|
||||
|
||||
override predicate argHasPostUpdateExclude(ArgumentNode n) {
|
||||
n instanceof SummaryNode
|
||||
or
|
||||
n.asExpr().(Expr).stripCasts().getType() =
|
||||
any(Type t |
|
||||
not t instanceof RefType and
|
||||
not t = any(TypeParameter tp | not tp.isValueType())
|
||||
or
|
||||
t instanceof NullType
|
||||
)
|
||||
or
|
||||
n instanceof ImplicitCapturedArgumentNode
|
||||
or
|
||||
n instanceof ParamsArgumentNode
|
||||
or
|
||||
n.asExpr() instanceof CIL::Expr
|
||||
}
|
||||
|
||||
override predicate reverseReadExclude(Node n) { n.asExpr() = any(AwaitExpr ae).getExpr() }
|
||||
}
|
||||
@@ -5,4 +5,4 @@ dbscheme: semmlecode.csharp.dbscheme
|
||||
extractor: csharp
|
||||
library: true
|
||||
dependencies:
|
||||
codeql/csharp-upgrades: 0.0.3
|
||||
codeql/csharp-upgrades: ^0.0.3
|
||||
|
||||
@@ -89,7 +89,7 @@ class Method extends DotNet::Callable, Element, Member, TypeContainer, DataFlowN
|
||||
|
||||
override Location getLocation() { result = Element.super.getLocation() }
|
||||
|
||||
override Location getALocation() { cil_method_location(this.getUnboundDeclaration(), result) }
|
||||
override Location getALocation() { cil_method_location(this.getUnboundMethod+(), result) }
|
||||
|
||||
override MethodParameter getParameter(int n) {
|
||||
if this.isStatic()
|
||||
|
||||
@@ -205,7 +205,7 @@ private class RefArg extends AssignableAccess {
|
||||
*/
|
||||
predicate isAnalyzable(Parameter p) {
|
||||
exists(Callable callable | callable = this.getUnboundDeclarationTarget(p) |
|
||||
not callable.(Virtualizable).isOverridableOrImplementable() and
|
||||
not callable.(Overridable).isOverridableOrImplementable() and
|
||||
callable.hasBody()
|
||||
)
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* Provides logic for determining interface member implementations.
|
||||
*
|
||||
* Do not use the predicates in this library directly; use the methods
|
||||
* of the class `Virtualizable` instead.
|
||||
* of the class `Overridable` instead.
|
||||
*/
|
||||
|
||||
import csharp
|
||||
@@ -35,7 +35,26 @@ private import Conversion
|
||||
* `implements(A.M, I.M, B)` and `implements(C.M, I.M, C)`.
|
||||
*/
|
||||
cached
|
||||
predicate implements(Virtualizable m1, Virtualizable m2, ValueOrRefType t) {
|
||||
predicate implements(Overridable m1, Overridable m2, ValueOrRefType t) {
|
||||
implementsVirtualizable(m1, m2, t)
|
||||
or
|
||||
exists(DeclarationWithAccessors d1, DeclarationWithAccessors d2, int kind |
|
||||
implementsVirtualizable(d1, d2, t) and
|
||||
hasAccessor(d1, m1, pragma[only_bind_into](kind)) and
|
||||
hasAccessor(d2, m2, pragma[only_bind_into](kind))
|
||||
)
|
||||
}
|
||||
|
||||
pragma[noinline]
|
||||
private predicate hasAccessor(DeclarationWithAccessors d, Accessor a, int kind) {
|
||||
a = d.getAnAccessor() and
|
||||
(
|
||||
accessors(a, kind, _, _, _) or
|
||||
event_accessors(a, kind, _, _, _)
|
||||
)
|
||||
}
|
||||
|
||||
private predicate implementsVirtualizable(Virtualizable m1, Virtualizable m2, ValueOrRefType t) {
|
||||
exists(Interface i |
|
||||
i = m2.getDeclaringType() and
|
||||
t.getABaseInterface+() = i and
|
||||
|
||||
@@ -180,29 +180,15 @@ class Member extends DotNet::Member, Modifiable, @member {
|
||||
override predicate isStatic() { Modifiable.super.isStatic() }
|
||||
}
|
||||
|
||||
private class TOverridable = @virtualizable or @callable_accessor;
|
||||
|
||||
/**
|
||||
* A member where the `virtual` modifier is valid. That is, a method,
|
||||
* a property, an indexer, or an event.
|
||||
* A declaration that can be overridden or implemented. That is, a method,
|
||||
* a property, an indexer, an event, or an accessor.
|
||||
*
|
||||
* Equivalently, these are the members that can be defined in an interface.
|
||||
* Unlike `Virtualizable`, this class includes accessors.
|
||||
*/
|
||||
class Virtualizable extends Member, @virtualizable {
|
||||
/** Holds if this member has the modifier `override`. */
|
||||
predicate isOverride() { this.hasModifier("override") }
|
||||
|
||||
/** Holds if this member is `virtual`. */
|
||||
predicate isVirtual() { this.hasModifier("virtual") }
|
||||
|
||||
override predicate isPublic() {
|
||||
Member.super.isPublic() or
|
||||
this.implementsExplicitInterface()
|
||||
}
|
||||
|
||||
override predicate isPrivate() {
|
||||
super.isPrivate() and
|
||||
not this.implementsExplicitInterface()
|
||||
}
|
||||
|
||||
class Overridable extends Declaration, TOverridable {
|
||||
/**
|
||||
* Gets any interface this member explicitly implements; this only applies
|
||||
* to members that can be declared on an interface, i.e. methods, properties,
|
||||
@@ -216,19 +202,10 @@ class Virtualizable extends Member, @virtualizable {
|
||||
predicate implementsExplicitInterface() { exists(this.getExplicitlyImplementedInterface()) }
|
||||
|
||||
/** Holds if this member can be overridden or implemented. */
|
||||
predicate isOverridableOrImplementable() {
|
||||
not this.isSealed() and
|
||||
not this.getDeclaringType().isSealed() and
|
||||
(
|
||||
this.isVirtual() or
|
||||
this.isOverride() or
|
||||
this.isAbstract() or
|
||||
this.getDeclaringType() instanceof Interface
|
||||
)
|
||||
}
|
||||
predicate isOverridableOrImplementable() { none() }
|
||||
|
||||
/** Gets the member that is immediately overridden by this member, if any. */
|
||||
Virtualizable getOverridee() {
|
||||
Overridable getOverridee() {
|
||||
overrides(this, result)
|
||||
or
|
||||
// For accessors (which are `Callable`s), the extractor generates entries
|
||||
@@ -242,7 +219,7 @@ class Virtualizable extends Member, @virtualizable {
|
||||
}
|
||||
|
||||
/** Gets a member that immediately overrides this member, if any. */
|
||||
Virtualizable getAnOverrider() { this = result.getOverridee() }
|
||||
Overridable getAnOverrider() { this = result.getOverridee() }
|
||||
|
||||
/** Holds if this member is overridden by some other member. */
|
||||
predicate isOverridden() { exists(this.getAnOverrider()) }
|
||||
@@ -273,10 +250,10 @@ class Virtualizable extends Member, @virtualizable {
|
||||
* `A.M.getImplementee(B) = I.M` and
|
||||
* `C.M.getImplementee(C) = I.M`.
|
||||
*/
|
||||
Virtualizable getImplementee(ValueOrRefType t) { implements(this, result, t) }
|
||||
Overridable getImplementee(ValueOrRefType t) { implements(this, result, t) }
|
||||
|
||||
/** Gets the interface member that is immediately implemented by this member, if any. */
|
||||
Virtualizable getImplementee() { result = this.getImplementee(_) }
|
||||
Overridable getImplementee() { result = this.getImplementee(_) }
|
||||
|
||||
/**
|
||||
* Gets a member that immediately implements this interface member, if any.
|
||||
@@ -301,10 +278,10 @@ class Virtualizable extends Member, @virtualizable {
|
||||
* `I.M.getAnImplementor(B) = A.M` and
|
||||
* `I.M.getAnImplementor(C) = C.M`.
|
||||
*/
|
||||
Virtualizable getAnImplementor(ValueOrRefType t) { this = result.getImplementee(t) }
|
||||
Overridable getAnImplementor(ValueOrRefType t) { this = result.getImplementee(t) }
|
||||
|
||||
/** Gets a member that immediately implements this interface member, if any. */
|
||||
Virtualizable getAnImplementor() { this = result.getImplementee() }
|
||||
Overridable getAnImplementor() { this = result.getImplementee() }
|
||||
|
||||
/**
|
||||
* Gets an interface member that is (transitively) implemented by this
|
||||
@@ -334,8 +311,8 @@ class Virtualizable extends Member, @virtualizable {
|
||||
* - If this member is `D.M` then `I.M = getAnUltimateImplementee()`.
|
||||
*/
|
||||
pragma[nomagic]
|
||||
Virtualizable getAnUltimateImplementee() {
|
||||
exists(Virtualizable implementation, ValueOrRefType implementationType |
|
||||
Overridable getAnUltimateImplementee() {
|
||||
exists(Overridable implementation, ValueOrRefType implementationType |
|
||||
implements(implementation, result, implementationType)
|
||||
|
|
||||
this = implementation
|
||||
@@ -354,7 +331,7 @@ class Virtualizable extends Member, @virtualizable {
|
||||
* Note that this is generally *not* equivalent with
|
||||
* `getImplementor().getAnOverrider*()` (see `getImplementee`).
|
||||
*/
|
||||
Virtualizable getAnUltimateImplementor() { this = result.getAnUltimateImplementee() }
|
||||
Overridable getAnUltimateImplementor() { this = result.getAnUltimateImplementee() }
|
||||
|
||||
/** Holds if this interface member is implemented by some other member. */
|
||||
predicate isImplemented() { exists(this.getAnImplementor()) }
|
||||
@@ -362,14 +339,59 @@ class Virtualizable extends Member, @virtualizable {
|
||||
/** Holds if this member implements (transitively) an interface member. */
|
||||
predicate implements() { exists(this.getAnUltimateImplementee()) }
|
||||
|
||||
/**
|
||||
* Holds if this member overrides or implements (transitively)
|
||||
* `that` member.
|
||||
*/
|
||||
predicate overridesOrImplements(Overridable that) {
|
||||
this.getOverridee+() = that or
|
||||
this.getAnUltimateImplementee() = that
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if this member overrides or implements (reflexively, transitively)
|
||||
* `that` member.
|
||||
*/
|
||||
predicate overridesOrImplementsOrEquals(Virtualizable that) {
|
||||
predicate overridesOrImplementsOrEquals(Overridable that) {
|
||||
this = that or
|
||||
this.getOverridee+() = that or
|
||||
this.getAnUltimateImplementee() = that
|
||||
this.overridesOrImplements(that)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A member where the `virtual` modifier is valid. That is, a method,
|
||||
* a property, an indexer, or an event.
|
||||
*
|
||||
* Equivalently, these are the members that can be defined in an interface.
|
||||
*
|
||||
* Unlike `Overridable`, this class excludes accessors.
|
||||
*/
|
||||
class Virtualizable extends Overridable, Member, @virtualizable {
|
||||
/** Holds if this member has the modifier `override`. */
|
||||
predicate isOverride() { this.hasModifier("override") }
|
||||
|
||||
/** Holds if this member is `virtual`. */
|
||||
predicate isVirtual() { this.hasModifier("virtual") }
|
||||
|
||||
override predicate isPublic() {
|
||||
Member.super.isPublic() or
|
||||
this.implementsExplicitInterface()
|
||||
}
|
||||
|
||||
override predicate isPrivate() {
|
||||
super.isPrivate() and
|
||||
not this.implementsExplicitInterface()
|
||||
}
|
||||
|
||||
override predicate isOverridableOrImplementable() {
|
||||
not this.isSealed() and
|
||||
not this.getDeclaringType().isSealed() and
|
||||
(
|
||||
this.isVirtual() or
|
||||
this.isOverride() or
|
||||
this.isAbstract() or
|
||||
this.getDeclaringType() instanceof Interface
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -315,7 +315,7 @@ class Indexer extends DeclarationWithGetSetAccessors, Parameterizable, @indexer
|
||||
* An accessor. Either a getter (`Getter`), a setter (`Setter`), or event
|
||||
* accessor (`EventAccessor`).
|
||||
*/
|
||||
class Accessor extends Callable, Modifiable, Attributable, @callable_accessor {
|
||||
class Accessor extends Callable, Modifiable, Attributable, Overridable, @callable_accessor {
|
||||
override ValueOrRefType getDeclaringType() { result = this.getDeclaration().getDeclaringType() }
|
||||
|
||||
/** Gets the assembly name of this accessor. */
|
||||
@@ -376,6 +376,10 @@ class Accessor extends Callable, Modifiable, Attributable, @callable_accessor {
|
||||
not (result instanceof AccessModifier and exists(this.getAnAccessModifier()))
|
||||
}
|
||||
|
||||
override predicate isOverridableOrImplementable() {
|
||||
this.getDeclaration().isOverridableOrImplementable()
|
||||
}
|
||||
|
||||
override Accessor getUnboundDeclaration() { accessors(this, _, _, _, result) }
|
||||
|
||||
override Location getALocation() { accessor_location(this, result) }
|
||||
|
||||
@@ -75,7 +75,7 @@ class BlockStmt extends Stmt, @block_stmt {
|
||||
|
||||
/** Holds if this block is the container of the global statements. */
|
||||
predicate isGlobalStatementContainer() {
|
||||
this.getEnclosingCallable().hasQualifiedName("<Program>$.<Main>$")
|
||||
this.getEnclosingCallable().hasQualifiedName("Program.<Main>$")
|
||||
}
|
||||
|
||||
override Stmt stripSingletonBlocks() {
|
||||
|
||||
@@ -80,7 +80,8 @@ module Gvn {
|
||||
LeafType() {
|
||||
not this instanceof GenericType and
|
||||
not this instanceof TypeParameter and
|
||||
not this instanceof DynamicType
|
||||
not this instanceof DynamicType and
|
||||
not this instanceof TupleType
|
||||
}
|
||||
}
|
||||
|
||||
@@ -478,6 +479,8 @@ module Gvn {
|
||||
GvnType getGlobalValueNumber(Type t) {
|
||||
result = TLeafGvnType(t)
|
||||
or
|
||||
result = TLeafGvnType(t.(TupleType).getUnderlyingType())
|
||||
or
|
||||
t instanceof DynamicType and
|
||||
result = TLeafGvnType(any(ObjectType ot))
|
||||
or
|
||||
|
||||
@@ -8,7 +8,7 @@ class MainMethod extends Method {
|
||||
(
|
||||
this.hasName("Main")
|
||||
or
|
||||
this.hasQualifiedName("<Program>$", "<Main>$")
|
||||
this.hasQualifiedName("Program.<Main>$")
|
||||
) and
|
||||
this.isStatic() and
|
||||
(this.getReturnType() instanceof VoidType or this.getReturnType() instanceof IntType) and
|
||||
|
||||
@@ -1086,7 +1086,7 @@ module Internal {
|
||||
*/
|
||||
private Callable customNullCheck(Parameter p, BooleanValue retVal, boolean isNull) {
|
||||
result.getReturnType() instanceof BoolType and
|
||||
not result.(Virtualizable).isOverridableOrImplementable() and
|
||||
not result.(Overridable).isOverridableOrImplementable() and
|
||||
p.getCallable() = result and
|
||||
not p.isParams() and
|
||||
p.getType() = any(Type t | t instanceof RefType or t instanceof NullableType) and
|
||||
|
||||
@@ -78,20 +78,50 @@ private import internal.DataFlowPublic
|
||||
private import internal.FlowSummaryImpl::Public
|
||||
private import internal.FlowSummaryImpl::Private::External
|
||||
private import internal.FlowSummaryImplSpecific
|
||||
private import semmle.code.csharp.dispatch.OverridableCallable
|
||||
|
||||
/**
|
||||
* A module importing the frameworks that provide external flow data,
|
||||
* ensuring that they are visible to the taint tracking / data flow library.
|
||||
*/
|
||||
private module Frameworks {
|
||||
private import semmle.code.csharp.security.dataflow.flowsources.Local
|
||||
private import semmle.code.csharp.security.dataflow.flowsinks.Html
|
||||
private import semmle.code.csharp.frameworks.System
|
||||
private import semmle.code.csharp.security.dataflow.XSSSinks
|
||||
private import semmle.code.csharp.frameworks.EntityFramework
|
||||
private import semmle.code.csharp.frameworks.JsonNET
|
||||
private import semmle.code.csharp.frameworks.microsoft.VisualBasic
|
||||
private import semmle.code.csharp.frameworks.ServiceStack
|
||||
private import semmle.code.csharp.frameworks.Sql
|
||||
private import semmle.code.csharp.frameworks.EntityFramework
|
||||
private import semmle.code.csharp.frameworks.System
|
||||
private import semmle.code.csharp.frameworks.system.Collections
|
||||
private import semmle.code.csharp.frameworks.system.collections.Concurrent
|
||||
private import semmle.code.csharp.frameworks.system.collections.Generic
|
||||
private import semmle.code.csharp.frameworks.system.collections.Immutable
|
||||
private import semmle.code.csharp.frameworks.system.collections.ObjectModel
|
||||
private import semmle.code.csharp.frameworks.system.collections.Specialized
|
||||
private import semmle.code.csharp.frameworks.system.ComponentModel
|
||||
private import semmle.code.csharp.frameworks.system.componentmodel.Design
|
||||
private import semmle.code.csharp.frameworks.system.Data
|
||||
private import semmle.code.csharp.frameworks.system.data.Common
|
||||
private import semmle.code.csharp.frameworks.system.Diagnostics
|
||||
private import semmle.code.csharp.frameworks.system.Dynamic
|
||||
private import semmle.code.csharp.frameworks.system.Linq
|
||||
private import semmle.code.csharp.frameworks.system.Net
|
||||
private import semmle.code.csharp.frameworks.system.net.Http
|
||||
private import semmle.code.csharp.frameworks.system.net.Mail
|
||||
private import semmle.code.csharp.frameworks.system.IO
|
||||
private import semmle.code.csharp.frameworks.system.io.Compression
|
||||
private import semmle.code.csharp.frameworks.system.runtime.CompilerServices
|
||||
private import semmle.code.csharp.frameworks.system.security.Cryptography
|
||||
private import semmle.code.csharp.frameworks.system.security.cryptography.X509Certificates
|
||||
private import semmle.code.csharp.frameworks.system.Text
|
||||
private import semmle.code.csharp.frameworks.system.text.RegularExpressions
|
||||
private import semmle.code.csharp.frameworks.system.threading.Tasks
|
||||
private import semmle.code.csharp.frameworks.system.Web
|
||||
private import semmle.code.csharp.frameworks.system.web.ui.WebControls
|
||||
private import semmle.code.csharp.frameworks.system.Xml
|
||||
private import semmle.code.csharp.frameworks.system.xml.Schema
|
||||
private import semmle.code.csharp.frameworks.system.xml.Serialization
|
||||
private import semmle.code.csharp.security.dataflow.flowsinks.Html
|
||||
private import semmle.code.csharp.security.dataflow.flowsources.Local
|
||||
private import semmle.code.csharp.security.dataflow.XSSSinks
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -262,7 +292,7 @@ module CsvValidation {
|
||||
not name.regexpMatch("[a-zA-Z0-9_<>,]*") and
|
||||
msg = "Dubious member name \"" + name + "\" in " + pred + " model."
|
||||
or
|
||||
not signature.regexpMatch("|\\([a-zA-Z0-9_<>\\.\\+,\\[\\]]*\\)") and
|
||||
not signature.regexpMatch("|\\([a-zA-Z0-9_<>\\.\\+\\*,\\[\\]]*\\)") and
|
||||
msg = "Dubious signature \"" + signature + "\" in " + pred + " model."
|
||||
or
|
||||
not ext.regexpMatch("|Attribute") and
|
||||
@@ -348,16 +378,17 @@ private class UnboundValueOrRefType extends ValueOrRefType {
|
||||
}
|
||||
}
|
||||
|
||||
private class UnboundCallable extends Callable {
|
||||
/** An unbound callable. */
|
||||
class UnboundCallable extends Callable {
|
||||
UnboundCallable() { this.isUnboundDeclaration() }
|
||||
|
||||
/**
|
||||
* Holds if this unbound callable overrides or implements (transitively)
|
||||
* `that` unbound callable.
|
||||
*/
|
||||
predicate overridesOrImplementsUnbound(UnboundCallable that) {
|
||||
exists(Callable c |
|
||||
this.(Virtualizable).overridesOrImplementsOrEquals(c) or
|
||||
this = c.(OverridableCallable).getAnUltimateImplementor() or
|
||||
this = c.(OverridableCallable).getAnOverrider+()
|
||||
|
|
||||
this != c and
|
||||
this.(Overridable).overridesOrImplements(c) and
|
||||
that = c.getUnboundDeclaration()
|
||||
)
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -15,11 +15,23 @@ module Consistency {
|
||||
class ConsistencyConfiguration extends TConsistencyConfiguration {
|
||||
string toString() { none() }
|
||||
|
||||
/** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */
|
||||
predicate uniqueEnclosingCallableExclude(Node n) { none() }
|
||||
|
||||
/** Holds if `n` should be excluded from the consistency test `uniqueNodeLocation`. */
|
||||
predicate uniqueNodeLocationExclude(Node n) { none() }
|
||||
|
||||
/** Holds if `n` should be excluded from the consistency test `missingLocation`. */
|
||||
predicate missingLocationExclude(Node n) { none() }
|
||||
|
||||
/** Holds if `n` should be excluded from the consistency test `postWithInFlow`. */
|
||||
predicate postWithInFlowExclude(Node n) { none() }
|
||||
|
||||
/** Holds if `n` should be excluded from the consistency test `argHasPostUpdate`. */
|
||||
predicate argHasPostUpdateExclude(ArgumentNode n) { none() }
|
||||
|
||||
/** Holds if `n` should be excluded from the consistency test `reverseRead`. */
|
||||
predicate reverseReadExclude(Node n) { none() }
|
||||
}
|
||||
|
||||
private class RelevantNode extends Node {
|
||||
@@ -46,6 +58,7 @@ module Consistency {
|
||||
n instanceof RelevantNode and
|
||||
c = count(nodeGetEnclosingCallable(n)) and
|
||||
c != 1 and
|
||||
not any(ConsistencyConfiguration conf).uniqueEnclosingCallableExclude(n) and
|
||||
msg = "Node should have one enclosing callable but has " + c + "."
|
||||
)
|
||||
}
|
||||
@@ -66,6 +79,7 @@ module Consistency {
|
||||
n.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)
|
||||
) and
|
||||
c != 1 and
|
||||
not any(ConsistencyConfiguration conf).uniqueNodeLocationExclude(n) and
|
||||
msg = "Node should have one location but has " + c + "."
|
||||
)
|
||||
}
|
||||
@@ -76,7 +90,8 @@ module Consistency {
|
||||
strictcount(Node n |
|
||||
not exists(string filepath, int startline, int startcolumn, int endline, int endcolumn |
|
||||
n.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)
|
||||
)
|
||||
) and
|
||||
not any(ConsistencyConfiguration conf).missingLocationExclude(n)
|
||||
) and
|
||||
msg = "Nodes without location: " + c
|
||||
)
|
||||
@@ -172,6 +187,7 @@ module Consistency {
|
||||
|
||||
query predicate reverseRead(Node n, string msg) {
|
||||
exists(Node n2 | readStep(n, _, n2) and hasPost(n2) and not hasPost(n)) and
|
||||
not any(ConsistencyConfiguration conf).reverseReadExclude(n) and
|
||||
msg = "Origin of readStep is missing a PostUpdateNode."
|
||||
}
|
||||
|
||||
|
||||
@@ -65,7 +65,9 @@ abstract class NodeImpl extends Node {
|
||||
|
||||
private class ExprNodeImpl extends ExprNode, NodeImpl {
|
||||
override DataFlowCallable getEnclosingCallableImpl() {
|
||||
result = this.getExpr().getEnclosingCallable()
|
||||
result = this.getExpr().(CIL::Expr).getEnclosingCallable()
|
||||
or
|
||||
result = this.getControlFlowNodeImpl().getEnclosingCallable()
|
||||
}
|
||||
|
||||
override DotNet::Type getTypeImpl() {
|
||||
@@ -618,6 +620,7 @@ private predicate arrayRead(Expr e1, ArrayRead e2) { e1 = e2.getQualifier() }
|
||||
private Type getCSharpType(DotNet::Type t) {
|
||||
result = t
|
||||
or
|
||||
not t instanceof Type and
|
||||
result.matchesHandle(t)
|
||||
}
|
||||
|
||||
@@ -688,7 +691,7 @@ private module Cached {
|
||||
not def.(Ssa::ExplicitDefinition).getADefinition() instanceof
|
||||
AssignableDefinitions::ImplicitParameterDefinition
|
||||
} or
|
||||
TExplicitParameterNode(DotNet::Parameter p) { p.isUnboundDeclaration() } or
|
||||
TExplicitParameterNode(DotNet::Parameter p) { p = any(DataFlowCallable c).getAParameter() } or
|
||||
TInstanceParameterNode(Callable c) {
|
||||
c.isUnboundDeclaration() and not c.(Modifiable).isStatic()
|
||||
} or
|
||||
@@ -707,25 +710,28 @@ private module Cached {
|
||||
TObjectInitializerNode(ControlFlow::Nodes::ElementNode cfn) {
|
||||
cfn.getElement().(ObjectCreation).hasInitializer()
|
||||
} or
|
||||
TExprPostUpdateNode(ControlFlow::Nodes::ElementNode cfn) {
|
||||
exists(Argument a, Type t |
|
||||
a = cfn.getElement() and
|
||||
t = a.stripCasts().getType()
|
||||
|
|
||||
t instanceof RefType and
|
||||
not t instanceof NullType
|
||||
TExprPostUpdateNode(ControlFlow::Nodes::ExprNode cfn) {
|
||||
exists(Expr e | e = cfn.getExpr() |
|
||||
exists(Type t | t = e.(Argument).stripCasts().getType() |
|
||||
t instanceof RefType and
|
||||
not t instanceof NullType
|
||||
or
|
||||
t = any(TypeParameter tp | not tp.isValueType())
|
||||
)
|
||||
or
|
||||
t = any(TypeParameter tp | not tp.isValueType())
|
||||
)
|
||||
or
|
||||
fieldOrPropertyStore(_, _, _, cfn.getElement(), true)
|
||||
or
|
||||
arrayStore(_, _, cfn.getElement(), true)
|
||||
or
|
||||
exists(TExprPostUpdateNode upd, FieldOrPropertyAccess fla |
|
||||
upd = TExprPostUpdateNode(fla.getAControlFlowNode())
|
||||
|
|
||||
cfn.getElement() = fla.getQualifier()
|
||||
fieldOrPropertyStore(_, _, _, e, true)
|
||||
or
|
||||
arrayStore(_, _, e, true)
|
||||
or
|
||||
// needed for reverse stores; e.g. `x.f1.f2 = y` induces
|
||||
// a store step of `f1` into `x`
|
||||
exists(TExprPostUpdateNode upd, Expr read |
|
||||
upd = TExprPostUpdateNode(read.getAControlFlowNode())
|
||||
|
|
||||
fieldOrPropertyRead(e, _, read)
|
||||
or
|
||||
arrayRead(e, read)
|
||||
)
|
||||
)
|
||||
} or
|
||||
TSummaryNode(FlowSummary::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNodeState state) {
|
||||
@@ -1436,7 +1442,7 @@ private module OutNodes {
|
||||
import OutNodes
|
||||
|
||||
/** A data-flow node used to model flow summaries. */
|
||||
private class SummaryNode extends NodeImpl, TSummaryNode {
|
||||
class SummaryNode extends NodeImpl, TSummaryNode {
|
||||
private FlowSummary::SummarizedCallable c;
|
||||
private FlowSummaryImpl::Private::SummaryNodeState state;
|
||||
|
||||
|
||||
@@ -736,10 +736,17 @@ module Private {
|
||||
}
|
||||
|
||||
pragma[nomagic]
|
||||
private ParamNode summaryArgParam(ArgNode arg, ReturnKindExt rk, OutNodeExt out) {
|
||||
exists(DataFlowCall call, ParameterPosition ppos, SummarizedCallable sc |
|
||||
private ParamNode summaryArgParam0(DataFlowCall call, ArgNode arg) {
|
||||
exists(ParameterPosition ppos, SummarizedCallable sc |
|
||||
argumentPositionMatch(call, arg, ppos) and
|
||||
viableParam(call, sc, ppos, result) and
|
||||
viableParam(call, sc, ppos, result)
|
||||
)
|
||||
}
|
||||
|
||||
pragma[nomagic]
|
||||
private ParamNode summaryArgParam(ArgNode arg, ReturnKindExt rk, OutNodeExt out) {
|
||||
exists(DataFlowCall call |
|
||||
result = summaryArgParam0(call, arg) and
|
||||
out = rk.getAnOutNode(call)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -8,24 +8,11 @@ import csharp
|
||||
/**
|
||||
* A callable that can be overridden or implemented.
|
||||
*
|
||||
* Unlike the class `Virtualizable`, this class only includes methods that
|
||||
* can actually be overriden/implemented. Additionally, this class includes
|
||||
* accessors whose declarations can actually be overridden/implemented.
|
||||
* Unlike the class `Overridable`, this class only includes callables that
|
||||
* can actually be overriden/implemented.
|
||||
*/
|
||||
class OverridableCallable extends Callable {
|
||||
OverridableCallable() {
|
||||
this.(Method).isOverridableOrImplementable() or
|
||||
this.(Accessor).getDeclaration().isOverridableOrImplementable()
|
||||
}
|
||||
|
||||
/** Gets a callable that immediately overrides this callable, if any. */
|
||||
Callable getAnOverrider() { none() }
|
||||
|
||||
/**
|
||||
* Gets a callable that immediately implements this interface callable,
|
||||
* if any.
|
||||
*/
|
||||
Callable getAnImplementor(ValueOrRefType t) { none() }
|
||||
class OverridableCallable extends Callable, Overridable {
|
||||
OverridableCallable() { this.isOverridableOrImplementable() }
|
||||
|
||||
/**
|
||||
* Gets a callable that immediately implements this interface member,
|
||||
@@ -68,40 +55,6 @@ class OverridableCallable extends Callable {
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a callable that (transitively) implements this interface callable,
|
||||
* if any. That is, either this interface callable is immediately implemented
|
||||
* by the result, or the result overrides (transitively) another callable that
|
||||
* immediately implements this interface callable.
|
||||
*
|
||||
* Note that this is generally *not* equivalent with
|
||||
*
|
||||
* ```ql
|
||||
* result = getAnImplementor()
|
||||
* or
|
||||
* result = getAnImplementor().(OverridableCallable).getAnOverrider+()`
|
||||
* ```
|
||||
*
|
||||
* as the example below illustrates:
|
||||
*
|
||||
* ```csharp
|
||||
* interface I { void M(); }
|
||||
*
|
||||
* class A { public virtual void M() { } }
|
||||
*
|
||||
* class B : A, I { }
|
||||
*
|
||||
* class C : A { public override void M() }
|
||||
*
|
||||
* class D : B { public override void M() }
|
||||
* ```
|
||||
*
|
||||
* If this callable is `I.M` then `A.M = getAnUltimateImplementor() ` and
|
||||
* `D.M = getAnUltimateImplementor()`. However, it is *not* the case that
|
||||
* `C.M = getAnUltimateImplementor()`, because `C` is not a sub type of `I`.
|
||||
*/
|
||||
Callable getAnUltimateImplementor() { none() }
|
||||
|
||||
/**
|
||||
* Gets a callable that overrides (transitively) another callable that
|
||||
* implements this interface callable, if any.
|
||||
@@ -210,73 +163,10 @@ class OverridableCallable extends Callable {
|
||||
}
|
||||
|
||||
/** An overridable method. */
|
||||
class OverridableMethod extends Method, OverridableCallable {
|
||||
override Method getAnOverrider() { result = Method.super.getAnOverrider() }
|
||||
|
||||
override Method getAnImplementor(ValueOrRefType t) { result = Method.super.getAnImplementor(t) }
|
||||
|
||||
override Method getAnUltimateImplementor() { result = Method.super.getAnUltimateImplementor() }
|
||||
|
||||
override Method getInherited(ValueOrRefType t) {
|
||||
result = OverridableCallable.super.getInherited(t)
|
||||
}
|
||||
|
||||
override Method getAnOverrider(ValueOrRefType t) {
|
||||
result = OverridableCallable.super.getAnOverrider(t)
|
||||
}
|
||||
}
|
||||
deprecated class OverridableMethod extends Method, OverridableCallable { }
|
||||
|
||||
/** An overridable accessor. */
|
||||
class OverridableAccessor extends Accessor, OverridableCallable {
|
||||
override Accessor getAnOverrider() { overrides(result, this) }
|
||||
|
||||
override Accessor getAnImplementor(ValueOrRefType t) {
|
||||
exists(Virtualizable implementor, int kind |
|
||||
this.getAnImplementorAux(t, implementor, kind) and
|
||||
result.getDeclaration() = implementor and
|
||||
getAccessorKind(result) = kind
|
||||
)
|
||||
}
|
||||
|
||||
// predicate folding to get proper join order
|
||||
private predicate getAnImplementorAux(ValueOrRefType t, Virtualizable implementor, int kind) {
|
||||
exists(Virtualizable implementee |
|
||||
implementee = this.getDeclaration() and
|
||||
kind = getAccessorKind(this) and
|
||||
implementor = implementee.getAnImplementor(t)
|
||||
)
|
||||
}
|
||||
|
||||
override Accessor getAnUltimateImplementor() {
|
||||
exists(Virtualizable implementor, int kind |
|
||||
this.getAnUltimateImplementorAux(implementor, kind) and
|
||||
result.getDeclaration() = implementor and
|
||||
getAccessorKind(result) = kind
|
||||
)
|
||||
}
|
||||
|
||||
// predicate folding to get proper join order
|
||||
private predicate getAnUltimateImplementorAux(Virtualizable implementor, int kind) {
|
||||
exists(Virtualizable implementee |
|
||||
implementee = this.getDeclaration() and
|
||||
kind = getAccessorKind(this) and
|
||||
implementor = implementee.getAnUltimateImplementor()
|
||||
)
|
||||
}
|
||||
|
||||
override Accessor getInherited(ValueOrRefType t) {
|
||||
result = OverridableCallable.super.getInherited(t)
|
||||
}
|
||||
|
||||
override Accessor getAnOverrider(ValueOrRefType t) {
|
||||
result = OverridableCallable.super.getAnOverrider(t)
|
||||
}
|
||||
}
|
||||
|
||||
private int getAccessorKind(Accessor a) {
|
||||
accessors(a, result, _, _, _) or
|
||||
event_accessors(a, -result, _, _, _)
|
||||
}
|
||||
deprecated class OverridableAccessor extends Accessor, OverridableCallable { }
|
||||
|
||||
/** An unbound type. */
|
||||
class UnboundDeclarationType extends Type {
|
||||
|
||||
@@ -996,7 +996,7 @@ class QualifiableExpr extends Expr, @qualifiable_expr {
|
||||
*/
|
||||
predicate targetIsOverridableOrImplementable() {
|
||||
not this.getQualifier() instanceof BaseAccess and
|
||||
this.getQualifiedDeclaration().(Virtualizable).isOverridableOrImplementable()
|
||||
this.getQualifiedDeclaration().(Overridable).isOverridableOrImplementable()
|
||||
}
|
||||
|
||||
/** Holds if this expression has a conditional qualifier `?.` */
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*/
|
||||
|
||||
import csharp
|
||||
private import semmle.code.csharp.dataflow.LibraryTypeDataFlow
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** Definitions relating to the `Json.NET` package. */
|
||||
module JsonNET {
|
||||
@@ -31,15 +31,9 @@ module JsonNET {
|
||||
}
|
||||
|
||||
/** The class `Newtonsoft.Json.JsonConvert`. */
|
||||
class JsonConvertClass extends JsonClass, LibraryTypeDataFlow {
|
||||
class JsonConvertClass extends JsonClass {
|
||||
JsonConvertClass() { this.hasName("JsonConvert") }
|
||||
|
||||
/** Gets a `ToString` method. */
|
||||
private Method getAToStringMethod() {
|
||||
result = this.getAMethod("ToString") and
|
||||
result.isStatic()
|
||||
}
|
||||
|
||||
/** Gets a `Deserialize` method. */
|
||||
Method getADeserializeMethod() {
|
||||
result = this.getAMethod() and
|
||||
@@ -51,39 +45,73 @@ module JsonNET {
|
||||
result = this.getAMethod() and
|
||||
result.getName().matches("Serialize%")
|
||||
}
|
||||
}
|
||||
|
||||
private Method getAPopulateMethod() {
|
||||
result = this.getAMethod() and
|
||||
result.getName().matches("Populate%")
|
||||
}
|
||||
|
||||
override predicate callableFlow(
|
||||
CallableFlowSource source, CallableFlowSink sink, SourceDeclarationCallable c,
|
||||
boolean preservesValue
|
||||
) {
|
||||
// ToString methods
|
||||
c = this.getAToStringMethod() and
|
||||
preservesValue = false and
|
||||
source = any(CallableFlowSourceArg arg | arg.getArgumentIndex() = 0) and
|
||||
sink instanceof CallableFlowSinkReturn
|
||||
or
|
||||
// Deserialize methods
|
||||
c = this.getADeserializeMethod() and
|
||||
preservesValue = false and
|
||||
source = any(CallableFlowSourceArg arg | arg.getArgumentIndex() = 0) and
|
||||
sink instanceof CallableFlowSinkReturn
|
||||
or
|
||||
// Serialize methods
|
||||
c = this.getASerializeMethod() and
|
||||
preservesValue = false and
|
||||
source = any(CallableFlowSourceArg arg | arg.getArgumentIndex() = 0) and
|
||||
sink instanceof CallableFlowSinkReturn
|
||||
or
|
||||
// Populate methods
|
||||
c = this.getAPopulateMethod() and
|
||||
preservesValue = false and
|
||||
source = any(CallableFlowSourceArg arg | arg.getArgumentIndex() = 0) and
|
||||
sink = any(CallableFlowSinkArg arg | arg.getArgumentIndex() = 1)
|
||||
/** Data flow for `Newtonsoft.Json.JsonConvert`. */
|
||||
private class JsonConvertClassFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"Newtonsoft.Json;JsonConvert;false;DeserializeAnonymousType<>;(System.String,T);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;DeserializeAnonymousType<>;(System.String,T,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;DeserializeObject;(System.String,System.Type,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;DeserializeObject<>;(System.String,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String,System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;DeserializeXNode;(System.String,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String,System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;DeserializeXmlNode;(System.String,System.String,System.Boolean,System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;PopulateObject;(System.String,System.Object);;Argument[0];Argument[1];taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;PopulateObject;(System.String,System.Object,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];Argument[1];taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.JsonConverter[]);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,System.Type,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;SerializeObject;(System.Object,System.Type,Newtonsoft.Json.JsonSerializerSettings);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;SerializeXNode;(System.Xml.Linq.XObject,Newtonsoft.Json.Formatting,System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode,Newtonsoft.Json.Formatting);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;SerializeXmlNode;(System.Xml.XmlNode,Newtonsoft.Json.Formatting,System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.Byte);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.Char);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTime);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTime,Newtonsoft.Json.DateFormatHandling,Newtonsoft.Json.DateTimeZoneHandling);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTimeOffset);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.DateTimeOffset,Newtonsoft.Json.DateFormatHandling);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.Decimal);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.Double);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.Enum);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.Guid);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.Int16);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.Int64);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.SByte);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.Single);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.String,System.Char);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.String,System.Char,Newtonsoft.Json.StringEscapeHandling);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.TimeSpan);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt16);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt32);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.UInt64);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonConvert;false;ToString;(System.Uri);;Argument[0];ReturnValue;taint",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,7 +165,7 @@ module JsonNET {
|
||||
}
|
||||
|
||||
/** The class `NewtonSoft.Json.JsonSerializer`. */
|
||||
class JsonSerializerClass extends JsonClass, LibraryTypeDataFlow {
|
||||
class JsonSerializerClass extends JsonClass {
|
||||
JsonSerializerClass() { this.hasName("JsonSerializer") }
|
||||
|
||||
/** Gets the method for `JsonSerializer.Serialize`. */
|
||||
@@ -145,22 +173,21 @@ module JsonNET {
|
||||
|
||||
/** Gets the method for `JsonSerializer.Deserialize`. */
|
||||
Method getDeserializeMethod() { result = this.getAMethod("Deserialize") }
|
||||
}
|
||||
|
||||
override predicate callableFlow(
|
||||
CallableFlowSource source, CallableFlowSink sink, SourceDeclarationCallable c,
|
||||
boolean preservesValue
|
||||
) {
|
||||
// Serialize
|
||||
c = this.getSerializeMethod() and
|
||||
preservesValue = false and
|
||||
source = any(CallableFlowSourceArg arg | arg.getArgumentIndex() = 1) and
|
||||
sink = any(CallableFlowSinkArg arg | arg.getArgumentIndex() = 0)
|
||||
or
|
||||
// Deserialize
|
||||
c = this.getDeserializeMethod() and
|
||||
preservesValue = false and
|
||||
source = any(CallableFlowSourceArg arg | arg.getArgumentIndex() = 0) and
|
||||
sink instanceof CallableFlowSinkReturn
|
||||
/** Data flow for `NewtonSoft.Json.JSonSerializer`. */
|
||||
private class JsonSerializerClassFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"Newtonsoft.Json;JsonSerializer;false;Deserialize;(Newtonsoft.Json.JsonReader);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonSerializer;false;Deserialize;(Newtonsoft.Json.JsonReader,System.Type);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonSerializer;false;Deserialize;(System.IO.TextReader,System.Type);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json;JsonSerializer;false;Serialize;(Newtonsoft.Json.JsonWriter,System.Object);;Argument[1];Argument[0];taint",
|
||||
"Newtonsoft.Json;JsonSerializer;false;Serialize;(Newtonsoft.Json.JsonWriter,System.Object,System.Type);;Argument[1];Argument[0];taint",
|
||||
"Newtonsoft.Json;JsonSerializer;false;Serialize;(System.IO.TextWriter,System.Object);;Argument[1];Argument[0];taint",
|
||||
"Newtonsoft.Json;JsonSerializer;false;Serialize;(System.IO.TextWriter,System.Object,System.Type);;Argument[1];Argument[0];taint"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -196,41 +223,23 @@ module JsonNET {
|
||||
LinqClass() { this.getDeclaringNamespace() instanceof LinqNamespace }
|
||||
}
|
||||
|
||||
/** The `NewtonSoft.Json.Linq.JObject` class. */
|
||||
class JObjectClass extends LinqClass, LibraryTypeDataFlow {
|
||||
JObjectClass() { this.hasName("JObject") }
|
||||
|
||||
override predicate callableFlow(
|
||||
CallableFlowSource source, CallableFlowSink sink, SourceDeclarationCallable c,
|
||||
boolean preservesValue
|
||||
) {
|
||||
// ToString method
|
||||
c = this.getAMethod("ToString") and
|
||||
source instanceof CallableFlowSourceQualifier and
|
||||
sink instanceof CallableFlowSinkReturn and
|
||||
preservesValue = false
|
||||
or
|
||||
// Parse method
|
||||
c = this.getParseMethod() and
|
||||
source = any(CallableFlowSourceArg arg | arg.getArgumentIndex() = 0) and
|
||||
sink instanceof CallableFlowSinkReturn and
|
||||
preservesValue = false
|
||||
or
|
||||
// operator string
|
||||
c =
|
||||
any(Operator op |
|
||||
op.getDeclaringType() = this.getABaseType*() and op.getReturnType() instanceof StringType
|
||||
) and
|
||||
source.(CallableFlowSourceArg).getArgumentIndex() = 0 and
|
||||
sink instanceof CallableFlowSinkReturn and
|
||||
preservesValue = false
|
||||
or
|
||||
// SelectToken method
|
||||
c = this.getSelectTokenMethod() and
|
||||
source instanceof CallableFlowSourceQualifier and
|
||||
sink instanceof CallableFlowSinkReturn and
|
||||
preservesValue = false
|
||||
/** Data flow for `Newtonsoft.Json.Linq.JToken`. */
|
||||
private class JTokenClassFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String);;Argument[-1];ReturnValue;taint",
|
||||
"Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String,Newtonsoft.Json.Linq.JsonSelectSettings);;Argument[-1];ReturnValue;taint",
|
||||
"Newtonsoft.Json.Linq;JToken;false;SelectToken;(System.String,System.Boolean);;Argument[-1];ReturnValue;taint",
|
||||
"Newtonsoft.Json.Linq;JToken;false;ToString;();;Argument[-1];ReturnValue;taint",
|
||||
"Newtonsoft.Json.Linq;JToken;false;ToString;(Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[]);;Argument[-1];ReturnValue;taint",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `NewtonSoft.Json.Linq.JObject` class. */
|
||||
class JObjectClass extends LinqClass {
|
||||
JObjectClass() { this.hasName("JObject") }
|
||||
|
||||
/** Gets the `Parse` method. */
|
||||
Method getParseMethod() { result = this.getAMethod("Parse") }
|
||||
@@ -238,4 +247,58 @@ module JsonNET {
|
||||
/** Gets the `SelectToken` method. */
|
||||
Method getSelectTokenMethod() { result = this.getABaseType*().getAMethod("SelectToken") }
|
||||
}
|
||||
|
||||
/** Data flow for `NewtonSoft.Json.Linq.JObject`. */
|
||||
private class JObjectClassFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"Newtonsoft.Json.Linq;JObject;false;Add;(System.Collections.Generic.KeyValuePair<System.String,Newtonsoft.Json.Linq.JToken>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"Newtonsoft.Json.Linq;JObject;false;Add;(System.Collections.Generic.KeyValuePair<System.String,Newtonsoft.Json.Linq.JToken>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"Newtonsoft.Json.Linq;JObject;false;JObject;(Newtonsoft.Json.Linq.JObject);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"Newtonsoft.Json.Linq;JObject;false;JObject;(Newtonsoft.Json.Linq.JObject);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"Newtonsoft.Json.Linq;JObject;false;JObject;(System.Object[]);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"Newtonsoft.Json.Linq;JObject;false;JObject;(System.Object[]);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"Newtonsoft.Json.Linq;JObject;false;Parse;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json.Linq;JObject;false;Parse;(System.String,Newtonsoft.Json.Linq.JsonLoadSettings);;Argument[0];ReturnValue;taint",
|
||||
"Newtonsoft.Json.Linq;JObject;false;get_Item;(System.Object);;Element of Argument[-1];ReturnValue;value",
|
||||
"Newtonsoft.Json.Linq;JObject;false;get_Item;(System.Object);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];ReturnValue;value",
|
||||
"Newtonsoft.Json.Linq;JObject;false;get_Item;(System.String);;Element of Argument[-1];ReturnValue;value",
|
||||
"Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Element of Argument[-1];value",
|
||||
"Newtonsoft.Json.Linq;JObject;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"Newtonsoft.Json.Linq;JObject;false;set_Item;(System.String,Newtonsoft.Json.Linq.JToken);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `Newtonsoft.JSon.Linq.JArray` */
|
||||
private class NewtonsoftJsonLinqJArrayFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"Newtonsoft.Json.Linq;JArray;false;get_Item;(System.Object);;Element of Argument[-1];ReturnValue;value",
|
||||
"Newtonsoft.Json.Linq;JArray;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `Newtonsoft.JSon.Linq.JConstructor` */
|
||||
private class NewtonsoftJsonLinqJConstructorFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"Newtonsoft.Json.Linq;JConstructor;false;get_Item;(System.Object);;Element of Argument[-1];ReturnValue;value",
|
||||
"Newtonsoft.Json.Linq;JConstructor;false;set_Item;(System.Object,Newtonsoft.Json.Linq.JToken);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `Newtonsoft.JSon.Linq.JContainer` */
|
||||
private class NewtonsoftJsonLinqJContainerFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"Newtonsoft.Json.Linq;JContainer;true;Add;(System.Object);;Argument[0];Element of Argument[-1];value"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,6 +65,28 @@ class SystemArrayClass extends SystemClass {
|
||||
Property getLengthProperty() { result = this.getProperty("Length") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Array`. */
|
||||
private class SystemArrayFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System;Array;false;AsReadOnly<>;(T[]);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System;Array;false;Clone;();;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System;Array;false;CopyTo;(System.Array,System.Int64);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System;Array;false;Find<>;(T[],System.Predicate<T>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System;Array;false;Find<>;(T[],System.Predicate<T>);;Element of Argument[0];ReturnValue;value",
|
||||
"System;Array;false;FindAll<>;(T[],System.Predicate<T>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System;Array;false;FindAll<>;(T[],System.Predicate<T>);;Element of Argument[0];ReturnValue;value",
|
||||
"System;Array;false;FindLast<>;(T[],System.Predicate<T>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System;Array;false;FindLast<>;(T[],System.Predicate<T>);;Element of Argument[0];ReturnValue;value",
|
||||
"System;Array;false;Reverse;(System.Array);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System;Array;false;Reverse;(System.Array,System.Int32,System.Int32);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System;Array;false;Reverse<>;(T[]);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System;Array;false;Reverse<>;(T[],System.Int32,System.Int32);;Element of Argument[0];Element of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** `System.Attribute` class. */
|
||||
class SystemAttributeClass extends SystemClass {
|
||||
SystemAttributeClass() { this.hasName("Attribute") }
|
||||
@@ -111,6 +133,342 @@ class SystemConvertClass extends SystemClass {
|
||||
SystemConvertClass() { this.hasName("Convert") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Convert`. */
|
||||
private class SystemConvertFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System;Convert;false;ChangeType;(System.Object,System.Type);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ChangeType;(System.Object,System.Type,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ChangeType;(System.Object,System.TypeCode);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ChangeType;(System.Object,System.TypeCode,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;FromBase64CharArray;(System.Char[],System.Int32,System.Int32);;Element of Argument[0];Element of ReturnValue;taint",
|
||||
"System;Convert;false;FromBase64String;(System.String);;Argument[0];Element of ReturnValue;taint",
|
||||
"System;Convert;false;FromHexString;(System.ReadOnlySpan<System.Char>);;Element of Argument[0];Element of ReturnValue;taint",
|
||||
"System;Convert;false;FromHexString;(System.String);;Argument[0];Element of ReturnValue;taint",
|
||||
"System;Convert;false;GetTypeCode;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;IsDBNull;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32,System.Base64FormattingOptions);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32,System.Base64FormattingOptions);;Element of Argument[0];Element of Argument[3];taint",
|
||||
"System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBase64CharArray;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Element of Argument[0];Element of Argument[3];taint",
|
||||
"System;Convert;false;ToBase64String;(System.Byte[]);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBase64String;(System.Byte[],System.Base64FormattingOptions);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBase64String;(System.Byte[],System.Int32,System.Int32);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBase64String;(System.Byte[],System.Int32,System.Int32,System.Base64FormattingOptions);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBase64String;(System.ReadOnlySpan<System.Byte>,System.Base64FormattingOptions);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBoolean;(System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBoolean;(System.Byte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBoolean;(System.Char);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBoolean;(System.DateTime);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBoolean;(System.Decimal);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBoolean;(System.Double);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBoolean;(System.Int16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBoolean;(System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBoolean;(System.Int64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBoolean;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBoolean;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBoolean;(System.SByte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBoolean;(System.Single);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBoolean;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBoolean;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBoolean;(System.UInt16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBoolean;(System.UInt32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToBoolean;(System.UInt64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.Byte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.Char);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.DateTime);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.Decimal);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.Double);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.Int16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.Int64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.SByte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.Single);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.String,System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.UInt16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.UInt32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToByte;(System.UInt64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToChar;(System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToChar;(System.Byte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToChar;(System.Char);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToChar;(System.DateTime);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToChar;(System.Decimal);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToChar;(System.Double);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToChar;(System.Int16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToChar;(System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToChar;(System.Int64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToChar;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToChar;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToChar;(System.SByte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToChar;(System.Single);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToChar;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToChar;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToChar;(System.UInt16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToChar;(System.UInt32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToChar;(System.UInt64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDateTime;(System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDateTime;(System.Byte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDateTime;(System.Char);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDateTime;(System.DateTime);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDateTime;(System.Decimal);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDateTime;(System.Double);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDateTime;(System.Int16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDateTime;(System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDateTime;(System.Int64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDateTime;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDateTime;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDateTime;(System.SByte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDateTime;(System.Single);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDateTime;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDateTime;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDateTime;(System.UInt16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDateTime;(System.UInt32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDateTime;(System.UInt64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDecimal;(System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDecimal;(System.Byte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDecimal;(System.Char);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDecimal;(System.DateTime);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDecimal;(System.Decimal);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDecimal;(System.Double);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDecimal;(System.Int16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDecimal;(System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDecimal;(System.Int64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDecimal;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDecimal;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDecimal;(System.SByte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDecimal;(System.Single);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDecimal;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDecimal;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDecimal;(System.UInt16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDecimal;(System.UInt32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDecimal;(System.UInt64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDouble;(System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDouble;(System.Byte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDouble;(System.Char);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDouble;(System.DateTime);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDouble;(System.Decimal);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDouble;(System.Double);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDouble;(System.Int16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDouble;(System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDouble;(System.Int64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDouble;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDouble;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDouble;(System.SByte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDouble;(System.Single);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDouble;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDouble;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDouble;(System.UInt16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDouble;(System.UInt32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToDouble;(System.UInt64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToHexString;(System.Byte[]);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToHexString;(System.Byte[],System.Int32,System.Int32);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToHexString;(System.ReadOnlySpan<System.Byte>);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.Byte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.Char);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.DateTime);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.Decimal);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.Double);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.Int16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.Int64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.SByte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.Single);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.String,System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.UInt16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.UInt32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt16;(System.UInt64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.Byte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.Char);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.DateTime);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.Decimal);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.Double);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.Int16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.Int64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.SByte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.Single);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.String,System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.UInt16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.UInt32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt32;(System.UInt64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.Byte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.Char);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.DateTime);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.Decimal);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.Double);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.Int16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.Int64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.SByte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.Single);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.String,System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.UInt16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.UInt32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToInt64;(System.UInt64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.Byte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.Char);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.DateTime);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.Decimal);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.Double);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.Int16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.Int64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.SByte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.Single);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.String,System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.UInt16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.UInt32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSByte;(System.UInt64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSingle;(System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSingle;(System.Byte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSingle;(System.Char);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSingle;(System.DateTime);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSingle;(System.Decimal);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSingle;(System.Double);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSingle;(System.Int16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSingle;(System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSingle;(System.Int64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSingle;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSingle;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSingle;(System.SByte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSingle;(System.Single);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSingle;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSingle;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSingle;(System.UInt16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSingle;(System.UInt32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToSingle;(System.UInt64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Boolean,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Byte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Byte,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Byte,System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Char);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Char,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.DateTime);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.DateTime,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Decimal);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Decimal,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Double);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Double,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Int16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Int16,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Int16,System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Int32,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Int32,System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Int64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Int64,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Int64,System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.SByte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.SByte,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Single);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.Single,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.UInt16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.UInt16,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.UInt32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.UInt32,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.UInt64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToString;(System.UInt64,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.Byte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.Char);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.DateTime);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.Decimal);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.Double);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.Int16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.Int64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.SByte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.Single);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.String,System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.UInt16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.UInt32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt16;(System.UInt64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.Byte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.Char);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.DateTime);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.Decimal);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.Double);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.Int16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.Int64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.SByte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.Single);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.String,System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.UInt16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.UInt32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt32;(System.UInt64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.Byte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.Char);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.DateTime);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.Decimal);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.Double);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.Int16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.Int64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.Object,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.SByte);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.Single);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.String,System.IFormatProvider);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.String,System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.UInt16);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.UInt32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;ToUInt64;(System.UInt64);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan<System.Char>,System.Span<System.Byte>,System.Int32);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan<System.Char>,System.Span<System.Byte>,System.Int32);;Element of Argument[0];Element of Argument[1];taint",
|
||||
"System;Convert;false;TryFromBase64Chars;(System.ReadOnlySpan<System.Char>,System.Span<System.Byte>,System.Int32);;Element of Argument[0];Argument[2];taint",
|
||||
"System;Convert;false;TryFromBase64String;(System.String,System.Span<System.Byte>,System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;TryFromBase64String;(System.String,System.Span<System.Byte>,System.Int32);;Argument[0];Element of Argument[1];taint",
|
||||
"System;Convert;false;TryFromBase64String;(System.String,System.Span<System.Byte>,System.Int32);;Argument[0];Argument[2];taint",
|
||||
"System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan<System.Byte>,System.Span<System.Char>,System.Int32,System.Base64FormattingOptions);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan<System.Byte>,System.Span<System.Char>,System.Int32,System.Base64FormattingOptions);;Element of Argument[0];Element of Argument[1];taint",
|
||||
"System;Convert;false;TryToBase64Chars;(System.ReadOnlySpan<System.Byte>,System.Span<System.Char>,System.Int32,System.Base64FormattingOptions);;Element of Argument[0];Argument[2];taint",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** `System.Delegate` class. */
|
||||
class SystemDelegateClass extends SystemClass {
|
||||
SystemDelegateClass() { this.hasName("Delegate") }
|
||||
@@ -257,6 +615,19 @@ class SystemLazyClass extends SystemUnboundGenericClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Lazy<>`. */
|
||||
private class SystemLazyFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System;Lazy<>;false;Lazy;(System.Func<T>);;ReturnValue of Argument[0];Property[System.Lazy<>.Value] of ReturnValue;value",
|
||||
"System;Lazy<>;false;Lazy;(System.Func<T>,System.Boolean);;ReturnValue of Argument[0];Property[System.Lazy<>.Value] of ReturnValue;value",
|
||||
"System;Lazy<>;false;Lazy;(System.Func<T>,System.Threading.LazyThreadSafetyMode);;ReturnValue of Argument[0];Property[System.Lazy<>.Value] of ReturnValue;value",
|
||||
"System;Lazy<>;false;get_Value;();;Argument[-1];ReturnValue;taint",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Nullable<T>` struct. */
|
||||
class SystemNullableStruct extends SystemUnboundGenericStruct {
|
||||
SystemNullableStruct() {
|
||||
@@ -286,6 +657,21 @@ class SystemNullableStruct extends SystemUnboundGenericStruct {
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Nullable<>`. */
|
||||
private class SystemNullableFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System;Nullable<>;false;GetValueOrDefault;();;Property[System.Nullable<>.Value] of Argument[-1];ReturnValue;value",
|
||||
"System;Nullable<>;false;GetValueOrDefault;(T);;Argument[0];ReturnValue;value",
|
||||
"System;Nullable<>;false;GetValueOrDefault;(T);;Property[System.Nullable<>.Value] of Argument[-1];ReturnValue;value",
|
||||
"System;Nullable<>;false;Nullable;(T);;Argument[0];Property[System.Nullable<>.Value] of ReturnValue;value",
|
||||
"System;Nullable<>;false;get_HasValue;();;Property[System.Nullable<>.Value] of Argument[-1];ReturnValue;taint",
|
||||
"System;Nullable<>;false;get_Value;();;Argument[-1];ReturnValue;taint",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.NullReferenceException` class. */
|
||||
class SystemNullReferenceExceptionClass extends SystemClass {
|
||||
SystemNullReferenceExceptionClass() { this.hasName("NullReferenceException") }
|
||||
@@ -492,6 +878,132 @@ class SystemStringClass extends StringType {
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.String`. */
|
||||
private class SystemStringFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System;String;false;Clone;();;Argument[-1];ReturnValue;value",
|
||||
"System;String;false;Concat;(System.Collections.Generic.IEnumerable<System.String>);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.Object,System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.Object,System.Object);;Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.Object[]);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>);;Element of Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>);;Element of Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>);;Element of Argument[2];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>);;Element of Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>);;Element of Argument[2];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>);;Element of Argument[3];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.String,System.String);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.String,System.String);;Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[2];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.String,System.String,System.String,System.String);;Argument[3];ReturnValue;taint",
|
||||
"System;String;false;Concat;(System.String[]);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Concat<>;(System.Collections.Generic.IEnumerable<T>);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Copy;(System.String);;Argument[0];ReturnValue;value",
|
||||
"System;String;false;Format;(System.IFormatProvider,System.String,System.Object);;Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.IFormatProvider,System.String,System.Object);;Argument[2];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[2];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[3];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[3];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[4];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.IFormatProvider,System.String,System.Object[]);;Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.IFormatProvider,System.String,System.Object[]);;Element of Argument[2];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.String,System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.String,System.Object);;Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.String,System.Object,System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.String,System.Object,System.Object);;Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.String,System.Object,System.Object);;Argument[2];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[2];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.String,System.Object,System.Object,System.Object);;Argument[3];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.String,System.Object[]);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Format;(System.String,System.Object[]);;Element of Argument[1];ReturnValue;taint",
|
||||
"System;String;false;GetEnumerator;();;Element of Argument[-1];Property[System.CharEnumerator.Current] of ReturnValue;value",
|
||||
"System;String;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.IEnumerator<>.Current] of ReturnValue;value",
|
||||
"System;String;false;Insert;(System.Int32,System.String);;Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Insert;(System.Int32,System.String);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;Join;(System.Char,System.Object[]);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Join;(System.Char,System.Object[]);;Element of Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Join;(System.Char,System.String[]);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Join;(System.Char,System.String[]);;Element of Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Join;(System.Char,System.String[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Join;(System.Char,System.String[],System.Int32,System.Int32);;Element of Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Join;(System.String,System.Collections.Generic.IEnumerable<System.String>);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Join;(System.String,System.Collections.Generic.IEnumerable<System.String>);;Element of Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Join;(System.String,System.Object[]);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Join;(System.String,System.Object[]);;Element of Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Join;(System.String,System.String[]);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Join;(System.String,System.String[]);;Element of Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Join;(System.String,System.String[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Join;(System.String,System.String[],System.Int32,System.Int32);;Element of Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Join<>;(System.Char,System.Collections.Generic.IEnumerable<T>);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Join<>;(System.Char,System.Collections.Generic.IEnumerable<T>);;Element of Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Join<>;(System.String,System.Collections.Generic.IEnumerable<T>);;Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Join<>;(System.String,System.Collections.Generic.IEnumerable<T>);;Element of Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Normalize;();;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;Normalize;(System.Text.NormalizationForm);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;PadLeft;(System.Int32);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;PadLeft;(System.Int32,System.Char);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;PadRight;(System.Int32);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;PadRight;(System.Int32,System.Char);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;Remove;(System.Int32);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;Remove;(System.Int32,System.Int32);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;Replace;(System.Char,System.Char);;Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Replace;(System.Char,System.Char);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;Replace;(System.String,System.String);;Argument[1];ReturnValue;taint",
|
||||
"System;String;false;Replace;(System.String,System.String);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;Split;(System.Char,System.Int32,System.StringSplitOptions);;Argument[-1];Element of ReturnValue;taint",
|
||||
"System;String;false;Split;(System.Char,System.StringSplitOptions);;Argument[-1];Element of ReturnValue;taint",
|
||||
"System;String;false;Split;(System.Char[]);;Argument[-1];Element of ReturnValue;taint",
|
||||
"System;String;false;Split;(System.Char[],System.Int32);;Argument[-1];Element of ReturnValue;taint",
|
||||
"System;String;false;Split;(System.Char[],System.Int32,System.StringSplitOptions);;Argument[-1];Element of ReturnValue;taint",
|
||||
"System;String;false;Split;(System.Char[],System.StringSplitOptions);;Argument[-1];Element of ReturnValue;taint",
|
||||
"System;String;false;Split;(System.String,System.Int32,System.StringSplitOptions);;Argument[-1];Element of ReturnValue;taint",
|
||||
"System;String;false;Split;(System.String,System.StringSplitOptions);;Argument[-1];Element of ReturnValue;taint",
|
||||
"System;String;false;Split;(System.String[],System.Int32,System.StringSplitOptions);;Argument[-1];Element of ReturnValue;taint",
|
||||
"System;String;false;Split;(System.String[],System.StringSplitOptions);;Argument[-1];Element of ReturnValue;taint",
|
||||
"System;String;false;String;(System.Char[]);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;String;false;String;(System.Char[],System.Int32,System.Int32);;Element of Argument[0];ReturnValue;taint",
|
||||
"System;String;false;Substring;(System.Int32);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;Substring;(System.Int32,System.Int32);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;ToLower;();;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;ToLower;(System.Globalization.CultureInfo);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;ToLowerInvariant;();;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;ToString;();;Argument[-1];ReturnValue;value",
|
||||
"System;String;false;ToString;(System.IFormatProvider);;Argument[-1];ReturnValue;value",
|
||||
"System;String;false;ToUpper;();;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;ToUpper;(System.Globalization.CultureInfo);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;ToUpperInvariant;();;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;Trim;();;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;Trim;(System.Char);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;Trim;(System.Char[]);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;TrimEnd;();;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;TrimEnd;(System.Char);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;TrimEnd;(System.Char[]);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;TrimStart;();;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;TrimStart;(System.Char);;Argument[-1];ReturnValue;taint",
|
||||
"System;String;false;TrimStart;(System.Char[]);;Argument[-1];ReturnValue;taint",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** A `ToString()` method. */
|
||||
class ToStringMethod extends Method {
|
||||
ToStringMethod() { this = any(SystemObjectClass c).getToStringMethod().getAnOverrider*() }
|
||||
@@ -798,3 +1310,384 @@ class SystemNotImplementedExceptionClass extends SystemClass {
|
||||
class SystemDateTimeStruct extends SystemStruct {
|
||||
SystemDateTimeStruct() { this.hasName("DateTime") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Tuple`. */
|
||||
private class SystemTupleFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0];Property[System.Tuple<,,,,,,,>.Item1] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[1];Property[System.Tuple<,,,,,,,>.Item2] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[2];Property[System.Tuple<,,,,,,,>.Item3] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[3];Property[System.Tuple<,,,,,,,>.Item4] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[4];Property[System.Tuple<,,,,,,,>.Item5] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[5];Property[System.Tuple<,,,,,,,>.Item6] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[6];Property[System.Tuple<,,,,,,,>.Item7] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];Property[System.Tuple<,,,,,,>.Item1] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];Property[System.Tuple<,,,,,,>.Item2] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];Property[System.Tuple<,,,,,,>.Item3] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];Property[System.Tuple<,,,,,,>.Item4] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];Property[System.Tuple<,,,,,,>.Item5] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];Property[System.Tuple<,,,,,,>.Item6] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];Property[System.Tuple<,,,,,,>.Item7] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[0];Property[System.Tuple<,,,,,>.Item1] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[1];Property[System.Tuple<,,,,,>.Item2] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[2];Property[System.Tuple<,,,,,>.Item3] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[3];Property[System.Tuple<,,,,,>.Item4] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[4];Property[System.Tuple<,,,,,>.Item5] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[5];Property[System.Tuple<,,,,,>.Item6] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[0];Property[System.Tuple<,,,,>.Item1] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[1];Property[System.Tuple<,,,,>.Item2] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[2];Property[System.Tuple<,,,,>.Item3] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[3];Property[System.Tuple<,,,,>.Item4] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[4];Property[System.Tuple<,,,,>.Item5] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[0];Property[System.Tuple<,,,>.Item1] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[1];Property[System.Tuple<,,,>.Item2] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[2];Property[System.Tuple<,,,>.Item3] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[3];Property[System.Tuple<,,,>.Item4] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[0];Property[System.Tuple<,,>.Item1] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[1];Property[System.Tuple<,,>.Item2] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,,>;(T1,T2,T3);;Argument[2];Property[System.Tuple<,,>.Item3] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,>;(T1,T2);;Argument[0];Property[System.Tuple<,>.Item1] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<,>;(T1,T2);;Argument[1];Property[System.Tuple<,>.Item2] of ReturnValue;value",
|
||||
"System;Tuple;false;Create<>;(T1);;Argument[0];Property[System.Tuple<>.Item1] of ReturnValue;value"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Tuple<,*>`. */
|
||||
private class SystemTupleTFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[0];Property[System.Tuple<,,,,,,,>.Item1] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[1];Property[System.Tuple<,,,,,,,>.Item2] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[2];Property[System.Tuple<,,,,,,,>.Item3] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[3];Property[System.Tuple<,,,,,,,>.Item4] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[4];Property[System.Tuple<,,,,,,,>.Item5] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[5];Property[System.Tuple<,,,,,,,>.Item6] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[6];Property[System.Tuple<,,,,,,,>.Item7] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,,,>.Item1] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,,,>.Item2] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,,,>.Item3] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,,,>.Item4] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,,,>.Item5] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,,,>.Item6] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,,,>.Item7] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];Property[System.Tuple<,,,,,,>.Item1] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];Property[System.Tuple<,,,,,,>.Item2] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];Property[System.Tuple<,,,,,,>.Item3] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];Property[System.Tuple<,,,,,,>.Item4] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];Property[System.Tuple<,,,,,,>.Item5] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];Property[System.Tuple<,,,,,,>.Item6] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];Property[System.Tuple<,,,,,,>.Item7] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,,>.Item1] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,,>.Item2] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,,>.Item3] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,,>.Item4] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,,>.Item5] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,,>.Item6] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,,>.Item7] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[0];Property[System.Tuple<,,,,,>.Item1] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[1];Property[System.Tuple<,,,,,>.Item2] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[2];Property[System.Tuple<,,,,,>.Item3] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[3];Property[System.Tuple<,,,,,>.Item4] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[4];Property[System.Tuple<,,,,,>.Item5] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,>;false;Tuple;(T1,T2,T3,T4,T5,T6);;Argument[5];Property[System.Tuple<,,,,,>.Item6] of ReturnValue;value",
|
||||
"System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,>.Item1] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,>.Item2] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,>.Item3] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,>.Item4] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,>.Item5] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,,>.Item6] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[0];Property[System.Tuple<,,,,>.Item1] of ReturnValue;value",
|
||||
"System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[1];Property[System.Tuple<,,,,>.Item2] of ReturnValue;value",
|
||||
"System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[2];Property[System.Tuple<,,,,>.Item3] of ReturnValue;value",
|
||||
"System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[3];Property[System.Tuple<,,,,>.Item4] of ReturnValue;value",
|
||||
"System;Tuple<,,,,>;false;Tuple;(T1,T2,T3,T4,T5);;Argument[4];Property[System.Tuple<,,,,>.Item5] of ReturnValue;value",
|
||||
"System;Tuple<,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,>.Item1] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,>.Item2] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,>.Item3] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,>.Item4] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,,>.Item5] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[0];Property[System.Tuple<,,,>.Item1] of ReturnValue;value",
|
||||
"System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[1];Property[System.Tuple<,,,>.Item2] of ReturnValue;value",
|
||||
"System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[2];Property[System.Tuple<,,,>.Item3] of ReturnValue;value",
|
||||
"System;Tuple<,,,>;false;Tuple;(T1,T2,T3,T4);;Argument[3];Property[System.Tuple<,,,>.Item4] of ReturnValue;value",
|
||||
"System;Tuple<,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,>.Item1] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,>.Item2] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,>.Item3] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,,>.Item4] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[0];Property[System.Tuple<,,>.Item1] of ReturnValue;value",
|
||||
"System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[1];Property[System.Tuple<,,>.Item2] of ReturnValue;value",
|
||||
"System;Tuple<,,>;false;Tuple;(T1,T2,T3);;Argument[2];Property[System.Tuple<,,>.Item3] of ReturnValue;value",
|
||||
"System;Tuple<,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,>.Item1] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,>.Item2] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,,>;false;get_Item;(System.Int32);;Property[System.Tuple<,,>.Item3] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,>;false;Tuple;(T1,T2);;Argument[0];Property[System.Tuple<,>.Item1] of ReturnValue;value",
|
||||
"System;Tuple<,>;false;Tuple;(T1,T2);;Argument[1];Property[System.Tuple<,>.Item2] of ReturnValue;value",
|
||||
"System;Tuple<,>;false;get_Item;(System.Int32);;Property[System.Tuple<,>.Item1] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<,>;false;get_Item;(System.Int32);;Property[System.Tuple<,>.Item2] of Argument[-1];ReturnValue;value",
|
||||
"System;Tuple<>;false;Tuple;(T1);;Argument[0];Property[System.Tuple<>.Item1] of ReturnValue;value",
|
||||
"System;Tuple<>;false;get_Item;(System.Int32);;Property[System.Tuple<>.Item1] of Argument[-1];ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.TupleExtensions`. */
|
||||
private class SystemTupleExtensionsFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19,T20,T21>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Property[System.Tuple<,,,,,,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19,T20,T21>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Property[System.Tuple<,,,,,,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19,T20,T21>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Property[System.Tuple<,,,,,,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19,T20,T21>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Property[System.Tuple<,,,,,,,>.Item4] of Argument[0];Argument[4];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19,T20,T21>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Property[System.Tuple<,,,,,,,>.Item5] of Argument[0];Argument[5];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19,T20,T21>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Property[System.Tuple<,,,,,,,>.Item6] of Argument[0];Argument[6];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19,T20,T21>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21);;Property[System.Tuple<,,,,,,,>.Item7] of Argument[0];Argument[7];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19,T20>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Property[System.Tuple<,,,,,,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19,T20>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Property[System.Tuple<,,,,,,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19,T20>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Property[System.Tuple<,,,,,,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19,T20>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Property[System.Tuple<,,,,,,,>.Item4] of Argument[0];Argument[4];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19,T20>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Property[System.Tuple<,,,,,,,>.Item5] of Argument[0];Argument[5];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19,T20>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Property[System.Tuple<,,,,,,,>.Item6] of Argument[0];Argument[6];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19,T20>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20);;Property[System.Tuple<,,,,,,,>.Item7] of Argument[0];Argument[7];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Property[System.Tuple<,,,,,,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Property[System.Tuple<,,,,,,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Property[System.Tuple<,,,,,,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Property[System.Tuple<,,,,,,,>.Item4] of Argument[0];Argument[4];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Property[System.Tuple<,,,,,,,>.Item5] of Argument[0];Argument[5];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Property[System.Tuple<,,,,,,,>.Item6] of Argument[0];Argument[6];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18,T19>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19);;Property[System.Tuple<,,,,,,,>.Item7] of Argument[0];Argument[7];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Property[System.Tuple<,,,,,,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Property[System.Tuple<,,,,,,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Property[System.Tuple<,,,,,,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Property[System.Tuple<,,,,,,,>.Item4] of Argument[0];Argument[4];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Property[System.Tuple<,,,,,,,>.Item5] of Argument[0];Argument[5];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Property[System.Tuple<,,,,,,,>.Item6] of Argument[0];Argument[6];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17,T18>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18);;Property[System.Tuple<,,,,,,,>.Item7] of Argument[0];Argument[7];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Property[System.Tuple<,,,,,,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Property[System.Tuple<,,,,,,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Property[System.Tuple<,,,,,,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Property[System.Tuple<,,,,,,,>.Item4] of Argument[0];Argument[4];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Property[System.Tuple<,,,,,,,>.Item5] of Argument[0];Argument[5];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Property[System.Tuple<,,,,,,,>.Item6] of Argument[0];Argument[6];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16,T17>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17);;Property[System.Tuple<,,,,,,,>.Item7] of Argument[0];Argument[7];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Property[System.Tuple<,,,,,,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Property[System.Tuple<,,,,,,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Property[System.Tuple<,,,,,,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Property[System.Tuple<,,,,,,,>.Item4] of Argument[0];Argument[4];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Property[System.Tuple<,,,,,,,>.Item5] of Argument[0];Argument[5];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Property[System.Tuple<,,,,,,,>.Item6] of Argument[0];Argument[6];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15,T16>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16);;Property[System.Tuple<,,,,,,,>.Item7] of Argument[0];Argument[7];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Property[System.Tuple<,,,,,,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Property[System.Tuple<,,,,,,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Property[System.Tuple<,,,,,,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Property[System.Tuple<,,,,,,,>.Item4] of Argument[0];Argument[4];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Property[System.Tuple<,,,,,,,>.Item5] of Argument[0];Argument[5];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Property[System.Tuple<,,,,,,,>.Item6] of Argument[0];Argument[6];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14,System.Tuple<T15>>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15);;Property[System.Tuple<,,,,,,,>.Item7] of Argument[0];Argument[7];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Property[System.Tuple<,,,,,,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Property[System.Tuple<,,,,,,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Property[System.Tuple<,,,,,,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Property[System.Tuple<,,,,,,,>.Item4] of Argument[0];Argument[4];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Property[System.Tuple<,,,,,,,>.Item5] of Argument[0];Argument[5];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Property[System.Tuple<,,,,,,,>.Item6] of Argument[0];Argument[6];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13,T14>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14);;Property[System.Tuple<,,,,,,,>.Item7] of Argument[0];Argument[7];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Property[System.Tuple<,,,,,,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Property[System.Tuple<,,,,,,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Property[System.Tuple<,,,,,,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Property[System.Tuple<,,,,,,,>.Item4] of Argument[0];Argument[4];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Property[System.Tuple<,,,,,,,>.Item5] of Argument[0];Argument[5];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Property[System.Tuple<,,,,,,,>.Item6] of Argument[0];Argument[6];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12,T13>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13);;Property[System.Tuple<,,,,,,,>.Item7] of Argument[0];Argument[7];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Property[System.Tuple<,,,,,,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Property[System.Tuple<,,,,,,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Property[System.Tuple<,,,,,,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Property[System.Tuple<,,,,,,,>.Item4] of Argument[0];Argument[4];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Property[System.Tuple<,,,,,,,>.Item5] of Argument[0];Argument[5];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Property[System.Tuple<,,,,,,,>.Item6] of Argument[0];Argument[6];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11,T12>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12);;Property[System.Tuple<,,,,,,,>.Item7] of Argument[0];Argument[7];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Property[System.Tuple<,,,,,,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Property[System.Tuple<,,,,,,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Property[System.Tuple<,,,,,,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Property[System.Tuple<,,,,,,,>.Item4] of Argument[0];Argument[4];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Property[System.Tuple<,,,,,,,>.Item5] of Argument[0];Argument[5];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Property[System.Tuple<,,,,,,,>.Item6] of Argument[0];Argument[6];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10,T11>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11);;Property[System.Tuple<,,,,,,,>.Item7] of Argument[0];Argument[7];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Property[System.Tuple<,,,,,,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Property[System.Tuple<,,,,,,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Property[System.Tuple<,,,,,,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Property[System.Tuple<,,,,,,,>.Item4] of Argument[0];Argument[4];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Property[System.Tuple<,,,,,,,>.Item5] of Argument[0];Argument[5];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Property[System.Tuple<,,,,,,,>.Item6] of Argument[0];Argument[6];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9,T10>>,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10);;Property[System.Tuple<,,,,,,,>.Item7] of Argument[0];Argument[7];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9>>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Property[System.Tuple<,,,,,,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9>>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Property[System.Tuple<,,,,,,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9>>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Property[System.Tuple<,,,,,,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9>>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Property[System.Tuple<,,,,,,,>.Item4] of Argument[0];Argument[4];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9>>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Property[System.Tuple<,,,,,,,>.Item5] of Argument[0];Argument[5];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9>>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Property[System.Tuple<,,,,,,,>.Item6] of Argument[0];Argument[6];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8,T9>>,T1,T2,T3,T4,T5,T6,T7,T8,T9);;Property[System.Tuple<,,,,,,,>.Item7] of Argument[0];Argument[7];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8>>,T1,T2,T3,T4,T5,T6,T7,T8);;Property[System.Tuple<,,,,,,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8>>,T1,T2,T3,T4,T5,T6,T7,T8);;Property[System.Tuple<,,,,,,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8>>,T1,T2,T3,T4,T5,T6,T7,T8);;Property[System.Tuple<,,,,,,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8>>,T1,T2,T3,T4,T5,T6,T7,T8);;Property[System.Tuple<,,,,,,,>.Item4] of Argument[0];Argument[4];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8>>,T1,T2,T3,T4,T5,T6,T7,T8);;Property[System.Tuple<,,,,,,,>.Item5] of Argument[0];Argument[5];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8>>,T1,T2,T3,T4,T5,T6,T7,T8);;Property[System.Tuple<,,,,,,,>.Item6] of Argument[0];Argument[6];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7,System.Tuple<T8>>,T1,T2,T3,T4,T5,T6,T7,T8);;Property[System.Tuple<,,,,,,,>.Item7] of Argument[0];Argument[7];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7>,T1,T2,T3,T4,T5,T6,T7);;Property[System.Tuple<,,,,,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7>,T1,T2,T3,T4,T5,T6,T7);;Property[System.Tuple<,,,,,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7>,T1,T2,T3,T4,T5,T6,T7);;Property[System.Tuple<,,,,,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7>,T1,T2,T3,T4,T5,T6,T7);;Property[System.Tuple<,,,,,,>.Item4] of Argument[0];Argument[4];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7>,T1,T2,T3,T4,T5,T6,T7);;Property[System.Tuple<,,,,,,>.Item5] of Argument[0];Argument[5];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7>,T1,T2,T3,T4,T5,T6,T7);;Property[System.Tuple<,,,,,,>.Item6] of Argument[0];Argument[6];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6,T7>,T1,T2,T3,T4,T5,T6,T7);;Property[System.Tuple<,,,,,,>.Item7] of Argument[0];Argument[7];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6>,T1,T2,T3,T4,T5,T6);;Property[System.Tuple<,,,,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6>,T1,T2,T3,T4,T5,T6);;Property[System.Tuple<,,,,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6>,T1,T2,T3,T4,T5,T6);;Property[System.Tuple<,,,,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6>,T1,T2,T3,T4,T5,T6);;Property[System.Tuple<,,,,,>.Item4] of Argument[0];Argument[4];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6>,T1,T2,T3,T4,T5,T6);;Property[System.Tuple<,,,,,>.Item5] of Argument[0];Argument[5];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,,>;(System.Tuple<T1,T2,T3,T4,T5,T6>,T1,T2,T3,T4,T5,T6);;Property[System.Tuple<,,,,,>.Item6] of Argument[0];Argument[6];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple<T1,T2,T3,T4,T5>,T1,T2,T3,T4,T5);;Property[System.Tuple<,,,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple<T1,T2,T3,T4,T5>,T1,T2,T3,T4,T5);;Property[System.Tuple<,,,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple<T1,T2,T3,T4,T5>,T1,T2,T3,T4,T5);;Property[System.Tuple<,,,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple<T1,T2,T3,T4,T5>,T1,T2,T3,T4,T5);;Property[System.Tuple<,,,,>.Item4] of Argument[0];Argument[4];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,,>;(System.Tuple<T1,T2,T3,T4,T5>,T1,T2,T3,T4,T5);;Property[System.Tuple<,,,,>.Item5] of Argument[0];Argument[5];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple<T1,T2,T3,T4>,T1,T2,T3,T4);;Property[System.Tuple<,,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple<T1,T2,T3,T4>,T1,T2,T3,T4);;Property[System.Tuple<,,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple<T1,T2,T3,T4>,T1,T2,T3,T4);;Property[System.Tuple<,,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,,>;(System.Tuple<T1,T2,T3,T4>,T1,T2,T3,T4);;Property[System.Tuple<,,,>.Item4] of Argument[0];Argument[4];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple<T1,T2,T3>,T1,T2,T3);;Property[System.Tuple<,,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple<T1,T2,T3>,T1,T2,T3);;Property[System.Tuple<,,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,,>;(System.Tuple<T1,T2,T3>,T1,T2,T3);;Property[System.Tuple<,,>.Item3] of Argument[0];Argument[3];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,>;(System.Tuple<T1,T2>,T1,T2);;Property[System.Tuple<,>.Item1] of Argument[0];Argument[1];value",
|
||||
"System;TupleExtensions;false;Deconstruct<,>;(System.Tuple<T1,T2>,T1,T2);;Property[System.Tuple<,>.Item2] of Argument[0];Argument[2];value",
|
||||
"System;TupleExtensions;false;Deconstruct<>;(System.Tuple<T1>,T1);;Property[System.Tuple<>.Item1] of Argument[0];Argument[1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.ValueTuple`. */
|
||||
private class SystemValueTupleFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[0];Field[System.ValueTuple<,,,,,,,>.Item1] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[1];Field[System.ValueTuple<,,,,,,,>.Item2] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[2];Field[System.ValueTuple<,,,,,,,>.Item3] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[3];Field[System.ValueTuple<,,,,,,,>.Item4] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[4];Field[System.ValueTuple<,,,,,,,>.Item5] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[5];Field[System.ValueTuple<,,,,,,,>.Item6] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,,,>;(T1,T2,T3,T4,T5,T6,T7,T8);;Argument[6];Field[System.ValueTuple<,,,,,,,>.Item7] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];Field[System.ValueTuple<,,,,,,>.Item1] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];Field[System.ValueTuple<,,,,,,>.Item2] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];Field[System.ValueTuple<,,,,,,>.Item3] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];Field[System.ValueTuple<,,,,,,>.Item4] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];Field[System.ValueTuple<,,,,,,>.Item5] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];Field[System.ValueTuple<,,,,,,>.Item6] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,,>;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];Field[System.ValueTuple<,,,,,,>.Item7] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[0];Field[System.ValueTuple<,,,,,>.Item1] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[1];Field[System.ValueTuple<,,,,,>.Item2] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[2];Field[System.ValueTuple<,,,,,>.Item3] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[3];Field[System.ValueTuple<,,,,,>.Item4] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[4];Field[System.ValueTuple<,,,,,>.Item5] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,,>;(T1,T2,T3,T4,T5,T6);;Argument[5];Field[System.ValueTuple<,,,,,>.Item6] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[0];Field[System.ValueTuple<,,,,>.Item1] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[1];Field[System.ValueTuple<,,,,>.Item2] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[2];Field[System.ValueTuple<,,,,>.Item3] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[3];Field[System.ValueTuple<,,,,>.Item4] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,,>;(T1,T2,T3,T4,T5);;Argument[4];Field[System.ValueTuple<,,,,>.Item5] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[0];Field[System.ValueTuple<,,,>.Item1] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[1];Field[System.ValueTuple<,,,>.Item2] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[2];Field[System.ValueTuple<,,,>.Item3] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,,>;(T1,T2,T3,T4);;Argument[3];Field[System.ValueTuple<,,,>.Item4] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[0];Field[System.ValueTuple<,,>.Item1] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[1];Field[System.ValueTuple<,,>.Item2] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,,>;(T1,T2,T3);;Argument[2];Field[System.ValueTuple<,,>.Item3] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,>;(T1,T2);;Argument[0];Field[System.ValueTuple<,>.Item1] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<,>;(T1,T2);;Argument[1];Field[System.ValueTuple<,>.Item2] of ReturnValue;value",
|
||||
"System;ValueTuple;false;Create<>;(T1);;Argument[0];Field[System.ValueTuple<>.Item1] of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for System.ValueTuple<,*>. */
|
||||
private class SystemValueTupleTFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[0];Field[System.ValueTuple<,,,,,,,>.Item1] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[1];Field[System.ValueTuple<,,,,,,,>.Item2] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[2];Field[System.ValueTuple<,,,,,,,>.Item3] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[3];Field[System.ValueTuple<,,,,,,,>.Item4] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[4];Field[System.ValueTuple<,,,,,,,>.Item5] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[5];Field[System.ValueTuple<,,,,,,,>.Item6] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7,TRest);;Argument[6];Field[System.ValueTuple<,,,,,,,>.Item7] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,,,>.Item1] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,,,>.Item2] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,,,>.Item3] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,,,>.Item4] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,,,>.Item5] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,,,>.Item6] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,,,>.Item7] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[0];Field[System.ValueTuple<,,,,,,>.Item1] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[1];Field[System.ValueTuple<,,,,,,>.Item2] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[2];Field[System.ValueTuple<,,,,,,>.Item3] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[3];Field[System.ValueTuple<,,,,,,>.Item4] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[4];Field[System.ValueTuple<,,,,,,>.Item5] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[5];Field[System.ValueTuple<,,,,,,>.Item6] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6,T7);;Argument[6];Field[System.ValueTuple<,,,,,,>.Item7] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,,>.Item1] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,,>.Item2] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,,>.Item3] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,,>.Item4] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,,>.Item5] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,,>.Item6] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,,>.Item7] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[0];Field[System.ValueTuple<,,,,,>.Item1] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[1];Field[System.ValueTuple<,,,,,>.Item2] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[2];Field[System.ValueTuple<,,,,,>.Item3] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[3];Field[System.ValueTuple<,,,,,>.Item4] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[4];Field[System.ValueTuple<,,,,,>.Item5] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5,T6);;Argument[5];Field[System.ValueTuple<,,,,,>.Item6] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,>.Item1] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,>.Item2] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,>.Item3] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,>.Item4] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,>.Item5] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,,>.Item6] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[0];Field[System.ValueTuple<,,,,>.Item1] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[1];Field[System.ValueTuple<,,,,>.Item2] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[2];Field[System.ValueTuple<,,,,>.Item3] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[3];Field[System.ValueTuple<,,,,>.Item4] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,>;false;ValueTuple;(T1,T2,T3,T4,T5);;Argument[4];Field[System.ValueTuple<,,,,>.Item5] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,>.Item1] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,>.Item2] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,>.Item3] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,>.Item4] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,,>.Item5] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[0];Field[System.ValueTuple<,,,>.Item1] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[1];Field[System.ValueTuple<,,,>.Item2] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[2];Field[System.ValueTuple<,,,>.Item3] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,>;false;ValueTuple;(T1,T2,T3,T4);;Argument[3];Field[System.ValueTuple<,,,>.Item4] of ReturnValue;value",
|
||||
"System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,>.Item1] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,>.Item2] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,>.Item3] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,,>.Item4] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[0];Field[System.ValueTuple<,,>.Item1] of ReturnValue;value",
|
||||
"System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[1];Field[System.ValueTuple<,,>.Item2] of ReturnValue;value",
|
||||
"System;ValueTuple<,,>;false;ValueTuple;(T1,T2,T3);;Argument[2];Field[System.ValueTuple<,,>.Item3] of ReturnValue;value",
|
||||
"System;ValueTuple<,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,>.Item1] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,>.Item2] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,,>.Item3] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,>;false;ValueTuple;(T1,T2);;Argument[0];Field[System.ValueTuple<,>.Item1] of ReturnValue;value",
|
||||
"System;ValueTuple<,>;false;ValueTuple;(T1,T2);;Argument[1];Field[System.ValueTuple<,>.Item2] of ReturnValue;value",
|
||||
"System;ValueTuple<,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,>.Item1] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<,>;false;get_Item;(System.Int32);;Field[System.ValueTuple<,>.Item2] of Argument[-1];ReturnValue;value",
|
||||
"System;ValueTuple<>;false;ValueTuple;(T1);;Argument[0];Field[System.ValueTuple<>.Item1] of ReturnValue;value",
|
||||
"System;ValueTuple<>;false;get_Item;(System.Int32);;Field[System.ValueTuple<>.Item1] of Argument[-1];ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
/** Provides definitions related to the `Microsoft.VisualBasic` namespace. */
|
||||
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** Data flow for `Microsoft.VisualBasic.Collection`. */
|
||||
private class MicrosoftVisualBasicCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"Microsoft.VisualBasic;Collection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.IEnumerator.Current] of ReturnValue;value",
|
||||
"Microsoft.VisualBasic;Collection;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"Microsoft.VisualBasic;Collection;false;get_Item;(System.Object);;Element of Argument[-1];ReturnValue;value",
|
||||
"Microsoft.VisualBasic;Collection;false;get_Item;(System.String);;Element of Argument[-1];ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import csharp
|
||||
private import semmle.code.csharp.frameworks.System
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** The `System.Collections` namespace. */
|
||||
class SystemCollectionsNamespace extends Namespace {
|
||||
@@ -36,6 +37,14 @@ class SystemCollectionsIEnumerableInterface extends SystemCollectionsInterface {
|
||||
SystemCollectionsIEnumerableInterface() { this.hasName("IEnumerable") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.IEnumerable`. */
|
||||
private class SystemCollectionIEnumerableFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Collections;IEnumerable;true;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.IEnumerator.Current] of ReturnValue;value"
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Collections.IEnumerator` interface. */
|
||||
class SystemCollectionsIEnumeratorInterface extends SystemCollectionsInterface {
|
||||
SystemCollectionsIEnumeratorInterface() { this.hasName("IEnumerator") }
|
||||
@@ -53,12 +62,137 @@ class SystemCollectionsICollectionInterface extends SystemCollectionsInterface {
|
||||
SystemCollectionsICollectionInterface() { this.hasName("ICollection") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.ICollection`. */
|
||||
private class SystemCollectionsICollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Collections;ICollection;true;CopyTo;(System.Array,System.Int32);;Element of Argument[-1];Element of Argument[0];value"
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Collections.IList` interface. */
|
||||
class SystemCollectionsIListInterface extends SystemCollectionsInterface {
|
||||
SystemCollectionsIListInterface() { this.hasName("IList") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.IList`. */
|
||||
private class SystemCollectionsIListFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections;IList;true;Add;(System.Object);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections;IList;true;Insert;(System.Int32,System.Object);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Collections;IList;true;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections;IList;true;set_Item;(System.Int32,System.Object);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Collections.IDictionary` interface. */
|
||||
class SystemCollectionsIDictionaryInterface extends SystemCollectionsInterface {
|
||||
SystemCollectionsIDictionaryInterface() { this.hasName("IDictionary") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.IDictionary`. */
|
||||
private class SystemCollectionsIDictionaryFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections;IDictionary;true;Add;(System.Object,System.Object);;Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Collections;IDictionary;true;Add;(System.Object,System.Object);;Argument[1];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"System.Collections;IDictionary;true;get_Item;(System.Object);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections;IDictionary;true;get_Keys;();;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
"System.Collections;IDictionary;true;get_Values;();;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
"System.Collections;IDictionary;true;set_Item;(System.Object,System.Object);;Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Collections;IDictionary;true;set_Item;(System.Object,System.Object);;Argument[1];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Hashtable`. */
|
||||
private class SystemCollectionsHashtableFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections;Hashtable;false;Clone;();;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IEqualityComparer);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IEqualityComparer);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IEqualityComparer);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IEqualityComparer);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections;Hashtable;false;Hashtable;(System.Collections.IDictionary,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.SortedList`. */
|
||||
private class SystemCollectionsSortedListFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections;SortedList;false;Clone;();;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections;SortedList;false;GetByIndex;(System.Int32);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections;SortedList;false;GetValueList;();;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
"System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary,System.Collections.IComparer);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections;SortedList;false;SortedList;(System.Collections.IDictionary,System.Collections.IComparer);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.ArrayList`. */
|
||||
private class SystemCollectionsArrayListFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections;ArrayList;false;AddRange;(System.Collections.ICollection);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections;ArrayList;false;Clone;();;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections;ArrayList;false;FixedSize;(System.Collections.ArrayList);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections;ArrayList;false;FixedSize;(System.Collections.IList);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections;ArrayList;false;GetEnumerator;(System.Int32,System.Int32);;Element of Argument[-1];Property[System.Collections.IEnumerator.Current] of ReturnValue;value",
|
||||
"System.Collections;ArrayList;false;GetRange;(System.Int32,System.Int32);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections;ArrayList;false;InsertRange;(System.Int32,System.Collections.ICollection);;Element of Argument[1];Element of Argument[-1];value",
|
||||
"System.Collections;ArrayList;false;Repeat;(System.Object,System.Int32);;Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections;ArrayList;false;Reverse;();;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections;ArrayList;false;Reverse;(System.Int32,System.Int32);;Element of Argument[0];Element of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.BitArray`. */
|
||||
private class SystemCollectionsBitArrayFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Collections;BitArray;false;Clone;();;Element of Argument[0];Element of ReturnValue;value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Queue`. */
|
||||
private class SystemCollectionsQueueFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections;Queue;false;Clone;();;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections;Queue;false;Peek;();;Element of Argument[-1];ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Stack`. */
|
||||
private class SystemCollectionsStackFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections;Stack;false;Clone;();;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections;Stack;false;Peek;();;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections;Stack;false;Pop;();;Element of Argument[-1];ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
/** Provides definitions for the `System.ComponentModel` namespace. */
|
||||
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** Data flow for `System.ComponentModel.PropertyDescriptorCollection`. */
|
||||
private class SystemComponentModelPropertyDescriptorCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Argument[0];Element of Argument[-1];value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.ComponentModel.PropertyDescriptor);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;Add;(System.Object);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;Find;(System.String,System.Boolean);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.IEnumerator.Current] of ReturnValue;value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;Insert;(System.Int32,System.ComponentModel.PropertyDescriptor);;Argument[1];Element of Argument[-1];value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[]);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[]);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[],System.Boolean);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;PropertyDescriptorCollection;(System.ComponentModel.PropertyDescriptor[],System.Boolean);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Int32);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];ReturnValue;value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.Object);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.String);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;get_Item;(System.String);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];ReturnValue;value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Int32,System.Object);;Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Int32,System.Object);;Argument[1];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"System.ComponentModel;PropertyDescriptorCollection;false;set_Item;(System.Object,System.Object);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.ComponentModel.EventDescriptorCollection`. */
|
||||
private class SystemComponentModelEventDescriptorCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.ComponentModel;EventDescriptorCollection;false;Add;(System.ComponentModel.EventDescriptor);;Argument[0];Element of Argument[-1];value",
|
||||
"System.ComponentModel;EventDescriptorCollection;false;Find;(System.String,System.Boolean);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.ComponentModel;EventDescriptorCollection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.IEnumerator.Current] of ReturnValue;value",
|
||||
"System.ComponentModel;EventDescriptorCollection;false;Insert;(System.Int32,System.ComponentModel.EventDescriptor);;Argument[1];Element of Argument[-1];value",
|
||||
"System.ComponentModel;EventDescriptorCollection;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.ComponentModel;EventDescriptorCollection;false;get_Item;(System.String);;Element of Argument[-1];ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.ComponentModel.ListSortDescriptionCollection`. */
|
||||
private class SystemComponentModelListSortDescriptionCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.ComponentModel;ListSortDescriptionCollection;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.ComponentModel;ListSortDescriptionCollection;false;set_Item;(System.Int32,System.ComponentModel.ListSortDescription);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.ComponentModel.ComponentCollection`. */
|
||||
private class SystemComponentModelComponentCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.ComponentModel;ComponentCollection;false;CopyTo;(System.ComponentModel.IComponent[],System.Int32);;Element of Argument[-1];Element of Argument[0];value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.ComponentModel.AttributeCollection`. */
|
||||
private class SystemComponentModelAttributeCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.ComponentModel;AttributeCollection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.IEnumerator.Current] of ReturnValue;value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.ComponentModel.IBindingList`. */
|
||||
private class SystemComponentModelIBindingListFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.ComponentModel;IBindingList;true;Find;(System.ComponentModel.PropertyDescriptor,System.Object);;Element of Argument[-1];ReturnValue;value"
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import csharp
|
||||
private import semmle.code.csharp.frameworks.System
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** The `System.Data` namespace. */
|
||||
class SystemDataNamespace extends Namespace {
|
||||
@@ -43,3 +44,181 @@ class SystemDataConnectionClass extends Class {
|
||||
/** Gets the `ConnectionString` property. */
|
||||
Property getConnectionStringProperty() { result = this.getProperty("ConnectionString") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Data.EnumerableRowCollectionExtensions`. */
|
||||
private class SystemDataEnumerableRowCollectionsExtensionsFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;Cast<>;(System.Data.EnumerableRowCollection);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection<TRow>,System.Func<TRow,TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection<TRow>,System.Func<TRow,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection<TRow>,System.Func<TRow,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;OrderBy<,>;(System.Data.EnumerableRowCollection<TRow>,System.Func<TRow,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection<TRow>,System.Func<TRow,TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection<TRow>,System.Func<TRow,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection<TRow>,System.Func<TRow,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;OrderByDescending<,>;(System.Data.EnumerableRowCollection<TRow>,System.Func<TRow,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;Select<,>;(System.Data.EnumerableRowCollection<TRow>,System.Func<TRow,S>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;Select<,>;(System.Data.EnumerableRowCollection<TRow>,System.Func<TRow,S>);;ReturnValue of Argument[1];Element of ReturnValue;value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection<TRow>,System.Func<TRow,TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection<TRow>,System.Func<TRow,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection<TRow>,System.Func<TRow,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;ThenBy<,>;(System.Data.OrderedEnumerableRowCollection<TRow>,System.Func<TRow,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection<TRow>,System.Func<TRow,TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection<TRow>,System.Func<TRow,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection<TRow>,System.Func<TRow,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;ThenByDescending<,>;(System.Data.OrderedEnumerableRowCollection<TRow>,System.Func<TRow,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;Where<>;(System.Data.EnumerableRowCollection<TRow>,System.Func<TRow,System.Boolean>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Data;EnumerableRowCollectionExtensions;false;Where<>;(System.Data.EnumerableRowCollection<TRow>,System.Func<TRow,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Data.TypedTableBaseExtensions`. */
|
||||
private class SystemDataTypedTableBaseExtensionsFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Data;TypedTableBaseExtensions;false;AsEnumerable<>;(System.Data.TypedTableBase<TRow>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Data;TypedTableBaseExtensions;false;ElementAtOrDefault<>;(System.Data.TypedTableBase<TRow>,System.Int32);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase<TRow>,System.Func<TRow,TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase<TRow>,System.Func<TRow,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase<TRow>,System.Func<TRow,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Data;TypedTableBaseExtensions;false;OrderBy<,>;(System.Data.TypedTableBase<TRow>,System.Func<TRow,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase<TRow>,System.Func<TRow,TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase<TRow>,System.Func<TRow,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase<TRow>,System.Func<TRow,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Data;TypedTableBaseExtensions;false;OrderByDescending<,>;(System.Data.TypedTableBase<TRow>,System.Func<TRow,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Data;TypedTableBaseExtensions;false;Select<,>;(System.Data.TypedTableBase<TRow>,System.Func<TRow,S>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Data;TypedTableBaseExtensions;false;Select<,>;(System.Data.TypedTableBase<TRow>,System.Func<TRow,S>);;ReturnValue of Argument[1];Element of ReturnValue;value",
|
||||
"System.Data;TypedTableBaseExtensions;false;Where<>;(System.Data.TypedTableBase<TRow>,System.Func<TRow,System.Boolean>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Data;TypedTableBaseExtensions;false;Where<>;(System.Data.TypedTableBase<TRow>,System.Func<TRow,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Data.DataView`. */
|
||||
private class SystemDataDataViewFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Data;DataView;false;Find;(System.Object);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Data;DataView;false;Find;(System.Object[]);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Data;DataView;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Data.IColumnMappingCollection`. */
|
||||
private class SystemDataIColumnMappingCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Data;IColumnMappingCollection;true;get_Item;(System.String);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Data;IColumnMappingCollection;true;set_Item;(System.String,System.Object);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Data.IDataParameterCollection`. */
|
||||
private class SystemDataIDataParameterCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Data;IDataParameterCollection;true;get_Item;(System.String);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Data;IDataParameterCollection;true;set_Item;(System.String,System.Object);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Data.ITableMappingCollection`. */
|
||||
private class SystemDataITableMappingCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Data;ITableMappingCollection;true;get_Item;(System.String);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Data;ITableMappingCollection;true;set_Item;(System.String,System.Object);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Data.ConstraintCollection`. */
|
||||
private class SystemDataConstraintCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Data;ConstraintCollection;false;Add;(System.Data.Constraint);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Data;ConstraintCollection;false;AddRange;(System.Data.Constraint[]);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Data;ConstraintCollection;false;CopyTo;(System.Data.Constraint[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Data.DataColumnCollection`. */
|
||||
private class SystemDataDataColumnCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Data;DataColumnCollection;false;Add;(System.Data.DataColumn);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Data;DataColumnCollection;false;Add;(System.String);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Data;DataColumnCollection;false;AddRange;(System.Data.DataColumn[]);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Data;DataColumnCollection;false;CopyTo;(System.Data.DataColumn[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Data.DataRelationCollection`. */
|
||||
private class SystemDataDataRelationCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Data;DataRelationCollection;false;Add;(System.Data.DataRelation);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Data;DataRelationCollection;false;CopyTo;(System.Data.DataRelation[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Data;DataRelationCollection;true;AddRange;(System.Data.DataRelation[]);;Element of Argument[0];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Data.DataRawCollection`. */
|
||||
private class SystemDataDataRawCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Data;DataRowCollection;false;Add;(System.Data.DataRow);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Data;DataRowCollection;false;Add;(System.Object[]);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Data;DataRowCollection;false;CopyTo;(System.Data.DataRow[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Data;DataRowCollection;false;Find;(System.Object);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Data;DataRowCollection;false;Find;(System.Object[]);;Element of Argument[-1];ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Data.DataTableCollection`. */
|
||||
private class SystemDataDataTableCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Data;DataTableCollection;false;Add;(System.Data.DataTable);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Data;DataTableCollection;false;Add;(System.String);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Data;DataTableCollection;false;AddRange;(System.Data.DataTable[]);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Data;DataTableCollection;false;CopyTo;(System.Data.DataTable[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Data.DataViewSettingCollection`. */
|
||||
private class SystemDataDataViewSettingCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Data;DataViewSettingCollection;false;CopyTo;(System.Data.DataViewSetting[],System.Int32);;Element of Argument[-1];Element of Argument[0];value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Data.PropertyCollection`. */
|
||||
private class SystemDataPropertyCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Data;PropertyCollection;false;Clone;();;Element of Argument[0];Element of ReturnValue;value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import semmle.code.csharp.Type
|
||||
private import semmle.code.csharp.frameworks.System
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** The `System.Diagnostics` namespace. */
|
||||
class SystemDiagnosticsNamespace extends Namespace {
|
||||
@@ -79,3 +80,53 @@ class SystemDiagnosticsCodeAnalysisDoesNotReturnIfAttributeClass extends SystemD
|
||||
this.hasName("DoesNotReturnIfAttribute")
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Diagnostics.ActivityTagsCollection`. */
|
||||
private class SystemDiagnosticsActivityTagsCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Diagnostics;ActivityTagsCollection;false;ActivityTagsCollection;(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<System.String,System.Object>>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Diagnostics;ActivityTagsCollection;false;ActivityTagsCollection;(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<System.String,System.Object>>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Diagnostics;ActivityTagsCollection;false;Add;(System.Collections.Generic.KeyValuePair<System.String,System.Object>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Diagnostics;ActivityTagsCollection;false;Add;(System.Collections.Generic.KeyValuePair<System.String,System.Object>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"System.Diagnostics;ActivityTagsCollection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Diagnostics.ActivityTagsCollection+Enumerator.Current] of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Diagnostics.TraceListenerCollection`. */
|
||||
private class SystemDiagnosticsTraceListenerCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Diagnostics;TraceListenerCollection;false;Add;(System.Diagnostics.TraceListener);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Diagnostics;TraceListenerCollection;false;AddRange;(System.Diagnostics.TraceListenerCollection);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Diagnostics;TraceListenerCollection;false;AddRange;(System.Diagnostics.TraceListener[]);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Diagnostics;TraceListenerCollection;false;CopyTo;(System.Diagnostics.TraceListener[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Diagnostics;TraceListenerCollection;false;Insert;(System.Int32,System.Diagnostics.TraceListener);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Diagnostics;TraceListenerCollection;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Diagnostics;TraceListenerCollection;false;get_Item;(System.String);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Diagnostics;TraceListenerCollection;false;set_Item;(System.Int32,System.Diagnostics.TraceListener);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Diagnostics.ProcessModuleCollection`. */
|
||||
private class SystemDiagnosticsProcessModuleCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Diagnostics;ProcessModuleCollection;false;CopyTo;(System.Diagnostics.ProcessModule[],System.Int32);;Element of Argument[-1];Element of Argument[0];value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Diagnostics.ProcessThreadCollection`. */
|
||||
private class SystemDiagnosticsProcessThreadCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Diagnostics;ProcessThreadCollection;false;Add;(System.Diagnostics.ProcessThread);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Diagnostics;ProcessThreadCollection;false;CopyTo;(System.Diagnostics.ProcessThread[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
/** Provides definitions related to the `System.Dynamic` namespace. */
|
||||
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** Data flow for `System.Dynamic.ExpandoObject`. */
|
||||
private class SystemDynamicExpandoObjectFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Dynamic;ExpandoObject;false;Add;(System.Collections.Generic.KeyValuePair<System.String,System.Object>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Dynamic;ExpandoObject;false;Add;(System.Collections.Generic.KeyValuePair<System.String,System.Object>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import csharp
|
||||
private import semmle.code.csharp.frameworks.System
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** The `System.IO` namespace. */
|
||||
class SystemIONamespace extends Namespace {
|
||||
@@ -41,11 +42,72 @@ class SystemIOPathClass extends SystemIOClass {
|
||||
SystemIOPathClass() { this.hasName("Path") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.IO.Path`. */
|
||||
private class SystemIOPathFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.IO;Path;false;Combine;(System.String,System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.IO;Path;false;Combine;(System.String,System.String);;Argument[1];ReturnValue;taint",
|
||||
"System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[1];ReturnValue;taint",
|
||||
"System.IO;Path;false;Combine;(System.String,System.String,System.String);;Argument[2];ReturnValue;taint",
|
||||
"System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[1];ReturnValue;taint",
|
||||
"System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[2];ReturnValue;taint",
|
||||
"System.IO;Path;false;Combine;(System.String,System.String,System.String,System.String);;Argument[3];ReturnValue;taint",
|
||||
"System.IO;Path;false;Combine;(System.String[]);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.IO;Path;false;GetDirectoryName;(System.ReadOnlySpan<System.Char>);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.IO;Path;false;GetDirectoryName;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.IO;Path;false;GetExtension;(System.ReadOnlySpan<System.Char>);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.IO;Path;false;GetExtension;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.IO;Path;false;GetFileName;(System.ReadOnlySpan<System.Char>);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.IO;Path;false;GetFileName;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.IO;Path;false;GetFileNameWithoutExtension;(System.ReadOnlySpan<System.Char>);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.IO;Path;false;GetFileNameWithoutExtension;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.IO;Path;false;GetFullPath;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.IO;Path;false;GetFullPath;(System.String,System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.IO;Path;false;GetPathRoot;(System.ReadOnlySpan<System.Char>);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.IO;Path;false;GetPathRoot;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.IO;Path;false;GetRelativePath;(System.String,System.String);;Argument[1];ReturnValue;taint"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.IO.TextReader`. */
|
||||
private class SystemIOTextReaderFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.IO;TextReader;true;Read;();;Argument[-1];ReturnValue;taint",
|
||||
"System.IO;TextReader;true;Read;(System.Char[],System.Int32,System.Int32);;Argument[-1];ReturnValue;taint",
|
||||
"System.IO;TextReader;true;Read;(System.Span<System.Char>);;Argument[-1];ReturnValue;taint",
|
||||
"System.IO;TextReader;true;ReadAsync;(System.Char[],System.Int32,System.Int32);;Argument[-1];ReturnValue;taint",
|
||||
"System.IO;TextReader;true;ReadAsync;(System.Memory<System.Char>,System.Threading.CancellationToken);;Argument[-1];ReturnValue;taint",
|
||||
"System.IO;TextReader;true;ReadBlock;(System.Char[],System.Int32,System.Int32);;Argument[-1];ReturnValue;taint",
|
||||
"System.IO;TextReader;true;ReadBlock;(System.Span<System.Char>);;Argument[-1];ReturnValue;taint",
|
||||
"System.IO;TextReader;true;ReadBlockAsync;(System.Char[],System.Int32,System.Int32);;Argument[-1];ReturnValue;taint",
|
||||
"System.IO;TextReader;true;ReadBlockAsync;(System.Memory<System.Char>,System.Threading.CancellationToken);;Argument[-1];ReturnValue;taint",
|
||||
"System.IO;TextReader;true;ReadLine;();;Argument[-1];ReturnValue;taint",
|
||||
"System.IO;TextReader;true;ReadLineAsync;();;Argument[-1];ReturnValue;taint",
|
||||
"System.IO;TextReader;true;ReadToEnd;();;Argument[-1];ReturnValue;taint",
|
||||
"System.IO;TextReader;true;ReadToEndAsync;();;Argument[-1];ReturnValue;taint",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.IO.StringReader` class. */
|
||||
class SystemIOStringReaderClass extends SystemIOClass {
|
||||
SystemIOStringReaderClass() { this.hasName("StringReader") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.IO.StringReader` */
|
||||
private class SystemIOStringReaderFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row = "System.IO;StringReader;false;StringReader;(System.String);;Argument[0];ReturnValue;taint"
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.IO.Stream` class. */
|
||||
class SystemIOStreamClass extends SystemIOClass {
|
||||
SystemIOStreamClass() { this.hasName("Stream") }
|
||||
@@ -82,6 +144,29 @@ class SystemIOStreamClass extends SystemIOClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.IO.Stream`. */
|
||||
private class SystemIOStreamFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.IO;Stream;false;CopyTo;(System.IO.Stream);;Argument[-1];Argument[0];taint",
|
||||
"System.IO;Stream;false;CopyToAsync;(System.IO.Stream);;Argument[-1];Argument[0];taint",
|
||||
"System.IO;Stream;false;CopyToAsync;(System.IO.Stream,System.Int32);;Argument[-1];Argument[0];taint",
|
||||
"System.IO;Stream;false;CopyToAsync;(System.IO.Stream,System.Threading.CancellationToken);;Argument[-1];Argument[0];taint",
|
||||
"System.IO;Stream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32);;Argument[-1];Element of Argument[0];taint",
|
||||
"System.IO;Stream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32);;Element of Argument[0];Argument[-1];taint",
|
||||
"System.IO;Stream;true;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[-1];Element of Argument[0];taint",
|
||||
"System.IO;Stream;true;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Element of Argument[0];Argument[-1];taint",
|
||||
"System.IO;Stream;true;CopyTo;(System.IO.Stream,System.Int32);;Argument[-1];Argument[0];taint",
|
||||
"System.IO;Stream;true;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[-1];Argument[0];taint",
|
||||
"System.IO;Stream;true;Read;(System.Byte[],System.Int32,System.Int32);;Argument[-1];Element of Argument[0];taint",
|
||||
"System.IO;Stream;true;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[-1];Element of Argument[0];taint",
|
||||
"System.IO;Stream;true;Write;(System.Byte[],System.Int32,System.Int32);;Element of Argument[0];Argument[-1];taint",
|
||||
"System.IO;Stream;true;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Element of Argument[0];Argument[-1];taint"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.IO.MemoryStream` class. */
|
||||
class SystemIOMemoryStreamClass extends SystemIOClass {
|
||||
SystemIOMemoryStreamClass() { this.hasName("MemoryStream") }
|
||||
@@ -92,3 +177,17 @@ class SystemIOMemoryStreamClass extends SystemIOClass {
|
||||
result.hasName("ToArray")
|
||||
}
|
||||
}
|
||||
|
||||
private class SystemIOMemoryStreamFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.IO;MemoryStream;false;MemoryStream;(System.Byte[]);;Argument[0];ReturnValue;taint",
|
||||
"System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Boolean);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32,System.Boolean);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Boolean);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.IO;MemoryStream;false;ToArray;();;Argument[-1];ReturnValue;taint"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
private import csharp as csharp
|
||||
private import semmle.code.csharp.frameworks.System as System
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow as ExternalFlow
|
||||
|
||||
/** Definitions relating to the `System.Linq` namespace. */
|
||||
module SystemLinq {
|
||||
@@ -31,3 +32,694 @@ module SystemLinq {
|
||||
csharp::ExtensionMethod getAnAnyMethod() { result = this.getAMethod("Any<>") }
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Linq.Enumerable`. */
|
||||
private class SystemLinqEnumerableFlowModelCsv extends ExternalFlow::SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;Element of Argument[0];Parameter[1] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;ReturnValue of Argument[2];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;Enumerable;false;Aggregate<,,>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;ReturnValue of Argument[3];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>);;Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>);;Element of Argument[0];Parameter[1] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;Aggregate<,>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>);;ReturnValue of Argument[2];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Aggregate<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TSource,TSource>);;Element of Argument[0];Parameter[1] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Aggregate<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TSource,TSource>);;ReturnValue of Argument[1];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;All<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Any<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;AsEnumerable<>;(System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Decimal>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Double>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int32>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int64>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Decimal>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Double>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Int32>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Int64>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Single>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Average<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Single>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Cast<>;(System.Collections.IEnumerable);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Concat<>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Concat<>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Count<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[1];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;DefaultIfEmpty<>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Distinct<>;(System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Distinct<>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;ElementAt<>;(System.Collections.Generic.IEnumerable<TSource>,System.Int32);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;ElementAtOrDefault<>;(System.Collections.Generic.IEnumerable<TSource>,System.Int32);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Except<>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Except<>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;First<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;FirstOrDefault<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>);;ReturnValue of Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>);;ReturnValue of Argument[2];Element of Parameter[1] of Argument[3];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>);;ReturnValue of Argument[3];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[2];Element of Parameter[1] of Argument[3];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[3];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>);;Argument[0];Parameter[1] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>);;ReturnValue of Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;GroupBy<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>);;Element of Argument[0];Parameter[0] of Argument[4];value",
|
||||
"System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>);;Element of Argument[1];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>);;Element of Argument[1];Parameter[1] of Argument[4];value",
|
||||
"System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>);;ReturnValue of Argument[4];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[4];value",
|
||||
"System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[1];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[1];Parameter[1] of Argument[4];value",
|
||||
"System.Linq;Enumerable;false;GroupJoin<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[4];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Intersect<>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Element of Argument[0];Parameter[0] of Argument[4];value",
|
||||
"System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Element of Argument[1];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Element of Argument[1];Parameter[1] of Argument[4];value",
|
||||
"System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;ReturnValue of Argument[4];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[4];value",
|
||||
"System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[1];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[1];Parameter[1] of Argument[4];value",
|
||||
"System.Linq;Enumerable;false;Join<,,,>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[4];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Last<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;LastOrDefault<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;LongCount<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Max<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Decimal>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Double>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int32>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int64>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Decimal>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Double>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Int32>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Int64>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Single>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Max<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Single>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Min<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Decimal>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Double>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int32>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int64>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Decimal>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Double>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Int32>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Int64>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Single>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Min<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Single>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;OfType<>;(System.Collections.IEnumerable);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;OrderBy<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;OrderByDescending<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Reverse<>;(System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int32,TResult>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int32,TResult>);;ReturnValue of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Select<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);;ReturnValue of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Element of ReturnValue of Argument[1];Parameter[1] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int32,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int32,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int32,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Element of ReturnValue of Argument[1];Parameter[1] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;SelectMany<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int32,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TResult>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TResult>>);;ReturnValue of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int32,System.Collections.Generic.IEnumerable<TResult>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;SelectMany<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int32,System.Collections.Generic.IEnumerable<TResult>>);;ReturnValue of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Single<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;SingleOrDefault<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Skip<>;(System.Collections.Generic.IEnumerable<TSource>,System.Int32);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int32,System.Boolean>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;SkipWhile<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int32,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Decimal>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Double>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int32>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int64>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Decimal>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Double>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Int32>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Int64>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Nullable<System.Single>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Sum<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Single>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Take<>;(System.Collections.Generic.IEnumerable<TSource>,System.Int32);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int32,System.Boolean>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;TakeWhile<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int32,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;ThenBy<,>;(System.Linq.IOrderedEnumerable<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;ThenByDescending<,>;(System.Linq.IOrderedEnumerable<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;ToArray<>;(System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;ToDictionary<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;ToDictionary<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;ToList<>;(System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;ToLookup<,,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;ToLookup<,>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Union<>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int32,System.Boolean>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Enumerable;false;Where<>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Int32,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable<TFirst>,System.Collections.Generic.IEnumerable<TSecond>,System.Func<TFirst,TSecond,TResult>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable<TFirst>,System.Collections.Generic.IEnumerable<TSecond>,System.Func<TFirst,TSecond,TResult>);;Element of Argument[1];Parameter[1] of Argument[2];value",
|
||||
"System.Linq;Enumerable;false;Zip<,,>;(System.Collections.Generic.IEnumerable<TFirst>,System.Collections.Generic.IEnumerable<TSecond>,System.Func<TFirst,TSecond,TResult>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Linq;EnumerableQuery<>`. */
|
||||
private class SystemLinqEnumerableQueryFlowModelCsv extends ExternalFlow::SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Linq;EnumerableQuery<>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.IEnumerator<>.Current] of ReturnValue;value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Linq.ImmutableArrayExtensions`. */
|
||||
private class SystemLinqImmutableArrayExtensionsFlowModelCsv extends ExternalFlow::SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Linq;ImmutableArrayExtensions;false;First<>;(System.Collections.Immutable.ImmutableArray<T>+Builder);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ImmutableArrayExtensions;false;FirstOrDefault<>;(System.Collections.Immutable.ImmutableArray<T>+Builder);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ImmutableArrayExtensions;false;Last<>;(System.Collections.Immutable.ImmutableArray<T>+Builder);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ImmutableArrayExtensions;false;LastOrDefault<>;(System.Collections.Immutable.ImmutableArray<T>+Builder);;Element of Argument[0];ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Linq.Lookup<,>`. */
|
||||
private class SystemLinqLookupFlowModelCsv extends ExternalFlow::SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Linq;Lookup<,>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.IEnumerator<>.Current] of ReturnValue;value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Linq.OrderedParallelQuery<>`. */
|
||||
private class SystemLinqOrderedParallelQuery extends ExternalFlow::SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Linq;OrderedParallelQuery<>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.IEnumerator<>.Current] of ReturnValue;value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Linq.ParallelEnumerable`. */
|
||||
private class SystemLinqParallelEnumerableFlowModelCsv extends ExternalFlow::SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;Element of Argument[0];Parameter[1] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;ReturnValue of Argument[2];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;ParallelEnumerable;false;Aggregate<,,>;(System.Linq.ParallelQuery<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;ReturnValue of Argument[3];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>);;Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>);;Element of Argument[0];Parameter[1] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;Aggregate<,>;(System.Linq.ParallelQuery<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>);;ReturnValue of Argument[2];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Aggregate<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TSource,TSource>);;Element of Argument[0];Parameter[1] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Aggregate<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TSource,TSource>);;ReturnValue of Argument[1];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;All<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Any<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;AsEnumerable<>;(System.Linq.ParallelQuery<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Decimal>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Double>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int32>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int64>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Decimal>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Double>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Int32>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Int64>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Single>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Average<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Single>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Cast<>;(System.Linq.ParallelQuery);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery<TSource>,System.Linq.ParallelQuery<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Concat<>;(System.Linq.ParallelQuery<TSource>,System.Linq.ParallelQuery<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Count<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery<TSource>,TSource);;Argument[1];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;DefaultIfEmpty<>;(System.Linq.ParallelQuery<TSource>,TSource);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Distinct<>;(System.Linq.ParallelQuery<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Distinct<>;(System.Linq.ParallelQuery<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;ElementAt<>;(System.Linq.ParallelQuery<TSource>,System.Int32);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;ElementAtOrDefault<>;(System.Linq.ParallelQuery<TSource>,System.Int32);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery<TSource>,System.Linq.ParallelQuery<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Except<>;(System.Linq.ParallelQuery<TSource>,System.Linq.ParallelQuery<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;First<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;FirstOrDefault<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>);;ReturnValue of Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>);;ReturnValue of Argument[2];Element of Parameter[1] of Argument[3];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>);;ReturnValue of Argument[3];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[2];Element of Parameter[1] of Argument[3];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[3];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>);;Argument[0];Parameter[1] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>);;ReturnValue of Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupBy<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>);;Element of Argument[0];Parameter[0] of Argument[4];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>);;Element of Argument[1];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>);;Element of Argument[1];Parameter[1] of Argument[4];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>);;ReturnValue of Argument[4];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[4];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[1];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[1];Parameter[1] of Argument[4];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[4];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>);;Element of Argument[0];Parameter[0] of Argument[4];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>);;Element of Argument[1];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>);;Element of Argument[1];Parameter[1] of Argument[4];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>);;ReturnValue of Argument[4];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[4];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[1];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[1];Parameter[1] of Argument[4];value",
|
||||
"System.Linq;ParallelEnumerable;false;GroupJoin<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[4];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery<TSource>,System.Linq.ParallelQuery<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery<TSource>,System.Linq.ParallelQuery<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery<TSource>,System.Linq.ParallelQuery<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Intersect<>;(System.Linq.ParallelQuery<TSource>,System.Linq.ParallelQuery<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Element of Argument[0];Parameter[0] of Argument[4];value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Element of Argument[1];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Element of Argument[1];Parameter[1] of Argument[4];value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;ReturnValue of Argument[4];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[4];value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[1];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[1];Parameter[1] of Argument[4];value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[4];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Element of Argument[0];Parameter[0] of Argument[4];value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Element of Argument[1];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Element of Argument[1];Parameter[1] of Argument[4];value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;ReturnValue of Argument[4];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[4];value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[1];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[1];Parameter[1] of Argument[4];value",
|
||||
"System.Linq;ParallelEnumerable;false;Join<,,,>;(System.Linq.ParallelQuery<TOuter>,System.Linq.ParallelQuery<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[4];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Last<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;LastOrDefault<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;LongCount<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Max<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TResult>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Decimal>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Double>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int32>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int64>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Decimal>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Double>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Int32>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Int64>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Single>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Max<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Single>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Min<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TResult>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Decimal>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Double>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int32>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int64>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Decimal>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Double>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Int32>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Int64>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Single>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Min<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Single>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;OfType<>;(System.Linq.ParallelQuery);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;OrderBy<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;OrderByDescending<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Reverse<>;(System.Linq.ParallelQuery<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int32,TResult>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int32,TResult>);;ReturnValue of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TResult>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Select<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TResult>);;ReturnValue of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Element of ReturnValue of Argument[1];Parameter[1] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int32,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int32,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int32,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Element of ReturnValue of Argument[1];Parameter[1] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;SelectMany<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int32,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TResult>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TResult>>);;ReturnValue of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int32,System.Collections.Generic.IEnumerable<TResult>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;SelectMany<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int32,System.Collections.Generic.IEnumerable<TResult>>);;ReturnValue of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Single<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;SingleOrDefault<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Skip<>;(System.Linq.ParallelQuery<TSource>,System.Int32);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int32,System.Boolean>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;SkipWhile<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int32,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Decimal>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Double>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int32>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int64>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Decimal>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Double>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Int32>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Int64>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Nullable<System.Single>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Sum<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Single>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Take<>;(System.Linq.ParallelQuery<TSource>,System.Int32);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int32,System.Boolean>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;TakeWhile<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int32,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;ThenBy<,>;(System.Linq.OrderedParallelQuery<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;ThenByDescending<,>;(System.Linq.OrderedParallelQuery<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;ToArray<>;(System.Linq.ParallelQuery<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;ToDictionary<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;ToDictionary<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;ToList<>;(System.Linq.ParallelQuery<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;ToLookup<,,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Func<TSource,TElement>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;ToLookup<,>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,TKey>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery<TSource>,System.Linq.ParallelQuery<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery<TSource>,System.Linq.ParallelQuery<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery<TSource>,System.Linq.ParallelQuery<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Union<>;(System.Linq.ParallelQuery<TSource>,System.Linq.ParallelQuery<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int32,System.Boolean>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Where<>;(System.Linq.ParallelQuery<TSource>,System.Func<TSource,System.Int32,System.Boolean>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery<TFirst>,System.Collections.Generic.IEnumerable<TSecond>,System.Func<TFirst,TSecond,TResult>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery<TFirst>,System.Collections.Generic.IEnumerable<TSecond>,System.Func<TFirst,TSecond,TResult>);;Element of Argument[1];Parameter[1] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery<TFirst>,System.Collections.Generic.IEnumerable<TSecond>,System.Func<TFirst,TSecond,TResult>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery<TFirst>,System.Linq.ParallelQuery<TSecond>,System.Func<TFirst,TSecond,TResult>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery<TFirst>,System.Linq.ParallelQuery<TSecond>,System.Func<TFirst,TSecond,TResult>);;Element of Argument[1];Parameter[1] of Argument[2];value",
|
||||
"System.Linq;ParallelEnumerable;false;Zip<,,>;(System.Linq.ParallelQuery<TFirst>,System.Linq.ParallelQuery<TSecond>,System.Func<TFirst,TSecond,TResult>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Linq.Queryable`. */
|
||||
private class SystemLinqQueryableFlowModelCsv extends ExternalFlow::SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable<TSource>,TAccumulate,System.Linq.Expressions.Expression<System.Func<TAccumulate,TSource,TAccumulate>>,System.Linq.Expressions.Expression<System.Func<TAccumulate,TResult>>);;Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable<TSource>,TAccumulate,System.Linq.Expressions.Expression<System.Func<TAccumulate,TSource,TAccumulate>>,System.Linq.Expressions.Expression<System.Func<TAccumulate,TResult>>);;Element of Argument[0];Parameter[1] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable<TSource>,TAccumulate,System.Linq.Expressions.Expression<System.Func<TAccumulate,TSource,TAccumulate>>,System.Linq.Expressions.Expression<System.Func<TAccumulate,TResult>>);;ReturnValue of Argument[2];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;Queryable;false;Aggregate<,,>;(System.Linq.IQueryable<TSource>,TAccumulate,System.Linq.Expressions.Expression<System.Func<TAccumulate,TSource,TAccumulate>>,System.Linq.Expressions.Expression<System.Func<TAccumulate,TResult>>);;ReturnValue of Argument[3];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable<TSource>,TAccumulate,System.Linq.Expressions.Expression<System.Func<TAccumulate,TSource,TAccumulate>>);;Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable<TSource>,TAccumulate,System.Linq.Expressions.Expression<System.Func<TAccumulate,TSource,TAccumulate>>);;Element of Argument[0];Parameter[1] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;Aggregate<,>;(System.Linq.IQueryable<TSource>,TAccumulate,System.Linq.Expressions.Expression<System.Func<TAccumulate,TSource,TAccumulate>>);;ReturnValue of Argument[2];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Aggregate<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TSource,TSource>>);;Element of Argument[0];Parameter[1] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Aggregate<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TSource,TSource>>);;ReturnValue of Argument[1];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;All<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Any<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;AsQueryable;(System.Collections.IEnumerable);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;AsQueryable<>;(System.Collections.Generic.IEnumerable<TElement>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Decimal>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Double>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Int32>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Int64>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Nullable<System.Decimal>>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Nullable<System.Double>>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Nullable<System.Int32>>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Nullable<System.Int64>>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Nullable<System.Single>>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Average<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Single>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Cast<>;(System.Linq.IQueryable);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Concat<>;(System.Linq.IQueryable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Concat<>;(System.Linq.IQueryable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Count<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable<TSource>,TSource);;Argument[1];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;DefaultIfEmpty<>;(System.Linq.IQueryable<TSource>,TSource);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Distinct<>;(System.Linq.IQueryable<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Distinct<>;(System.Linq.IQueryable<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;ElementAt<>;(System.Linq.IQueryable<TSource>,System.Int32);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;ElementAtOrDefault<>;(System.Linq.IQueryable<TSource>,System.Int32);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Except<>;(System.Linq.IQueryable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Except<>;(System.Linq.IQueryable<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;First<>;(System.Linq.IQueryable<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;First<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;First<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;FirstOrDefault<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TSource,TElement>>,System.Linq.Expressions.Expression<System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TSource,TElement>>,System.Linq.Expressions.Expression<System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TSource,TElement>>,System.Linq.Expressions.Expression<System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>>);;ReturnValue of Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TSource,TElement>>,System.Linq.Expressions.Expression<System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>>);;ReturnValue of Argument[2];Element of Parameter[1] of Argument[3];value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TSource,TElement>>,System.Linq.Expressions.Expression<System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>>);;ReturnValue of Argument[3];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TSource,TElement>>,System.Linq.Expressions.Expression<System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TSource,TElement>>,System.Linq.Expressions.Expression<System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TSource,TElement>>,System.Linq.Expressions.Expression<System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TSource,TElement>>,System.Linq.Expressions.Expression<System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[2];Element of Parameter[1] of Argument[3];value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TSource,TElement>>,System.Linq.Expressions.Expression<System.Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[3];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TSource,TElement>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TSource,TElement>>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TSource,TElement>>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TSource,TElement>>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;GroupBy<,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Linq.Expressions.Expression<System.Func<TSource,TElement>>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[1];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;GroupBy<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;GroupBy<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>>);;Element of Argument[0];Parameter[0] of Argument[4];value",
|
||||
"System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>>);;Element of Argument[1];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>>);;Element of Argument[1];Parameter[1] of Argument[4];value",
|
||||
"System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>>);;ReturnValue of Argument[4];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[4];value",
|
||||
"System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[1];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[1];Parameter[1] of Argument[4];value",
|
||||
"System.Linq;Queryable;false;GroupJoin<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult>>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[4];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Intersect<>;(System.Linq.IQueryable<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,TInner,TResult>>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,TInner,TResult>>);;Element of Argument[0];Parameter[0] of Argument[4];value",
|
||||
"System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,TInner,TResult>>);;Element of Argument[1];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,TInner,TResult>>);;Element of Argument[1];Parameter[1] of Argument[4];value",
|
||||
"System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,TInner,TResult>>);;ReturnValue of Argument[4];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,TInner,TResult>>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,TInner,TResult>>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[4];value",
|
||||
"System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,TInner,TResult>>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[1];Parameter[0] of Argument[3];value",
|
||||
"System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,TInner,TResult>>,System.Collections.Generic.IEqualityComparer<TKey>);;Element of Argument[1];Parameter[1] of Argument[4];value",
|
||||
"System.Linq;Queryable;false;Join<,,,>;(System.Linq.IQueryable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Linq.Expressions.Expression<System.Func<TOuter,TKey>>,System.Linq.Expressions.Expression<System.Func<TInner,TKey>>,System.Linq.Expressions.Expression<System.Func<TOuter,TInner,TResult>>,System.Collections.Generic.IEqualityComparer<TKey>);;ReturnValue of Argument[4];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Last<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;LastOrDefault<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;LongCount<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Max<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TResult>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Min<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TResult>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;OfType<>;(System.Linq.IQueryable);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;OrderBy<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;OrderByDescending<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Reverse<>;(System.Linq.IQueryable<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Int32,TResult>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Int32,TResult>>);;ReturnValue of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TResult>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Select<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TResult>>);;ReturnValue of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>>,System.Linq.Expressions.Expression<System.Func<TSource,TCollection,TResult>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>>,System.Linq.Expressions.Expression<System.Func<TSource,TCollection,TResult>>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>>,System.Linq.Expressions.Expression<System.Func<TSource,TCollection,TResult>>);;Element of ReturnValue of Argument[1];Parameter[1] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>>,System.Linq.Expressions.Expression<System.Func<TSource,TCollection,TResult>>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Int32,System.Collections.Generic.IEnumerable<TCollection>>>,System.Linq.Expressions.Expression<System.Func<TSource,TCollection,TResult>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Int32,System.Collections.Generic.IEnumerable<TCollection>>>,System.Linq.Expressions.Expression<System.Func<TSource,TCollection,TResult>>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Int32,System.Collections.Generic.IEnumerable<TCollection>>>,System.Linq.Expressions.Expression<System.Func<TSource,TCollection,TResult>>);;Element of ReturnValue of Argument[1];Parameter[1] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;SelectMany<,,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Int32,System.Collections.Generic.IEnumerable<TCollection>>>,System.Linq.Expressions.Expression<System.Func<TSource,TCollection,TResult>>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Collections.Generic.IEnumerable<TResult>>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Collections.Generic.IEnumerable<TResult>>>);;ReturnValue of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Int32,System.Collections.Generic.IEnumerable<TResult>>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;SelectMany<,>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Int32,System.Collections.Generic.IEnumerable<TResult>>>);;ReturnValue of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Single<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable<TSource>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;SingleOrDefault<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Skip<>;(System.Linq.IQueryable<TSource>,System.Int32);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Int32,System.Boolean>>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;SkipWhile<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Int32,System.Boolean>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Decimal>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Double>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Int32>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Int64>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Nullable<System.Decimal>>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Nullable<System.Double>>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Nullable<System.Int32>>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Nullable<System.Int64>>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Nullable<System.Single>>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Sum<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Single>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Take<>;(System.Linq.IQueryable<TSource>,System.Int32);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Int32,System.Boolean>>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;TakeWhile<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Int32,System.Boolean>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;ThenBy<,>;(System.Linq.IOrderedQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;ThenByDescending<,>;(System.Linq.IOrderedQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,TKey>>,System.Collections.Generic.IComparer<TKey>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Union<>;(System.Linq.IQueryable<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEqualityComparer<TSource>);;Element of Argument[1];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Boolean>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Int32,System.Boolean>>);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Linq;Queryable;false;Where<>;(System.Linq.IQueryable<TSource>,System.Linq.Expressions.Expression<System.Func<TSource,System.Int32,System.Boolean>>);;Element of Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable<TFirst>,System.Collections.Generic.IEnumerable<TSecond>,System.Linq.Expressions.Expression<System.Func<TFirst,TSecond,TResult>>);;Element of Argument[0];Parameter[0] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable<TFirst>,System.Collections.Generic.IEnumerable<TSecond>,System.Linq.Expressions.Expression<System.Func<TFirst,TSecond,TResult>>);;Element of Argument[1];Parameter[1] of Argument[2];value",
|
||||
"System.Linq;Queryable;false;Zip<,,>;(System.Linq.IQueryable<TFirst>,System.Collections.Generic.IEnumerable<TSecond>,System.Linq.Expressions.Expression<System.Func<TFirst,TSecond,TResult>>);;ReturnValue of Argument[2];Element of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import csharp
|
||||
private import semmle.code.csharp.frameworks.System
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** The `System.Net` namespace. */
|
||||
class SystemNetNamespace extends Namespace {
|
||||
@@ -27,6 +28,18 @@ class SystemNetWebUtility extends SystemNetClass {
|
||||
Method getAnUrlEncodeMethod() { result = this.getAMethod("UrlEncode") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Net.WebUtility`. */
|
||||
private class SystemNetWebUtilityFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Net;WebUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.Net;WebUtility;false;HtmlEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint",
|
||||
"System.Net;WebUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Net.HttpListenerResponse` class. */
|
||||
class SystemNetHttpListenerResponseClass extends SystemNetClass {
|
||||
SystemNetHttpListenerResponseClass() { this.hasName("HttpListenerResponse") }
|
||||
@@ -59,6 +72,17 @@ class SystemNetIPHostEntryClass extends SystemNetClass {
|
||||
Property getAliasesProperty() { result = this.getProperty("Aliases") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Net.IPHostEntry`. */
|
||||
private class SystemNetIPHostEntryClassFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Net;IPHostEntry;false;get_Aliases;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Net;IPHostEntry;false;get_HostName;();;Argument[-1];ReturnValue;taint"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Net.Cookie` class. */
|
||||
class SystemNetCookieClass extends SystemNetClass {
|
||||
SystemNetCookieClass() { this.hasName("Cookie") }
|
||||
@@ -66,3 +90,34 @@ class SystemNetCookieClass extends SystemNetClass {
|
||||
/** Gets the `Value` property. */
|
||||
Property getValueProperty() { result = this.getProperty("Value") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Net.Cookie`. */
|
||||
private class SystemNetCookieClassFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row = "System.Net;Cookie;false;get_Value;();;Argument[-1];ReturnValue;taint"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Net.HttpListenerPrefixCollection`. */
|
||||
private class SystemNetHttpListenerPrefixCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Net;HttpListenerPrefixCollection;false;CopyTo;(System.Array,System.Int32);;Element of Argument[-1];Element of Argument[0];value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Net.CookieCollection`. */
|
||||
private class SystemNetCookieCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Net;CookieCollection;false;Add;(System.Net.CookieCollection);;Argument[0];Element of Argument[-1];value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Net.WebHeaderCollection`. */
|
||||
private class SystemNetWebHeaderCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Net;WebHeaderCollection;false;Add;(System.String);;Argument[0];Element of Argument[-1];value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import csharp
|
||||
private import semmle.code.csharp.frameworks.System
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** The `System.Text` namespace. */
|
||||
class SystemTextNamespace extends Namespace {
|
||||
@@ -24,6 +25,97 @@ class SystemTextStringBuilderClass extends SystemTextClass {
|
||||
Method getAppendFormatMethod() { result = this.getAMethod("AppendFormat") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Text.StringBuilder`. */
|
||||
private class SystemTextStringBuilderFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Text;StringBuilder;false;Append;(System.Boolean);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.Byte);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.Char);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.Char*,System.Int32);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.Char,System.Int32);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.Char[]);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.Char[]);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;Append;(System.Char[],System.Int32,System.Int32);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.Char[],System.Int32,System.Int32);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;Append;(System.Decimal);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.Double);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.Int16);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.Int32);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.Int64);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.Object);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;Append;(System.Object);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.ReadOnlyMemory<System.Char>);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.ReadOnlySpan<System.Char>);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.SByte);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.Single);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.String);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;Append;(System.String);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.String,System.Int32,System.Int32);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;Append;(System.String,System.Int32,System.Int32);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.Text.StringBuilder);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.Text.StringBuilder,System.Int32,System.Int32);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.UInt16);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.UInt32);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;Append;(System.UInt64);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[2];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[2];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[3];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[2];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[3];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[4];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object,System.Object,System.Object);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.IFormatProvider,System.String,System.Object[]);;Element of Argument[2];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[2];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[2];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[3];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object,System.Object,System.Object);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;AppendFormat;(System.String,System.Object[]);;Element of Argument[1];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendJoin;(System.Char,System.Object[]);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;AppendJoin;(System.Char,System.Object[]);;Element of Argument[1];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendJoin;(System.Char,System.String[]);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;AppendJoin;(System.Char,System.String[]);;Element of Argument[1];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;AppendJoin;(System.String,System.Object[]);;Element of Argument[1];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;AppendJoin;(System.String,System.String[]);;Element of Argument[1];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendJoin<>;(System.Char,System.Collections.Generic.IEnumerable<T>);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;AppendJoin<>;(System.Char,System.Collections.Generic.IEnumerable<T>);;Element of Argument[1];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable<T>);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable<T>);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;AppendJoin<>;(System.String,System.Collections.Generic.IEnumerable<T>);;Element of Argument[1];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendLine;();;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;AppendLine;(System.String);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Text;StringBuilder;false;AppendLine;(System.String);;Argument[-1];ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;StringBuilder;(System.String);;Argument[0];Element of ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;StringBuilder;(System.String,System.Int32);;Argument[0];Element of ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;StringBuilder;(System.String,System.Int32,System.Int32,System.Int32);;Argument[0];Element of ReturnValue;value",
|
||||
"System.Text;StringBuilder;false;ToString;();;Element of Argument[-1];ReturnValue;taint",
|
||||
"System.Text;StringBuilder;false;ToString;(System.Int32,System.Int32);;Element of Argument[-1];ReturnValue;taint",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Text.Encoding` class. */
|
||||
class SystemTextEncodingClass extends SystemTextClass {
|
||||
SystemTextEncodingClass() { this.hasName("Encoding") }
|
||||
@@ -37,3 +129,29 @@ class SystemTextEncodingClass extends SystemTextClass {
|
||||
/** Gets the `GetChars` method. */
|
||||
Method getGetCharsMethod() { result = this.getAMethod("GetChars") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Text.Encoding`. */
|
||||
private class SystemTextEncodingFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Text;Encoding;false;GetBytes;(System.String,System.Int32,System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System.Text;Encoding;false;GetString;(System.Byte*,System.Int32);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.Text;Encoding;false;GetString;(System.ReadOnlySpan<System.Byte>);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.Text;Encoding;true;GetBytes;(System.Char*,System.Int32,System.Byte*,System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System.Text;Encoding;true;GetBytes;(System.Char[]);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.Text;Encoding;true;GetBytes;(System.Char[],System.Int32,System.Int32);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.Text;Encoding;true;GetBytes;(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.Text;Encoding;true;GetBytes;(System.ReadOnlySpan<System.Char>,System.Span<System.Byte>);;Argument[0];ReturnValue;taint",
|
||||
"System.Text;Encoding;true;GetBytes;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.Text;Encoding;true;GetBytes;(System.String,System.Int32,System.Int32,System.Byte[],System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System.Text;Encoding;true;GetChars;(System.Byte*,System.Int32,System.Char*,System.Int32);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.Text;Encoding;true;GetChars;(System.Byte[]);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.Text;Encoding;true;GetChars;(System.Byte[],System.Int32,System.Int32);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.Text;Encoding;true;GetChars;(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.Text;Encoding;true;GetChars;(System.ReadOnlySpan<System.Byte>,System.Span<System.Char>);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.Text;Encoding;true;GetString;(System.Byte[]);;Element of Argument[0];ReturnValue;taint",
|
||||
"System.Text;Encoding;true;GetString;(System.Byte[],System.Int32,System.Int32);;Element of Argument[0];ReturnValue;taint",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
import csharp
|
||||
private import semmle.code.csharp.frameworks.System
|
||||
private import semmle.code.csharp.frameworks.system.collections.Specialized
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** The `System.Web` namespace. */
|
||||
class SystemWebNamespace extends Namespace {
|
||||
@@ -174,6 +175,17 @@ class SystemWebHttpServerUtility extends SystemWebClass {
|
||||
Method getAnUrlEncodeMethod() { result = this.getAMethod("UrlEncode") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Web.HttpServerUtility`. */
|
||||
private class SystemWebHttpServerUtilityFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Web;HttpServerUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.Web;HttpServerUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Web.HttpUtility` class. */
|
||||
class SystemWebHttpUtility extends SystemWebClass {
|
||||
SystemWebHttpUtility() { this.hasName("HttpUtility") }
|
||||
@@ -191,6 +203,26 @@ class SystemWebHttpUtility extends SystemWebClass {
|
||||
Method getAnUrlEncodeMethod() { result = this.getAMethod("UrlEncode") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Web.HttpUtility`. */
|
||||
private class SystemWebHttpUtilityFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Web;HttpUtility;false;HtmlAttributeEncode;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.Web;HttpUtility;false;HtmlAttributeEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint",
|
||||
"System.Web;HttpUtility;false;HtmlEncode;(System.Object);;Argument[0];ReturnValue;taint",
|
||||
"System.Web;HttpUtility;false;HtmlEncode;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.Web;HttpUtility;false;HtmlEncode;(System.String,System.IO.TextWriter);;Argument[0];ReturnValue;taint",
|
||||
"System.Web;HttpUtility;false;JavaScriptStringEncode;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.Web;HttpUtility;false;JavaScriptStringEncode;(System.String,System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"System.Web;HttpUtility;false;UrlEncode;(System.Byte[]);;Argument[0];ReturnValue;taint",
|
||||
"System.Web;HttpUtility;false;UrlEncode;(System.Byte[],System.Int32,System.Int32);;Argument[0];ReturnValue;taint",
|
||||
"System.Web;HttpUtility;false;UrlEncode;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.Web;HttpUtility;false;UrlEncode;(System.String,System.Text.Encoding);;Argument[0];ReturnValue;taint"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Web.HttpCookie` class. */
|
||||
class SystemWebHttpCookie extends SystemWebClass {
|
||||
SystemWebHttpCookie() { this.hasName("HttpCookie") }
|
||||
@@ -205,6 +237,17 @@ class SystemWebHttpCookie extends SystemWebClass {
|
||||
Property getSecureProperty() { result = this.getProperty("Secure") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Web.HttpCookie`. */
|
||||
private class SystemWebHttpCookieFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Web;HttpCookie;false;get_Value;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Web;HttpCookie;false;get_Values;();;Argument[-1];ReturnValue;taint"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Web.IHtmlString` class. */
|
||||
class SystemWebIHtmlString extends SystemWebInterface {
|
||||
SystemWebIHtmlString() { this.hasName("IHtmlString") }
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
import csharp
|
||||
private import semmle.code.csharp.frameworks.System
|
||||
private import semmle.code.csharp.dataflow.DataFlow3
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** The `System.Xml` namespace. */
|
||||
class SystemXmlNamespace extends Namespace {
|
||||
@@ -35,8 +36,20 @@ class SystemXmlXmlDocumentClass extends Class {
|
||||
/** Gets the `Load` method. */
|
||||
Method getLoadMethod() {
|
||||
result = this.getAMethod() and
|
||||
result.hasName("Load") and
|
||||
result.isStatic()
|
||||
result.hasName("Load")
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Xml.XmlDocument`. */
|
||||
private class SystemXmlXmlDocumentFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Xml;XmlDocument;false;Load;(System.IO.Stream);;Argument[0];Argument[-1];taint",
|
||||
"System.Xml;XmlDocument;false;Load;(System.IO.TextReader);;Argument[0];Argument[-1];taint",
|
||||
"System.Xml;XmlDocument;false;Load;(System.String);;Argument[0];Argument[-1];taint",
|
||||
"System.Xml;XmlDocument;false;Load;(System.Xml.XmlReader);;Argument[0];Argument[-1];taint"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +68,27 @@ class SystemXmlXmlReaderClass extends Class {
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Xml.XmlReader`. */
|
||||
private class SystemXmlXmlReaderFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Xml;XmlReader;false;Create;(System.IO.Stream);;Argument[0];ReturnValue;taint",
|
||||
"System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint",
|
||||
"System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings,System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.Xml;XmlReader;false;Create;(System.IO.Stream,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint",
|
||||
"System.Xml;XmlReader;false;Create;(System.IO.TextReader);;Argument[0];ReturnValue;taint",
|
||||
"System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint",
|
||||
"System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings,System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.Xml;XmlReader;false;Create;(System.IO.TextReader,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint",
|
||||
"System.Xml;XmlReader;false;Create;(System.String);;Argument[0];ReturnValue;taint",
|
||||
"System.Xml;XmlReader;false;Create;(System.String,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint",
|
||||
"System.Xml;XmlReader;false;Create;(System.String,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext);;Argument[0];ReturnValue;taint",
|
||||
"System.Xml;XmlReader;false;Create;(System.Xml.XmlReader,System.Xml.XmlReaderSettings);;Argument[0];ReturnValue;taint"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Xml.XmlReaderSettings` class. */
|
||||
class SystemXmlXmlReaderSettingsClass extends Class {
|
||||
SystemXmlXmlReaderSettingsClass() {
|
||||
@@ -101,6 +135,42 @@ class SystemXmlXmlNodeClass extends Class {
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Xml.XmlNode`. */
|
||||
private class SystemXmlXmlNodeFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Xml;XmlNode;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.IEnumerator.Current] of ReturnValue;value",
|
||||
"System.Xml;XmlNode;false;SelectNodes;(System.String);;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;false;SelectNodes;(System.String,System.Xml.XmlNamespaceManager);;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;false;SelectSingleNode;(System.String);;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;false;SelectSingleNode;(System.String,System.Xml.XmlNamespaceManager);;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_Attributes;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_BaseURI;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_ChildNodes;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_FirstChild;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_HasChildNodes;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_InnerText;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_InnerXml;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_IsReadOnly;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_LastChild;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_LocalName;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_Name;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_NamespaceURI;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_NextSibling;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_NodeType;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_OuterXml;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_OwnerDocument;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_ParentNode;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_Prefix;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_PreviousSibling;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_PreviousText;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_SchemaInfo;();;Argument[-1];ReturnValue;taint",
|
||||
"System.Xml;XmlNode;true;get_Value;();;Argument[-1];ReturnValue;taint"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Xml.XmlNamedNodeMap` class. */
|
||||
class SystemXmlXmlNamedNodeMapClass extends Class {
|
||||
SystemXmlXmlNamedNodeMapClass() {
|
||||
@@ -115,6 +185,17 @@ class SystemXmlXmlNamedNodeMapClass extends Class {
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Xml.XmlNamedNodeMap`. */
|
||||
private class SystemXmlXmlNamedNodeMapClassFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Xml;XmlNamedNodeMap;false;GetNamedItem;(System.String);;Argument[-1];ReturnValue;value",
|
||||
"System.Xml;XmlNamedNodeMap;false;GetNamedItem;(System.String,System.String);;Argument[-1];ReturnValue;value"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** An enum constant in `System.Xml.ValidationType`. */
|
||||
class SystemXmlValidationType extends EnumConstant {
|
||||
SystemXmlValidationType() {
|
||||
@@ -196,3 +277,11 @@ class XmlReaderSettingsInstance extends Expr {
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Xml.XmlAttributeCollection`. */
|
||||
private class SystemXmlXmlAttributeCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Xml;XmlAttributeCollection;false;CopyTo;(System.Xml.XmlAttribute[],System.Int32);;Element of Argument[-1];Element of Argument[0];value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
/** Provides definitions related to the `System.Collections.Concurrent` namespace. */
|
||||
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** Data flow for `System.Collections.Concurrent.ConcurrentDictionary<,>`. */
|
||||
private class SystemCollectionsConcurrentConcurrentDictionaryFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Collections.Concurrent;ConcurrentDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>,System.Collections.Generic.IEqualityComparer<TKey>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>,System.Collections.Generic.IEqualityComparer<TKey>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Int32,System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>,System.Collections.Generic.IEqualityComparer<TKey>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[1];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections.Concurrent;ConcurrentDictionary<,>;false;ConcurrentDictionary;(System.Int32,System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>,System.Collections.Generic.IEqualityComparer<TKey>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[1];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Keys;();;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
"System.Collections.Concurrent;ConcurrentDictionary<,>;false;get_Values;();;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Concurrent.BlockingCollection<>`. */
|
||||
private class SystemCollectionsConcurrentBlockingCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Concurrent;BlockingCollection<>;false;Add;(T);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Concurrent;BlockingCollection<>;false;CopyTo;(T[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Concurrent.IProducerConsumerCollection<>`. */
|
||||
private class SystemCollectionsConcurrentIProducerConsumerCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Collections.Concurrent;IProducerConsumerCollection<>;true;CopyTo;(T[],System.Int32);;Element of Argument[-1];Element of Argument[0];value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Concurrent.ConcurrentBag<>`. */
|
||||
private class SystemCollectionsConcurrentConcurrentBagFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Collections.Concurrent;ConcurrentBag<>;false;Add;(T);;Argument[0];Element of Argument[-1];value"
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import csharp
|
||||
private import semmle.code.csharp.frameworks.system.Collections
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** The `System.Collections.Generic` namespace. */
|
||||
class SystemCollectionsGenericNamespace extends Namespace {
|
||||
@@ -32,7 +33,7 @@ class SystemCollectionsGenericUnboundGenericStruct extends UnboundGenericStruct
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Collections.Generic.IComparer<T>` interface. */
|
||||
/** The `System.Collections.Generic.IComparer<>` interface. */
|
||||
class SystemCollectionsGenericIComparerTInterface extends SystemCollectionsGenericUnboundGenericInterface {
|
||||
SystemCollectionsGenericIComparerTInterface() { this.hasName("IComparer<>") }
|
||||
|
||||
@@ -47,7 +48,7 @@ class SystemCollectionsGenericIComparerTInterface extends SystemCollectionsGener
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Collections.Generic.IEqualityComparer<T>` interface. */
|
||||
/** The `System.Collections.Generic.IEqualityComparer<>` interface. */
|
||||
class SystemCollectionsGenericIEqualityComparerTInterface extends SystemCollectionsGenericUnboundGenericInterface {
|
||||
SystemCollectionsGenericIEqualityComparerTInterface() { this.hasName("IEqualityComparer<>") }
|
||||
|
||||
@@ -62,7 +63,7 @@ class SystemCollectionsGenericIEqualityComparerTInterface extends SystemCollecti
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Collections.Generic.IEnumerable<T>` interface. */
|
||||
/** The `System.Collections.Generic.IEnumerable<>` interface. */
|
||||
class SystemCollectionsGenericIEnumerableTInterface extends SystemCollectionsGenericUnboundGenericInterface {
|
||||
SystemCollectionsGenericIEnumerableTInterface() {
|
||||
this.hasName("IEnumerable<>") and
|
||||
@@ -70,7 +71,15 @@ class SystemCollectionsGenericIEnumerableTInterface extends SystemCollectionsGen
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Collections.Generic.IEnumerator<T>` interface. */
|
||||
/** Data flow for `System.Collections.Generic.IEnumerable<>`. */
|
||||
private class SystemCollectionsGenericEnumerableTFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Collections.Generic;IEnumerable<>;true;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.IEnumerator<>.Current] of ReturnValue;value"
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Collections.Generic.IEnumerator<>` interface. */
|
||||
class SystemCollectionsGenericIEnumeratorInterface extends SystemCollectionsGenericUnboundGenericInterface {
|
||||
SystemCollectionsGenericIEnumeratorInterface() {
|
||||
this.hasName("IEnumerator<>") and
|
||||
@@ -85,7 +94,7 @@ class SystemCollectionsGenericIEnumeratorInterface extends SystemCollectionsGene
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Collections.Generic.IList<T>` interface. */
|
||||
/** The `System.Collections.Generic.IList<>` interface. */
|
||||
class SystemCollectionsGenericIListTInterface extends SystemCollectionsGenericUnboundGenericInterface {
|
||||
SystemCollectionsGenericIListTInterface() {
|
||||
this.hasName("IList<>") and
|
||||
@@ -93,7 +102,19 @@ class SystemCollectionsGenericIListTInterface extends SystemCollectionsGenericUn
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Collections.Generic.List<T>` class. */
|
||||
/** Data flow for `System.Collections.Generic.IList<>. */
|
||||
private class SystemCollectionsGenericIListTFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Generic;IList<>;true;Insert;(System.Int32,T);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Collections.Generic;IList<>;true;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.Generic;IList<>;true;set_Item;(System.Int32,T);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Collections.Generic.List<>` class. */
|
||||
class SystemCollectionsGenericListClass extends SystemCollectionsGenericUnboundGenericClass {
|
||||
SystemCollectionsGenericListClass() {
|
||||
this.hasName("List<>") and
|
||||
@@ -101,7 +122,29 @@ class SystemCollectionsGenericListClass extends SystemCollectionsGenericUnboundG
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Collections.Generic.KeyValuePair<TKey, TValue>` structure. */
|
||||
/** Data flow for `System.Collections.Generic.List<>. */
|
||||
private class SystemCollectionsGenericListFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Generic;List<>;false;AddRange;(System.Collections.Generic.IEnumerable<T>);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Generic;List<>;false;AsReadOnly;();;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections.Generic;List<>;false;Find;(System.Predicate<T>);;Element of Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Collections.Generic;List<>;false;Find;(System.Predicate<T>);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.Generic;List<>;false;FindAll;(System.Predicate<T>);;Element of Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Collections.Generic;List<>;false;FindAll;(System.Predicate<T>);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.Generic;List<>;false;FindLast;(System.Predicate<T>);;Element of Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Collections.Generic;List<>;false;FindLast;(System.Predicate<T>);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.Generic;List<>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.List<>+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Generic;List<>;false;GetRange;(System.Int32,System.Int32);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections.Generic;List<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable<T>);;Element of Argument[1];Element of Argument[-1];value",
|
||||
"System.Collections.Generic;List<>;false;Reverse;();;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections.Generic;List<>;false;Reverse;(System.Int32,System.Int32);;Element of Argument[0];Element of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Collections.Generic.KeyValuePair<,>` structure. */
|
||||
class SystemCollectionsGenericKeyValuePairStruct extends SystemCollectionsGenericUnboundGenericStruct {
|
||||
SystemCollectionsGenericKeyValuePairStruct() {
|
||||
this.hasName("KeyValuePair<,>") and
|
||||
@@ -123,6 +166,17 @@ class SystemCollectionsGenericKeyValuePairStruct extends SystemCollectionsGeneri
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Generic.KeyValuePair<,>`. */
|
||||
private class SystemCollectionsGenericKeyValuePairStructFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Generic;KeyValuePair<,>;false;KeyValuePair;(TKey,TValue);;Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of ReturnValue;value",
|
||||
"System.Collections.Generic;KeyValuePair<,>;false;KeyValuePair;(TKey,TValue);;Argument[1];Property[System.Collections.Generic.KeyValuePair<,>.Value] of ReturnValue;value"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Collections.Generic.ICollection<>` interface. */
|
||||
class SystemCollectionsGenericICollectionInterface extends SystemCollectionsGenericUnboundGenericInterface {
|
||||
SystemCollectionsGenericICollectionInterface() { this.hasName("ICollection<>") }
|
||||
@@ -137,15 +191,168 @@ class SystemCollectionsGenericICollectionInterface extends SystemCollectionsGene
|
||||
Method getAddMethod() { result = this.getAMethod("Add") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Generic.ICollection<>`. */
|
||||
private class SystemCollectionsGenericICollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Generic;ICollection<>;true;Add;(T);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Generic;ICollection<>;true;CopyTo;(T[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Collections.Generic.IList<>` interface. */
|
||||
class SystemCollectionsGenericIListInterface extends SystemCollectionsGenericUnboundGenericInterface {
|
||||
SystemCollectionsGenericIListInterface() { this.hasName("IList<>") }
|
||||
}
|
||||
|
||||
/** The `System.Collections.Generic.IDictionary<T>` interface. */
|
||||
/** The `System.Collections.Generic.IDictionary<>` interface. */
|
||||
class SystemCollectionsGenericIDictionaryInterface extends SystemCollectionsGenericUnboundGenericInterface {
|
||||
SystemCollectionsGenericIDictionaryInterface() {
|
||||
this.hasName("IDictionary<,>") and
|
||||
this.getNumberOfTypeParameters() = 2
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Generic.IDictionary<,>`. */
|
||||
private class SystemCollectionsGenericIDictionaryFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Generic;IDictionary<,>;true;Add;(TKey,TValue);;Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Collections.Generic;IDictionary<,>;true;Add;(TKey,TValue);;Argument[1];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"System.Collections.Generic;IDictionary<,>;true;get_Item;(TKey);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.Generic;IDictionary<,>;true;get_Keys;();;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
"System.Collections.Generic;IDictionary<,>;true;get_Values;();;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
"System.Collections.Generic;IDictionary<,>;true;set_Item;(TKey,TValue);;Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Collections.Generic;IDictionary<,>;true;set_Item;(TKey,TValue);;Argument[1];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Generic.Dictionary<,>`. */
|
||||
private class SystemCollectionsGenericDictionaryFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Generic;Dictionary<,>+KeyCollection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.Dictionary<,>+KeyCollection+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Generic;Dictionary<,>+ValueCollection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.Dictionary<,>+ValueCollection+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Generic;Dictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Collections.Generic;Dictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary<TKey,TValue>,System.Collections.Generic.IEqualityComparer<TKey>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IDictionary<TKey,TValue>,System.Collections.Generic.IEqualityComparer<TKey>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>,System.Collections.Generic.IEqualityComparer<TKey>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections.Generic;Dictionary<,>;false;Dictionary;(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>,System.Collections.Generic.IEqualityComparer<TKey>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Collections.Generic;Dictionary<,>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.Dictionary<,>+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Generic;Dictionary<,>;false;get_Keys;();;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
"System.Collections.Generic;Dictionary<,>;false;get_Values;();;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Generic.SortedDictionary<,>. */
|
||||
private class SystemCollectionsGenericSortedDictionaryFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Generic;SortedDictionary<,>+KeyCollection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.SortedDictionary<,>+KeyCollection+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Generic;SortedDictionary<,>+ValueCollection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.SortedDictionary<,>+ValueCollection+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Collections.Generic;SortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"System.Collections.Generic;SortedDictionary<,>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.SortedDictionary<,>+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary<TKey,TValue>,System.Collections.Generic.IComparer<TKey>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections.Generic;SortedDictionary<,>;false;SortedDictionary;(System.Collections.Generic.IDictionary<TKey,TValue>,System.Collections.Generic.IComparer<TKey>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Collections.Generic;SortedDictionary<,>;false;get_Keys;();;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
"System.Collections.Generic;SortedDictionary<,>;false;get_Values;();;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Generic.SortedList<,>. */
|
||||
private class SystemCollectionsGenericSortedListFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Generic;SortedList<,>;false;Add;(System.Collections.Generic.KeyValuePair<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Collections.Generic;SortedList<,>;false;Add;(System.Collections.Generic.KeyValuePair<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"System.Collections.Generic;SortedList<,>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.IEnumerator<>.Current] of ReturnValue;value",
|
||||
"System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary<TKey,TValue>,System.Collections.Generic.IComparer<TKey>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections.Generic;SortedList<,>;false;SortedList;(System.Collections.Generic.IDictionary<TKey,TValue>,System.Collections.Generic.IComparer<TKey>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Collections.Generic;SortedList<,>;false;get_Keys;();;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
"System.Collections.Generic;SortedList<,>;false;get_Values;();;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Generic.Queue<>. */
|
||||
private class SystemCollectionsGenericQueueFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Generic;Queue<>;false;CopyTo;(T[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Collections.Generic;Queue<>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.Queue<>+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Generic;Queue<>;false;Peek;();;Element of Argument[-1];ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Generic.Stack<>. */
|
||||
private class SystemCollectionsGenericStackFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Generic;Stack<>;false;CopyTo;(T[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Collections.Generic;Stack<>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.Stack<>+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Generic;Stack<>;false;Peek;();;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.Generic;Stack<>;false;Pop;();;Element of Argument[-1];ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Generic.HashSet<>. */
|
||||
private class SystemCollectionsGenericHashSetFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Collections.Generic;HashSet<>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.HashSet<>+Enumerator.Current] of ReturnValue;value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Generic.ISet<>. */
|
||||
private class SystemCollectionsGenericISetFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Collections.Generic;ISet<>;true;Add;(T);;Argument[0];Element of Argument[-1];value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Generic.LinkedList<>. */
|
||||
private class SystemCollectionsGenericLinkedListFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Generic;LinkedList<>;false;Find;(T);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.Generic;LinkedList<>;false;FindLast;(T);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.Generic;LinkedList<>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.LinkedList<>+Enumerator.Current] of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Generic.SortedSet<>. */
|
||||
private class SystemCollectionsGenericSortedSetFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Generic;SortedSet<>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.SortedSet<>+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Generic;SortedSet<>;false;Reverse;();;Element of Argument[0];Element of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,175 @@
|
||||
/** Provides definitions related to the `System.Collections.Immutable` namespace. */
|
||||
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** Data flow for `System.Collections.Immutable.IImmutableDictionary<,>`. */
|
||||
private class SystemCollectionsImmutableIImmutableDictionaryFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Collections.Immutable;IImmutableDictionary<,>;true;AddRange;(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>);;Element of Argument[0];Element of Argument[-1];value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Immutable.ImmutableDictionary<,>`. */
|
||||
private class SystemCollectionsImmutableImmutableDictionaryFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Immutable.ImmutableDictionary<,>+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_Keys;();;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableDictionary<,>+Builder;false;get_Values;();;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableDictionary<,>;false;AddRange;(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableDictionary<,>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Immutable.ImmutableDictionary<,>+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableDictionary<,>;false;get_Item;(TKey);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableDictionary<,>;false;get_Keys;();;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableDictionary<,>;false;get_Values;();;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Immutable.ImmutableSortedDictionary<,>`. */
|
||||
private class SystemCollectionsImmutableImmutableSortedDictionaryFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;Add;(System.Collections.Generic.KeyValuePair<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Immutable.ImmutableSortedDictionary<,>+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_Keys;();;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableSortedDictionary<,>+Builder;false;get_Values;();;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(TKey,TValue);;Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableSortedDictionary<,>;false;Add;(TKey,TValue);;Argument[1];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableSortedDictionary<,>;false;AddRange;(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableSortedDictionary<,>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Immutable.ImmutableSortedDictionary<,>+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Item;(TKey);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Keys;();;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableSortedDictionary<,>;false;get_Values;();;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Immutable.IImmutableList<>. */
|
||||
private class SystemCollectionsImmutableIImmutableListFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Immutable;IImmutableList<>;true;Add;(T);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;IImmutableList<>;true;AddRange;(System.Collections.Generic.IEnumerable<T>);;Element of Argument[0];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Immutable.ImmutableList<>. */
|
||||
private class SystemCollectionsImmutableImmutableListFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Immutable;ImmutableList<>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable<T>);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableList<>+Builder;false;Find;(System.Predicate<T>);;Element of Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Collections.Immutable;ImmutableList<>+Builder;false;Find;(System.Predicate<T>);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableList<>+Builder;false;FindAll;(System.Predicate<T>);;Element of Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Collections.Immutable;ImmutableList<>+Builder;false;FindAll;(System.Predicate<T>);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableList<>+Builder;false;FindLast;(System.Predicate<T>);;Element of Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Collections.Immutable;ImmutableList<>+Builder;false;FindLast;(System.Predicate<T>);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableList<>+Builder;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableList<>+Builder;false;GetRange;(System.Int32,System.Int32);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableList<>+Builder;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable<T>);;Element of Argument[1];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;();;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableList<>+Builder;false;Reverse;(System.Int32,System.Int32);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableList<>;false;Add;(T);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableList<>;false;AddRange;(System.Collections.Generic.IEnumerable<T>);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableList<>;false;Find;(System.Predicate<T>);;Element of Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Collections.Immutable;ImmutableList<>;false;Find;(System.Predicate<T>);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableList<>;false;FindAll;(System.Predicate<T>);;Element of Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Collections.Immutable;ImmutableList<>;false;FindAll;(System.Predicate<T>);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableList<>;false;FindLast;(System.Predicate<T>);;Element of Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Collections.Immutable;ImmutableList<>;false;FindLast;(System.Predicate<T>);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableList<>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Immutable.ImmutableList<>+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableList<>;false;GetRange;(System.Int32,System.Int32);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableList<>;false;Insert;(System.Int32,T);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableList<>;false;InsertRange;(System.Int32,System.Collections.Generic.IEnumerable<T>);;Element of Argument[1];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableList<>;false;Reverse;();;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableList<>;false;Reverse;(System.Int32,System.Int32);;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableList<>;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Immutable.ImmutableSortedSet<>. */
|
||||
private class SystemCollectionsImmutableImmutableSortedSetFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableSortedSet<>+Builder;false;Reverse;();;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableSortedSet<>;false;Add;(T);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableSortedSet<>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Immutable.ImmutableSortedSet<>+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableSortedSet<>;false;Reverse;();;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableSortedSet<>;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Immutable.IImmutableSet<>. */
|
||||
private class SystemCollectionsImmutableIImmutableSetFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Collections.Immutable;IImmutableSet<>;true;Add;(T);;Argument[0];Element of Argument[-1];value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Immutable.ImmutableArray<>. */
|
||||
private class SystemCollectionsImmutableImmutableArrayFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Generic.IEnumerable<T>);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Immutable.ImmutableArray<>);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(System.Collections.Immutable.ImmutableArray<>+Builder);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange;(T[]);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(System.Collections.Immutable.ImmutableArray<TDerived>);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(System.Collections.Immutable.ImmutableArray<TDerived>+Builder);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableArray<>+Builder;false;AddRange<>;(TDerived[]);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableArray<>+Builder;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Generic.IEnumerator<>.Current] of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableArray<>+Builder;false;Reverse;();;Element of Argument[0];Element of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Immutable.ImmutableHashSet<>. */
|
||||
private class SystemCollectionsImmutableImmutableHashSetFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Immutable;ImmutableHashSet<>+Builder;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Immutable.ImmutableHashSet<>+Enumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Immutable;ImmutableHashSet<>;false;Add;(T);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Immutable;ImmutableHashSet<>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Immutable.ImmutableHashSet<>+Enumerator.Current] of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Immutable.ImmutableQueue<>. */
|
||||
private class SystemCollectionsImmutableImmutableQueueFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Collections.Immutable;ImmutableQueue<>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Immutable.ImmutableQueue<>+Enumerator.Current] of ReturnValue;value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Immutable.ImmutableStack<>. */
|
||||
private class SystemCollectionsImmutableImmutableStackFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Collections.Immutable;ImmutableStack<>;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Immutable.ImmutableStack<>+Enumerator.Current] of ReturnValue;value"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
/** Provides definitions related to the `System.Collections.ObjectModel` namespace. */
|
||||
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** Data flow for `System.Collections.ObjectModel.ReadOnlyDictionary<,>`. */
|
||||
private class SystemCollectionsObjectModelReadOnlyDictionaryFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.ObjectModel;ReadOnlyCollection<>;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;Add;(System.Collections.Generic.KeyValuePair<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;ReadOnlyDictionary;(System.Collections.Generic.IDictionary<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of ReturnValue;value",
|
||||
"System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;ReadOnlyDictionary;(System.Collections.Generic.IDictionary<TKey,TValue>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of ReturnValue;value",
|
||||
"System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Item;(TKey);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Keys;();;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
"System.Collections.ObjectModel;ReadOnlyDictionary<,>;false;get_Values;();;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];Element of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.ObjectModel.KeyedCollection<,>`. */
|
||||
private class SystemCollectionsObjectModelKeyedCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Collections.ObjectModel;KeyedCollection<,>;false;get_Item;(TKey);;Element of Argument[-1];ReturnValue;value"
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import csharp
|
||||
private import semmle.code.csharp.frameworks.system.Collections
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** The `System.Collections.Specialized` namespace. */
|
||||
class SystemCollectionsSpecializedNamespace extends Namespace {
|
||||
@@ -22,3 +23,50 @@ class SystemCollectionsSpecializedClass extends Class {
|
||||
class SystemCollectionsSpecializedNameValueCollectionClass extends SystemCollectionsSpecializedClass {
|
||||
SystemCollectionsSpecializedNameValueCollectionClass() { this.hasName("NameValueCollection") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Specialized.NameValueCollection`. */
|
||||
private class SystemCollectionsSpecializedNameValueCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Specialized;NameValueCollection;false;Add;(System.Collections.Specialized.NameValueCollection);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Specialized;NameValueCollection;false;CopyTo;(System.Array,System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Specialized.IOrderedDictionary`. */
|
||||
private class SystemCollectionsSpecializedIOrderedDictionaryFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Specialized;IOrderedDictionary;true;get_Item;(System.Int32);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.Specialized;IOrderedDictionary;true;set_Item;(System.Int32,System.Object);;Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Collections.Specialized;IOrderedDictionary;true;set_Item;(System.Int32,System.Object);;Argument[1];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Specialized.OrderedDictionary`. */
|
||||
private class SystemCollectionsSpecializedOrderedDictionaryFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Collections.Specialized;OrderedDictionary;false;AsReadOnly;();;Element of Argument[0];Element of ReturnValue;value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Collections.Specialized.StringCollection`. */
|
||||
private class SystemCollectionsSpecializedStringCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Collections.Specialized;StringCollection;false;Add;(System.String);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Specialized;StringCollection;false;AddRange;(System.String[]);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Collections.Specialized;StringCollection;false;CopyTo;(System.String[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Collections.Specialized;StringCollection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.Specialized.StringEnumerator.Current] of ReturnValue;value",
|
||||
"System.Collections.Specialized;StringCollection;false;Insert;(System.Int32,System.String);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Collections.Specialized;StringCollection;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Collections.Specialized;StringCollection;false;set_Item;(System.Int32,System.String);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
/** Provides definitions related to the `System.ComponentModel.Design` namespace. */
|
||||
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** Data flow for `System.ComponentModel.Design.DesignerCollectionService`. */
|
||||
private class SystemComponentModelDesignDesignerCollectionServiceFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.ComponentModel.Design;DesignerOptionService+DesignerOptionCollection;false;get_Item;(System.String);;Element of Argument[-1];ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.ComponentModel.Design.DesignerVerbCollection`. */
|
||||
private class SystemComponentModelDesignDesignerVerbCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.ComponentModel.Design;DesignerVerbCollection;false;Add;(System.ComponentModel.Design.DesignerVerb);;Argument[0];Element of Argument[-1];value",
|
||||
"System.ComponentModel.Design;DesignerVerbCollection;false;AddRange;(System.ComponentModel.Design.DesignerVerbCollection);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.ComponentModel.Design;DesignerVerbCollection;false;AddRange;(System.ComponentModel.Design.DesignerVerb[]);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.ComponentModel.Design;DesignerVerbCollection;false;CopyTo;(System.ComponentModel.Design.DesignerVerb[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.ComponentModel.Design;DesignerVerbCollection;false;Insert;(System.Int32,System.ComponentModel.Design.DesignerVerb);;Argument[1];Element of Argument[-1];value",
|
||||
"System.ComponentModel.Design;DesignerVerbCollection;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.ComponentModel.Design;DesignerVerbCollection;false;set_Item;(System.Int32,System.ComponentModel.Design.DesignerVerb);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.ComponentModel.Design.DesignerCollection`. */
|
||||
private class SystemComponentModelDesignDesignerCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.ComponentModel.Design;DesignerCollection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Collections.IEnumerator.Current] of ReturnValue;value"
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
private import csharp as csharp
|
||||
private import semmle.code.csharp.frameworks.system.Data as Data
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow as ExternalFlow
|
||||
|
||||
/** Definitions relating to the `System.Data.Common` namespace. */
|
||||
module SystemDataCommon {
|
||||
@@ -30,3 +31,67 @@ module SystemDataCommon {
|
||||
DbException() { this.hasName("DbException") }
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Data.Common.DbConnectionStringBuilder`. */
|
||||
private class SystemDataCommonDbConnectionStringBuilderFlowModelCsv extends ExternalFlow::SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Data.Common;DbConnectionStringBuilder;false;Add;(System.String,System.Object);;Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Data.Common;DbConnectionStringBuilder;false;Add;(System.String,System.Object);;Argument[1];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
"System.Data.Common;DbConnectionStringBuilder;false;get_Item;(System.String);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];ReturnValue;value",
|
||||
"System.Data.Common;DbConnectionStringBuilder;false;set_Item;(System.String,System.Object);;Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Data.Common;DbConnectionStringBuilder;false;set_Item;(System.String,System.Object);;Argument[1];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Data.Common.DataColumnMappingCollection`. */
|
||||
private class SystemDataCommonDataColumnMappingCollectionFlowModelCsv extends ExternalFlow::SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Data.Common;DataColumnMappingCollection;false;AddRange;(System.Array);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Data.Common;DataColumnMappingCollection;false;AddRange;(System.Data.Common.DataColumnMapping[]);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Data.Common;DataColumnMappingCollection;false;CopyTo;(System.Data.Common.DataColumnMapping[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Data.Common;DataColumnMappingCollection;false;Insert;(System.Int32,System.Data.Common.DataColumnMapping);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Data.Common;DataColumnMappingCollection;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Data.Common;DataColumnMappingCollection;false;get_Item;(System.String);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Data.Common;DataColumnMappingCollection;false;set_Item;(System.Int32,System.Data.Common.DataColumnMapping);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Data.Common;DataColumnMappingCollection;false;set_Item;(System.String,System.Data.Common.DataColumnMapping);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Data.Common.DataTableMappingCollection`. */
|
||||
private class SystemDataCommonDataTableMappingCollectionFlowModelCsv extends ExternalFlow::SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Data.Common;DataTableMappingCollection;false;AddRange;(System.Array);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Data.Common;DataTableMappingCollection;false;AddRange;(System.Data.Common.DataTableMapping[]);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Data.Common;DataTableMappingCollection;false;CopyTo;(System.Data.Common.DataTableMapping[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Data.Common;DataTableMappingCollection;false;Insert;(System.Int32,System.Data.Common.DataTableMapping);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Data.Common;DataTableMappingCollection;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Data.Common;DataTableMappingCollection;false;get_Item;(System.String);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Data.Common;DataTableMappingCollection;false;set_Item;(System.Int32,System.Data.Common.DataTableMapping);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Data.Common;DataTableMappingCollection;false;set_Item;(System.String,System.Data.Common.DataTableMapping);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Data.Common.DbParameterCollection`. */
|
||||
private class SystemDataCommonDbParameterCollectionFlowModelCsv extends ExternalFlow::SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Data.Common;DbParameterCollection;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Data.Common;DbParameterCollection;false;get_Item;(System.String);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Data.Common;DbParameterCollection;false;set_Item;(System.Int32,System.Data.Common.DbParameter);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Data.Common;DbParameterCollection;false;set_Item;(System.String,System.Data.Common.DbParameter);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Data.Common;DbParameterCollection;true;Add;(System.Object);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Data.Common;DbParameterCollection;true;AddRange;(System.Array);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Data.Common;DbParameterCollection;true;Insert;(System.Int32,System.Object);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import csharp
|
||||
private import semmle.code.csharp.frameworks.system.IO
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** The `System.IO.Compression` namespace. */
|
||||
class SystemIOCompressionNamespace extends Namespace {
|
||||
@@ -20,3 +21,16 @@ class SystemIOCompressionClass extends Class {
|
||||
class SystemIOCompressionDeflateStream extends SystemIOCompressionClass {
|
||||
SystemIOCompressionDeflateStream() { this.hasName("DeflateStream") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.IO.Compression.DeflateStream`. */
|
||||
private class SystemIOCompressionDeflateStreamFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionLevel);;Argument[0];ReturnValue;taint",
|
||||
"System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionLevel,System.Boolean);;Argument[0];ReturnValue;taint",
|
||||
"System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionMode);;Argument[0];ReturnValue;taint",
|
||||
"System.IO.Compression;DeflateStream;false;DeflateStream;(System.IO.Stream,System.IO.Compression.CompressionMode,System.Boolean);;Argument[0];ReturnValue;taint"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
/** Provides definitions related to the `System.Net.Http` namespace. */
|
||||
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** Data flow for `System.Net.Http.HttpRequestOptions`. */
|
||||
private class SystemNetHttpHttpRequestOptionsFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Net.Http;HttpRequestOptions;false;Add;(System.Collections.Generic.KeyValuePair<System.String,System.Object>);;Property[System.Collections.Generic.KeyValuePair<,>.Key] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Key] of Element of Argument[-1];value",
|
||||
"System.Net.Http;HttpRequestOptions;false;Add;(System.Collections.Generic.KeyValuePair<System.String,System.Object>);;Property[System.Collections.Generic.KeyValuePair<,>.Value] of Argument[0];Property[System.Collections.Generic.KeyValuePair<,>.Value] of Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Net.Http.MultipartContent`. */
|
||||
private class SystemNetHttpMultipartContentFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Net.Http;MultipartContent;false;Add;(System.Net.Http.HttpContent);;Argument[0];Element of Argument[-1];value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Net.Http.MultipartFormDataContent`. */
|
||||
private class SystemNetHttpMultipartFormDataContentFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Net.Http;MultipartFormDataContent;false;Add;(System.Net.Http.HttpContent);;Argument[0];Element of Argument[-1];value"
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import csharp
|
||||
private import semmle.code.csharp.frameworks.system.Net
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** The `System.Net.Mail` namespace. */
|
||||
class SystemNetMailNamespace extends Namespace {
|
||||
@@ -26,3 +27,11 @@ class SystemNetMailMailMessageClass extends SystemNetMailClass {
|
||||
/** Gets the `Subject` property. */
|
||||
Property getSubjectProperty() { result = this.getProperty("Subject") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Net.Mail.MailAddressCollection`. */
|
||||
private class SystemNetMailMailAddressCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Net.Mail;MailAddressCollection;false;Add;(System.String);;Argument[0];Element of Argument[-1];value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import csharp
|
||||
private import semmle.code.csharp.frameworks.system.Runtime
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** The `System.Runtime.CompilerServices` namespace. */
|
||||
class SystemRuntimeCompilerServicesNamespace extends Namespace {
|
||||
@@ -29,6 +30,14 @@ class SystemRuntimeCompilerServicesTaskAwaiterStruct extends SystemRuntimeCompil
|
||||
Field getUnderlyingTaskField() { result = this.getAField() and result.hasName("m_task") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Runtime.CompilerServices.TaskAwaiter<>`. */
|
||||
private class SystemRuntimeCompilerServicesTaskAwaiterFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Runtime.CompilerServices;TaskAwaiter<>;false;GetResult;();;Property[System.Threading.Tasks.Task<>.Result] of SyntheticField[m_task_task_awaiter] of Argument[-1];ReturnValue;value"
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>` struct. */
|
||||
class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTStruct extends SystemRuntimeCompilerServicesNamespaceUnboundGenericStruct {
|
||||
SystemRuntimeCompilerServicesConfiguredTaskAwaitableTStruct() {
|
||||
@@ -44,6 +53,14 @@ class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTStruct extends System
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>`. */
|
||||
private class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Runtime.CompilerServices;ConfiguredTaskAwaitable<>;false;GetAwaiter;();;SyntheticField[m_configuredTaskAwaiter] of Argument[-1];ReturnValue;value"
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>.ConfiguredTaskAwaiter` struct. */
|
||||
class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiterStruct extends Struct {
|
||||
SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiterStruct() {
|
||||
@@ -57,3 +74,22 @@ class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiter
|
||||
/** Gets the field that stores the underlying task. */
|
||||
Field getUnderlyingTaskField() { result = this.getAField() and result.hasName("m_task") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>.ConfiguredTaskAwaiter`. */
|
||||
private class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiterFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Runtime.CompilerServices;ConfiguredTaskAwaitable<>+ConfiguredTaskAwaiter;false;GetResult;();;Property[System.Threading.Tasks.Task<>.Result] of SyntheticField[m_task_configured_task_awaitable] of Argument[-1];ReturnValue;value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Runtime.CompilerServices.ReadOnlyCollectionBuilder<>`. */
|
||||
private class SystemRuntimeCompilerServicesReadOnlyCollectionBuilderFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;();;Element of Argument[0];Element of ReturnValue;value",
|
||||
"System.Runtime.CompilerServices;ReadOnlyCollectionBuilder<>;false;Reverse;(System.Int32,System.Int32);;Element of Argument[0];Element of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import csharp
|
||||
private import semmle.code.csharp.frameworks.system.Security
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** The `System.Security.Cryptography` namespace. */
|
||||
class SystemSecurityCryptographyNamespace extends Namespace {
|
||||
@@ -17,3 +18,27 @@ class SystemSecurityCryptographyClass extends Class {
|
||||
this.getNamespace() instanceof SystemSecurityCryptographyNamespace
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Security.Cryptography.AsnEncodedDataCollection`. */
|
||||
private class SystemSecurityCryptographyAsnEncondedDataCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Security.Cryptography;AsnEncodedDataCollection;false;Add;(System.Security.Cryptography.AsnEncodedData);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Security.Cryptography;AsnEncodedDataCollection;false;CopyTo;(System.Security.Cryptography.AsnEncodedData[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Security.Cryptography;AsnEncodedDataCollection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Security.Cryptography.AsnEncodedDataEnumerator.Current] of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Security.Cryptography.OidCollection`. */
|
||||
private class SystemSecurityCryptographyOidCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Security.Cryptography;OidCollection;false;Add;(System.Security.Cryptography.Oid);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Security.Cryptography;OidCollection;false;CopyTo;(System.Security.Cryptography.Oid[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Security.Cryptography;OidCollection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Security.Cryptography.OidEnumerator.Current] of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import csharp
|
||||
private import semmle.code.csharp.frameworks.system.security.Cryptography
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** The `System.Security.Cryptography.X509Certificates` namespace. */
|
||||
class SystemSecurityCryptographyX509CertificatesNamespace extends Namespace {
|
||||
@@ -28,3 +29,60 @@ class SystemSecurityCryptographyX509CertificatesX509CertificateClass extends Sys
|
||||
this.hasName("X509Certificate2")
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Security.Cryptography.X509Certificates.X509Certificate2Collection`. */
|
||||
private class SystemSecurityCryptographyX509CertificatesX509Certificate2CollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Add;(System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate2Collection);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate2[]);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Find;(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Security.Cryptography.X509Certificates.X509Certificate2Enumerator.Current] of ReturnValue;value",
|
||||
"System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;Insert;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Security.Cryptography.X509Certificates;X509Certificate2Collection;false;set_Item;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate2);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Security.Cryptography.X509Certificates.X509CertificateCollection`. */
|
||||
private class SystemSecurityCryptographyX509CertificatesX509CertificateCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;Add;(System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509CertificateCollection);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;AddRange;(System.Security.Cryptography.X509Certificates.X509Certificate[]);;Element of Argument[0];Element of Argument[-1];value",
|
||||
"System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509Certificate[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Security.Cryptography.X509Certificates.X509CertificateCollection+X509CertificateEnumerator.Current] of ReturnValue;value",
|
||||
"System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;Insert;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Security.Cryptography.X509Certificates;X509CertificateCollection;false;set_Item;(System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Security.Cryptography.X509Certificates.X509ClainElementCollection`. */
|
||||
private class SystemSecurityCryptographyX509CertificatesX509ClainElementCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509ChainElement[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Security.Cryptography.X509Certificates;X509ChainElementCollection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Security.Cryptography.X509Certificates.X509ChainElementEnumerator.Current] of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Security.Cryptography.X509Certificates.X509ExtensionCollection`. */
|
||||
private class SystemSecurityCryptographyX509CertificatesX509ExtensionCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;Add;(System.Security.Cryptography.X509Certificates.X509Extension);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;CopyTo;(System.Security.Cryptography.X509Certificates.X509Extension[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Security.Cryptography.X509Certificates;X509ExtensionCollection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Security.Cryptography.X509Certificates.X509ExtensionEnumerator.Current] of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
import default
|
||||
import semmle.code.csharp.frameworks.system.Text
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** The `System.Text.RegularExpressions` namespace. */
|
||||
class SystemTextRegularExpressionsNamespace extends Namespace {
|
||||
@@ -82,3 +83,30 @@ class RegexOperation extends Call {
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Text.RegularExpressions.CaptureCollection`. */
|
||||
private class SystemTextRegularExpressionsCaptureCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Text.RegularExpressions;CaptureCollection;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value"
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Text.RegularExpressions.GroupCollection`. */
|
||||
private class SystemTextRegularExpressionsGroupCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Text.RegularExpressions;GroupCollection;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Text.RegularExpressions;GroupCollection;false;get_Item;(System.String);;Element of Argument[-1];ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Text.RegularExpressions.MatchCollection`. */
|
||||
private class SystemTextRegularExpressionsMatchCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
"System.Text.RegularExpressions;MatchCollection;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import csharp
|
||||
private import semmle.code.csharp.frameworks.system.Threading
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** The `System.Threading.Tasks` namespace. */
|
||||
class SystemThreadingTasksNamespace extends Namespace {
|
||||
@@ -28,6 +29,50 @@ class SystemThreadingTasksTaskClass extends SystemThreadingTasksClass {
|
||||
SystemThreadingTasksTaskClass() { this.hasName("Task") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Threading.Tasks.Task`. */
|
||||
private class SystemThreadingTasksTaskFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Threading.Tasks;Task;false;ContinueWith;(System.Action<System.Threading.Tasks.Task,System.Object>,System.Object);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith;(System.Action<System.Threading.Tasks.Task,System.Object>,System.Object,System.Threading.CancellationToken);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith;(System.Action<System.Threading.Tasks.Task,System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith;(System.Action<System.Threading.Tasks.Task,System.Object>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith;(System.Action<System.Threading.Tasks.Task,System.Object>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task,System.Object,TResult>,System.Object);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task,System.Object,TResult>,System.Object);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task,System.Object,TResult>,System.Object,System.Threading.CancellationToken);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task,System.Object,TResult>,System.Object,System.Threading.CancellationToken);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task,System.Object,TResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task,System.Object,TResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task,System.Object,TResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task,System.Object,TResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task,System.Object,TResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task,System.Object,TResult>,System.Object,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task,TResult>);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task,TResult>,System.Threading.CancellationToken);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task,TResult>,System.Threading.Tasks.TaskContinuationOptions);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task,TResult>,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;FromResult<>;(TResult);;Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;Run<>;(System.Func<System.Threading.Tasks.Task<TResult>>);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;Run<>;(System.Func<System.Threading.Tasks.Task<TResult>>,System.Threading.CancellationToken);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;Run<>;(System.Func<TResult>);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;Run<>;(System.Func<TResult>,System.Threading.CancellationToken);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;Task;(System.Action<System.Object>,System.Object);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task;false;Task;(System.Action<System.Object>,System.Object,System.Threading.CancellationToken);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task;false;Task;(System.Action<System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task;false;Task;(System.Action<System.Object>,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task;false;WhenAll<>;(System.Collections.Generic.IEnumerable<System.Threading.Tasks.Task<TResult>>);;Property[System.Threading.Tasks.Task<>.Result] of Element of Argument[0];Element of Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;WhenAll<>;(System.Threading.Tasks.Task<TResult>[]);;Property[System.Threading.Tasks.Task<>.Result] of Element of Argument[0];Element of Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;WhenAny<>;(System.Collections.Generic.IEnumerable<System.Threading.Tasks.Task<TResult>>);;Property[System.Threading.Tasks.Task<>.Result] of Element of Argument[0];Element of Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task<TResult>,System.Threading.Tasks.Task<TResult>);;Property[System.Threading.Tasks.Task<>.Result] of Element of Argument[0];Element of Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task<TResult>,System.Threading.Tasks.Task<TResult>);;Property[System.Threading.Tasks.Task<>.Result] of Element of Argument[1];Element of Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task;false;WhenAny<>;(System.Threading.Tasks.Task<TResult>[]);;Property[System.Threading.Tasks.Task<>.Result] of Element of Argument[0];Element of Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Threading.Tasks.Task<T>` class. */
|
||||
class SystemThreadingTasksTaskTClass extends SystemThreadingTasksUnboundGenericClass {
|
||||
SystemThreadingTasksTaskTClass() { this.hasName("Task<>") }
|
||||
@@ -45,3 +90,169 @@ class SystemThreadingTasksTaskTClass extends SystemThreadingTasksUnboundGenericC
|
||||
/** Gets the `ConfigureAwait` method. */
|
||||
Method getConfigureAwaitMethod() { result = this.getAMethod("ConfigureAwait") }
|
||||
}
|
||||
|
||||
/** Data flow for `System.Threading.Tasks.Task<>`. */
|
||||
private class SystemThreadingTasksTaskTFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Threading.Tasks;Task<>;false;ConfigureAwait;(System.Boolean);;Argument[-1];SyntheticField[m_task_configured_task_awaitable] of SyntheticField[m_configuredTaskAwaiter] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action<System.Threading.Tasks.Task<>,System.Object>,System.Object);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action<System.Threading.Tasks.Task<>,System.Object>,System.Object);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action<System.Threading.Tasks.Task<>,System.Object>,System.Object,System.Threading.CancellationToken);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action<System.Threading.Tasks.Task<>,System.Object>,System.Object,System.Threading.CancellationToken);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action<System.Threading.Tasks.Task<>,System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action<System.Threading.Tasks.Task<>,System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action<System.Threading.Tasks.Task<>,System.Object>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action<System.Threading.Tasks.Task<>,System.Object>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action<System.Threading.Tasks.Task<>,System.Object>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action<System.Threading.Tasks.Task<>,System.Object>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action<System.Threading.Tasks.Task<>>);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action<System.Threading.Tasks.Task<>>,System.Threading.CancellationToken);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action<System.Threading.Tasks.Task<>>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action<System.Threading.Tasks.Task<>>,System.Threading.Tasks.TaskContinuationOptions);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith;(System.Action<System.Threading.Tasks.Task<>>,System.Threading.Tasks.TaskScheduler);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,System.Object,TNewResult>,System.Object);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,System.Object,TNewResult>,System.Object);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,System.Object,TNewResult>,System.Object);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,System.Object,TNewResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskContinuationOptions);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[1];Parameter[1] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,System.Object,TNewResult>,System.Object,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,TNewResult>);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,TNewResult>);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,TNewResult>,System.Threading.CancellationToken);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,TNewResult>,System.Threading.CancellationToken);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,TNewResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,TNewResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,TNewResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,TNewResult>,System.Threading.Tasks.TaskContinuationOptions);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,TNewResult>,System.Threading.Tasks.TaskScheduler);;Argument[-1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;ContinueWith<>;(System.Func<System.Threading.Tasks.Task<>,TNewResult>,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;GetAwaiter;();;Argument[-1];SyntheticField[m_task_task_awaiter] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;Task;(System.Func<System.Object,TResult>,System.Object);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;Task;(System.Func<System.Object,TResult>,System.Object);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;Task;(System.Func<System.Object,TResult>,System.Object,System.Threading.CancellationToken);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;Task;(System.Func<System.Object,TResult>,System.Object,System.Threading.CancellationToken);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;Task;(System.Func<System.Object,TResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;Task;(System.Func<System.Object,TResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;Task;(System.Func<System.Object,TResult>,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;Task<>;false;Task;(System.Func<System.Object,TResult>,System.Object,System.Threading.Tasks.TaskCreationOptions);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;Task;(System.Func<TResult>);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;Task;(System.Func<TResult>,System.Threading.CancellationToken);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;Task;(System.Func<TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;Task;(System.Func<TResult>,System.Threading.Tasks.TaskCreationOptions);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;Task<>;false;get_Result;();;Argument[-1];ReturnValue;taint"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Threading.Tasks.TaskFactory`. */
|
||||
private class SystemThreadingTasksTaskFactoryFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult>);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult>);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult>,System.Threading.CancellationToken);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult>,System.Threading.CancellationToken);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<,>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Action<System.Threading.Tasks.Task<TAntecedentResult>[]>);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Action<System.Threading.Tasks.Task<TAntecedentResult>[]>,System.Threading.CancellationToken);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Action<System.Threading.Tasks.Task<TAntecedentResult>[]>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Action<System.Threading.Tasks.Task<TAntecedentResult>[]>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func<System.Threading.Tasks.Task[],TResult>);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func<System.Threading.Tasks.Task[],TResult>,System.Threading.CancellationToken);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func<System.Threading.Tasks.Task[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAll<>;(System.Threading.Tasks.Task[],System.Func<System.Threading.Tasks.Task[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>,TResult>);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>,TResult>);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>,TResult>,System.Threading.CancellationToken);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>,TResult>,System.Threading.CancellationToken);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<,>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>,TResult>,System.Threading.Tasks.TaskContinuationOptions);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Action<System.Threading.Tasks.Task<TAntecedentResult>>);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Action<System.Threading.Tasks.Task<TAntecedentResult>>,System.Threading.CancellationToken);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Action<System.Threading.Tasks.Task<TAntecedentResult>>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Action<System.Threading.Tasks.Task<TAntecedentResult>>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func<System.Threading.Tasks.Task,TResult>);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func<System.Threading.Tasks.Task,TResult>,System.Threading.CancellationToken);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func<System.Threading.Tasks.Task,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;ContinueWhenAny<>;(System.Threading.Tasks.Task[],System.Func<System.Threading.Tasks.Task,TResult>,System.Threading.Tasks.TaskContinuationOptions);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action<System.Object>,System.Object);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action<System.Object>,System.Object,System.Threading.CancellationToken);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action<System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;StartNew;(System.Action<System.Object>,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func<System.Object,TResult>,System.Object);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func<System.Object,TResult>,System.Object);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func<System.Object,TResult>,System.Object,System.Threading.CancellationToken);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func<System.Object,TResult>,System.Object,System.Threading.CancellationToken);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func<System.Object,TResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func<System.Object,TResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func<System.Object,TResult>,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func<System.Object,TResult>,System.Object,System.Threading.Tasks.TaskCreationOptions);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func<TResult>);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func<TResult>,System.Threading.CancellationToken);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func<TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory;false;StartNew<>;(System.Func<TResult>,System.Threading.Tasks.TaskCreationOptions);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Threading.Tasks.TaskFactory<TResult>`. */
|
||||
private class SystemThreadingTasksTaskFactoryTFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func<System.Threading.Tasks.Task[],TResult>);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func<System.Threading.Tasks.Task[],TResult>,System.Threading.CancellationToken);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func<System.Threading.Tasks.Task[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll;(System.Threading.Tasks.Task[],System.Func<System.Threading.Tasks.Task[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult>);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult>);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult>,System.Threading.CancellationToken);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult>,System.Threading.CancellationToken);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAll<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>[],TResult>,System.Threading.Tasks.TaskContinuationOptions);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func<System.Threading.Tasks.Task,TResult>);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func<System.Threading.Tasks.Task,TResult>,System.Threading.CancellationToken);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func<System.Threading.Tasks.Task,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny;(System.Threading.Tasks.Task[],System.Func<System.Threading.Tasks.Task,TResult>,System.Threading.Tasks.TaskContinuationOptions);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>,TResult>);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>,TResult>);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>,TResult>,System.Threading.CancellationToken);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>,TResult>,System.Threading.CancellationToken);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>,TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>,TResult>,System.Threading.Tasks.TaskContinuationOptions);;Argument[0];Parameter[0] of Argument[1];value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;ContinueWhenAny<>;(System.Threading.Tasks.Task<TAntecedentResult>[],System.Func<System.Threading.Tasks.Task<TAntecedentResult>,TResult>,System.Threading.Tasks.TaskContinuationOptions);;ReturnValue of Argument[1];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func<System.Object,TResult>,System.Object);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func<System.Object,TResult>,System.Object);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func<System.Object,TResult>,System.Object,System.Threading.CancellationToken);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func<System.Object,TResult>,System.Object,System.Threading.CancellationToken);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func<System.Object,TResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func<System.Object,TResult>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func<System.Object,TResult>,System.Object,System.Threading.Tasks.TaskCreationOptions);;Argument[1];Parameter[0] of Argument[0];value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func<System.Object,TResult>,System.Object,System.Threading.Tasks.TaskCreationOptions);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func<TResult>);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func<TResult>,System.Threading.CancellationToken);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func<TResult>,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskScheduler);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
"System.Threading.Tasks;TaskFactory<>;false;StartNew;(System.Func<TResult>,System.Threading.Tasks.TaskCreationOptions);;ReturnValue of Argument[0];Property[System.Threading.Tasks.Task<>.Result] of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import csharp
|
||||
private import semmle.code.csharp.frameworks.system.web.UI
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** The `System.Web.UI.WebControls` namespace. */
|
||||
class SystemWebUIWebControlsNamespace extends Namespace {
|
||||
@@ -28,6 +29,13 @@ class SystemWebUIWebControlsTextBoxClass extends SystemWebUIWebControlsClass {
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Web.UI.WebControls.TextBox`. */
|
||||
private class SystebWebUIWebControlsTextBoxClassFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row = "System.Web.UI.WebControls;TextBox;false;get_Text;();;Argument[-1];ReturnValue;taint"
|
||||
}
|
||||
}
|
||||
|
||||
/** The `System.Web.UI.WebControls.Label` class. */
|
||||
class SystemWebUIWebControlsLabelClass extends SystemWebUIWebControlsClass {
|
||||
SystemWebUIWebControlsLabelClass() { this.hasName("Label") }
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
/** Provides definitions related to the `System.Xml.Schema` namespace. */
|
||||
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** Data flow for `System.Xml.Schema.XmlSchemaObjectCollection`. */
|
||||
private class SystemXmlSchemaXmlSchemaObjectCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Xml.Schema;XmlSchemaObjectCollection;false;Add;(System.Xml.Schema.XmlSchemaObject);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Xml.Schema;XmlSchemaObjectCollection;false;CopyTo;(System.Xml.Schema.XmlSchemaObject[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Xml.Schema;XmlSchemaObjectCollection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Xml.Schema.XmlSchemaObjectEnumerator.Current] of ReturnValue;value",
|
||||
"System.Xml.Schema;XmlSchemaObjectCollection;false;Insert;(System.Int32,System.Xml.Schema.XmlSchemaObject);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Xml.Schema;XmlSchemaObjectCollection;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Xml.Schema;XmlSchemaObjectCollection;false;set_Item;(System.Int32,System.Xml.Schema.XmlSchemaObject);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Xml.Schema.XmlSchemaCollection`. */
|
||||
private class SystemXmlSchemaXmlSchemaCollectionFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Xml.Schema;XmlSchemaCollection;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Xml.Schema;XmlSchemaCollection;false;Add;(System.Xml.Schema.XmlSchemaCollection);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Xml.Schema;XmlSchemaCollection;false;CopyTo;(System.Xml.Schema.XmlSchema[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Xml.Schema;XmlSchemaCollection;false;GetEnumerator;();;Element of Argument[-1];Property[System.Xml.Schema.XmlSchemaCollectionEnumerator.Current] of ReturnValue;value",
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
/** Provides definitions related to the `System.Xml.Serialization` namespace. */
|
||||
|
||||
private import semmle.code.csharp.dataflow.ExternalFlow
|
||||
|
||||
/** Data flow for `System.Xml.Serialization.XmlAnyElementAttributes`. */
|
||||
private class SystemXmlSerializationXmlAnyElementAttributesFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Xml.Serialization;XmlAnyElementAttributes;false;Add;(System.Xml.Serialization.XmlAnyElementAttribute);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Xml.Serialization;XmlAnyElementAttributes;false;CopyTo;(System.Xml.Serialization.XmlAnyElementAttribute[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Xml.Serialization;XmlAnyElementAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlAnyElementAttribute);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Xml.Serialization;XmlAnyElementAttributes;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Xml.Serialization;XmlAnyElementAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlAnyElementAttribute);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Xml.Serialization.XmlArrayItemAttributes`. */
|
||||
private class SystemXmlSerializationXmlArrayItemAttributesFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Xml.Serialization;XmlArrayItemAttributes;false;Add;(System.Xml.Serialization.XmlArrayItemAttribute);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Xml.Serialization;XmlArrayItemAttributes;false;CopyTo;(System.Xml.Serialization.XmlArrayItemAttribute[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Xml.Serialization;XmlArrayItemAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlArrayItemAttribute);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Xml.Serialization;XmlArrayItemAttributes;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Xml.Serialization;XmlArrayItemAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlArrayItemAttribute);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Xml.Serialization.XmlElementAttributes`. */
|
||||
private class SystemXmlSerializationXmlElementAttributesFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Xml.Serialization;XmlElementAttributes;false;Add;(System.Xml.Serialization.XmlElementAttribute);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Xml.Serialization;XmlElementAttributes;false;CopyTo;(System.Xml.Serialization.XmlElementAttribute[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Xml.Serialization;XmlElementAttributes;false;Insert;(System.Int32,System.Xml.Serialization.XmlElementAttribute);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Xml.Serialization;XmlElementAttributes;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Xml.Serialization;XmlElementAttributes;false;set_Item;(System.Int32,System.Xml.Serialization.XmlElementAttribute);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
/** Data flow for `System.Xml.Serialization.XmlSchemas`. */
|
||||
private class SystemXmlSerializationXmlSchemasFlowModelCsv extends SummaryModelCsv {
|
||||
override predicate row(string row) {
|
||||
row =
|
||||
[
|
||||
"System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Schema.XmlSchema);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Xml.Serialization;XmlSchemas;false;Add;(System.Xml.Serialization.XmlSchemas);;Argument[0];Element of Argument[-1];value",
|
||||
"System.Xml.Serialization;XmlSchemas;false;CopyTo;(System.Xml.Schema.XmlSchema[],System.Int32);;Element of Argument[-1];Element of Argument[0];value",
|
||||
"System.Xml.Serialization;XmlSchemas;false;Find;(System.Xml.XmlQualifiedName,System.Type);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Xml.Serialization;XmlSchemas;false;Insert;(System.Int32,System.Xml.Schema.XmlSchema);;Argument[1];Element of Argument[-1];value",
|
||||
"System.Xml.Serialization;XmlSchemas;false;get_Item;(System.Int32);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Xml.Serialization;XmlSchemas;false;get_Item;(System.String);;Element of Argument[-1];ReturnValue;value",
|
||||
"System.Xml.Serialization;XmlSchemas;false;set_Item;(System.Int32,System.Xml.Schema.XmlSchema);;Argument[1];Element of Argument[-1];value",
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -54,7 +54,7 @@ class ExternalAPIDataNode extends DataFlow::Node {
|
||||
// Defined outside the source archive
|
||||
not call.getTarget().fromSource() and
|
||||
// Not a call to a method which is overridden in source
|
||||
not exists(Virtualizable m |
|
||||
not exists(Overridable m |
|
||||
m.overridesOrImplementsOrEquals(call.getTarget().getUnboundDeclaration()) and
|
||||
m.fromSource()
|
||||
) and
|
||||
|
||||
@@ -75,7 +75,7 @@ class ExponentialRegexDataflow extends DataFlow2::Configuration {
|
||||
|
||||
/**
|
||||
* An expression passed as the `input` to a call to a `Regex` method, where the regex appears to
|
||||
* have exponential behaviour.
|
||||
* have exponential behavior.
|
||||
*/
|
||||
class ExponentialRegexSink extends DataFlow::ExprNode, Sink {
|
||||
ExponentialRegexSink() {
|
||||
|
||||
@@ -20,7 +20,7 @@ class Parameter extends Variable, @dotnet_parameter {
|
||||
/** Gets the position of this parameter, excluding the `this` parameter. */
|
||||
int getPosition() { this = this.getDeclaringElement().getParameter(result) }
|
||||
|
||||
/** Gets the callable defining this parameter. */
|
||||
/** Gets the callable defining this parameter, if any. */
|
||||
Callable getCallable() { result = this.getDeclaringElement() }
|
||||
|
||||
/** Gets the declaring `Parameterizable`. */
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user