mirror of
https://github.com/github/codeql.git
synced 2025-12-20 18:56:32 +01:00
C++: Use the pruning stage in the product-flow configuration.
This commit is contained in:
@@ -120,6 +120,10 @@ module ValidState {
|
|||||||
|
|
||||||
predicate isBarrier(DataFlow::Node node, FlowState state) { none() }
|
predicate isBarrier(DataFlow::Node node, FlowState state) { none() }
|
||||||
|
|
||||||
|
predicate isBarrierOut(DataFlow::Node node) {
|
||||||
|
node = any(DataFlow::SsaPhiNode phi).getAnInput(true)
|
||||||
|
}
|
||||||
|
|
||||||
predicate isAdditionalFlowStep(
|
predicate isAdditionalFlowStep(
|
||||||
DataFlow::Node node1, FlowState state1, DataFlow::Node node2, FlowState state2
|
DataFlow::Node node1, FlowState state1, DataFlow::Node node2, FlowState state2
|
||||||
) {
|
) {
|
||||||
@@ -233,7 +237,8 @@ module StringSizeConfig implements ProductFlow::StateConfigSig {
|
|||||||
// we use `state2` to remember that there was an offset (in this case an offset of `1`) added
|
// we use `state2` to remember that there was an offset (in this case an offset of `1`) added
|
||||||
// to the size of the allocation. This state is then checked in `isSinkPair`.
|
// to the size of the allocation. This state is then checked in `isSinkPair`.
|
||||||
exists(state1) and
|
exists(state1) and
|
||||||
hasSize(bufSource.asConvertedExpr(), sizeSource, state2)
|
hasSize(bufSource.asConvertedExpr(), sizeSource, state2) and
|
||||||
|
validState(sizeSource, state2)
|
||||||
}
|
}
|
||||||
|
|
||||||
predicate isSinkPair(
|
predicate isSinkPair(
|
||||||
|
|||||||
Reference in New Issue
Block a user