diff --git a/ruby/ql/lib/codeql/ruby/frameworks/core/Kernel.qll b/ruby/ql/lib/codeql/ruby/frameworks/core/Kernel.qll index cc3ce9feb97..96568e74902 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/core/Kernel.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/core/Kernel.qll @@ -135,11 +135,8 @@ module Kernel { * spawn([env,] command... [,options]) -> pid * ``` */ - class KernelSpawnCall extends SystemCommandExecution::Range instanceof DataFlow::CallNode { - KernelSpawnCall() { - this.getMethodName() = "spawn" and - this instanceof KernelMethodCall - } + class KernelSpawnCall extends SystemCommandExecution::Range instanceof KernelMethodCall { + KernelSpawnCall() { this.getMethodName() = "spawn" } override DataFlow::Node getAnArgument() { result = super.getArgument(_) } diff --git a/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll b/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll index f2eb16d2aa8..16b9ecc3797 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll @@ -31,6 +31,11 @@ module Open3 { } } + /** + * A system command executed via one of the `Open4` methods. + * These methods take the same argument forms as `Kernel.system`. + * See `KernelSystemCall` for details. + */ class Open4Call extends SystemCommandExecution::Range instanceof DataFlow::CallNode { Open4Call() { this = API::getTopLevelMember("Open4").getAMethodCall(["open4", "popen4", "spawn"])