Skip to content

Commit 933d2fb

Browse files
committed
Dataflow: Replace RevPartialAccessPath with the now identical PartialAccessPath.
1 parent 2cf58fc commit 933d2fb

File tree

1 file changed

+24
-58
lines changed

1 file changed

+24
-58
lines changed

java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll

Lines changed: 24 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -3936,40 +3936,6 @@ module Impl<FullStateConfigSig Config> {
39363936
}
39373937
}
39383938

3939-
private newtype TRevPartialAccessPath =
3940-
TRevPartialNil() or
3941-
TRevPartialCons(Content c, int len) { len in [1 .. accessPathLimit()] }
3942-
3943-
/**
3944-
* Conceptually a list of `Content`s, but only the first
3945-
* element of the list and its length are tracked.
3946-
*/
3947-
private class RevPartialAccessPath extends TRevPartialAccessPath {
3948-
abstract string toString();
3949-
3950-
Content getHead() { this = TRevPartialCons(result, _) }
3951-
3952-
int len() {
3953-
this = TRevPartialNil() and result = 0
3954-
or
3955-
this = TRevPartialCons(_, result)
3956-
}
3957-
}
3958-
3959-
private class RevPartialAccessPathNil extends RevPartialAccessPath, TRevPartialNil {
3960-
override string toString() { result = "" }
3961-
}
3962-
3963-
private class RevPartialAccessPathCons extends RevPartialAccessPath, TRevPartialCons {
3964-
override string toString() {
3965-
exists(Content c, int len | this = TRevPartialCons(c, len) |
3966-
if len = 1
3967-
then result = "[" + c.toString() + "]"
3968-
else result = "[" + c.toString() + ", ... (" + len.toString() + ")]"
3969-
)
3970-
}
3971-
}
3972-
39733939
private predicate relevantState(FlowState state) {
39743940
sourceNode(_, state) or
39753941
sinkNode(_, state) or
@@ -4005,7 +3971,7 @@ module Impl<FullStateConfigSig Config> {
40053971

40063972
private newtype TRevSummaryCtx3 =
40073973
TRevSummaryCtx3None() or
4008-
TRevSummaryCtx3Some(RevPartialAccessPath ap)
3974+
TRevSummaryCtx3Some(PartialAccessPath ap)
40093975

40103976
private newtype TPartialPathNode =
40113977
TPartialPathNodeFwd(
@@ -4027,13 +3993,13 @@ module Impl<FullStateConfigSig Config> {
40273993
} or
40283994
TPartialPathNodeRev(
40293995
NodeEx node, FlowState state, TRevSummaryCtx1 sc1, TRevSummaryCtx2 sc2, TRevSummaryCtx3 sc3,
4030-
RevPartialAccessPath ap
3996+
PartialAccessPath ap
40313997
) {
40323998
sinkNode(node, state) and
40333999
sc1 = TRevSummaryCtx1None() and
40344000
sc2 = TRevSummaryCtx2None() and
40354001
sc3 = TRevSummaryCtx3None() and
4036-
ap = TRevPartialNil() and
4002+
ap = TPartialNil() and
40374003
exists(explorationLimit())
40384004
or
40394005
revPartialPathStep(_, node, state, sc1, sc2, sc3, ap) and
@@ -4208,7 +4174,7 @@ module Impl<FullStateConfigSig Config> {
42084174
TRevSummaryCtx1 sc1;
42094175
TRevSummaryCtx2 sc2;
42104176
TRevSummaryCtx3 sc3;
4211-
RevPartialAccessPath ap;
4177+
PartialAccessPath ap;
42124178

42134179
PartialPathNodeRev() { this = TPartialPathNodeRev(node, state, sc1, sc2, sc3, ap) }
42144180

@@ -4222,7 +4188,7 @@ module Impl<FullStateConfigSig Config> {
42224188

42234189
TRevSummaryCtx3 getSummaryCtx3() { result = sc3 }
42244190

4225-
RevPartialAccessPath getAp() { result = ap }
4191+
PartialAccessPath getAp() { result = ap }
42264192

42274193
override PartialPathNodeRev getASuccessor() {
42284194
revPartialPathStep(result, this.getNodeEx(), this.getState(), this.getSummaryCtx1(),
@@ -4234,7 +4200,7 @@ module Impl<FullStateConfigSig Config> {
42344200
sc1 = TRevSummaryCtx1None() and
42354201
sc2 = TRevSummaryCtx2None() and
42364202
sc3 = TRevSummaryCtx3None() and
4237-
ap = TRevPartialNil()
4203+
ap = TPartialNil()
42384204
}
42394205
}
42404206

@@ -4501,7 +4467,7 @@ module Impl<FullStateConfigSig Config> {
45014467
pragma[nomagic]
45024468
private predicate revPartialPathStep(
45034469
PartialPathNodeRev mid, NodeEx node, FlowState state, TRevSummaryCtx1 sc1,
4504-
TRevSummaryCtx2 sc2, TRevSummaryCtx3 sc3, RevPartialAccessPath ap
4470+
TRevSummaryCtx2 sc2, TRevSummaryCtx3 sc3, PartialAccessPath ap
45054471
) {
45064472
localFlowStepEx(node, mid.getNodeEx()) and
45074473
state = mid.getState() and
@@ -4515,15 +4481,15 @@ module Impl<FullStateConfigSig Config> {
45154481
sc1 = mid.getSummaryCtx1() and
45164482
sc2 = mid.getSummaryCtx2() and
45174483
sc3 = mid.getSummaryCtx3() and
4518-
mid.getAp() instanceof RevPartialAccessPathNil and
4519-
ap = TRevPartialNil()
4484+
mid.getAp() instanceof PartialAccessPathNil and
4485+
ap = TPartialNil()
45204486
or
45214487
additionalLocalStateStep(node, state, mid.getNodeEx(), mid.getState()) and
45224488
sc1 = mid.getSummaryCtx1() and
45234489
sc2 = mid.getSummaryCtx2() and
45244490
sc3 = mid.getSummaryCtx3() and
4525-
mid.getAp() instanceof RevPartialAccessPathNil and
4526-
ap = TRevPartialNil()
4491+
mid.getAp() instanceof PartialAccessPathNil and
4492+
ap = TPartialNil()
45274493
or
45284494
jumpStepEx(node, mid.getNodeEx()) and
45294495
state = mid.getState() and
@@ -4537,23 +4503,23 @@ module Impl<FullStateConfigSig Config> {
45374503
sc1 = TRevSummaryCtx1None() and
45384504
sc2 = TRevSummaryCtx2None() and
45394505
sc3 = TRevSummaryCtx3None() and
4540-
mid.getAp() instanceof RevPartialAccessPathNil and
4541-
ap = TRevPartialNil()
4506+
mid.getAp() instanceof PartialAccessPathNil and
4507+
ap = TPartialNil()
45424508
or
45434509
additionalJumpStateStep(node, state, mid.getNodeEx(), mid.getState()) and
45444510
sc1 = TRevSummaryCtx1None() and
45454511
sc2 = TRevSummaryCtx2None() and
45464512
sc3 = TRevSummaryCtx3None() and
4547-
mid.getAp() instanceof RevPartialAccessPathNil and
4548-
ap = TRevPartialNil()
4513+
mid.getAp() instanceof PartialAccessPathNil and
4514+
ap = TPartialNil()
45494515
or
45504516
revPartialPathReadStep(mid, _, _, node, ap) and
45514517
state = mid.getState() and
45524518
sc1 = mid.getSummaryCtx1() and
45534519
sc2 = mid.getSummaryCtx2() and
45544520
sc3 = mid.getSummaryCtx3()
45554521
or
4556-
exists(RevPartialAccessPath ap0, Content c |
4522+
exists(PartialAccessPath ap0, Content c |
45574523
revPartialPathStoreStep(mid, ap0, c, node) and
45584524
state = mid.getState() and
45594525
sc1 = mid.getSummaryCtx1() and
@@ -4588,8 +4554,8 @@ module Impl<FullStateConfigSig Config> {
45884554

45894555
pragma[inline]
45904556
private predicate revPartialPathReadStep(
4591-
PartialPathNodeRev mid, RevPartialAccessPath ap1, Content c, NodeEx node,
4592-
RevPartialAccessPath ap2
4557+
PartialPathNodeRev mid, PartialAccessPath ap1, Content c, NodeEx node,
4558+
PartialAccessPath ap2
45934559
) {
45944560
exists(NodeEx midNode |
45954561
midNode = mid.getNodeEx() and
@@ -4601,13 +4567,13 @@ module Impl<FullStateConfigSig Config> {
46014567
}
46024568

46034569
pragma[nomagic]
4604-
private predicate apConsRev(RevPartialAccessPath ap1, Content c, RevPartialAccessPath ap2) {
4570+
private predicate apConsRev(PartialAccessPath ap1, Content c, PartialAccessPath ap2) {
46054571
revPartialPathReadStep(_, ap1, c, _, ap2)
46064572
}
46074573

46084574
pragma[nomagic]
46094575
private predicate revPartialPathStoreStep(
4610-
PartialPathNodeRev mid, RevPartialAccessPath ap, Content c, NodeEx node
4576+
PartialPathNodeRev mid, PartialAccessPath ap, Content c, NodeEx node
46114577
) {
46124578
exists(NodeEx midNode |
46134579
midNode = mid.getNodeEx() and
@@ -4620,7 +4586,7 @@ module Impl<FullStateConfigSig Config> {
46204586
pragma[nomagic]
46214587
private predicate revPartialPathIntoReturn(
46224588
PartialPathNodeRev mid, ReturnPosition pos, FlowState state, TRevSummaryCtx1Some sc1,
4623-
TRevSummaryCtx2Some sc2, TRevSummaryCtx3Some sc3, DataFlowCall call, RevPartialAccessPath ap
4589+
TRevSummaryCtx2Some sc2, TRevSummaryCtx3Some sc3, DataFlowCall call, PartialAccessPath ap
46244590
) {
46254591
exists(NodeEx out |
46264592
mid.getNodeEx() = out and
@@ -4636,7 +4602,7 @@ module Impl<FullStateConfigSig Config> {
46364602
pragma[nomagic]
46374603
private predicate revPartialPathFlowsThrough(
46384604
ArgumentPosition apos, FlowState state, TRevSummaryCtx1Some sc1, TRevSummaryCtx2Some sc2,
4639-
TRevSummaryCtx3Some sc3, RevPartialAccessPath ap
4605+
TRevSummaryCtx3Some sc3, PartialAccessPath ap
46404606
) {
46414607
exists(PartialPathNodeRev mid, ParamNodeEx p, ParameterPosition ppos |
46424608
mid.getNodeEx() = p and
@@ -4653,7 +4619,7 @@ module Impl<FullStateConfigSig Config> {
46534619
pragma[nomagic]
46544620
private predicate revPartialPathThroughCallable0(
46554621
DataFlowCall call, PartialPathNodeRev mid, ArgumentPosition pos, FlowState state,
4656-
RevPartialAccessPath ap
4622+
PartialAccessPath ap
46574623
) {
46584624
exists(TRevSummaryCtx1Some sc1, TRevSummaryCtx2Some sc2, TRevSummaryCtx3Some sc3 |
46594625
revPartialPathIntoReturn(mid, _, _, sc1, sc2, sc3, call, _) and
@@ -4663,7 +4629,7 @@ module Impl<FullStateConfigSig Config> {
46634629

46644630
pragma[nomagic]
46654631
private predicate revPartialPathThroughCallable(
4666-
PartialPathNodeRev mid, ArgNodeEx node, FlowState state, RevPartialAccessPath ap
4632+
PartialPathNodeRev mid, ArgNodeEx node, FlowState state, PartialAccessPath ap
46674633
) {
46684634
exists(DataFlowCall call, ArgumentPosition pos |
46694635
revPartialPathThroughCallable0(call, mid, pos, state, ap) and

0 commit comments

Comments
 (0)