Skip to content

Commit e0e3a1d

Browse files
committed
Dataflow: remove revFlowApAlias trick
1 parent 9630feb commit e0e3a1d

File tree

8 files changed

+16
-72
lines changed

8 files changed

+16
-72
lines changed

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

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,20 +1144,13 @@ module Impl<FullStateConfigSig Config> {
11441144
module Stage<StageParam Param> implements StageSig {
11451145
import Param
11461146

1147-
/* Begin: Stage logic. */
1148-
// use an alias as a workaround for bad functionality-induced joins
1149-
pragma[nomagic]
1150-
private predicate revFlowApAlias(NodeEx node, ApApprox apa) {
1151-
PrevStage::revFlowAp(node, apa)
1152-
}
1153-
11541147
pragma[nomagic]
11551148
private predicate flowIntoCallApa(
11561149
DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, ApApprox apa
11571150
) {
11581151
flowIntoCall(call, arg, p, allowsFieldFlow) and
11591152
PrevStage::revFlowAp(p, pragma[only_bind_into](apa)) and
1160-
revFlowApAlias(arg, pragma[only_bind_into](apa))
1153+
PrevStage::revFlowAp(arg, pragma[only_bind_into](apa))
11611154
}
11621155

11631156
pragma[nomagic]
@@ -1167,7 +1160,7 @@ module Impl<FullStateConfigSig Config> {
11671160
) {
11681161
flowOutOfCall(call, ret, kind, out, allowsFieldFlow) and
11691162
PrevStage::revFlowAp(out, pragma[only_bind_into](apa)) and
1170-
revFlowApAlias(ret, pragma[only_bind_into](apa))
1163+
PrevStage::revFlowAp(ret, pragma[only_bind_into](apa))
11711164
}
11721165

11731166
pragma[nomagic]

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,20 +1144,13 @@ module Impl<FullStateConfigSig Config> {
11441144
module Stage<StageParam Param> implements StageSig {
11451145
import Param
11461146

1147-
/* Begin: Stage logic. */
1148-
// use an alias as a workaround for bad functionality-induced joins
1149-
pragma[nomagic]
1150-
private predicate revFlowApAlias(NodeEx node, ApApprox apa) {
1151-
PrevStage::revFlowAp(node, apa)
1152-
}
1153-
11541147
pragma[nomagic]
11551148
private predicate flowIntoCallApa(
11561149
DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, ApApprox apa
11571150
) {
11581151
flowIntoCall(call, arg, p, allowsFieldFlow) and
11591152
PrevStage::revFlowAp(p, pragma[only_bind_into](apa)) and
1160-
revFlowApAlias(arg, pragma[only_bind_into](apa))
1153+
PrevStage::revFlowAp(arg, pragma[only_bind_into](apa))
11611154
}
11621155

11631156
pragma[nomagic]
@@ -1167,7 +1160,7 @@ module Impl<FullStateConfigSig Config> {
11671160
) {
11681161
flowOutOfCall(call, ret, kind, out, allowsFieldFlow) and
11691162
PrevStage::revFlowAp(out, pragma[only_bind_into](apa)) and
1170-
revFlowApAlias(ret, pragma[only_bind_into](apa))
1163+
PrevStage::revFlowAp(ret, pragma[only_bind_into](apa))
11711164
}
11721165

11731166
pragma[nomagic]

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

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,20 +1144,13 @@ module Impl<FullStateConfigSig Config> {
11441144
module Stage<StageParam Param> implements StageSig {
11451145
import Param
11461146

1147-
/* Begin: Stage logic. */
1148-
// use an alias as a workaround for bad functionality-induced joins
1149-
pragma[nomagic]
1150-
private predicate revFlowApAlias(NodeEx node, ApApprox apa) {
1151-
PrevStage::revFlowAp(node, apa)
1152-
}
1153-
11541147
pragma[nomagic]
11551148
private predicate flowIntoCallApa(
11561149
DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, ApApprox apa
11571150
) {
11581151
flowIntoCall(call, arg, p, allowsFieldFlow) and
11591152
PrevStage::revFlowAp(p, pragma[only_bind_into](apa)) and
1160-
revFlowApAlias(arg, pragma[only_bind_into](apa))
1153+
PrevStage::revFlowAp(arg, pragma[only_bind_into](apa))
11611154
}
11621155

11631156
pragma[nomagic]
@@ -1167,7 +1160,7 @@ module Impl<FullStateConfigSig Config> {
11671160
) {
11681161
flowOutOfCall(call, ret, kind, out, allowsFieldFlow) and
11691162
PrevStage::revFlowAp(out, pragma[only_bind_into](apa)) and
1170-
revFlowApAlias(ret, pragma[only_bind_into](apa))
1163+
PrevStage::revFlowAp(ret, pragma[only_bind_into](apa))
11711164
}
11721165

11731166
pragma[nomagic]

go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl.qll

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,20 +1144,13 @@ module Impl<FullStateConfigSig Config> {
11441144
module Stage<StageParam Param> implements StageSig {
11451145
import Param
11461146

1147-
/* Begin: Stage logic. */
1148-
// use an alias as a workaround for bad functionality-induced joins
1149-
pragma[nomagic]
1150-
private predicate revFlowApAlias(NodeEx node, ApApprox apa) {
1151-
PrevStage::revFlowAp(node, apa)
1152-
}
1153-
11541147
pragma[nomagic]
11551148
private predicate flowIntoCallApa(
11561149
DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, ApApprox apa
11571150
) {
11581151
flowIntoCall(call, arg, p, allowsFieldFlow) and
11591152
PrevStage::revFlowAp(p, pragma[only_bind_into](apa)) and
1160-
revFlowApAlias(arg, pragma[only_bind_into](apa))
1153+
PrevStage::revFlowAp(arg, pragma[only_bind_into](apa))
11611154
}
11621155

11631156
pragma[nomagic]
@@ -1167,7 +1160,7 @@ module Impl<FullStateConfigSig Config> {
11671160
) {
11681161
flowOutOfCall(call, ret, kind, out, allowsFieldFlow) and
11691162
PrevStage::revFlowAp(out, pragma[only_bind_into](apa)) and
1170-
revFlowApAlias(ret, pragma[only_bind_into](apa))
1163+
PrevStage::revFlowAp(ret, pragma[only_bind_into](apa))
11711164
}
11721165

11731166
pragma[nomagic]

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

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,20 +1144,13 @@ module Impl<FullStateConfigSig Config> {
11441144
module Stage<StageParam Param> implements StageSig {
11451145
import Param
11461146

1147-
/* Begin: Stage logic. */
1148-
// use an alias as a workaround for bad functionality-induced joins
1149-
pragma[nomagic]
1150-
private predicate revFlowApAlias(NodeEx node, ApApprox apa) {
1151-
PrevStage::revFlowAp(node, apa)
1152-
}
1153-
11541147
pragma[nomagic]
11551148
private predicate flowIntoCallApa(
11561149
DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, ApApprox apa
11571150
) {
11581151
flowIntoCall(call, arg, p, allowsFieldFlow) and
11591152
PrevStage::revFlowAp(p, pragma[only_bind_into](apa)) and
1160-
revFlowApAlias(arg, pragma[only_bind_into](apa))
1153+
PrevStage::revFlowAp(arg, pragma[only_bind_into](apa))
11611154
}
11621155

11631156
pragma[nomagic]
@@ -1167,7 +1160,7 @@ module Impl<FullStateConfigSig Config> {
11671160
) {
11681161
flowOutOfCall(call, ret, kind, out, allowsFieldFlow) and
11691162
PrevStage::revFlowAp(out, pragma[only_bind_into](apa)) and
1170-
revFlowApAlias(ret, pragma[only_bind_into](apa))
1163+
PrevStage::revFlowAp(ret, pragma[only_bind_into](apa))
11711164
}
11721165

11731166
pragma[nomagic]

python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl.qll

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,20 +1144,13 @@ module Impl<FullStateConfigSig Config> {
11441144
module Stage<StageParam Param> implements StageSig {
11451145
import Param
11461146

1147-
/* Begin: Stage logic. */
1148-
// use an alias as a workaround for bad functionality-induced joins
1149-
pragma[nomagic]
1150-
private predicate revFlowApAlias(NodeEx node, ApApprox apa) {
1151-
PrevStage::revFlowAp(node, apa)
1152-
}
1153-
11541147
pragma[nomagic]
11551148
private predicate flowIntoCallApa(
11561149
DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, ApApprox apa
11571150
) {
11581151
flowIntoCall(call, arg, p, allowsFieldFlow) and
11591152
PrevStage::revFlowAp(p, pragma[only_bind_into](apa)) and
1160-
revFlowApAlias(arg, pragma[only_bind_into](apa))
1153+
PrevStage::revFlowAp(arg, pragma[only_bind_into](apa))
11611154
}
11621155

11631156
pragma[nomagic]
@@ -1167,7 +1160,7 @@ module Impl<FullStateConfigSig Config> {
11671160
) {
11681161
flowOutOfCall(call, ret, kind, out, allowsFieldFlow) and
11691162
PrevStage::revFlowAp(out, pragma[only_bind_into](apa)) and
1170-
revFlowApAlias(ret, pragma[only_bind_into](apa))
1163+
PrevStage::revFlowAp(ret, pragma[only_bind_into](apa))
11711164
}
11721165

11731166
pragma[nomagic]

ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,20 +1144,13 @@ module Impl<FullStateConfigSig Config> {
11441144
module Stage<StageParam Param> implements StageSig {
11451145
import Param
11461146

1147-
/* Begin: Stage logic. */
1148-
// use an alias as a workaround for bad functionality-induced joins
1149-
pragma[nomagic]
1150-
private predicate revFlowApAlias(NodeEx node, ApApprox apa) {
1151-
PrevStage::revFlowAp(node, apa)
1152-
}
1153-
11541147
pragma[nomagic]
11551148
private predicate flowIntoCallApa(
11561149
DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, ApApprox apa
11571150
) {
11581151
flowIntoCall(call, arg, p, allowsFieldFlow) and
11591152
PrevStage::revFlowAp(p, pragma[only_bind_into](apa)) and
1160-
revFlowApAlias(arg, pragma[only_bind_into](apa))
1153+
PrevStage::revFlowAp(arg, pragma[only_bind_into](apa))
11611154
}
11621155

11631156
pragma[nomagic]
@@ -1167,7 +1160,7 @@ module Impl<FullStateConfigSig Config> {
11671160
) {
11681161
flowOutOfCall(call, ret, kind, out, allowsFieldFlow) and
11691162
PrevStage::revFlowAp(out, pragma[only_bind_into](apa)) and
1170-
revFlowApAlias(ret, pragma[only_bind_into](apa))
1163+
PrevStage::revFlowAp(ret, pragma[only_bind_into](apa))
11711164
}
11721165

11731166
pragma[nomagic]

swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl.qll

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,20 +1144,13 @@ module Impl<FullStateConfigSig Config> {
11441144
module Stage<StageParam Param> implements StageSig {
11451145
import Param
11461146

1147-
/* Begin: Stage logic. */
1148-
// use an alias as a workaround for bad functionality-induced joins
1149-
pragma[nomagic]
1150-
private predicate revFlowApAlias(NodeEx node, ApApprox apa) {
1151-
PrevStage::revFlowAp(node, apa)
1152-
}
1153-
11541147
pragma[nomagic]
11551148
private predicate flowIntoCallApa(
11561149
DataFlowCall call, ArgNodeEx arg, ParamNodeEx p, boolean allowsFieldFlow, ApApprox apa
11571150
) {
11581151
flowIntoCall(call, arg, p, allowsFieldFlow) and
11591152
PrevStage::revFlowAp(p, pragma[only_bind_into](apa)) and
1160-
revFlowApAlias(arg, pragma[only_bind_into](apa))
1153+
PrevStage::revFlowAp(arg, pragma[only_bind_into](apa))
11611154
}
11621155

11631156
pragma[nomagic]
@@ -1167,7 +1160,7 @@ module Impl<FullStateConfigSig Config> {
11671160
) {
11681161
flowOutOfCall(call, ret, kind, out, allowsFieldFlow) and
11691162
PrevStage::revFlowAp(out, pragma[only_bind_into](apa)) and
1170-
revFlowApAlias(ret, pragma[only_bind_into](apa))
1163+
PrevStage::revFlowAp(ret, pragma[only_bind_into](apa))
11711164
}
11721165

11731166
pragma[nomagic]

0 commit comments

Comments
 (0)