Files
codeql/java/ql/lib/semmle/code/java/frameworks/Rmi.qll
2023-06-30 11:09:29 -07:00

20 lines
553 B
Plaintext

/** Remote Method Invocation. */
import java
/** The interface `java.rmi.Remote`. */
class TypeRemote extends RefType {
TypeRemote() { this.hasQualifiedName("java.rmi", "Remote") }
}
/** A method that is intended to be called via RMI. */
class RemoteCallableMethod extends Method {
RemoteCallableMethod() { remoteCallableMethod(this) }
}
private predicate remoteCallableMethod(Method method) {
method.getDeclaringType().getASupertype() instanceof TypeRemote
or
exists(Method meth | remoteCallableMethod(meth) and method.overrides(meth))
}