diff --git a/javascript/ql/src/semmle/javascript/dataflow/Nodes.qll b/javascript/ql/src/semmle/javascript/dataflow/Nodes.qll index c988bc9362e..f1914e3986d 100644 --- a/javascript/ql/src/semmle/javascript/dataflow/Nodes.qll +++ b/javascript/ql/src/semmle/javascript/dataflow/Nodes.qll @@ -157,10 +157,12 @@ class InvokeNode extends DataFlow::SourceNode { * `name` is set to `result`. */ DataFlow::ValueNode getOptionArgument(int i, string name) { - exists(ObjectLiteralNode obj | - obj.flowsTo(getArgument(i)) and - obj.hasPropertyWrite(name, result) - ) + getOptionsArgument(i).hasPropertyWrite(name, result) + } + + pragma[noinline] + private ObjectLiteralNode getOptionsArgument(int i) { + result.flowsTo(getArgument(i)) } /** Gets an abstract value representing possible callees of this call site. */