Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e187a4a

Browse files
committed
C++: Add flow summaries to simpleLocalFlowStep.
1 parent 0c3aa7b commit e187a4a

2 files changed

Lines changed: 6 additions & 2 deletions

File tree

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ private import semmle.code.cpp.ir.ValueNumbering
1010
private import semmle.code.cpp.ir.IR
1111
private import semmle.code.cpp.controlflow.IRGuards
1212
private import semmle.code.cpp.models.interfaces.DataFlow
13+
private import semmle.code.cpp.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl
1314
private import DataFlowPrivate
1415
private import ModelUtil
1516
private import SsaInternals as Ssa
@@ -1965,6 +1966,9 @@ private module Cached {
19651966
// by a function. This allows data to flow 'in' through references returned by a modeled
19661967
// function such as `operator[]`.
19671968
reverseFlow(nodeFrom, nodeTo)
1969+
or
1970+
// models-as-data summarized flow
1971+
FlowSummaryImpl::Private::Steps::summaryThroughStepValue(nodeFrom, nodeTo, _)
19681972
}
19691973

19701974
private predicate simpleInstructionLocalFlowStep(Operand opFrom, Instruction iTo) {

cpp/ql/test/library-tests/dataflow/models-as-data/tests.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ void test_summaries() {
132132
sink(madArg0ToReturn(source())); // $ MISSING: ir
133133
sink(notASummary(source()));
134134
sink(madArg0ToReturnValueFlow(0));
135-
sink(madArg0ToReturnValueFlow(source())); // $ MISSING: ir
135+
sink(madArg0ToReturnValueFlow(source())); // $ ir
136136

137137
a = source();
138138
sink(madArg0IndirectToReturn(&a)); // $ MISSING: ir
@@ -159,7 +159,7 @@ void test_summaries() {
159159
// test source + sinks + summaries together
160160

161161
madSinkArg0(madArg0ToReturn(remoteMadSource())); // $ MISSING: ir
162-
madSinkArg0(madArg0ToReturnValueFlow(remoteMadSource())); // $ MISSING: ir
162+
madSinkArg0(madArg0ToReturnValueFlow(remoteMadSource())); // $ ir
163163
madSinkArg0(madArg0IndirectToReturn(remoteMadSourceIndirect())); // $ MISSING: ir*/
164164
}
165165

0 commit comments

Comments
 (0)