Merge pull request #19492 from MathiasVP/add-cpp-models · AlbinChang/codeql@d7e07b0 · GitHub
Skip to content

Commit d7e07b0

Browse files
authored
Merge pull request github#19492 from MathiasVP/add-cpp-models
C++: Add summary models for `openssl` and `sqlite`
2 parents 30e2c44 + f82f1c8 commit d7e07b0

7 files changed

Lines changed: 53340 additions & 12 deletions

File tree

‎cpp/ql/lib/ext/generated/openssl.model.yml‎

Lines changed: 21584 additions & 0 deletions
Large diffs are not rendered by default.

‎cpp/ql/lib/ext/generated/sqlite.model.yml‎

Lines changed: 948 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 4 additions & 0 deletions

‎cpp/ql/src/utils/modelgenerator/internal/CaptureModels.qll‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ private import semmle.code.cpp.ir.dataflow.internal.TaintTrackingImplSpecific
1313
private import semmle.code.cpp.dataflow.new.TaintTracking as Tt
1414
private import semmle.code.cpp.dataflow.new.DataFlow as Df
1515
private import codeql.mad.modelgenerator.internal.ModelGeneratorImpl
16+
private import semmle.code.cpp.models.interfaces.Taint as Taint
17+
private import semmle.code.cpp.models.interfaces.DataFlow as DataFlow
1618

1719
/**
1820
* Holds if `f` is a "private" function.
@@ -46,6 +48,19 @@ private predicate isUninterestingForModels(Callable api) {
4648
or
4749
api.isFromUninstantiatedTemplate(_)
4850
or
51+
// No need to generate models for functions modeled by hand in QL
52+
api instanceof Taint::TaintFunction
53+
or
54+
api instanceof DataFlow::DataFlowFunction
55+
or
56+
// Don't generate models for main functions
57+
api.hasGlobalName("main")
58+
or
59+
// Don't generate models for system-provided functions. If we want to
60+
// generate models for these we should use a database containing the
61+
// implementations of those system-provided functions in the source root.
62+
not exists(api.getLocation().getFile().getRelativePath())
63+
or
4964
// Exclude functions in test directories (but not the ones in the CodeQL test directory)
5065
exists(Cpp::File f |
5166
f = api.getFile() and

‎cpp/ql/test/library-tests/dataflow/external-models/flow.expected‎

Lines changed: 12 additions & 12 deletions

0 commit comments

Comments
 (0)