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.

0 commit comments

Comments
 (0)