From efa438a352d8f3dde7ea6516ef089e2eb6f8cb86 Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 19 Nov 2025 13:47:30 +0100 Subject: [PATCH] JS: Move identityFunctionStep back into CachedSteps module --- .../dataflow/internal/FlowSteps.qll | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll index 0f5eff53258..2d199887296 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/FlowSteps.qll @@ -520,23 +520,23 @@ private module CachedSteps { predicate receiverPropWrite(Function f, string prop, DataFlow::Node rhs) { DataFlow::thisNode(f).hasPropertyWrite(prop, rhs) } + + /** + * Holds if there is a step from `pred` to `succ` through a call to an identity function. + */ + overlay[local] + cached + predicate identityFunctionStep(DataFlow::Node pred, DataFlow::CallNode succ) { + exists(DataFlow::GlobalVarRefNode global | + global.getName() = "Object" and + succ.(DataFlow::MethodCallNode).calls(global, ["freeze", "seal"]) and + pred = succ.getArgument(0) + ) + } } import CachedSteps -/** - * Holds if there is a step from `pred` to `succ` through a call to an identity function. - */ -overlay[local] -cached -predicate identityFunctionStep(DataFlow::Node pred, DataFlow::CallNode succ) { - exists(DataFlow::GlobalVarRefNode global | - global.getName() = "Object" and - succ.(DataFlow::MethodCallNode).calls(global, ["freeze", "seal"]) and - pred = succ.getArgument(0) - ) -} - /** * A utility class that is equivalent to `boolean` but does not require type joining. */