Merge pull request #17604 from aschackmull/java/neutral-overrides

Java/C#: Add overrides to the interpretation of neutral MaD models.
This commit is contained in:
Anders Schack-Mulligen
2024-10-01 14:55:54 +02:00
committed by GitHub
7 changed files with 1204 additions and 6 deletions

View File

@@ -212,7 +212,6 @@ extensions:
- ["java.lang", "Object", "equals", "(Object)", "summary", "manual"]
- ["java.lang", "Object", "getClass", "()", "summary", "manual"]
- ["java.lang", "Object", "hashCode", "()", "summary", "manual"]
- ["java.lang", "Object", "toString", "()", "summary", "manual"]
- ["java.lang", "Runtime", "getRuntime", "()", "summary", "manual"]
- ["java.lang", "String", "compareTo", "(String)", "summary", "manual"]
- ["java.lang", "String", "contains", "(CharSequence)", "summary", "manual"]

View File

@@ -416,7 +416,7 @@ private predicate elementSpec(
or
summaryModel(package, type, subtypes, name, signature, ext, _, _, _, _, _)
or
neutralModel(package, type, name, signature, _, _) and ext = "" and subtypes = false
neutralModel(package, type, name, signature, _, _) and ext = "" and subtypes = true
}
private string getNestedName(Type t) {

View File

@@ -34,7 +34,7 @@ module Input implements InputSig<Location, DataFlowImplSpecific::JavaDataFlow> {
) {
exists(string namespace, string type, string name, string signature |
neutralModel(namespace, type, name, signature, kind, provenance) and
c.asCallable() = interpretElement(namespace, type, false, name, signature, "", isExact)
c.asCallable() = interpretElement(namespace, type, true, name, signature, "", isExact)
)
}

View File

@@ -77,7 +77,7 @@ class Endpoint extends Callable {
predicate isNeutral() {
exists(string namespace, string type, string name, string signature |
neutralModel(namespace, type, name, signature, _, _) and
this = interpretElement(namespace, type, false, name, signature, "", _)
this = interpretElement(namespace, type, true, name, signature, "", _)
)
}

View File

@@ -1,3 +1,4 @@
| java.lang.Object#toString() | no manual model |
| java.lang.Runnable#run() | no manual model |
| java.util.Comparator#comparing(Function) | no manual model |
| java.util.function.BiConsumer#accept(Object,Object) | no manual model |