Skip to content

Commit b2512eb

Browse files
authored
Merge pull request #14678 from hvitved/csharp/mad-operator-fix
C#: Correctly parse operator names in MaD
2 parents dc8ca70 + af7b295 commit b2512eb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+6891
-68
lines changed

csharp/ql/lib/semmle/code/csharp/dataflow/ExternalFlow.qll renamed to csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -87,28 +87,16 @@
8787
*/
8888

8989
import csharp
90-
private import ExternalFlowExtensions as Extensions
91-
private import internal.AccessPathSyntax
92-
private import internal.DataFlowDispatch
93-
private import internal.DataFlowPrivate
94-
private import internal.DataFlowPublic
95-
private import internal.FlowSummaryImpl::Public
96-
private import internal.FlowSummaryImpl::Private::External
97-
private import internal.FlowSummaryImplSpecific
90+
import ExternalFlowExtensions
91+
private import AccessPathSyntax
92+
private import DataFlowDispatch
93+
private import DataFlowPrivate
94+
private import DataFlowPublic
95+
private import FlowSummaryImpl::Public
96+
private import FlowSummaryImpl::Private::External
97+
private import FlowSummaryImplSpecific
9898
private import codeql.mad.ModelValidation as SharedModelVal
9999

100-
/** Holds if a source model exists for the given parameters. */
101-
predicate sourceModel = Extensions::sourceModel/9;
102-
103-
/** Holds if a sink model exists for the given parameters. */
104-
predicate sinkModel = Extensions::sinkModel/9;
105-
106-
/** Holds if a summary model exists for the given parameters. */
107-
predicate summaryModel = Extensions::summaryModel/10;
108-
109-
/** Holds if a neutral model exists for the given parameters. */
110-
predicate neutralModel = Extensions::neutralModel/6;
111-
112100
private predicate relevantNamespace(string namespace) {
113101
sourceModel(namespace, _, _, _, _, _, _, _, _) or
114102
sinkModel(namespace, _, _, _, _, _, _, _, _) or
@@ -310,10 +298,17 @@ class UnboundCallable extends Callable {
310298
}
311299
}
312300

301+
private predicate hasName(Declaration d, string name) {
302+
d.(Operator).getFunctionName() = name
303+
or
304+
not d instanceof Operator and
305+
d.hasName(name)
306+
}
307+
313308
pragma[nomagic]
314309
private predicate callableSpecInfo(Callable c, string namespace, string type, string name) {
315310
c.getDeclaringType().hasQualifiedName(namespace, type) and
316-
c.getName() = name
311+
hasName(c, name)
317312
}
318313

319314
pragma[nomagic]
@@ -326,7 +321,7 @@ private predicate subtypeSpecCandidate(string name, UnboundValueOrRefType t) {
326321

327322
pragma[nomagic]
328323
private predicate callableInfo(Callable c, string name, UnboundValueOrRefType decl) {
329-
name = c.getName() and
324+
hasName(c, name) and
330325
decl = c.getDeclaringType()
331326
}
332327

@@ -387,7 +382,7 @@ private Element interpretElement0(
387382
subtypes = true and result.(UnboundCallable).overridesOrImplementsUnbound(m)
388383
) and
389384
m.getDeclaringType() = t and
390-
m.hasName(name)
385+
hasName(m, name)
391386
|
392387
signature = ""
393388
or

csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImplSpecific.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ private import DataFlowImplCommon
1212
private import FlowSummaryImpl::Private
1313
private import FlowSummaryImpl::Public
1414
private import semmle.code.csharp.Unification
15-
private import semmle.code.csharp.dataflow.ExternalFlow
15+
private import ExternalFlow
1616
private import semmle.code.csharp.dataflow.FlowSummary as FlowSummary
1717

1818
/**

csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*/
55

66
import csharp
7-
private import semmle.code.csharp.dataflow.ExternalFlow
7+
private import semmle.code.csharp.dataflow.internal.ExternalFlow
88

99
module HardcodedSymmetricEncryptionKey {
1010
private import semmle.code.csharp.frameworks.system.security.cryptography.SymmetricAlgorithm

csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ private import semmle.code.csharp.security.dataflow.flowsources.Remote
77
private import semmle.code.csharp.security.dataflow.flowsources.Local
88
private import semmle.code.csharp.frameworks.system.codedom.Compiler
99
private import semmle.code.csharp.security.Sanitizers
10-
private import semmle.code.csharp.dataflow.ExternalFlow
10+
private import semmle.code.csharp.dataflow.internal.ExternalFlow
1111

1212
/**
1313
* A data flow source for user input treated as code vulnerabilities.

csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import csharp
66
private import semmle.code.csharp.security.dataflow.flowsources.Remote
77
private import semmle.code.csharp.frameworks.system.Diagnostics
88
private import semmle.code.csharp.security.Sanitizers
9-
private import semmle.code.csharp.dataflow.ExternalFlow
9+
private import semmle.code.csharp.dataflow.internal.ExternalFlow
1010

1111
/**
1212
* A source specific to command injection vulnerabilities.

csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ private import semmle.code.csharp.security.dataflow.flowsources.Remote
88
private import semmle.code.csharp.frameworks.system.DirectoryServices
99
private import semmle.code.csharp.frameworks.system.directoryservices.Protocols
1010
private import semmle.code.csharp.security.Sanitizers
11-
private import semmle.code.csharp.dataflow.ExternalFlow
11+
private import semmle.code.csharp.dataflow.internal.ExternalFlow
1212

1313
/**
1414
* A data flow source for unvalidated user input that is used to construct LDAP queries.

csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ private import semmle.code.csharp.frameworks.System
88
private import semmle.code.csharp.frameworks.system.text.RegularExpressions
99
private import semmle.code.csharp.security.Sanitizers
1010
private import semmle.code.csharp.security.dataflow.flowsinks.ExternalLocationSink
11-
private import semmle.code.csharp.dataflow.ExternalFlow
11+
private import semmle.code.csharp.dataflow.internal.ExternalFlow
1212

1313
/**
1414
* A data flow source for untrusted user input used in log entries.

csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ private import semmle.code.csharp.security.dataflow.flowsources.Remote
77
private import semmle.code.csharp.security.dataflow.flowsources.Local
88
private import semmle.code.csharp.frameworks.Sql
99
private import semmle.code.csharp.security.Sanitizers
10-
private import semmle.code.csharp.dataflow.ExternalFlow
10+
private import semmle.code.csharp.dataflow.internal.ExternalFlow
1111

1212
/**
1313
* A source specific to SQL injection vulnerabilities.

csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ private import semmle.code.csharp.frameworks.system.Web
99
private import semmle.code.csharp.frameworks.system.web.Mvc
1010
private import semmle.code.csharp.security.Sanitizers
1111
private import semmle.code.csharp.frameworks.microsoft.AspNetCore
12-
private import semmle.code.csharp.dataflow.ExternalFlow
12+
private import semmle.code.csharp.dataflow.internal.ExternalFlow
1313

1414
/**
1515
* A data flow source for unvalidated URL redirect vulnerabilities.

csharp/ql/lib/semmle/code/csharp/security/dataflow/XSSSinks.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ private import semmle.code.csharp.frameworks.system.Web
99
private import semmle.code.csharp.frameworks.system.web.UI
1010
private import semmle.code.csharp.security.dataflow.flowsinks.Html
1111
private import semmle.code.csharp.security.dataflow.flowsinks.Remote
12-
private import semmle.code.csharp.dataflow.ExternalFlow
12+
private import semmle.code.csharp.dataflow.internal.ExternalFlow
1313
private import semmle.code.csharp.frameworks.ServiceStack::XSS
1414

1515
/**

csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsinks/ExternalLocationSink.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ private import Remote
77
private import semmle.code.csharp.commons.Loggers
88
private import semmle.code.csharp.frameworks.system.Web
99
private import semmle.code.csharp.frameworks.system.IO
10-
private import semmle.code.csharp.dataflow.ExternalFlow
10+
private import semmle.code.csharp.dataflow.internal.ExternalFlow
1111

1212
/**
1313
* An external location sink.

csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsinks/Html.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ private import semmle.code.csharp.frameworks.system.web.UI
1313
private import semmle.code.csharp.frameworks.system.web.ui.WebControls
1414
private import semmle.code.csharp.frameworks.system.windows.Forms
1515
private import semmle.code.csharp.security.dataflow.flowsources.Remote
16-
private import semmle.code.csharp.dataflow.ExternalFlow
16+
private import semmle.code.csharp.dataflow.internal.ExternalFlow
1717
private import semmle.code.asp.AspNet
1818

1919
/**

csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Local.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import csharp
66
private import semmle.code.csharp.frameworks.system.windows.Forms
7-
private import semmle.code.csharp.dataflow.ExternalFlow
7+
private import semmle.code.csharp.dataflow.internal.ExternalFlow
88

99
/** A data flow source of local data. */
1010
abstract class LocalFlowSource extends DataFlow::Node {

csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Remote.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ private import semmle.code.csharp.frameworks.system.web.ui.WebControls
1212
private import semmle.code.csharp.frameworks.WCF
1313
private import semmle.code.csharp.frameworks.microsoft.Owin
1414
private import semmle.code.csharp.frameworks.microsoft.AspNetCore
15-
private import semmle.code.csharp.dataflow.ExternalFlow
15+
private import semmle.code.csharp.dataflow.internal.ExternalFlow
1616

1717
/** A data flow source of remote user input. */
1818
abstract class RemoteFlowSource extends DataFlow::Node {

csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Stored.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44

55
import csharp
6-
private import semmle.code.csharp.dataflow.ExternalFlow
6+
private import semmle.code.csharp.dataflow.internal.ExternalFlow
77
private import semmle.code.csharp.frameworks.system.data.Common
88
private import semmle.code.csharp.frameworks.system.data.Entity
99
private import semmle.code.csharp.frameworks.EntityFramework

csharp/ql/src/Metrics/Summaries/FrameworkCoverage.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*/
88

99
import csharp
10-
import semmle.code.csharp.dataflow.ExternalFlow
10+
import semmle.code.csharp.dataflow.internal.ExternalFlow
1111

1212
from string namespaceAndType, int rows
1313
where

csharp/ql/src/Telemetry/ExternalApi.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
private import csharp
44
private import semmle.code.csharp.dispatch.Dispatch
5-
private import semmle.code.csharp.dataflow.ExternalFlow
65
private import semmle.code.csharp.dataflow.FlowSummary
76
private import semmle.code.csharp.dataflow.internal.DataFlowPrivate
87
private import semmle.code.csharp.dataflow.internal.DataFlowDispatch as DataFlowDispatch
8+
private import semmle.code.csharp.dataflow.internal.ExternalFlow
99
private import semmle.code.csharp.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl
1010
private import semmle.code.csharp.dataflow.internal.TaintTrackingPrivate
1111
private import semmle.code.csharp.security.dataflow.flowsources.Remote

csharp/ql/src/meta/frameworks/Coverage.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*/
88

99
import csharp
10-
import semmle.code.csharp.dataflow.ExternalFlow
10+
import semmle.code.csharp.dataflow.internal.ExternalFlow
1111

1212
from string namespace, int pkgs, string kind, string part, int n
1313
where modelCoverage(namespace, pkgs, kind, part, n)

csharp/ql/src/utils/modelconverter/ExtractNeutrals.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66

77
import csharp
8-
import semmle.code.csharp.dataflow.ExternalFlow
8+
import semmle.code.csharp.dataflow.internal.ExternalFlow
99

1010
from string package, string type, string name, string signature, string kind, string provenance
1111
where

csharp/ql/src/utils/modelconverter/ExtractSinks.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66

77
import csharp
8-
import semmle.code.csharp.dataflow.ExternalFlow
8+
import semmle.code.csharp.dataflow.internal.ExternalFlow
99

1010
from
1111
string namespace, string type, boolean subtypes, string name, string signature, string ext,

csharp/ql/src/utils/modelconverter/ExtractSources.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66

77
import csharp
8-
import semmle.code.csharp.dataflow.ExternalFlow
8+
import semmle.code.csharp.dataflow.internal.ExternalFlow
99

1010
from
1111
string namespace, string type, boolean subtypes, string name, string signature, string ext,

csharp/ql/src/utils/modelconverter/ExtractSummaries.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66

77
import csharp
8-
import semmle.code.csharp.dataflow.ExternalFlow
8+
import semmle.code.csharp.dataflow.internal.ExternalFlow
99

1010
from
1111
string namespace, string type, boolean subtypes, string name, string signature, string ext,

csharp/ql/src/utils/modeleditor/ApplicationModeEndpointsQuery.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
private import csharp
2-
private import semmle.code.csharp.dataflow.ExternalFlow
2+
private import semmle.code.csharp.dataflow.internal.ExternalFlow
33
private import semmle.code.csharp.dataflow.internal.DataFlowDispatch as DataFlowDispatch
44
private import semmle.code.csharp.dataflow.internal.DataFlowPrivate
55
private import semmle.code.csharp.dataflow.internal.TaintTrackingPrivate

csharp/ql/src/utils/modeleditor/FrameworkModeEndpointsQuery.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
private import csharp
2-
private import semmle.code.csharp.dataflow.ExternalFlow
2+
private import semmle.code.csharp.dataflow.internal.ExternalFlow
33
private import semmle.code.csharp.frameworks.Test
44
private import ModelEditor
55

csharp/ql/src/utils/modelgenerator/internal/CaptureModelsSpecific.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ private import semmle.code.csharp.commons.Util as Util
88
private import semmle.code.csharp.commons.Collections as Collections
99
private import semmle.code.csharp.dataflow.internal.DataFlowDispatch
1010
private import semmle.code.csharp.frameworks.system.linq.Expressions
11-
import semmle.code.csharp.dataflow.ExternalFlow as ExternalFlow
11+
import semmle.code.csharp.dataflow.internal.ExternalFlow as ExternalFlow
1212
import semmle.code.csharp.dataflow.internal.DataFlowImplCommon as DataFlowImplCommon
1313
import semmle.code.csharp.dataflow.internal.DataFlowPrivate as DataFlowPrivate
1414

csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44

55
import csharp
6-
import semmle.code.csharp.dataflow.ExternalFlow
6+
import semmle.code.csharp.dataflow.internal.ExternalFlow
77
import Taint::PathGraph
88
import ModelValidation
99

csharp/ql/test/library-tests/dataflow/external-models/sinks.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import csharp
22
import DataFlow
3-
import semmle.code.csharp.dataflow.ExternalFlow
3+
import semmle.code.csharp.dataflow.internal.ExternalFlow
44
import ModelValidation
55

66
from DataFlow::Node node, string kind

csharp/ql/test/library-tests/dataflow/external-models/srcs.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import csharp
22
import DataFlow
3-
import semmle.code.csharp.dataflow.ExternalFlow
3+
import semmle.code.csharp.dataflow.internal.ExternalFlow
44
import ModelValidation
55

66
from DataFlow::Node node, string kind

csharp/ql/test/library-tests/dataflow/external-models/steps.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import csharp
22
import DataFlow
3-
import semmle.code.csharp.dataflow.ExternalFlow
3+
import semmle.code.csharp.dataflow.internal.ExternalFlow
44
import ModelValidation
55
import semmle.code.csharp.dataflow.FlowSummary
66
import semmle.code.csharp.dataflow.internal.DataFlowDispatch as DataFlowDispatch

csharp/ql/test/library-tests/dataflow/external-models/validatemodels.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import csharp
2-
import semmle.code.csharp.dataflow.ExternalFlow
2+
import semmle.code.csharp.dataflow.internal.ExternalFlow
33
import semmle.code.csharp.dataflow.internal.AccessPathSyntax
44
import ModelValidation
55

0 commit comments

Comments
 (0)