Skip to content

Commit bce32b4

Browse files
committed
PS: Fixup libraries after github#20253.
1 parent bc99894 commit bce32b4

File tree

2 files changed

+30
-21
lines changed

2 files changed

+30
-21
lines changed

powershell/ql/lib/semmle/code/powershell/controlflow/BasicBlocks.qll

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ private import CfgNodes
66
private import SuccessorTypes
77
private import internal.ControlFlowGraphImpl as CfgImpl
88
private import CfgImpl::BasicBlocks as BasicBlocksImpl
9+
private import codeql.controlflow.BasicBlock as BB
910

1011
/**
1112
* A basic block, that is, a maximal straight-line sequence of control flow nodes
@@ -157,3 +158,23 @@ final class JoinBlockPredecessor extends BasicBlock, BasicBlocksImpl::JoinPredec
157158
* control flow.
158159
*/
159160
final class ConditionBlock extends BasicBlock, BasicBlocksImpl::ConditionBasicBlock { }
161+
162+
private class BasicBlockAlias = BasicBlock;
163+
164+
private class EntryBasicBlockAlias = EntryBasicBlock;
165+
166+
private class SuccessorTypeAlias = SuccessorType;
167+
168+
module Cfg implements BB::CfgSig<Location> {
169+
class ControlFlowNode = CfgNode;
170+
171+
class SuccessorType = SuccessorTypeAlias;
172+
173+
class BasicBlock = BasicBlockAlias;
174+
175+
class EntryBasicBlock = EntryBasicBlockAlias;
176+
177+
predicate dominatingEdge(BasicBlock bb1, BasicBlock bb2) {
178+
BasicBlocksImpl::dominatingEdge(bb1, bb2)
179+
}
180+
}

powershell/ql/lib/semmle/code/powershell/dataflow/internal/SsaImpl.qll

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,17 @@
11
private import codeql.ssa.Ssa as SsaImplCommon
22
private import powershell
33
private import semmle.code.powershell.Cfg as Cfg
4+
private import semmle.code.powershell.controlflow.BasicBlocks as BasicBlocks
45
private import semmle.code.powershell.controlflow.internal.ControlFlowGraphImpl as ControlFlowGraphImpl
56
private import semmle.code.powershell.dataflow.Ssa
67
import Cfg::CfgNodes
78
private import ExprNodes
89
private import StmtNodes
910

10-
module SsaInput implements SsaImplCommon::InputSig<Location> {
11-
private import semmle.code.powershell.controlflow.ControlFlowGraph as Cfg
12-
private import semmle.code.powershell.controlflow.BasicBlocks as BasicBlocks
13-
14-
class BasicBlock = BasicBlocks::BasicBlock;
15-
16-
class ControlFlowNode = Cfg::CfgNode;
17-
18-
BasicBlock getImmediateBasicBlockDominator(BasicBlock bb) { result = bb.getImmediateDominator() }
11+
private class BasicBlock = BasicBlocks::Cfg::BasicBlock;
1912

20-
BasicBlock getABasicBlockSuccessor(BasicBlock bb) { result = bb.getASuccessor() }
13+
module SsaInput implements SsaImplCommon::InputSig<Location, BasicBlock> {
14+
private import semmle.code.powershell.controlflow.ControlFlowGraph as Cfg
2115

2216
class SourceVariable = Variable;
2317

@@ -54,7 +48,7 @@ module SsaInput implements SsaImplCommon::InputSig<Location> {
5448
}
5549
}
5650

57-
import SsaImplCommon::Make<Location, SsaInput> as Impl
51+
import SsaImplCommon::Make<Location, BasicBlocks::Cfg, SsaInput> as Impl
5852

5953
class Definition = Impl::Definition;
6054

@@ -300,7 +294,7 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu
300294

301295
predicate isFinalEnvVarRead(Scope scope, EnvVariable v) { this = TFinalEnvVarRead(scope, v) }
302296

303-
predicate hasCfgNode(SsaInput::BasicBlock bb, int i) {
297+
predicate hasCfgNode(BasicBlock bb, int i) {
304298
this.asExprCfgNode() = bb.getNode(i)
305299
or
306300
exists(EnvVariable v |
@@ -341,19 +335,15 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu
341335
* and that the edge from `bb1` to `bb2` corresponds to the evaluation of this
342336
* guard to `branch`.
343337
*/
344-
predicate valueControlsBranchEdge(
345-
SsaInput::BasicBlock bb1, SsaInput::BasicBlock bb2, GuardValue branch
346-
) {
338+
predicate valueControlsBranchEdge(BasicBlock bb1, BasicBlock bb2, GuardValue branch) {
347339
this.hasValueBranchEdge(bb1, bb2, branch)
348340
}
349341

350342
/**
351343
* Holds if the evaluation of this guard to `branch` corresponds to the edge
352344
* from `bb1` to `bb2`.
353345
*/
354-
predicate hasValueBranchEdge(
355-
SsaInput::BasicBlock bb1, SsaInput::BasicBlock bb2, GuardValue branch
356-
) {
346+
predicate hasValueBranchEdge(BasicBlock bb1, BasicBlock bb2, GuardValue branch) {
357347
exists(Cfg::SuccessorTypes::ConditionalSuccessor s |
358348
this.getBasicBlock() = bb1 and
359349
bb2 = bb1.getASuccessor(s) and
@@ -363,9 +353,7 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu
363353
}
364354

365355
/** Holds if the guard `guard` controls block `bb` upon evaluating to `branch`. */
366-
predicate guardDirectlyControlsBlock(Guard guard, SsaInput::BasicBlock bb, GuardValue branch) {
367-
none()
368-
}
356+
predicate guardDirectlyControlsBlock(Guard guard, BasicBlock bb, GuardValue branch) { none() }
369357
}
370358

371359
private module DataFlowIntegrationImpl = Impl::DataFlowIntegration<DataFlowIntegrationInput>;

0 commit comments

Comments
 (0)