C++: Account for pointer / reference parameters to operator<<.

This commit is contained in:
Geoffrey White
2020-09-11 15:04:52 +01:00
parent d648150322
commit d3ca140eeb

View File

@@ -309,14 +309,20 @@ class StdOStreamOut extends DataFlowFunction, TaintFunction {
}
override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) {
// flow from first parameter to qualifier
// flow from first parameter (value or pointer) to qualifier
input.isParameter(0) and
output.isQualifierObject()
or
// flow from first parameter to return value
input.isParameterDeref(0) and
output.isQualifierObject()
or
// flow from first parameter (value or pointer) to return value
input.isParameter(0) and
output.isReturnValueDeref()
or
input.isParameterDeref(0) and
output.isReturnValueDeref()
or
// reverse flow from returned reference to the qualifier
input.isReturnValueDeref() and
output.isQualifierObject()