import cpp import semmle.code.cpp.dataflow.DataFlow import semmle.code.cpp.commons.Printf class SourceNode extends DataFlow::Node { ... } from FormattingFunction f, Call c, SourceNode src, DataFlow::Node arg where c.getTarget() = f and arg.asExpr() = c.getArgument(f.getFormatParameterIndex()) and DataFlow::localFlow(src, arg) and not src.asExpr() instanceof StringLiteral select arg, "Non-constant format string."