From c7d50f65d62ba83216ea1459360819d393a400ce Mon Sep 17 00:00:00 2001 From: AkshayK Date: Thu, 27 Aug 2026 12:05:20 -0400 Subject: [PATCH 1/2] cpp: model BDE bslx in-stream deserialization taint flow Add flow summaries for the BDE byte-stream deserializers in BloombergLP::bslx: - ByteInStream and GenericInStream: constructing (or, for ByteInStream, reset-ing) from a buffer/streambuf taints the stream, and every get* method propagates that taint into its output variable. get* returns *this, so a fluent row keeps chained calls tainted. - InStreamFunctions::bdexStreamIn: the generic BDEX entry point that populates any bdex-compatible object from a stream, modeled as stream -> object. Not a duplicate of the bsl.* container models or the std/bsl QL models, which cover only the bsl standard-library-alike types; the bslx BDE namespace had no coverage. Verified with a BloombergLP::bslx-shaped stub in the dataflow external-models harness. --- .../change-notes/2026-08-27-bslx-models.md | 4 + cpp/ql/lib/ext/bslx.model.yml | 179 +++++++++++++ .../dataflow/external-models/bslx.cpp | 249 ++++++++++++++++++ .../dataflow/external-models/flow.expected | 191 ++++++++++---- .../dataflow/external-models/steps.expected | 179 +++++++++++++ 5 files changed, 752 insertions(+), 50 deletions(-) create mode 100644 cpp/ql/lib/change-notes/2026-08-27-bslx-models.md create mode 100644 cpp/ql/lib/ext/bslx.model.yml create mode 100644 cpp/ql/test/library-tests/dataflow/external-models/bslx.cpp diff --git a/cpp/ql/lib/change-notes/2026-08-27-bslx-models.md b/cpp/ql/lib/change-notes/2026-08-27-bslx-models.md new file mode 100644 index 000000000000..f0905e0ddf41 --- /dev/null +++ b/cpp/ql/lib/change-notes/2026-08-27-bslx-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added taint flow summaries for the BDE `bslx` byte-stream deserializers `BloombergLP::bslx::ByteInStream`, `BloombergLP::bslx::GenericInStream`, and `BloombergLP::bslx::InStreamFunctions::bdexStreamIn`, so that data read from a `bslx` in-stream is tracked as tainted. diff --git a/cpp/ql/lib/ext/bslx.model.yml b/cpp/ql/lib/ext/bslx.model.yml new file mode 100644 index 000000000000..f92de8b43df3 --- /dev/null +++ b/cpp/ql/lib/ext/bslx.model.yml @@ -0,0 +1,179 @@ +# Model of the BDE `bslx` byte-stream deserializers (BloombergLP::bslx). +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance + # === bslx::ByteInStream: concrete byte-array in-stream === + # Taint in: the source buffer/streambuf taints the stream (`this`). + # Note: MaD taint is additive, so `reset` cannot clear taint from a previously + # tainted stream; a stream reset with a clean buffer keeps any earlier taint. + - ["BloombergLP::bslx", "ByteInStream", true, "ByteInStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "reset", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + # Taint out: the stream (`this`) taints the deserialized output variable/buffer. + - ["BloombergLP::bslx", "ByteInStream", true, "getLength", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getVersion", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt8", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint8", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt16", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint16", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt24", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint24", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt40", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint40", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt48", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint48", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt56", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint56", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getFloat32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getFloat64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getString", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt8", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint8", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt16", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint16", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt24", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint24", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt40", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint40", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt48", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint48", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt56", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint56", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayFloat32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayFloat64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + # Fluent interface: each get* returns `*this`, keeping the returned stream tainted. + - ["BloombergLP::bslx", "ByteInStream", true, "getLength", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getVersion", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt8", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint8", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt16", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint16", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt24", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint24", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt40", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint40", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt48", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint48", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt56", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint56", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getInt64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getUint64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getFloat32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getFloat64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getString", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt8", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint8", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt16", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint16", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt24", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint24", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt40", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint40", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt48", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint48", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt56", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint56", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayFloat32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "getArrayFloat64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + # === bslx::GenericInStream: streambuf-backed in-stream === + # Taint in: the source buffer/streambuf taints the stream (`this`). + - ["BloombergLP::bslx", "GenericInStream", true, "GenericInStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + # Taint out: the stream (`this`) taints the deserialized output variable/buffer. + - ["BloombergLP::bslx", "GenericInStream", true, "getLength", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getVersion", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt8", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint8", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt16", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint16", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt24", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint24", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt40", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint40", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt48", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint48", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt56", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint56", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getFloat32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getFloat64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getString", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt8", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint8", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt16", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint16", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt24", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint24", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt40", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint40", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt48", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint48", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt56", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint56", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayFloat32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayFloat64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] + # Fluent interface: each get* returns `*this`, keeping the returned stream tainted. + - ["BloombergLP::bslx", "GenericInStream", true, "getLength", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getVersion", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt8", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint8", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt16", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint16", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt24", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint24", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt40", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint40", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt48", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint48", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt56", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint56", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getInt64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getUint64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getFloat32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getFloat64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getString", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt8", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint8", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt16", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint16", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt24", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint24", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt40", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint40", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt48", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint48", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt56", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint56", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayFloat32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + - ["BloombergLP::bslx", "GenericInStream", true, "getArrayFloat64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] + # === bslx::InStreamFunctions::bdexStreamIn: generic BDEX deserialization === + # Free function template; `InStreamFunctions` is a namespace, so `type` is empty. + - ["BloombergLP::bslx::InStreamFunctions", "", false, "bdexStreamIn", "", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] + - ["BloombergLP::bslx::InStreamFunctions", "", false, "bdexStreamIn", "", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] diff --git a/cpp/ql/test/library-tests/dataflow/external-models/bslx.cpp b/cpp/ql/test/library-tests/dataflow/external-models/bslx.cpp new file mode 100644 index 000000000000..b7d47c3ec8a9 --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/external-models/bslx.cpp @@ -0,0 +1,249 @@ + +// --- stub library headers --- + +namespace std { + typedef unsigned long size_t; + template class allocator {}; + template struct char_traits {}; + template, class Allocator = allocator > + class basic_string { + public: + basic_string(); + basic_string(const charT* s, const Allocator& a = Allocator()); + const charT* data() const; + size_t size() const; + }; + typedef basic_string string; +} + +// BDE spells the standard string as `bsl::string`; alias it onto the stub above. +namespace bsl { + using std::string; +} + +// BDE wraps every package-group namespace in `BloombergLP`; this stub reproduces that. +namespace BloombergLP { +namespace bsls { + // `bsls::Types` provides the fixed-width integer aliases used by the stream API. + struct Types { + typedef long long Int64; + typedef unsigned long long Uint64; + }; +} +namespace bslx { + class ByteInStream { + public: + ByteInStream(); + ByteInStream(const char *buffer, std::size_t numBytes); + void reset(const char *buffer, std::size_t numBytes); + ByteInStream &getLength(int &variable); + ByteInStream &getVersion(int &variable); + ByteInStream &getInt8(char &variable); + ByteInStream &getUint8(unsigned char &variable); + ByteInStream &getInt16(short &variable); + ByteInStream &getUint16(unsigned short &variable); + ByteInStream &getInt24(int &variable); + ByteInStream &getUint24(unsigned int &variable); + ByteInStream &getInt32(int &variable); + ByteInStream &getUint32(unsigned int &variable); + ByteInStream &getInt40(bsls::Types::Int64 &variable); + ByteInStream &getUint40(bsls::Types::Uint64 &variable); + ByteInStream &getInt48(bsls::Types::Int64 &variable); + ByteInStream &getUint48(bsls::Types::Uint64 &variable); + ByteInStream &getInt56(bsls::Types::Int64 &variable); + ByteInStream &getUint56(bsls::Types::Uint64 &variable); + ByteInStream &getInt64(bsls::Types::Int64 &variable); + ByteInStream &getUint64(bsls::Types::Uint64 &variable); + ByteInStream &getFloat32(float &variable); + ByteInStream &getFloat64(double &variable); + ByteInStream &getString(bsl::string &variable); + ByteInStream &getArrayInt8(char *variables, int numVariables); + ByteInStream &getArrayUint8(unsigned char *variables, int numVariables); + ByteInStream &getArrayInt16(short *variables, int numVariables); + ByteInStream &getArrayUint16(unsigned short *variables, int numVariables); + ByteInStream &getArrayInt24(int *variables, int numVariables); + ByteInStream &getArrayUint24(unsigned int *variables, int numVariables); + ByteInStream &getArrayInt32(int *variables, int numVariables); + ByteInStream &getArrayUint32(unsigned int *variables, int numVariables); + ByteInStream &getArrayInt40(bsls::Types::Int64 *variables, int numVariables); + ByteInStream &getArrayUint40(bsls::Types::Uint64 *variables, int numVariables); + ByteInStream &getArrayInt48(bsls::Types::Int64 *variables, int numVariables); + ByteInStream &getArrayUint48(bsls::Types::Uint64 *variables, int numVariables); + ByteInStream &getArrayInt56(bsls::Types::Int64 *variables, int numVariables); + ByteInStream &getArrayUint56(bsls::Types::Uint64 *variables, int numVariables); + ByteInStream &getArrayInt64(bsls::Types::Int64 *variables, int numVariables); + ByteInStream &getArrayUint64(bsls::Types::Uint64 *variables, int numVariables); + ByteInStream &getArrayFloat32(float *variables, int numVariables); + ByteInStream &getArrayFloat64(double *variables, int numVariables); + }; + + template + class GenericInStream { + public: + GenericInStream(STREAMBUF *streamBuf); + GenericInStream &getLength(int &variable); + GenericInStream &getVersion(int &variable); + GenericInStream &getInt8(char &variable); + GenericInStream &getUint8(unsigned char &variable); + GenericInStream &getInt16(short &variable); + GenericInStream &getUint16(unsigned short &variable); + GenericInStream &getInt24(int &variable); + GenericInStream &getUint24(unsigned int &variable); + GenericInStream &getInt32(int &variable); + GenericInStream &getUint32(unsigned int &variable); + GenericInStream &getInt40(bsls::Types::Int64 &variable); + GenericInStream &getUint40(bsls::Types::Uint64 &variable); + GenericInStream &getInt48(bsls::Types::Int64 &variable); + GenericInStream &getUint48(bsls::Types::Uint64 &variable); + GenericInStream &getInt56(bsls::Types::Int64 &variable); + GenericInStream &getUint56(bsls::Types::Uint64 &variable); + GenericInStream &getInt64(bsls::Types::Int64 &variable); + GenericInStream &getUint64(bsls::Types::Uint64 &variable); + GenericInStream &getFloat32(float &variable); + GenericInStream &getFloat64(double &variable); + GenericInStream &getString(bsl::string &variable); + GenericInStream &getArrayInt8(char *variables, int numVariables); + GenericInStream &getArrayUint8(unsigned char *variables, int numVariables); + GenericInStream &getArrayInt16(short *variables, int numVariables); + GenericInStream &getArrayUint16(unsigned short *variables, int numVariables); + GenericInStream &getArrayInt24(int *variables, int numVariables); + GenericInStream &getArrayUint24(unsigned int *variables, int numVariables); + GenericInStream &getArrayInt32(int *variables, int numVariables); + GenericInStream &getArrayUint32(unsigned int *variables, int numVariables); + GenericInStream &getArrayInt40(bsls::Types::Int64 *variables, int numVariables); + GenericInStream &getArrayUint40(bsls::Types::Uint64 *variables, int numVariables); + GenericInStream &getArrayInt48(bsls::Types::Int64 *variables, int numVariables); + GenericInStream &getArrayUint48(bsls::Types::Uint64 *variables, int numVariables); + GenericInStream &getArrayInt56(bsls::Types::Int64 *variables, int numVariables); + GenericInStream &getArrayUint56(bsls::Types::Uint64 *variables, int numVariables); + GenericInStream &getArrayInt64(bsls::Types::Int64 *variables, int numVariables); + GenericInStream &getArrayUint64(bsls::Types::Uint64 *variables, int numVariables); + GenericInStream &getArrayFloat32(float *variables, int numVariables); + GenericInStream &getArrayFloat64(double *variables, int numVariables); + }; + + namespace InStreamFunctions { + template + STREAM &bdexStreamIn(STREAM &stream, TYPE &variable); + } +} +} + +struct MyStreamBuf {}; + +char *source(); +void sink(int); +void sink(char); + +// --- flow tests (source -> sink) --- + +void test_ByteInStream_getInt32() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + int x = 0; + stream.getInt32(x); + sink(x); // $ ir +} + +void test_ByteInStream_getArrayInt8() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + char buf[16]; + stream.getArrayInt8(buf, 16); + sink(*buf); // $ ir +} + +void test_ByteInStream_getString() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + std::string out; + stream.getString(out); + sink(*out.data()); // $ ir +} + +void test_ByteInStream_chained() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + int a = 0; + int b = 0; + stream.getInt32(a).getInt32(b); + sink(b); // $ ir +} + +void test_ByteInStream_reset() { + BloombergLP::bslx::ByteInStream stream; + std::string data = std::string(source()); + stream.reset(data.data(), data.size()); + int x = 0; + stream.getInt32(x); + sink(x); // $ ir +} + +void test_GenericInStream_flow() { + std::string data = std::string(source()); + MyStreamBuf *sb = (MyStreamBuf *)data.data(); + BloombergLP::bslx::GenericInStream stream(sb); + int x = 0; + stream.getInt32(x); + sink(x); // $ ir +} + +void test_bdexStreamIn() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + int obj = 0; + BloombergLP::bslx::InStreamFunctions::bdexStreamIn(stream, obj); + sink(obj); // $ ir +} + +// --- coverage: call every modeled getter so steps.ql verifies each row is consumed --- + +void coverage_ByteInStream(BloombergLP::bslx::ByteInStream &stream) { + int i = 0; + unsigned int ui = 0; + char c = 0; + unsigned char uc = 0; + short s = 0; + unsigned short us = 0; + BloombergLP::bsls::Types::Int64 ll = 0; + BloombergLP::bsls::Types::Uint64 ull = 0; + float f = 0; + double d = 0; + bsl::string str; + char cbuf[16]; + unsigned char ucbuf[16]; + short sbuf[16]; + unsigned short usbuf[16]; + int ibuf[16]; + unsigned int uibuf[16]; + BloombergLP::bsls::Types::Int64 llbuf[16]; + BloombergLP::bsls::Types::Uint64 ullbuf[16]; + float fbuf[16]; + double dbuf[16]; + stream.getLength(i).getVersion(i).getInt8(c).getUint8(uc).getInt16(s).getUint16(us).getInt24(i).getUint24(ui).getInt32(i).getUint32(ui).getInt40(ll).getUint40(ull).getInt48(ll).getUint48(ull).getInt56(ll).getUint56(ull).getInt64(ll).getUint64(ull).getFloat32(f).getFloat64(d).getString(str).getArrayInt8(cbuf, 16).getArrayUint8(ucbuf, 16).getArrayInt16(sbuf, 16).getArrayUint16(usbuf, 16).getArrayInt24(ibuf, 16).getArrayUint24(uibuf, 16).getArrayInt32(ibuf, 16).getArrayUint32(uibuf, 16).getArrayInt40(llbuf, 16).getArrayUint40(ullbuf, 16).getArrayInt48(llbuf, 16).getArrayUint48(ullbuf, 16).getArrayInt56(llbuf, 16).getArrayUint56(ullbuf, 16).getArrayInt64(llbuf, 16).getArrayUint64(ullbuf, 16).getArrayFloat32(fbuf, 16).getArrayFloat64(dbuf, 16); +} + +void coverage_GenericInStream(BloombergLP::bslx::GenericInStream &stream) { + int i = 0; + unsigned int ui = 0; + char c = 0; + unsigned char uc = 0; + short s = 0; + unsigned short us = 0; + BloombergLP::bsls::Types::Int64 ll = 0; + BloombergLP::bsls::Types::Uint64 ull = 0; + float f = 0; + double d = 0; + bsl::string str; + char cbuf[16]; + unsigned char ucbuf[16]; + short sbuf[16]; + unsigned short usbuf[16]; + int ibuf[16]; + unsigned int uibuf[16]; + BloombergLP::bsls::Types::Int64 llbuf[16]; + BloombergLP::bsls::Types::Uint64 ullbuf[16]; + float fbuf[16]; + double dbuf[16]; + stream.getLength(i).getVersion(i).getInt8(c).getUint8(uc).getInt16(s).getUint16(us).getInt24(i).getUint24(ui).getInt32(i).getUint32(ui).getInt40(ll).getUint40(ull).getInt48(ll).getUint48(ull).getInt56(ll).getUint56(ull).getInt64(ll).getUint64(ull).getFloat32(f).getFloat64(d).getString(str).getArrayInt8(cbuf, 16).getArrayUint8(ucbuf, 16).getArrayInt16(sbuf, 16).getArrayUint16(usbuf, 16).getArrayInt24(ibuf, 16).getArrayUint24(uibuf, 16).getArrayInt32(ibuf, 16).getArrayUint32(uibuf, 16).getArrayInt40(llbuf, 16).getArrayUint40(ullbuf, 16).getArrayInt48(llbuf, 16).getArrayUint48(ullbuf, 16).getArrayInt56(llbuf, 16).getArrayUint56(ullbuf, 16).getArrayInt64(llbuf, 16).getArrayUint64(ullbuf, 16).getArrayFloat32(fbuf, 16).getArrayFloat64(dbuf, 16); +} diff --git a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected index ee6d7539cc0a..5d6adb489edd 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected @@ -102,23 +102,32 @@ models | 101 | Summary: BloombergLP::bdlbb; BlobUtil; true; copy; (Blob *,int,const char *,int); ; Argument[*2]; Argument[*0]; taint; manual | | 102 | Summary: BloombergLP::bdlbb; BlobUtil; true; copy; (char *,const Blob &,int,int); ; Argument[*1]; Argument[*0]; taint; manual | | 103 | Summary: BloombergLP::bdlbb; BlobUtil; true; getContiguousRangeOrCopy; ; ; Argument[*1]; ReturnValue[*]; taint; manual | -| 104 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &); ; Argument[*1..2]; ReturnValue; taint; manual | -| 105 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &,error_code &); ; Argument[*1..2]; ReturnValue; taint; manual | -| 106 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &,flags); ; Argument[*1..2]; ReturnValue; taint; manual | -| 107 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &,flags,error_code &); ; Argument[*1..2]; ReturnValue; taint; manual | -| 108 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view); ; Argument[1..2]; ReturnValue; taint; manual | -| 109 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view,error_code &); ; Argument[1..2]; ReturnValue; taint; manual | -| 110 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view,flags); ; Argument[1..2]; ReturnValue; taint; manual | -| 111 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view,flags,error_code &); ; Argument[1..2]; ReturnValue; taint; manual | -| 112 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &); ; Argument[*0..1]; ReturnValue; taint; manual | -| 113 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &,error_code &); ; Argument[*0..1]; ReturnValue; taint; manual | -| 114 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &,flags); ; Argument[*0..1]; ReturnValue; taint; manual | -| 115 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &,flags,error_code &); ; Argument[*0..1]; ReturnValue; taint; manual | -| 116 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view); ; Argument[0..1]; ReturnValue; taint; manual | -| 117 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view,error_code &); ; Argument[0..1]; ReturnValue; taint; manual | -| 118 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view,flags); ; Argument[0..1]; ReturnValue; taint; manual | -| 119 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view,flags,error_code &); ; Argument[0..1]; ReturnValue; taint; manual | -| 120 | Summary: boost::asio; ; false; buffer; ; ; Argument[*0]; ReturnValue; taint; manual | +| 104 | Summary: BloombergLP::bslx::InStreamFunctions; ; false; bdexStreamIn; ; ; Argument[*0]; Argument[*1]; taint; manual | +| 105 | Summary: BloombergLP::bslx; ByteInStream; true; ByteInStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 106 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt8; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 107 | Summary: BloombergLP::bslx; ByteInStream; true; getInt32; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 108 | Summary: BloombergLP::bslx; ByteInStream; true; getInt32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 109 | Summary: BloombergLP::bslx; ByteInStream; true; getString; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 110 | Summary: BloombergLP::bslx; ByteInStream; true; reset; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 111 | Summary: BloombergLP::bslx; GenericInStream; true; GenericInStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 112 | Summary: BloombergLP::bslx; GenericInStream; true; getInt32; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 113 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &); ; Argument[*1..2]; ReturnValue; taint; manual | +| 114 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &,error_code &); ; Argument[*1..2]; ReturnValue; taint; manual | +| 115 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &,flags); ; Argument[*1..2]; ReturnValue; taint; manual | +| 116 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &,flags,error_code &); ; Argument[*1..2]; ReturnValue; taint; manual | +| 117 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view); ; Argument[1..2]; ReturnValue; taint; manual | +| 118 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view,error_code &); ; Argument[1..2]; ReturnValue; taint; manual | +| 119 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view,flags); ; Argument[1..2]; ReturnValue; taint; manual | +| 120 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view,flags,error_code &); ; Argument[1..2]; ReturnValue; taint; manual | +| 121 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &); ; Argument[*0..1]; ReturnValue; taint; manual | +| 122 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &,error_code &); ; Argument[*0..1]; ReturnValue; taint; manual | +| 123 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &,flags); ; Argument[*0..1]; ReturnValue; taint; manual | +| 124 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &,flags,error_code &); ; Argument[*0..1]; ReturnValue; taint; manual | +| 125 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view); ; Argument[0..1]; ReturnValue; taint; manual | +| 126 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view,error_code &); ; Argument[0..1]; ReturnValue; taint; manual | +| 127 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view,flags); ; Argument[0..1]; ReturnValue; taint; manual | +| 128 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view,flags,error_code &); ; Argument[0..1]; ReturnValue; taint; manual | +| 129 | Summary: boost::asio; ; false; buffer; ; ; Argument[*0]; ReturnValue; taint; manual | edges | asio_streams.cpp:129:34:129:44 | read_until output argument | asio_streams.cpp:133:7:133:17 | recv_buffer | provenance | Src:MaD:56 | | asio_streams.cpp:129:34:129:44 | read_until output argument | asio_streams.cpp:135:29:135:39 | recv_buffer | provenance | Src:MaD:56 Sink:MaD:4 | @@ -127,7 +136,7 @@ edges | asio_streams.cpp:142:44:142:62 | call to buffer | asio_streams.cpp:142:44:142:62 | call to buffer | provenance | | | asio_streams.cpp:142:44:142:62 | call to buffer | asio_streams.cpp:143:7:143:17 | send_buffer | provenance | | | asio_streams.cpp:142:44:142:62 | call to buffer | asio_streams.cpp:145:29:145:39 | send_buffer | provenance | Sink:MaD:4 | -| asio_streams.cpp:142:64:142:71 | *send_str | asio_streams.cpp:142:44:142:62 | call to buffer | provenance | MaD:120 | +| asio_streams.cpp:142:64:142:71 | *send_str | asio_streams.cpp:142:44:142:62 | call to buffer | provenance | MaD:129 | | asio_streams.cpp:156:19:156:26 | call to source | asio_streams.cpp:161:24:161:27 | *host | provenance | TaintFunction | | asio_streams.cpp:156:19:156:26 | call to source | asio_streams.cpp:162:24:162:27 | *host | provenance | TaintFunction | | asio_streams.cpp:156:19:156:26 | call to source | asio_streams.cpp:163:24:163:27 | *host | provenance | TaintFunction | @@ -144,22 +153,22 @@ edges | asio_streams.cpp:158:29:158:36 | call to source | asio_streams.cpp:177:34:177:42 | host_view | provenance | TaintFunction | | asio_streams.cpp:158:29:158:36 | call to source | asio_streams.cpp:178:34:178:42 | host_view | provenance | TaintFunction | | asio_streams.cpp:158:29:158:36 | call to source | asio_streams.cpp:179:34:179:42 | host_view | provenance | TaintFunction | -| asio_streams.cpp:161:24:161:27 | *host | asio_streams.cpp:161:16:161:22 | call to resolve | provenance | MaD:112 | -| asio_streams.cpp:162:24:162:27 | *host | asio_streams.cpp:162:16:162:22 | call to resolve | provenance | MaD:113 | -| asio_streams.cpp:163:24:163:27 | *host | asio_streams.cpp:163:16:163:22 | call to resolve | provenance | MaD:114 | -| asio_streams.cpp:164:24:164:27 | *host | asio_streams.cpp:164:16:164:22 | call to resolve | provenance | MaD:115 | -| asio_streams.cpp:166:24:166:32 | host_view | asio_streams.cpp:166:16:166:22 | call to resolve | provenance | MaD:116 | -| asio_streams.cpp:167:24:167:32 | host_view | asio_streams.cpp:167:16:167:22 | call to resolve | provenance | MaD:117 | -| asio_streams.cpp:168:24:168:32 | host_view | asio_streams.cpp:168:16:168:22 | call to resolve | provenance | MaD:118 | -| asio_streams.cpp:169:24:169:32 | host_view | asio_streams.cpp:169:16:169:22 | call to resolve | provenance | MaD:119 | -| asio_streams.cpp:171:34:171:37 | *host | asio_streams.cpp:171:16:171:22 | call to resolve | provenance | MaD:104 | -| asio_streams.cpp:172:34:172:37 | *host | asio_streams.cpp:172:16:172:22 | call to resolve | provenance | MaD:105 | -| asio_streams.cpp:173:34:173:37 | *host | asio_streams.cpp:173:16:173:22 | call to resolve | provenance | MaD:106 | -| asio_streams.cpp:174:34:174:37 | *host | asio_streams.cpp:174:16:174:22 | call to resolve | provenance | MaD:107 | -| asio_streams.cpp:176:34:176:42 | host_view | asio_streams.cpp:176:16:176:22 | call to resolve | provenance | MaD:108 | -| asio_streams.cpp:177:34:177:42 | host_view | asio_streams.cpp:177:16:177:22 | call to resolve | provenance | MaD:109 | -| asio_streams.cpp:178:34:178:42 | host_view | asio_streams.cpp:178:16:178:22 | call to resolve | provenance | MaD:110 | -| asio_streams.cpp:179:34:179:42 | host_view | asio_streams.cpp:179:16:179:22 | call to resolve | provenance | MaD:111 | +| asio_streams.cpp:161:24:161:27 | *host | asio_streams.cpp:161:16:161:22 | call to resolve | provenance | MaD:121 | +| asio_streams.cpp:162:24:162:27 | *host | asio_streams.cpp:162:16:162:22 | call to resolve | provenance | MaD:122 | +| asio_streams.cpp:163:24:163:27 | *host | asio_streams.cpp:163:16:163:22 | call to resolve | provenance | MaD:123 | +| asio_streams.cpp:164:24:164:27 | *host | asio_streams.cpp:164:16:164:22 | call to resolve | provenance | MaD:124 | +| asio_streams.cpp:166:24:166:32 | host_view | asio_streams.cpp:166:16:166:22 | call to resolve | provenance | MaD:125 | +| asio_streams.cpp:167:24:167:32 | host_view | asio_streams.cpp:167:16:167:22 | call to resolve | provenance | MaD:126 | +| asio_streams.cpp:168:24:168:32 | host_view | asio_streams.cpp:168:16:168:22 | call to resolve | provenance | MaD:127 | +| asio_streams.cpp:169:24:169:32 | host_view | asio_streams.cpp:169:16:169:22 | call to resolve | provenance | MaD:128 | +| asio_streams.cpp:171:34:171:37 | *host | asio_streams.cpp:171:16:171:22 | call to resolve | provenance | MaD:113 | +| asio_streams.cpp:172:34:172:37 | *host | asio_streams.cpp:172:16:172:22 | call to resolve | provenance | MaD:114 | +| asio_streams.cpp:173:34:173:37 | *host | asio_streams.cpp:173:16:173:22 | call to resolve | provenance | MaD:115 | +| asio_streams.cpp:174:34:174:37 | *host | asio_streams.cpp:174:16:174:22 | call to resolve | provenance | MaD:116 | +| asio_streams.cpp:176:34:176:42 | host_view | asio_streams.cpp:176:16:176:22 | call to resolve | provenance | MaD:117 | +| asio_streams.cpp:177:34:177:42 | host_view | asio_streams.cpp:177:16:177:22 | call to resolve | provenance | MaD:118 | +| asio_streams.cpp:178:34:178:42 | host_view | asio_streams.cpp:178:16:178:22 | call to resolve | provenance | MaD:119 | +| asio_streams.cpp:179:34:179:42 | host_view | asio_streams.cpp:179:16:179:22 | call to resolve | provenance | MaD:120 | | asio_streams.cpp:188:22:188:29 | call to source | asio_streams.cpp:192:30:192:36 | *service | provenance | TaintFunction | | asio_streams.cpp:188:22:188:29 | call to source | asio_streams.cpp:193:30:193:36 | *service | provenance | TaintFunction | | asio_streams.cpp:188:22:188:29 | call to source | asio_streams.cpp:194:30:194:36 | *service | provenance | TaintFunction | @@ -176,22 +185,22 @@ edges | asio_streams.cpp:190:32:190:39 | call to source | asio_streams.cpp:208:45:208:56 | service_view | provenance | TaintFunction | | asio_streams.cpp:190:32:190:39 | call to source | asio_streams.cpp:209:45:209:56 | service_view | provenance | TaintFunction | | asio_streams.cpp:190:32:190:39 | call to source | asio_streams.cpp:210:45:210:56 | service_view | provenance | TaintFunction | -| asio_streams.cpp:192:30:192:36 | *service | asio_streams.cpp:192:16:192:22 | call to resolve | provenance | MaD:112 | -| asio_streams.cpp:193:30:193:36 | *service | asio_streams.cpp:193:16:193:22 | call to resolve | provenance | MaD:113 | -| asio_streams.cpp:194:30:194:36 | *service | asio_streams.cpp:194:16:194:22 | call to resolve | provenance | MaD:114 | -| asio_streams.cpp:195:30:195:36 | *service | asio_streams.cpp:195:16:195:22 | call to resolve | provenance | MaD:115 | -| asio_streams.cpp:197:35:197:46 | service_view | asio_streams.cpp:197:16:197:22 | call to resolve | provenance | MaD:116 | -| asio_streams.cpp:198:35:198:46 | service_view | asio_streams.cpp:198:16:198:22 | call to resolve | provenance | MaD:117 | -| asio_streams.cpp:199:35:199:46 | service_view | asio_streams.cpp:199:16:199:22 | call to resolve | provenance | MaD:118 | -| asio_streams.cpp:200:35:200:46 | service_view | asio_streams.cpp:200:16:200:22 | call to resolve | provenance | MaD:119 | -| asio_streams.cpp:202:40:202:46 | *service | asio_streams.cpp:202:16:202:22 | call to resolve | provenance | MaD:104 | -| asio_streams.cpp:203:40:203:46 | *service | asio_streams.cpp:203:16:203:22 | call to resolve | provenance | MaD:105 | -| asio_streams.cpp:204:40:204:46 | *service | asio_streams.cpp:204:16:204:22 | call to resolve | provenance | MaD:106 | -| asio_streams.cpp:205:40:205:46 | *service | asio_streams.cpp:205:16:205:22 | call to resolve | provenance | MaD:107 | -| asio_streams.cpp:207:45:207:56 | service_view | asio_streams.cpp:207:16:207:22 | call to resolve | provenance | MaD:108 | -| asio_streams.cpp:208:45:208:56 | service_view | asio_streams.cpp:208:16:208:22 | call to resolve | provenance | MaD:109 | -| asio_streams.cpp:209:45:209:56 | service_view | asio_streams.cpp:209:16:209:22 | call to resolve | provenance | MaD:110 | -| asio_streams.cpp:210:45:210:56 | service_view | asio_streams.cpp:210:16:210:22 | call to resolve | provenance | MaD:111 | +| asio_streams.cpp:192:30:192:36 | *service | asio_streams.cpp:192:16:192:22 | call to resolve | provenance | MaD:121 | +| asio_streams.cpp:193:30:193:36 | *service | asio_streams.cpp:193:16:193:22 | call to resolve | provenance | MaD:122 | +| asio_streams.cpp:194:30:194:36 | *service | asio_streams.cpp:194:16:194:22 | call to resolve | provenance | MaD:123 | +| asio_streams.cpp:195:30:195:36 | *service | asio_streams.cpp:195:16:195:22 | call to resolve | provenance | MaD:124 | +| asio_streams.cpp:197:35:197:46 | service_view | asio_streams.cpp:197:16:197:22 | call to resolve | provenance | MaD:125 | +| asio_streams.cpp:198:35:198:46 | service_view | asio_streams.cpp:198:16:198:22 | call to resolve | provenance | MaD:126 | +| asio_streams.cpp:199:35:199:46 | service_view | asio_streams.cpp:199:16:199:22 | call to resolve | provenance | MaD:127 | +| asio_streams.cpp:200:35:200:46 | service_view | asio_streams.cpp:200:16:200:22 | call to resolve | provenance | MaD:128 | +| asio_streams.cpp:202:40:202:46 | *service | asio_streams.cpp:202:16:202:22 | call to resolve | provenance | MaD:113 | +| asio_streams.cpp:203:40:203:46 | *service | asio_streams.cpp:203:16:203:22 | call to resolve | provenance | MaD:114 | +| asio_streams.cpp:204:40:204:46 | *service | asio_streams.cpp:204:16:204:22 | call to resolve | provenance | MaD:115 | +| asio_streams.cpp:205:40:205:46 | *service | asio_streams.cpp:205:16:205:22 | call to resolve | provenance | MaD:116 | +| asio_streams.cpp:207:45:207:56 | service_view | asio_streams.cpp:207:16:207:22 | call to resolve | provenance | MaD:117 | +| asio_streams.cpp:208:45:208:56 | service_view | asio_streams.cpp:208:16:208:22 | call to resolve | provenance | MaD:118 | +| asio_streams.cpp:209:45:209:56 | service_view | asio_streams.cpp:209:16:209:22 | call to resolve | provenance | MaD:119 | +| asio_streams.cpp:210:45:210:56 | service_view | asio_streams.cpp:210:16:210:22 | call to resolve | provenance | MaD:120 | | azure.cpp:253:48:253:60 | *call to GetBodyStream | azure.cpp:257:5:257:8 | *resp | provenance | | | azure.cpp:253:48:253:60 | *call to GetBodyStream | azure.cpp:262:5:262:8 | *resp | provenance | | | azure.cpp:253:48:253:60 | *call to GetBodyStream | azure.cpp:266:38:266:41 | *resp | provenance | | @@ -263,6 +272,44 @@ edges | bdlbb.cpp:94:46:94:48 | *src | bdlbb.cpp:94:37:94:40 | copy output argument | provenance | MaD:100 | | bdlbb.cpp:96:37:96:39 | copy output argument | bdlbb.cpp:97:7:97:10 | * ... | provenance | | | bdlbb.cpp:96:42:96:44 | *dst | bdlbb.cpp:96:37:96:39 | copy output argument | provenance | MaD:102 | +| bslx.cpp:141:33:141:40 | call to source | bslx.cpp:142:46:142:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:142:34:142:39 | call to ByteInStream | bslx.cpp:144:2:144:7 | *stream | provenance | | +| bslx.cpp:142:46:142:49 | *call to data | bslx.cpp:142:34:142:39 | call to ByteInStream | provenance | MaD:105 | +| bslx.cpp:144:2:144:7 | *stream | bslx.cpp:144:18:144:18 | getInt32 output argument | provenance | MaD:107 | +| bslx.cpp:144:18:144:18 | getInt32 output argument | bslx.cpp:145:7:145:7 | x | provenance | | +| bslx.cpp:149:33:149:40 | call to source | bslx.cpp:150:46:150:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:150:34:150:39 | call to ByteInStream | bslx.cpp:152:2:152:7 | *stream | provenance | | +| bslx.cpp:150:46:150:49 | *call to data | bslx.cpp:150:34:150:39 | call to ByteInStream | provenance | MaD:105 | +| bslx.cpp:152:2:152:7 | *stream | bslx.cpp:152:22:152:24 | getArrayInt8 output argument | provenance | MaD:106 | +| bslx.cpp:152:22:152:24 | getArrayInt8 output argument | bslx.cpp:153:7:153:10 | * ... | provenance | | +| bslx.cpp:157:33:157:40 | call to source | bslx.cpp:158:46:158:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:158:34:158:39 | call to ByteInStream | bslx.cpp:160:2:160:7 | *stream | provenance | | +| bslx.cpp:158:46:158:49 | *call to data | bslx.cpp:158:34:158:39 | call to ByteInStream | provenance | MaD:105 | +| bslx.cpp:160:2:160:7 | *stream | bslx.cpp:160:19:160:21 | getString output argument | provenance | MaD:109 | +| bslx.cpp:160:19:160:21 | getString output argument | bslx.cpp:161:7:161:17 | * ... | provenance | TaintFunction | +| bslx.cpp:165:33:165:40 | call to source | bslx.cpp:166:46:166:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:166:34:166:39 | call to ByteInStream | bslx.cpp:169:2:169:7 | *stream | provenance | | +| bslx.cpp:166:46:166:49 | *call to data | bslx.cpp:166:34:166:39 | call to ByteInStream | provenance | MaD:105 | +| bslx.cpp:169:2:169:7 | *stream | bslx.cpp:169:17:169:20 | *call to getInt32 | provenance | MaD:108 | +| bslx.cpp:169:17:169:20 | *call to getInt32 | bslx.cpp:169:30:169:30 | getInt32 output argument | provenance | MaD:107 | +| bslx.cpp:169:30:169:30 | getInt32 output argument | bslx.cpp:170:7:170:7 | b | provenance | | +| bslx.cpp:175:33:175:40 | call to source | bslx.cpp:176:20:176:23 | *call to data | provenance | TaintFunction | +| bslx.cpp:176:2:176:7 | reset output argument | bslx.cpp:178:2:178:7 | *stream | provenance | | +| bslx.cpp:176:20:176:23 | *call to data | bslx.cpp:176:2:176:7 | reset output argument | provenance | MaD:110 | +| bslx.cpp:178:2:178:7 | *stream | bslx.cpp:178:18:178:18 | getInt32 output argument | provenance | MaD:107 | +| bslx.cpp:178:18:178:18 | getInt32 output argument | bslx.cpp:179:7:179:7 | x | provenance | | +| bslx.cpp:183:33:183:40 | call to source | bslx.cpp:184:20:184:45 | *call to data | provenance | TaintFunction | +| bslx.cpp:184:20:184:45 | *call to data | bslx.cpp:185:57:185:58 | *sb | provenance | | +| bslx.cpp:184:20:184:45 | *call to data | bslx.cpp:187:2:187:7 | *stream | provenance | TaintFunction | +| bslx.cpp:185:50:185:55 | call to GenericInStream | bslx.cpp:187:2:187:7 | *stream | provenance | | +| bslx.cpp:185:57:185:58 | *sb | bslx.cpp:185:50:185:55 | call to GenericInStream | provenance | MaD:111 | +| bslx.cpp:187:2:187:7 | *stream | bslx.cpp:187:18:187:18 | getInt32 output argument | provenance | MaD:112 | +| bslx.cpp:187:18:187:18 | getInt32 output argument | bslx.cpp:188:7:188:7 | x | provenance | | +| bslx.cpp:192:33:192:40 | call to source | bslx.cpp:193:46:193:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:193:34:193:39 | call to ByteInStream | bslx.cpp:195:53:195:58 | *stream | provenance | | +| bslx.cpp:193:46:193:49 | *call to data | bslx.cpp:193:34:193:39 | call to ByteInStream | provenance | MaD:105 | +| bslx.cpp:195:53:195:58 | *stream | bslx.cpp:195:61:195:63 | bdexStreamIn output argument | provenance | MaD:104 | +| bslx.cpp:195:61:195:63 | bdexStreamIn output argument | bslx.cpp:196:7:196:9 | obj | provenance | | | test.cpp:7:47:7:52 | value2 | test.cpp:7:64:7:69 | value2 | provenance | | | test.cpp:7:64:7:69 | value2 | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | provenance | | | test.cpp:10:10:10:18 | call to ymlSource | test.cpp:10:10:10:18 | call to ymlSource | provenance | Src:MaD:48 | @@ -765,6 +812,50 @@ nodes | bdlbb.cpp:96:37:96:39 | copy output argument | semmle.label | copy output argument | | bdlbb.cpp:96:42:96:44 | *dst | semmle.label | *dst | | bdlbb.cpp:97:7:97:10 | * ... | semmle.label | * ... | +| bslx.cpp:141:33:141:40 | call to source | semmle.label | call to source | +| bslx.cpp:142:34:142:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:142:46:142:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:144:2:144:7 | *stream | semmle.label | *stream | +| bslx.cpp:144:18:144:18 | getInt32 output argument | semmle.label | getInt32 output argument | +| bslx.cpp:145:7:145:7 | x | semmle.label | x | +| bslx.cpp:149:33:149:40 | call to source | semmle.label | call to source | +| bslx.cpp:150:34:150:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:150:46:150:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:152:2:152:7 | *stream | semmle.label | *stream | +| bslx.cpp:152:22:152:24 | getArrayInt8 output argument | semmle.label | getArrayInt8 output argument | +| bslx.cpp:153:7:153:10 | * ... | semmle.label | * ... | +| bslx.cpp:157:33:157:40 | call to source | semmle.label | call to source | +| bslx.cpp:158:34:158:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:158:46:158:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:160:2:160:7 | *stream | semmle.label | *stream | +| bslx.cpp:160:19:160:21 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:161:7:161:17 | * ... | semmle.label | * ... | +| bslx.cpp:165:33:165:40 | call to source | semmle.label | call to source | +| bslx.cpp:166:34:166:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:166:46:166:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:169:2:169:7 | *stream | semmle.label | *stream | +| bslx.cpp:169:17:169:20 | *call to getInt32 | semmle.label | *call to getInt32 | +| bslx.cpp:169:30:169:30 | getInt32 output argument | semmle.label | getInt32 output argument | +| bslx.cpp:170:7:170:7 | b | semmle.label | b | +| bslx.cpp:175:33:175:40 | call to source | semmle.label | call to source | +| bslx.cpp:176:2:176:7 | reset output argument | semmle.label | reset output argument | +| bslx.cpp:176:20:176:23 | *call to data | semmle.label | *call to data | +| bslx.cpp:178:2:178:7 | *stream | semmle.label | *stream | +| bslx.cpp:178:18:178:18 | getInt32 output argument | semmle.label | getInt32 output argument | +| bslx.cpp:179:7:179:7 | x | semmle.label | x | +| bslx.cpp:183:33:183:40 | call to source | semmle.label | call to source | +| bslx.cpp:184:20:184:45 | *call to data | semmle.label | *call to data | +| bslx.cpp:185:50:185:55 | call to GenericInStream | semmle.label | call to GenericInStream | +| bslx.cpp:185:57:185:58 | *sb | semmle.label | *sb | +| bslx.cpp:187:2:187:7 | *stream | semmle.label | *stream | +| bslx.cpp:187:18:187:18 | getInt32 output argument | semmle.label | getInt32 output argument | +| bslx.cpp:188:7:188:7 | x | semmle.label | x | +| bslx.cpp:192:33:192:40 | call to source | semmle.label | call to source | +| bslx.cpp:193:34:193:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:193:46:193:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:195:53:195:58 | *stream | semmle.label | *stream | +| bslx.cpp:195:61:195:63 | bdexStreamIn output argument | semmle.label | bdexStreamIn output argument | +| bslx.cpp:196:7:196:9 | obj | semmle.label | obj | | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | semmle.label | *ymlStepGenerated_with_body | | test.cpp:7:47:7:52 | value2 | semmle.label | value2 | | test.cpp:7:64:7:69 | value2 | semmle.label | value2 | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/steps.expected b/cpp/ql/test/library-tests/dataflow/external-models/steps.expected index 04d300ecbc81..7391f1071766 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/steps.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/steps.expected @@ -82,6 +82,185 @@ | bdlbb.cpp:92:48:92:51 | *call to data | bdlbb.cpp:92:37:92:40 | copy output argument | | bdlbb.cpp:94:46:94:48 | *src | bdlbb.cpp:94:37:94:40 | copy output argument | | bdlbb.cpp:96:42:96:44 | *dst | bdlbb.cpp:96:37:96:39 | copy output argument | +| bslx.cpp:142:46:142:49 | *call to data | bslx.cpp:142:34:142:39 | call to ByteInStream | +| bslx.cpp:144:2:144:7 | *stream | bslx.cpp:144:17:144:20 | *call to getInt32 | +| bslx.cpp:144:2:144:7 | *stream | bslx.cpp:144:18:144:18 | getInt32 output argument | +| bslx.cpp:150:46:150:49 | *call to data | bslx.cpp:150:34:150:39 | call to ByteInStream | +| bslx.cpp:152:2:152:7 | *stream | bslx.cpp:152:21:152:30 | *call to getArrayInt8 | +| bslx.cpp:152:2:152:7 | *stream | bslx.cpp:152:22:152:24 | getArrayInt8 output argument | +| bslx.cpp:158:46:158:49 | *call to data | bslx.cpp:158:34:158:39 | call to ByteInStream | +| bslx.cpp:160:2:160:7 | *stream | bslx.cpp:160:18:160:23 | *call to getString | +| bslx.cpp:160:2:160:7 | *stream | bslx.cpp:160:19:160:21 | getString output argument | +| bslx.cpp:166:46:166:49 | *call to data | bslx.cpp:166:34:166:39 | call to ByteInStream | +| bslx.cpp:169:2:169:7 | *stream | bslx.cpp:169:17:169:20 | *call to getInt32 | +| bslx.cpp:169:2:169:7 | *stream | bslx.cpp:169:18:169:18 | getInt32 output argument | +| bslx.cpp:169:17:169:20 | *call to getInt32 | bslx.cpp:169:29:169:32 | *call to getInt32 | +| bslx.cpp:169:17:169:20 | *call to getInt32 | bslx.cpp:169:30:169:30 | getInt32 output argument | +| bslx.cpp:176:20:176:23 | *call to data | bslx.cpp:176:2:176:7 | reset output argument | +| bslx.cpp:178:2:178:7 | *stream | bslx.cpp:178:17:178:20 | *call to getInt32 | +| bslx.cpp:178:2:178:7 | *stream | bslx.cpp:178:18:178:18 | getInt32 output argument | +| bslx.cpp:185:57:185:58 | *sb | bslx.cpp:185:50:185:55 | call to GenericInStream | +| bslx.cpp:187:2:187:7 | *stream | bslx.cpp:187:17:187:20 | *call to getInt32 | +| bslx.cpp:187:2:187:7 | *stream | bslx.cpp:187:18:187:18 | getInt32 output argument | +| bslx.cpp:193:46:193:49 | *call to data | bslx.cpp:193:34:193:39 | call to ByteInStream | +| bslx.cpp:195:53:195:58 | *stream | bslx.cpp:195:52:195:65 | *call to bdexStreamIn | +| bslx.cpp:195:53:195:58 | *stream | bslx.cpp:195:61:195:63 | bdexStreamIn output argument | +| bslx.cpp:223:2:223:7 | *stream | bslx.cpp:223:18:223:21 | *call to getLength | +| bslx.cpp:223:2:223:7 | *stream | bslx.cpp:223:19:223:19 | getLength output argument | +| bslx.cpp:223:18:223:21 | *call to getLength | bslx.cpp:223:32:223:35 | *call to getVersion | +| bslx.cpp:223:18:223:21 | *call to getLength | bslx.cpp:223:33:223:33 | getVersion output argument | +| bslx.cpp:223:32:223:35 | *call to getVersion | bslx.cpp:223:43:223:46 | *call to getInt8 | +| bslx.cpp:223:32:223:35 | *call to getVersion | bslx.cpp:223:44:223:44 | getInt8 output argument | +| bslx.cpp:223:43:223:46 | *call to getInt8 | bslx.cpp:223:55:223:59 | *call to getUint8 | +| bslx.cpp:223:43:223:46 | *call to getInt8 | bslx.cpp:223:56:223:57 | getUint8 output argument | +| bslx.cpp:223:55:223:59 | *call to getUint8 | bslx.cpp:223:68:223:71 | *call to getInt16 | +| bslx.cpp:223:55:223:59 | *call to getUint8 | bslx.cpp:223:69:223:69 | getInt16 output argument | +| bslx.cpp:223:68:223:71 | *call to getInt16 | bslx.cpp:223:81:223:85 | *call to getUint16 | +| bslx.cpp:223:68:223:71 | *call to getInt16 | bslx.cpp:223:82:223:83 | getUint16 output argument | +| bslx.cpp:223:81:223:85 | *call to getUint16 | bslx.cpp:223:94:223:97 | *call to getInt24 | +| bslx.cpp:223:81:223:85 | *call to getUint16 | bslx.cpp:223:95:223:95 | getInt24 output argument | +| bslx.cpp:223:94:223:97 | *call to getInt24 | bslx.cpp:223:107:223:111 | *call to getUint24 | +| bslx.cpp:223:94:223:97 | *call to getInt24 | bslx.cpp:223:108:223:109 | getUint24 output argument | +| bslx.cpp:223:107:223:111 | *call to getUint24 | bslx.cpp:223:120:223:123 | *call to getInt32 | +| bslx.cpp:223:107:223:111 | *call to getUint24 | bslx.cpp:223:121:223:121 | getInt32 output argument | +| bslx.cpp:223:120:223:123 | *call to getInt32 | bslx.cpp:223:133:223:137 | *call to getUint32 | +| bslx.cpp:223:120:223:123 | *call to getInt32 | bslx.cpp:223:134:223:135 | getUint32 output argument | +| bslx.cpp:223:133:223:137 | *call to getUint32 | bslx.cpp:223:146:223:150 | *call to getInt40 | +| bslx.cpp:223:133:223:137 | *call to getUint32 | bslx.cpp:223:147:223:148 | getInt40 output argument | +| bslx.cpp:223:146:223:150 | *call to getInt40 | bslx.cpp:223:160:223:165 | *call to getUint40 | +| bslx.cpp:223:146:223:150 | *call to getInt40 | bslx.cpp:223:161:223:163 | getUint40 output argument | +| bslx.cpp:223:160:223:165 | *call to getUint40 | bslx.cpp:223:174:223:178 | *call to getInt48 | +| bslx.cpp:223:160:223:165 | *call to getUint40 | bslx.cpp:223:175:223:176 | getInt48 output argument | +| bslx.cpp:223:174:223:178 | *call to getInt48 | bslx.cpp:223:188:223:193 | *call to getUint48 | +| bslx.cpp:223:174:223:178 | *call to getInt48 | bslx.cpp:223:189:223:191 | getUint48 output argument | +| bslx.cpp:223:188:223:193 | *call to getUint48 | bslx.cpp:223:202:223:206 | *call to getInt56 | +| bslx.cpp:223:188:223:193 | *call to getUint48 | bslx.cpp:223:203:223:204 | getInt56 output argument | +| bslx.cpp:223:202:223:206 | *call to getInt56 | bslx.cpp:223:216:223:221 | *call to getUint56 | +| bslx.cpp:223:202:223:206 | *call to getInt56 | bslx.cpp:223:217:223:219 | getUint56 output argument | +| bslx.cpp:223:216:223:221 | *call to getUint56 | bslx.cpp:223:230:223:234 | *call to getInt64 | +| bslx.cpp:223:216:223:221 | *call to getUint56 | bslx.cpp:223:231:223:232 | getInt64 output argument | +| bslx.cpp:223:230:223:234 | *call to getInt64 | bslx.cpp:223:244:223:249 | *call to getUint64 | +| bslx.cpp:223:230:223:234 | *call to getInt64 | bslx.cpp:223:245:223:247 | getUint64 output argument | +| bslx.cpp:223:244:223:249 | *call to getUint64 | bslx.cpp:223:260:223:263 | *call to getFloat32 | +| bslx.cpp:223:244:223:249 | *call to getUint64 | bslx.cpp:223:261:223:261 | getFloat32 output argument | +| bslx.cpp:223:260:223:263 | *call to getFloat32 | bslx.cpp:223:274:223:277 | *call to getFloat64 | +| bslx.cpp:223:260:223:263 | *call to getFloat32 | bslx.cpp:223:275:223:275 | getFloat64 output argument | +| bslx.cpp:223:274:223:277 | *call to getFloat64 | bslx.cpp:223:287:223:292 | *call to getString | +| bslx.cpp:223:274:223:277 | *call to getFloat64 | bslx.cpp:223:288:223:290 | getString output argument | +| bslx.cpp:223:287:223:292 | *call to getString | bslx.cpp:223:305:223:315 | *call to getArrayInt8 | +| bslx.cpp:223:287:223:292 | *call to getString | bslx.cpp:223:306:223:309 | getArrayInt8 output argument | +| bslx.cpp:223:305:223:315 | *call to getArrayInt8 | bslx.cpp:223:329:223:340 | *call to getArrayUint8 | +| bslx.cpp:223:305:223:315 | *call to getArrayInt8 | bslx.cpp:223:330:223:334 | getArrayUint8 output argument | +| bslx.cpp:223:329:223:340 | *call to getArrayUint8 | bslx.cpp:223:354:223:364 | *call to getArrayInt16 | +| bslx.cpp:223:329:223:340 | *call to getArrayUint8 | bslx.cpp:223:355:223:358 | getArrayInt16 output argument | +| bslx.cpp:223:354:223:364 | *call to getArrayInt16 | bslx.cpp:223:379:223:390 | *call to getArrayUint16 | +| bslx.cpp:223:354:223:364 | *call to getArrayInt16 | bslx.cpp:223:380:223:384 | getArrayUint16 output argument | +| bslx.cpp:223:379:223:390 | *call to getArrayUint16 | bslx.cpp:223:404:223:414 | *call to getArrayInt24 | +| bslx.cpp:223:379:223:390 | *call to getArrayUint16 | bslx.cpp:223:405:223:408 | getArrayInt24 output argument | +| bslx.cpp:223:404:223:414 | *call to getArrayInt24 | bslx.cpp:223:429:223:440 | *call to getArrayUint24 | +| bslx.cpp:223:404:223:414 | *call to getArrayInt24 | bslx.cpp:223:430:223:434 | getArrayUint24 output argument | +| bslx.cpp:223:429:223:440 | *call to getArrayUint24 | bslx.cpp:223:454:223:464 | *call to getArrayInt32 | +| bslx.cpp:223:429:223:440 | *call to getArrayUint24 | bslx.cpp:223:455:223:458 | getArrayInt32 output argument | +| bslx.cpp:223:454:223:464 | *call to getArrayInt32 | bslx.cpp:223:479:223:490 | *call to getArrayUint32 | +| bslx.cpp:223:454:223:464 | *call to getArrayInt32 | bslx.cpp:223:480:223:484 | getArrayUint32 output argument | +| bslx.cpp:223:479:223:490 | *call to getArrayUint32 | bslx.cpp:223:504:223:515 | *call to getArrayInt40 | +| bslx.cpp:223:479:223:490 | *call to getArrayUint32 | bslx.cpp:223:505:223:509 | getArrayInt40 output argument | +| bslx.cpp:223:504:223:515 | *call to getArrayInt40 | bslx.cpp:223:530:223:542 | *call to getArrayUint40 | +| bslx.cpp:223:504:223:515 | *call to getArrayInt40 | bslx.cpp:223:531:223:536 | getArrayUint40 output argument | +| bslx.cpp:223:530:223:542 | *call to getArrayUint40 | bslx.cpp:223:556:223:567 | *call to getArrayInt48 | +| bslx.cpp:223:530:223:542 | *call to getArrayUint40 | bslx.cpp:223:557:223:561 | getArrayInt48 output argument | +| bslx.cpp:223:556:223:567 | *call to getArrayInt48 | bslx.cpp:223:582:223:594 | *call to getArrayUint48 | +| bslx.cpp:223:556:223:567 | *call to getArrayInt48 | bslx.cpp:223:583:223:588 | getArrayUint48 output argument | +| bslx.cpp:223:582:223:594 | *call to getArrayUint48 | bslx.cpp:223:608:223:619 | *call to getArrayInt56 | +| bslx.cpp:223:582:223:594 | *call to getArrayUint48 | bslx.cpp:223:609:223:613 | getArrayInt56 output argument | +| bslx.cpp:223:608:223:619 | *call to getArrayInt56 | bslx.cpp:223:634:223:646 | *call to getArrayUint56 | +| bslx.cpp:223:608:223:619 | *call to getArrayInt56 | bslx.cpp:223:635:223:640 | getArrayUint56 output argument | +| bslx.cpp:223:634:223:646 | *call to getArrayUint56 | bslx.cpp:223:660:223:671 | *call to getArrayInt64 | +| bslx.cpp:223:634:223:646 | *call to getArrayUint56 | bslx.cpp:223:661:223:665 | getArrayInt64 output argument | +| bslx.cpp:223:660:223:671 | *call to getArrayInt64 | bslx.cpp:223:686:223:698 | *call to getArrayUint64 | +| bslx.cpp:223:660:223:671 | *call to getArrayInt64 | bslx.cpp:223:687:223:692 | getArrayUint64 output argument | +| bslx.cpp:223:686:223:698 | *call to getArrayUint64 | bslx.cpp:223:714:223:724 | *call to getArrayFloat32 | +| bslx.cpp:223:686:223:698 | *call to getArrayUint64 | bslx.cpp:223:715:223:718 | getArrayFloat32 output argument | +| bslx.cpp:223:714:223:724 | *call to getArrayFloat32 | bslx.cpp:223:740:223:750 | *call to getArrayFloat64 | +| bslx.cpp:223:714:223:724 | *call to getArrayFloat32 | bslx.cpp:223:741:223:744 | getArrayFloat64 output argument | +| bslx.cpp:248:2:248:7 | *stream | bslx.cpp:248:18:248:21 | *call to getLength | +| bslx.cpp:248:2:248:7 | *stream | bslx.cpp:248:19:248:19 | getLength output argument | +| bslx.cpp:248:18:248:21 | *call to getLength | bslx.cpp:248:32:248:35 | *call to getVersion | +| bslx.cpp:248:18:248:21 | *call to getLength | bslx.cpp:248:33:248:33 | getVersion output argument | +| bslx.cpp:248:32:248:35 | *call to getVersion | bslx.cpp:248:43:248:46 | *call to getInt8 | +| bslx.cpp:248:32:248:35 | *call to getVersion | bslx.cpp:248:44:248:44 | getInt8 output argument | +| bslx.cpp:248:43:248:46 | *call to getInt8 | bslx.cpp:248:55:248:59 | *call to getUint8 | +| bslx.cpp:248:43:248:46 | *call to getInt8 | bslx.cpp:248:56:248:57 | getUint8 output argument | +| bslx.cpp:248:55:248:59 | *call to getUint8 | bslx.cpp:248:68:248:71 | *call to getInt16 | +| bslx.cpp:248:55:248:59 | *call to getUint8 | bslx.cpp:248:69:248:69 | getInt16 output argument | +| bslx.cpp:248:68:248:71 | *call to getInt16 | bslx.cpp:248:81:248:85 | *call to getUint16 | +| bslx.cpp:248:68:248:71 | *call to getInt16 | bslx.cpp:248:82:248:83 | getUint16 output argument | +| bslx.cpp:248:81:248:85 | *call to getUint16 | bslx.cpp:248:94:248:97 | *call to getInt24 | +| bslx.cpp:248:81:248:85 | *call to getUint16 | bslx.cpp:248:95:248:95 | getInt24 output argument | +| bslx.cpp:248:94:248:97 | *call to getInt24 | bslx.cpp:248:107:248:111 | *call to getUint24 | +| bslx.cpp:248:94:248:97 | *call to getInt24 | bslx.cpp:248:108:248:109 | getUint24 output argument | +| bslx.cpp:248:107:248:111 | *call to getUint24 | bslx.cpp:248:120:248:123 | *call to getInt32 | +| bslx.cpp:248:107:248:111 | *call to getUint24 | bslx.cpp:248:121:248:121 | getInt32 output argument | +| bslx.cpp:248:120:248:123 | *call to getInt32 | bslx.cpp:248:133:248:137 | *call to getUint32 | +| bslx.cpp:248:120:248:123 | *call to getInt32 | bslx.cpp:248:134:248:135 | getUint32 output argument | +| bslx.cpp:248:133:248:137 | *call to getUint32 | bslx.cpp:248:146:248:150 | *call to getInt40 | +| bslx.cpp:248:133:248:137 | *call to getUint32 | bslx.cpp:248:147:248:148 | getInt40 output argument | +| bslx.cpp:248:146:248:150 | *call to getInt40 | bslx.cpp:248:160:248:165 | *call to getUint40 | +| bslx.cpp:248:146:248:150 | *call to getInt40 | bslx.cpp:248:161:248:163 | getUint40 output argument | +| bslx.cpp:248:160:248:165 | *call to getUint40 | bslx.cpp:248:174:248:178 | *call to getInt48 | +| bslx.cpp:248:160:248:165 | *call to getUint40 | bslx.cpp:248:175:248:176 | getInt48 output argument | +| bslx.cpp:248:174:248:178 | *call to getInt48 | bslx.cpp:248:188:248:193 | *call to getUint48 | +| bslx.cpp:248:174:248:178 | *call to getInt48 | bslx.cpp:248:189:248:191 | getUint48 output argument | +| bslx.cpp:248:188:248:193 | *call to getUint48 | bslx.cpp:248:202:248:206 | *call to getInt56 | +| bslx.cpp:248:188:248:193 | *call to getUint48 | bslx.cpp:248:203:248:204 | getInt56 output argument | +| bslx.cpp:248:202:248:206 | *call to getInt56 | bslx.cpp:248:216:248:221 | *call to getUint56 | +| bslx.cpp:248:202:248:206 | *call to getInt56 | bslx.cpp:248:217:248:219 | getUint56 output argument | +| bslx.cpp:248:216:248:221 | *call to getUint56 | bslx.cpp:248:230:248:234 | *call to getInt64 | +| bslx.cpp:248:216:248:221 | *call to getUint56 | bslx.cpp:248:231:248:232 | getInt64 output argument | +| bslx.cpp:248:230:248:234 | *call to getInt64 | bslx.cpp:248:244:248:249 | *call to getUint64 | +| bslx.cpp:248:230:248:234 | *call to getInt64 | bslx.cpp:248:245:248:247 | getUint64 output argument | +| bslx.cpp:248:244:248:249 | *call to getUint64 | bslx.cpp:248:260:248:263 | *call to getFloat32 | +| bslx.cpp:248:244:248:249 | *call to getUint64 | bslx.cpp:248:261:248:261 | getFloat32 output argument | +| bslx.cpp:248:260:248:263 | *call to getFloat32 | bslx.cpp:248:274:248:277 | *call to getFloat64 | +| bslx.cpp:248:260:248:263 | *call to getFloat32 | bslx.cpp:248:275:248:275 | getFloat64 output argument | +| bslx.cpp:248:274:248:277 | *call to getFloat64 | bslx.cpp:248:287:248:292 | *call to getString | +| bslx.cpp:248:274:248:277 | *call to getFloat64 | bslx.cpp:248:288:248:290 | getString output argument | +| bslx.cpp:248:287:248:292 | *call to getString | bslx.cpp:248:305:248:315 | *call to getArrayInt8 | +| bslx.cpp:248:287:248:292 | *call to getString | bslx.cpp:248:306:248:309 | getArrayInt8 output argument | +| bslx.cpp:248:305:248:315 | *call to getArrayInt8 | bslx.cpp:248:329:248:340 | *call to getArrayUint8 | +| bslx.cpp:248:305:248:315 | *call to getArrayInt8 | bslx.cpp:248:330:248:334 | getArrayUint8 output argument | +| bslx.cpp:248:329:248:340 | *call to getArrayUint8 | bslx.cpp:248:354:248:364 | *call to getArrayInt16 | +| bslx.cpp:248:329:248:340 | *call to getArrayUint8 | bslx.cpp:248:355:248:358 | getArrayInt16 output argument | +| bslx.cpp:248:354:248:364 | *call to getArrayInt16 | bslx.cpp:248:379:248:390 | *call to getArrayUint16 | +| bslx.cpp:248:354:248:364 | *call to getArrayInt16 | bslx.cpp:248:380:248:384 | getArrayUint16 output argument | +| bslx.cpp:248:379:248:390 | *call to getArrayUint16 | bslx.cpp:248:404:248:414 | *call to getArrayInt24 | +| bslx.cpp:248:379:248:390 | *call to getArrayUint16 | bslx.cpp:248:405:248:408 | getArrayInt24 output argument | +| bslx.cpp:248:404:248:414 | *call to getArrayInt24 | bslx.cpp:248:429:248:440 | *call to getArrayUint24 | +| bslx.cpp:248:404:248:414 | *call to getArrayInt24 | bslx.cpp:248:430:248:434 | getArrayUint24 output argument | +| bslx.cpp:248:429:248:440 | *call to getArrayUint24 | bslx.cpp:248:454:248:464 | *call to getArrayInt32 | +| bslx.cpp:248:429:248:440 | *call to getArrayUint24 | bslx.cpp:248:455:248:458 | getArrayInt32 output argument | +| bslx.cpp:248:454:248:464 | *call to getArrayInt32 | bslx.cpp:248:479:248:490 | *call to getArrayUint32 | +| bslx.cpp:248:454:248:464 | *call to getArrayInt32 | bslx.cpp:248:480:248:484 | getArrayUint32 output argument | +| bslx.cpp:248:479:248:490 | *call to getArrayUint32 | bslx.cpp:248:504:248:515 | *call to getArrayInt40 | +| bslx.cpp:248:479:248:490 | *call to getArrayUint32 | bslx.cpp:248:505:248:509 | getArrayInt40 output argument | +| bslx.cpp:248:504:248:515 | *call to getArrayInt40 | bslx.cpp:248:530:248:542 | *call to getArrayUint40 | +| bslx.cpp:248:504:248:515 | *call to getArrayInt40 | bslx.cpp:248:531:248:536 | getArrayUint40 output argument | +| bslx.cpp:248:530:248:542 | *call to getArrayUint40 | bslx.cpp:248:556:248:567 | *call to getArrayInt48 | +| bslx.cpp:248:530:248:542 | *call to getArrayUint40 | bslx.cpp:248:557:248:561 | getArrayInt48 output argument | +| bslx.cpp:248:556:248:567 | *call to getArrayInt48 | bslx.cpp:248:582:248:594 | *call to getArrayUint48 | +| bslx.cpp:248:556:248:567 | *call to getArrayInt48 | bslx.cpp:248:583:248:588 | getArrayUint48 output argument | +| bslx.cpp:248:582:248:594 | *call to getArrayUint48 | bslx.cpp:248:608:248:619 | *call to getArrayInt56 | +| bslx.cpp:248:582:248:594 | *call to getArrayUint48 | bslx.cpp:248:609:248:613 | getArrayInt56 output argument | +| bslx.cpp:248:608:248:619 | *call to getArrayInt56 | bslx.cpp:248:634:248:646 | *call to getArrayUint56 | +| bslx.cpp:248:608:248:619 | *call to getArrayInt56 | bslx.cpp:248:635:248:640 | getArrayUint56 output argument | +| bslx.cpp:248:634:248:646 | *call to getArrayUint56 | bslx.cpp:248:660:248:671 | *call to getArrayInt64 | +| bslx.cpp:248:634:248:646 | *call to getArrayUint56 | bslx.cpp:248:661:248:665 | getArrayInt64 output argument | +| bslx.cpp:248:660:248:671 | *call to getArrayInt64 | bslx.cpp:248:686:248:698 | *call to getArrayUint64 | +| bslx.cpp:248:660:248:671 | *call to getArrayInt64 | bslx.cpp:248:687:248:692 | getArrayUint64 output argument | +| bslx.cpp:248:686:248:698 | *call to getArrayUint64 | bslx.cpp:248:714:248:724 | *call to getArrayFloat32 | +| bslx.cpp:248:686:248:698 | *call to getArrayUint64 | bslx.cpp:248:715:248:718 | getArrayFloat32 output argument | +| bslx.cpp:248:714:248:724 | *call to getArrayFloat32 | bslx.cpp:248:740:248:750 | *call to getArrayFloat64 | +| bslx.cpp:248:714:248:724 | *call to getArrayFloat32 | bslx.cpp:248:741:248:744 | getArrayFloat64 output argument | | test.cpp:17:24:17:24 | x | test.cpp:17:10:17:22 | call to ymlStepManual | | test.cpp:21:27:21:27 | x | test.cpp:21:10:21:25 | call to ymlStepGenerated | | test.cpp:25:35:25:35 | x | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | From 0622b4aed8f331d12e832aee760d67221165609a Mon Sep 17 00:00:00 2001 From: AkshayK Date: Mon, 14 Sep 2026 11:26:11 -0400 Subject: [PATCH 2/2] fix(cpp): address remaining bslx review feedback --- .../change-notes/2026-08-27-bslx-models.md | 2 +- cpp/ql/lib/ext/bslx.model.yml | 36 +- cpp/ql/lib/semmle/code/cpp/models/Models.qll | 1 - .../code/cpp/models/implementations/Bslx.qll | 16 - .../dataflow/external-models/bslx.cpp | 74 +- .../dataflow/external-models/flow.expected | 816 ++++++++++++------ .../dataflow/external-models/steps.expected | 323 +++---- .../external-models/validatemodels.expected | 1 + 8 files changed, 825 insertions(+), 444 deletions(-) delete mode 100644 cpp/ql/lib/semmle/code/cpp/models/implementations/Bslx.qll diff --git a/cpp/ql/lib/change-notes/2026-08-27-bslx-models.md b/cpp/ql/lib/change-notes/2026-08-27-bslx-models.md index f0905e0ddf41..e1edd01e8e5e 100644 --- a/cpp/ql/lib/change-notes/2026-08-27-bslx-models.md +++ b/cpp/ql/lib/change-notes/2026-08-27-bslx-models.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* Added taint flow summaries for the BDE `bslx` byte-stream deserializers `BloombergLP::bslx::ByteInStream`, `BloombergLP::bslx::GenericInStream`, and `BloombergLP::bslx::InStreamFunctions::bdexStreamIn`, so that data read from a `bslx` in-stream is tracked as tainted. +* Added taint flow summaries for the BDE `bslx` byte-stream deserializers `BloombergLP::bslx::ByteInStream`, `BloombergLP::bslx::GenericInStream`, and `BloombergLP::bslx::InStreamFunctions::bdexStreamIn`. diff --git a/cpp/ql/lib/ext/bslx.model.yml b/cpp/ql/lib/ext/bslx.model.yml index 02dfd475b1d5..11732ff5e4b2 100644 --- a/cpp/ql/lib/ext/bslx.model.yml +++ b/cpp/ql/lib/ext/bslx.model.yml @@ -4,16 +4,14 @@ extensions: pack: codeql/cpp-all extensible: summaryModel data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - # === bslx::ByteInStream: concrete byte-array in-stream === - # Taint in: the source buffer/streambuf taints the stream (`this`). - # Note: MaD taint is additive, so `reset` cannot clear taint from a previously - # tainted stream; a stream reset with a clean buffer keeps any earlier taint. + # bslx::ByteInStream - ["BloombergLP::bslx", "ByteInStream", true, "ByteInStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - - ["BloombergLP::bslx", "ByteInStream", true, "reset", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - # Taint out: the stream (`this`) taints the deserialized string/array output buffer. - # Scalar getters (getLength, getVersion, getInt*, getUint*, getFloat*) are deliberately - # not modeled as outputs: most queries sanitize taint through integers, so such rows - # would add nothing. Their fluent `ReturnValue[*]` rows below are still modeled. + # Input-taking resets replace the buffer; reset() only rewinds it. + - ["BloombergLP::bslx", "ByteInStream", true, "reset", "(const char *,size_t)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + - ["BloombergLP::bslx", "ByteInStream", true, "reset", "(const StringRef &)", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + # bslx::ByteInStream getters. + # Scalar getters (getLength, getVersion, getInt*, getUint*, getFloat*) are not modeled, + # as we are generally not interested in tainted scalar values. - ["BloombergLP::bslx", "ByteInStream", true, "getString", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] - ["BloombergLP::bslx", "ByteInStream", true, "getArrayInt8", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint8", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] @@ -33,7 +31,7 @@ extensions: - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] - ["BloombergLP::bslx", "ByteInStream", true, "getArrayFloat32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] - ["BloombergLP::bslx", "ByteInStream", true, "getArrayFloat64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] - # Fluent interface: each get* returns `*this`, keeping the returned stream tainted. + # bslx::ByteInStream fluent interface - ["BloombergLP::bslx", "ByteInStream", true, "getLength", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - ["BloombergLP::bslx", "ByteInStream", true, "getVersion", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - ["BloombergLP::bslx", "ByteInStream", true, "getInt8", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] @@ -73,13 +71,11 @@ extensions: - ["BloombergLP::bslx", "ByteInStream", true, "getArrayUint64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - ["BloombergLP::bslx", "ByteInStream", true, "getArrayFloat32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - ["BloombergLP::bslx", "ByteInStream", true, "getArrayFloat64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - # === bslx::GenericInStream: streambuf-backed in-stream === - # Taint in: the source buffer/streambuf taints the stream (`this`). + # bslx::GenericInStream - ["BloombergLP::bslx", "GenericInStream", true, "GenericInStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] - # Taint out: the stream (`this`) taints the deserialized string/array output buffer. - # Scalar getters (getLength, getVersion, getInt*, getUint*, getFloat*) are deliberately - # not modeled as outputs: most queries sanitize taint through integers, so such rows - # would add nothing. Their fluent `ReturnValue[*]` rows below are still modeled. + # bslx::GenericInStream getters. + # Scalar getters (getLength, getVersion, getInt*, getUint*, getFloat*) are not modeled, + # as we are generally not interested in tainted scalar values. - ["BloombergLP::bslx", "GenericInStream", true, "getString", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] - ["BloombergLP::bslx", "GenericInStream", true, "getArrayInt8", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint8", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] @@ -99,7 +95,7 @@ extensions: - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] - ["BloombergLP::bslx", "GenericInStream", true, "getArrayFloat32", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] - ["BloombergLP::bslx", "GenericInStream", true, "getArrayFloat64", "", "", "Argument[-1]", "Argument[*0]", "taint", "manual"] - # Fluent interface: each get* returns `*this`, keeping the returned stream tainted. + # bslx::GenericInStream fluent interface - ["BloombergLP::bslx", "GenericInStream", true, "getLength", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - ["BloombergLP::bslx", "GenericInStream", true, "getVersion", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - ["BloombergLP::bslx", "GenericInStream", true, "getInt8", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] @@ -139,8 +135,6 @@ extensions: - ["BloombergLP::bslx", "GenericInStream", true, "getArrayUint64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - ["BloombergLP::bslx", "GenericInStream", true, "getArrayFloat32", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - ["BloombergLP::bslx", "GenericInStream", true, "getArrayFloat64", "", "", "Argument[-1]", "ReturnValue[*]", "taint", "manual"] - # === bslx::InStreamFunctions::bdexStreamIn: generic BDEX deserialization === - # Free function template; `InStreamFunctions` is a namespace, so `type` is empty. - # Object outputs are modeled in implementations/Bslx.qll, where their type - # can be checked to exclude scalar outputs. + # bslx::InStreamFunctions::bdexStreamIn + - ["BloombergLP::bslx::InStreamFunctions", "", false, "bdexStreamIn", "", "", "Argument[*0]", "Argument[*1]", "taint", "manual"] - ["BloombergLP::bslx::InStreamFunctions", "", false, "bdexStreamIn", "", "", "Argument[*0]", "ReturnValue[*]", "taint", "manual"] diff --git a/cpp/ql/lib/semmle/code/cpp/models/Models.qll b/cpp/ql/lib/semmle/code/cpp/models/Models.qll index 7f599d6a081c..54dc0fa0ff64 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/Models.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/Models.qll @@ -1,5 +1,4 @@ private import implementations.Allocation -private import implementations.Bslx private import implementations.Deallocation private import implementations.Fopen private import implementations.Fread diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Bslx.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Bslx.qll deleted file mode 100644 index d47c10956bb2..000000000000 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Bslx.qll +++ /dev/null @@ -1,16 +0,0 @@ -/** Provides taint models for BDE BDEX deserialization into objects. */ - -import semmle.code.cpp.models.interfaces.Taint - -private class BdexStreamIn extends TaintFunction { - BdexStreamIn() { - this.hasQualifiedName("BloombergLP::bslx::InStreamFunctions", "bdexStreamIn") and - this.getParameter(1).getUnspecifiedType().(ReferenceType).getBaseType().getUnspecifiedType() - instanceof Class - } - - override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { - input.isParameterDeref(0) and - output.isParameterDeref(1) - } -} diff --git a/cpp/ql/test/library-tests/dataflow/external-models/bslx.cpp b/cpp/ql/test/library-tests/dataflow/external-models/bslx.cpp index 9577fc9a1c84..10d1179e4c33 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/bslx.cpp +++ b/cpp/ql/test/library-tests/dataflow/external-models/bslx.cpp @@ -23,6 +23,10 @@ namespace bsl { // BDE wraps every package-group namespace in `BloombergLP`; this stub reproduces that. namespace BloombergLP { +namespace bslstl { + template class StringRefImp {}; + typedef StringRefImp StringRef; +} namespace bsls { // `bsls::Types` provides the fixed-width integer aliases used by the stream API. struct Types { @@ -35,7 +39,9 @@ namespace bslx { public: ByteInStream(); ByteInStream(const char *buffer, std::size_t numBytes); + void reset(); void reset(const char *buffer, std::size_t numBytes); + void reset(const bslstl::StringRef &srcData); ByteInStream &getLength(int &variable); ByteInStream &getVersion(int &variable); ByteInStream &getInt8(char &variable); @@ -211,9 +217,11 @@ void test_bdexStreamIn() { sink(*obj.data()); // $ ir } -// --- coverage: call every modeled getter so steps.ql verifies each row is consumed --- +// --- coverage: verify flow through every modeled getter in a fluent chain --- -void coverage_ByteInStream(BloombergLP::bslx::ByteInStream &stream) { +void coverage_ByteInStream() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); int i = 0; unsigned int ui = 0; char c = 0; @@ -235,10 +243,15 @@ void coverage_ByteInStream(BloombergLP::bslx::ByteInStream &stream) { BloombergLP::bsls::Types::Uint64 ullbuf[16]; float fbuf[16]; double dbuf[16]; - stream.getLength(i).getVersion(i).getInt8(c).getUint8(uc).getInt16(s).getUint16(us).getInt24(i).getUint24(ui).getInt32(i).getUint32(ui).getInt40(ll).getUint40(ull).getInt48(ll).getUint48(ull).getInt56(ll).getUint56(ull).getInt64(ll).getUint64(ull).getFloat32(f).getFloat64(d).getString(str).getArrayInt8(cbuf, 16).getArrayUint8(ucbuf, 16).getArrayInt16(sbuf, 16).getArrayUint16(usbuf, 16).getArrayInt24(ibuf, 16).getArrayUint24(uibuf, 16).getArrayInt32(ibuf, 16).getArrayUint32(uibuf, 16).getArrayInt40(llbuf, 16).getArrayUint40(ullbuf, 16).getArrayInt48(llbuf, 16).getArrayUint48(ullbuf, 16).getArrayInt56(llbuf, 16).getArrayUint56(ullbuf, 16).getArrayInt64(llbuf, 16).getArrayUint64(ullbuf, 16).getArrayFloat32(fbuf, 16).getArrayFloat64(dbuf, 16); + bsl::string out; + stream.getLength(i).getVersion(i).getInt8(c).getUint8(uc).getInt16(s).getUint16(us).getInt24(i).getUint24(ui).getInt32(i).getUint32(ui).getInt40(ll).getUint40(ull).getInt48(ll).getUint48(ull).getInt56(ll).getUint56(ull).getInt64(ll).getUint64(ull).getFloat32(f).getFloat64(d).getString(str).getArrayInt8(cbuf, 16).getArrayUint8(ucbuf, 16).getArrayInt16(sbuf, 16).getArrayUint16(usbuf, 16).getArrayInt24(ibuf, 16).getArrayUint24(uibuf, 16).getArrayInt32(ibuf, 16).getArrayUint32(uibuf, 16).getArrayInt40(llbuf, 16).getArrayUint40(ullbuf, 16).getArrayInt48(llbuf, 16).getArrayUint48(ullbuf, 16).getArrayInt56(llbuf, 16).getArrayUint56(ullbuf, 16).getArrayInt64(llbuf, 16).getArrayUint64(ullbuf, 16).getArrayFloat32(fbuf, 16).getArrayFloat64(dbuf, 16).getString(out); + sink(*out.data()); // $ ir } -void coverage_GenericInStream(BloombergLP::bslx::GenericInStream &stream) { +void coverage_GenericInStream() { + std::string data = std::string(source()); + MyStreamBuf *sb = (MyStreamBuf *)data.data(); + BloombergLP::bslx::GenericInStream stream(sb); int i = 0; unsigned int ui = 0; char c = 0; @@ -260,17 +273,19 @@ void coverage_GenericInStream(BloombergLP::bslx::GenericInStream &s BloombergLP::bsls::Types::Uint64 ullbuf[16]; float fbuf[16]; double dbuf[16]; - stream.getLength(i).getVersion(i).getInt8(c).getUint8(uc).getInt16(s).getUint16(us).getInt24(i).getUint24(ui).getInt32(i).getUint32(ui).getInt40(ll).getUint40(ull).getInt48(ll).getUint48(ull).getInt56(ll).getUint56(ull).getInt64(ll).getUint64(ull).getFloat32(f).getFloat64(d).getString(str).getArrayInt8(cbuf, 16).getArrayUint8(ucbuf, 16).getArrayInt16(sbuf, 16).getArrayUint16(usbuf, 16).getArrayInt24(ibuf, 16).getArrayUint24(uibuf, 16).getArrayInt32(ibuf, 16).getArrayUint32(uibuf, 16).getArrayInt40(llbuf, 16).getArrayUint40(ullbuf, 16).getArrayInt48(llbuf, 16).getArrayUint48(ullbuf, 16).getArrayInt56(llbuf, 16).getArrayUint56(ullbuf, 16).getArrayInt64(llbuf, 16).getArrayUint64(ullbuf, 16).getArrayFloat32(fbuf, 16).getArrayFloat64(dbuf, 16); + bsl::string out; + stream.getLength(i).getVersion(i).getInt8(c).getUint8(uc).getInt16(s).getUint16(us).getInt24(i).getUint24(ui).getInt32(i).getUint32(ui).getInt40(ll).getUint40(ull).getInt48(ll).getUint48(ull).getInt56(ll).getUint56(ull).getInt64(ll).getUint64(ull).getFloat32(f).getFloat64(d).getString(str).getArrayInt8(cbuf, 16).getArrayUint8(ucbuf, 16).getArrayInt16(sbuf, 16).getArrayUint16(usbuf, 16).getArrayInt24(ibuf, 16).getArrayUint24(uibuf, 16).getArrayInt32(ibuf, 16).getArrayUint32(uibuf, 16).getArrayInt40(llbuf, 16).getArrayUint40(ullbuf, 16).getArrayInt48(llbuf, 16).getArrayUint48(ullbuf, 16).getArrayInt56(llbuf, 16).getArrayUint56(ullbuf, 16).getArrayInt64(llbuf, 16).getArrayUint64(ullbuf, 16).getArrayFloat32(fbuf, 16).getArrayFloat64(dbuf, 16).getString(out); + sink(*out.data()); // $ ir } -void test_bdexStreamIn_integer_no_flow() { +void test_bdexStreamIn_integer() { std::string data = std::string(source()); BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); int x = 0; BloombergLP::bslx::InStreamFunctions::bdexStreamIn(stream, x); - sink(x); // no flow: scalar outputs are deliberately not modeled + sink(x); // $ ir BloombergLP::bslx::InStreamFunctions::bdexStreamIn(stream, x, 0); - sink(x); // no flow: the versioned overload must also exclude scalar outputs + sink(x); // $ ir bsl::string out; BloombergLP::bslx::InStreamFunctions::bdexStreamIn(stream, x, 0).getString(out); sink(*out.data()); // $ ir @@ -297,3 +312,46 @@ void test_bdexStreamIn_object() { BloombergLP::bslx::InStreamFunctions::bdexStreamIn(stream, out, 1); sink(out); // $ ir } + +namespace StringRefTest { + BloombergLP::bslstl::StringRef source(); +} + +void test_ByteInStream_reset_stringref() { + BloombergLP::bslx::ByteInStream stream; + BloombergLP::bslstl::StringRef data = StringRefTest::source(); + stream.reset(data); + bsl::string out; + stream.getString(out); + sink(*out.data()); // $ ir +} + +void test_ByteInStream_reset_rewind() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + stream.reset(); + bsl::string out; + stream.getString(out); + sink(*out.data()); // $ ir +} + +void test_ByteInStream_reset_clean_buffer() { + BloombergLP::bslx::ByteInStream stream; + const char data[] = "clean"; + stream.reset(data, *source()); + stream.reset(); + bsl::string out; + stream.getString(out); + sink(*out.data()); // no flow: the tainted length does not taint the buffer +} + +void test_ByteInStream_reset_replaces_buffer() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + const char clean[] = "clean"; + stream.reset(clean, sizeof(clean)); + bsl::string out; + stream.getString(out); + // Known false positive: this summary does not kill taint from the old buffer. + sink(*out.data()); // $ SPURIOUS: ir +} diff --git a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected index 0ec047772a77..95fe809920a3 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected @@ -102,77 +102,156 @@ models | 101 | Summary: BloombergLP::bdlbb; BlobUtil; true; copy; (Blob *,int,const char *,int); ; Argument[*2]; Argument[*0]; taint; manual | | 102 | Summary: BloombergLP::bdlbb; BlobUtil; true; copy; (char *,const Blob &,int,int); ; Argument[*1]; Argument[*0]; taint; manual | | 103 | Summary: BloombergLP::bdlbb; BlobUtil; true; getContiguousRangeOrCopy; ; ; Argument[*1]; ReturnValue[*]; taint; manual | -| 104 | Summary: BloombergLP::bslx::InStreamFunctions; ; false; bdexStreamIn; ; ; Argument[*0]; ReturnValue[*]; taint; manual | -| 105 | Summary: BloombergLP::bslx; ByteInStream; true; ByteInStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 106 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt8; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 107 | Summary: BloombergLP::bslx; ByteInStream; true; getInt32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | -| 108 | Summary: BloombergLP::bslx; ByteInStream; true; getString; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 109 | Summary: BloombergLP::bslx; ByteInStream; true; reset; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 110 | Summary: BloombergLP::bslx; GenericInStream; true; GenericInStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 111 | Summary: BloombergLP::bslx; GenericInStream; true; getString; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 112 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &); ; Argument[*1..2]; ReturnValue; taint; manual | -| 113 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &,error_code &); ; Argument[*1..2]; ReturnValue; taint; manual | -| 114 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &,flags); ; Argument[*1..2]; ReturnValue; taint; manual | -| 115 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &,flags,error_code &); ; Argument[*1..2]; ReturnValue; taint; manual | -| 116 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view); ; Argument[1..2]; ReturnValue; taint; manual | -| 117 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view,error_code &); ; Argument[1..2]; ReturnValue; taint; manual | -| 118 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view,flags); ; Argument[1..2]; ReturnValue; taint; manual | -| 119 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view,flags,error_code &); ; Argument[1..2]; ReturnValue; taint; manual | -| 120 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &); ; Argument[*0..1]; ReturnValue; taint; manual | -| 121 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &,error_code &); ; Argument[*0..1]; ReturnValue; taint; manual | -| 122 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &,flags); ; Argument[*0..1]; ReturnValue; taint; manual | -| 123 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &,flags,error_code &); ; Argument[*0..1]; ReturnValue; taint; manual | -| 124 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view); ; Argument[0..1]; ReturnValue; taint; manual | -| 125 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view,error_code &); ; Argument[0..1]; ReturnValue; taint; manual | -| 126 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view,flags); ; Argument[0..1]; ReturnValue; taint; manual | -| 127 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view,flags,error_code &); ; Argument[0..1]; ReturnValue; taint; manual | -| 128 | Summary: boost::asio; ; false; buffer; ; ; Argument[*0]; ReturnValue; taint; manual | -| 129 | Summary: google::protobuf; MessageLite; true; AppendPartialToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 130 | Summary: google::protobuf; MessageLite; true; AppendPartialToString; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 131 | Summary: google::protobuf; MessageLite; true; AppendToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 132 | Summary: google::protobuf; MessageLite; true; AppendToString; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 133 | Summary: google::protobuf; MessageLite; true; MergeFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 134 | Summary: google::protobuf; MessageLite; true; MergeFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 135 | Summary: google::protobuf; MessageLite; true; MergeFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 136 | Summary: google::protobuf; MessageLite; true; MergeFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | -| 137 | Summary: google::protobuf; MessageLite; true; MergeFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | -| 138 | Summary: google::protobuf; MessageLite; true; MergePartialFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 139 | Summary: google::protobuf; MessageLite; true; MergePartialFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 140 | Summary: google::protobuf; MessageLite; true; MergePartialFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 141 | Summary: google::protobuf; MessageLite; true; MergePartialFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | -| 142 | Summary: google::protobuf; MessageLite; true; MergePartialFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | -| 143 | Summary: google::protobuf; MessageLite; true; ParseFromArray; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 144 | Summary: google::protobuf; MessageLite; true; ParseFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 145 | Summary: google::protobuf; MessageLite; true; ParseFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 146 | Summary: google::protobuf; MessageLite; true; ParseFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 147 | Summary: google::protobuf; MessageLite; true; ParseFromIstream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 148 | Summary: google::protobuf; MessageLite; true; ParseFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | -| 149 | Summary: google::protobuf; MessageLite; true; ParseFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | -| 150 | Summary: google::protobuf; MessageLite; true; ParseFromZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 151 | Summary: google::protobuf; MessageLite; true; ParsePartialFromArray; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 152 | Summary: google::protobuf; MessageLite; true; ParsePartialFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 153 | Summary: google::protobuf; MessageLite; true; ParsePartialFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 154 | Summary: google::protobuf; MessageLite; true; ParsePartialFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 155 | Summary: google::protobuf; MessageLite; true; ParsePartialFromIstream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 156 | Summary: google::protobuf; MessageLite; true; ParsePartialFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | -| 157 | Summary: google::protobuf; MessageLite; true; ParsePartialFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | -| 158 | Summary: google::protobuf; MessageLite; true; ParsePartialFromZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 159 | Summary: google::protobuf; MessageLite; true; SerializeAsCord; ; ; Argument[-1]; ReturnValue; taint; manual | -| 160 | Summary: google::protobuf; MessageLite; true; SerializeAsString; ; ; Argument[-1]; ReturnValue; taint; manual | -| 161 | Summary: google::protobuf; MessageLite; true; SerializePartialAsCord; ; ; Argument[-1]; ReturnValue; taint; manual | -| 162 | Summary: google::protobuf; MessageLite; true; SerializePartialAsString; ; ; Argument[-1]; ReturnValue; taint; manual | -| 163 | Summary: google::protobuf; MessageLite; true; SerializePartialToArray; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 164 | Summary: google::protobuf; MessageLite; true; SerializePartialToCodedStream; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 165 | Summary: google::protobuf; MessageLite; true; SerializePartialToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 166 | Summary: google::protobuf; MessageLite; true; SerializePartialToOstream; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 167 | Summary: google::protobuf; MessageLite; true; SerializePartialToString; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 168 | Summary: google::protobuf; MessageLite; true; SerializePartialToZeroCopyStream; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 169 | Summary: google::protobuf; MessageLite; true; SerializeToArray; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 170 | Summary: google::protobuf; MessageLite; true; SerializeToCodedStream; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 171 | Summary: google::protobuf; MessageLite; true; SerializeToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 172 | Summary: google::protobuf; MessageLite; true; SerializeToOstream; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 173 | Summary: google::protobuf; MessageLite; true; SerializeToString; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 174 | Summary: google::protobuf; MessageLite; true; SerializeToZeroCopyStream; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 104 | Summary: BloombergLP::bslx::InStreamFunctions; ; false; bdexStreamIn; ; ; Argument[*0]; Argument[*1]; taint; manual | +| 105 | Summary: BloombergLP::bslx::InStreamFunctions; ; false; bdexStreamIn; ; ; Argument[*0]; ReturnValue[*]; taint; manual | +| 106 | Summary: BloombergLP::bslx; ByteInStream; true; ByteInStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 107 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayFloat32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 108 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayFloat64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 109 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt16; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 110 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt24; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 111 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 112 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt40; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 113 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt48; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 114 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt56; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 115 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 116 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt8; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 117 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayInt8; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 118 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayUint16; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 119 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayUint24; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 120 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayUint32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 121 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayUint40; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 122 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayUint48; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 123 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayUint56; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 124 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayUint64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 125 | Summary: BloombergLP::bslx; ByteInStream; true; getArrayUint8; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 126 | Summary: BloombergLP::bslx; ByteInStream; true; getFloat32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 127 | Summary: BloombergLP::bslx; ByteInStream; true; getFloat64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 128 | Summary: BloombergLP::bslx; ByteInStream; true; getInt16; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 129 | Summary: BloombergLP::bslx; ByteInStream; true; getInt24; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 130 | Summary: BloombergLP::bslx; ByteInStream; true; getInt32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 131 | Summary: BloombergLP::bslx; ByteInStream; true; getInt40; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 132 | Summary: BloombergLP::bslx; ByteInStream; true; getInt48; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 133 | Summary: BloombergLP::bslx; ByteInStream; true; getInt56; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 134 | Summary: BloombergLP::bslx; ByteInStream; true; getInt64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 135 | Summary: BloombergLP::bslx; ByteInStream; true; getInt8; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 136 | Summary: BloombergLP::bslx; ByteInStream; true; getLength; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 137 | Summary: BloombergLP::bslx; ByteInStream; true; getString; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 138 | Summary: BloombergLP::bslx; ByteInStream; true; getString; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 139 | Summary: BloombergLP::bslx; ByteInStream; true; getUint16; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 140 | Summary: BloombergLP::bslx; ByteInStream; true; getUint24; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 141 | Summary: BloombergLP::bslx; ByteInStream; true; getUint32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 142 | Summary: BloombergLP::bslx; ByteInStream; true; getUint40; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 143 | Summary: BloombergLP::bslx; ByteInStream; true; getUint48; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 144 | Summary: BloombergLP::bslx; ByteInStream; true; getUint56; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 145 | Summary: BloombergLP::bslx; ByteInStream; true; getUint64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 146 | Summary: BloombergLP::bslx; ByteInStream; true; getUint8; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 147 | Summary: BloombergLP::bslx; ByteInStream; true; getVersion; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 148 | Summary: BloombergLP::bslx; ByteInStream; true; reset; (const StringRef &); ; Argument[*0]; Argument[-1]; taint; manual | +| 149 | Summary: BloombergLP::bslx; ByteInStream; true; reset; (const char *,size_t); ; Argument[*0]; Argument[-1]; taint; manual | +| 150 | Summary: BloombergLP::bslx; GenericInStream; true; GenericInStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 151 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayFloat32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 152 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayFloat64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 153 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayInt16; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 154 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayInt24; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 155 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayInt32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 156 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayInt40; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 157 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayInt48; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 158 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayInt56; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 159 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayInt64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 160 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayInt8; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 161 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayUint16; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 162 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayUint24; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 163 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayUint32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 164 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayUint40; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 165 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayUint48; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 166 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayUint56; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 167 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayUint64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 168 | Summary: BloombergLP::bslx; GenericInStream; true; getArrayUint8; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 169 | Summary: BloombergLP::bslx; GenericInStream; true; getFloat32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 170 | Summary: BloombergLP::bslx; GenericInStream; true; getFloat64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 171 | Summary: BloombergLP::bslx; GenericInStream; true; getInt16; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 172 | Summary: BloombergLP::bslx; GenericInStream; true; getInt24; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 173 | Summary: BloombergLP::bslx; GenericInStream; true; getInt32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 174 | Summary: BloombergLP::bslx; GenericInStream; true; getInt40; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 175 | Summary: BloombergLP::bslx; GenericInStream; true; getInt48; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 176 | Summary: BloombergLP::bslx; GenericInStream; true; getInt56; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 177 | Summary: BloombergLP::bslx; GenericInStream; true; getInt64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 178 | Summary: BloombergLP::bslx; GenericInStream; true; getInt8; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 179 | Summary: BloombergLP::bslx; GenericInStream; true; getLength; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 180 | Summary: BloombergLP::bslx; GenericInStream; true; getString; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 181 | Summary: BloombergLP::bslx; GenericInStream; true; getString; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 182 | Summary: BloombergLP::bslx; GenericInStream; true; getUint16; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 183 | Summary: BloombergLP::bslx; GenericInStream; true; getUint24; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 184 | Summary: BloombergLP::bslx; GenericInStream; true; getUint32; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 185 | Summary: BloombergLP::bslx; GenericInStream; true; getUint40; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 186 | Summary: BloombergLP::bslx; GenericInStream; true; getUint48; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 187 | Summary: BloombergLP::bslx; GenericInStream; true; getUint56; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 188 | Summary: BloombergLP::bslx; GenericInStream; true; getUint64; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 189 | Summary: BloombergLP::bslx; GenericInStream; true; getUint8; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 190 | Summary: BloombergLP::bslx; GenericInStream; true; getVersion; ; ; Argument[-1]; ReturnValue[*]; taint; manual | +| 191 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &); ; Argument[*1..2]; ReturnValue; taint; manual | +| 192 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &,error_code &); ; Argument[*1..2]; ReturnValue; taint; manual | +| 193 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &,flags); ; Argument[*1..2]; ReturnValue; taint; manual | +| 194 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,const string &,const string &,flags,error_code &); ; Argument[*1..2]; ReturnValue; taint; manual | +| 195 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view); ; Argument[1..2]; ReturnValue; taint; manual | +| 196 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view,error_code &); ; Argument[1..2]; ReturnValue; taint; manual | +| 197 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view,flags); ; Argument[1..2]; ReturnValue; taint; manual | +| 198 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const InternetProtocol &,string_view,string_view,flags,error_code &); ; Argument[1..2]; ReturnValue; taint; manual | +| 199 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &); ; Argument[*0..1]; ReturnValue; taint; manual | +| 200 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &,error_code &); ; Argument[*0..1]; ReturnValue; taint; manual | +| 201 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &,flags); ; Argument[*0..1]; ReturnValue; taint; manual | +| 202 | Summary: boost::asio::ip; basic_resolver; false; resolve; (const string &,const string &,flags,error_code &); ; Argument[*0..1]; ReturnValue; taint; manual | +| 203 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view); ; Argument[0..1]; ReturnValue; taint; manual | +| 204 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view,error_code &); ; Argument[0..1]; ReturnValue; taint; manual | +| 205 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view,flags); ; Argument[0..1]; ReturnValue; taint; manual | +| 206 | Summary: boost::asio::ip; basic_resolver; false; resolve; (string_view,string_view,flags,error_code &); ; Argument[0..1]; ReturnValue; taint; manual | +| 207 | Summary: boost::asio; ; false; buffer; ; ; Argument[*0]; ReturnValue; taint; manual | +| 208 | Summary: google::protobuf; MessageLite; true; AppendPartialToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 209 | Summary: google::protobuf; MessageLite; true; AppendPartialToString; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 210 | Summary: google::protobuf; MessageLite; true; AppendToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 211 | Summary: google::protobuf; MessageLite; true; AppendToString; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 212 | Summary: google::protobuf; MessageLite; true; MergeFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 213 | Summary: google::protobuf; MessageLite; true; MergeFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 214 | Summary: google::protobuf; MessageLite; true; MergeFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 215 | Summary: google::protobuf; MessageLite; true; MergeFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | +| 216 | Summary: google::protobuf; MessageLite; true; MergeFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | +| 217 | Summary: google::protobuf; MessageLite; true; MergePartialFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 218 | Summary: google::protobuf; MessageLite; true; MergePartialFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 219 | Summary: google::protobuf; MessageLite; true; MergePartialFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 220 | Summary: google::protobuf; MessageLite; true; MergePartialFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | +| 221 | Summary: google::protobuf; MessageLite; true; MergePartialFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | +| 222 | Summary: google::protobuf; MessageLite; true; ParseFromArray; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 223 | Summary: google::protobuf; MessageLite; true; ParseFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 224 | Summary: google::protobuf; MessageLite; true; ParseFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 225 | Summary: google::protobuf; MessageLite; true; ParseFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 226 | Summary: google::protobuf; MessageLite; true; ParseFromIstream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 227 | Summary: google::protobuf; MessageLite; true; ParseFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | +| 228 | Summary: google::protobuf; MessageLite; true; ParseFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | +| 229 | Summary: google::protobuf; MessageLite; true; ParseFromZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 230 | Summary: google::protobuf; MessageLite; true; ParsePartialFromArray; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 231 | Summary: google::protobuf; MessageLite; true; ParsePartialFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 232 | Summary: google::protobuf; MessageLite; true; ParsePartialFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 233 | Summary: google::protobuf; MessageLite; true; ParsePartialFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 234 | Summary: google::protobuf; MessageLite; true; ParsePartialFromIstream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 235 | Summary: google::protobuf; MessageLite; true; ParsePartialFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | +| 236 | Summary: google::protobuf; MessageLite; true; ParsePartialFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | +| 237 | Summary: google::protobuf; MessageLite; true; ParsePartialFromZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | +| 238 | Summary: google::protobuf; MessageLite; true; SerializeAsCord; ; ; Argument[-1]; ReturnValue; taint; manual | +| 239 | Summary: google::protobuf; MessageLite; true; SerializeAsString; ; ; Argument[-1]; ReturnValue; taint; manual | +| 240 | Summary: google::protobuf; MessageLite; true; SerializePartialAsCord; ; ; Argument[-1]; ReturnValue; taint; manual | +| 241 | Summary: google::protobuf; MessageLite; true; SerializePartialAsString; ; ; Argument[-1]; ReturnValue; taint; manual | +| 242 | Summary: google::protobuf; MessageLite; true; SerializePartialToArray; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 243 | Summary: google::protobuf; MessageLite; true; SerializePartialToCodedStream; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 244 | Summary: google::protobuf; MessageLite; true; SerializePartialToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 245 | Summary: google::protobuf; MessageLite; true; SerializePartialToOstream; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 246 | Summary: google::protobuf; MessageLite; true; SerializePartialToString; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 247 | Summary: google::protobuf; MessageLite; true; SerializePartialToZeroCopyStream; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 248 | Summary: google::protobuf; MessageLite; true; SerializeToArray; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 249 | Summary: google::protobuf; MessageLite; true; SerializeToCodedStream; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 250 | Summary: google::protobuf; MessageLite; true; SerializeToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 251 | Summary: google::protobuf; MessageLite; true; SerializeToOstream; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 252 | Summary: google::protobuf; MessageLite; true; SerializeToString; ; ; Argument[-1]; Argument[*0]; taint; manual | +| 253 | Summary: google::protobuf; MessageLite; true; SerializeToZeroCopyStream; ; ; Argument[-1]; Argument[*0]; taint; manual | edges | asio_streams.cpp:116:34:116:44 | read_until output argument | asio_streams.cpp:120:7:120:17 | recv_buffer | provenance | Src:MaD:56 | | asio_streams.cpp:116:34:116:44 | read_until output argument | asio_streams.cpp:122:29:122:39 | recv_buffer | provenance | Src:MaD:56 Sink:MaD:4 | @@ -181,7 +260,7 @@ edges | asio_streams.cpp:129:44:129:62 | call to buffer | asio_streams.cpp:129:44:129:62 | call to buffer | provenance | | | asio_streams.cpp:129:44:129:62 | call to buffer | asio_streams.cpp:130:7:130:17 | send_buffer | provenance | | | asio_streams.cpp:129:44:129:62 | call to buffer | asio_streams.cpp:132:29:132:39 | send_buffer | provenance | Sink:MaD:4 | -| asio_streams.cpp:129:64:129:71 | *send_str | asio_streams.cpp:129:44:129:62 | call to buffer | provenance | MaD:128 | +| asio_streams.cpp:129:64:129:71 | *send_str | asio_streams.cpp:129:44:129:62 | call to buffer | provenance | MaD:207 | | asio_streams.cpp:143:19:143:26 | call to source | asio_streams.cpp:148:24:148:27 | *host | provenance | TaintFunction | | asio_streams.cpp:143:19:143:26 | call to source | asio_streams.cpp:149:24:149:27 | *host | provenance | TaintFunction | | asio_streams.cpp:143:19:143:26 | call to source | asio_streams.cpp:150:24:150:27 | *host | provenance | TaintFunction | @@ -198,22 +277,22 @@ edges | asio_streams.cpp:145:29:145:36 | call to source | asio_streams.cpp:164:34:164:42 | host_view | provenance | TaintFunction | | asio_streams.cpp:145:29:145:36 | call to source | asio_streams.cpp:165:34:165:42 | host_view | provenance | TaintFunction | | asio_streams.cpp:145:29:145:36 | call to source | asio_streams.cpp:166:34:166:42 | host_view | provenance | TaintFunction | -| asio_streams.cpp:148:24:148:27 | *host | asio_streams.cpp:148:16:148:22 | call to resolve | provenance | MaD:120 | -| asio_streams.cpp:149:24:149:27 | *host | asio_streams.cpp:149:16:149:22 | call to resolve | provenance | MaD:121 | -| asio_streams.cpp:150:24:150:27 | *host | asio_streams.cpp:150:16:150:22 | call to resolve | provenance | MaD:122 | -| asio_streams.cpp:151:24:151:27 | *host | asio_streams.cpp:151:16:151:22 | call to resolve | provenance | MaD:123 | -| asio_streams.cpp:153:24:153:32 | host_view | asio_streams.cpp:153:16:153:22 | call to resolve | provenance | MaD:124 | -| asio_streams.cpp:154:24:154:32 | host_view | asio_streams.cpp:154:16:154:22 | call to resolve | provenance | MaD:125 | -| asio_streams.cpp:155:24:155:32 | host_view | asio_streams.cpp:155:16:155:22 | call to resolve | provenance | MaD:126 | -| asio_streams.cpp:156:24:156:32 | host_view | asio_streams.cpp:156:16:156:22 | call to resolve | provenance | MaD:127 | -| asio_streams.cpp:158:34:158:37 | *host | asio_streams.cpp:158:16:158:22 | call to resolve | provenance | MaD:112 | -| asio_streams.cpp:159:34:159:37 | *host | asio_streams.cpp:159:16:159:22 | call to resolve | provenance | MaD:113 | -| asio_streams.cpp:160:34:160:37 | *host | asio_streams.cpp:160:16:160:22 | call to resolve | provenance | MaD:114 | -| asio_streams.cpp:161:34:161:37 | *host | asio_streams.cpp:161:16:161:22 | call to resolve | provenance | MaD:115 | -| asio_streams.cpp:163:34:163:42 | host_view | asio_streams.cpp:163:16:163:22 | call to resolve | provenance | MaD:116 | -| asio_streams.cpp:164:34:164:42 | host_view | asio_streams.cpp:164:16:164:22 | call to resolve | provenance | MaD:117 | -| asio_streams.cpp:165:34:165:42 | host_view | asio_streams.cpp:165:16:165:22 | call to resolve | provenance | MaD:118 | -| asio_streams.cpp:166:34:166:42 | host_view | asio_streams.cpp:166:16:166:22 | call to resolve | provenance | MaD:119 | +| asio_streams.cpp:148:24:148:27 | *host | asio_streams.cpp:148:16:148:22 | call to resolve | provenance | MaD:199 | +| asio_streams.cpp:149:24:149:27 | *host | asio_streams.cpp:149:16:149:22 | call to resolve | provenance | MaD:200 | +| asio_streams.cpp:150:24:150:27 | *host | asio_streams.cpp:150:16:150:22 | call to resolve | provenance | MaD:201 | +| asio_streams.cpp:151:24:151:27 | *host | asio_streams.cpp:151:16:151:22 | call to resolve | provenance | MaD:202 | +| asio_streams.cpp:153:24:153:32 | host_view | asio_streams.cpp:153:16:153:22 | call to resolve | provenance | MaD:203 | +| asio_streams.cpp:154:24:154:32 | host_view | asio_streams.cpp:154:16:154:22 | call to resolve | provenance | MaD:204 | +| asio_streams.cpp:155:24:155:32 | host_view | asio_streams.cpp:155:16:155:22 | call to resolve | provenance | MaD:205 | +| asio_streams.cpp:156:24:156:32 | host_view | asio_streams.cpp:156:16:156:22 | call to resolve | provenance | MaD:206 | +| asio_streams.cpp:158:34:158:37 | *host | asio_streams.cpp:158:16:158:22 | call to resolve | provenance | MaD:191 | +| asio_streams.cpp:159:34:159:37 | *host | asio_streams.cpp:159:16:159:22 | call to resolve | provenance | MaD:192 | +| asio_streams.cpp:160:34:160:37 | *host | asio_streams.cpp:160:16:160:22 | call to resolve | provenance | MaD:193 | +| asio_streams.cpp:161:34:161:37 | *host | asio_streams.cpp:161:16:161:22 | call to resolve | provenance | MaD:194 | +| asio_streams.cpp:163:34:163:42 | host_view | asio_streams.cpp:163:16:163:22 | call to resolve | provenance | MaD:195 | +| asio_streams.cpp:164:34:164:42 | host_view | asio_streams.cpp:164:16:164:22 | call to resolve | provenance | MaD:196 | +| asio_streams.cpp:165:34:165:42 | host_view | asio_streams.cpp:165:16:165:22 | call to resolve | provenance | MaD:197 | +| asio_streams.cpp:166:34:166:42 | host_view | asio_streams.cpp:166:16:166:22 | call to resolve | provenance | MaD:198 | | asio_streams.cpp:175:22:175:29 | call to source | asio_streams.cpp:179:30:179:36 | *service | provenance | TaintFunction | | asio_streams.cpp:175:22:175:29 | call to source | asio_streams.cpp:180:30:180:36 | *service | provenance | TaintFunction | | asio_streams.cpp:175:22:175:29 | call to source | asio_streams.cpp:181:30:181:36 | *service | provenance | TaintFunction | @@ -230,22 +309,22 @@ edges | asio_streams.cpp:177:32:177:39 | call to source | asio_streams.cpp:195:45:195:56 | service_view | provenance | TaintFunction | | asio_streams.cpp:177:32:177:39 | call to source | asio_streams.cpp:196:45:196:56 | service_view | provenance | TaintFunction | | asio_streams.cpp:177:32:177:39 | call to source | asio_streams.cpp:197:45:197:56 | service_view | provenance | TaintFunction | -| asio_streams.cpp:179:30:179:36 | *service | asio_streams.cpp:179:16:179:22 | call to resolve | provenance | MaD:120 | -| asio_streams.cpp:180:30:180:36 | *service | asio_streams.cpp:180:16:180:22 | call to resolve | provenance | MaD:121 | -| asio_streams.cpp:181:30:181:36 | *service | asio_streams.cpp:181:16:181:22 | call to resolve | provenance | MaD:122 | -| asio_streams.cpp:182:30:182:36 | *service | asio_streams.cpp:182:16:182:22 | call to resolve | provenance | MaD:123 | -| asio_streams.cpp:184:35:184:46 | service_view | asio_streams.cpp:184:16:184:22 | call to resolve | provenance | MaD:124 | -| asio_streams.cpp:185:35:185:46 | service_view | asio_streams.cpp:185:16:185:22 | call to resolve | provenance | MaD:125 | -| asio_streams.cpp:186:35:186:46 | service_view | asio_streams.cpp:186:16:186:22 | call to resolve | provenance | MaD:126 | -| asio_streams.cpp:187:35:187:46 | service_view | asio_streams.cpp:187:16:187:22 | call to resolve | provenance | MaD:127 | -| asio_streams.cpp:189:40:189:46 | *service | asio_streams.cpp:189:16:189:22 | call to resolve | provenance | MaD:112 | -| asio_streams.cpp:190:40:190:46 | *service | asio_streams.cpp:190:16:190:22 | call to resolve | provenance | MaD:113 | -| asio_streams.cpp:191:40:191:46 | *service | asio_streams.cpp:191:16:191:22 | call to resolve | provenance | MaD:114 | -| asio_streams.cpp:192:40:192:46 | *service | asio_streams.cpp:192:16:192:22 | call to resolve | provenance | MaD:115 | -| asio_streams.cpp:194:45:194:56 | service_view | asio_streams.cpp:194:16:194:22 | call to resolve | provenance | MaD:116 | -| asio_streams.cpp:195:45:195:56 | service_view | asio_streams.cpp:195:16:195:22 | call to resolve | provenance | MaD:117 | -| asio_streams.cpp:196:45:196:56 | service_view | asio_streams.cpp:196:16:196:22 | call to resolve | provenance | MaD:118 | -| asio_streams.cpp:197:45:197:56 | service_view | asio_streams.cpp:197:16:197:22 | call to resolve | provenance | MaD:119 | +| asio_streams.cpp:179:30:179:36 | *service | asio_streams.cpp:179:16:179:22 | call to resolve | provenance | MaD:199 | +| asio_streams.cpp:180:30:180:36 | *service | asio_streams.cpp:180:16:180:22 | call to resolve | provenance | MaD:200 | +| asio_streams.cpp:181:30:181:36 | *service | asio_streams.cpp:181:16:181:22 | call to resolve | provenance | MaD:201 | +| asio_streams.cpp:182:30:182:36 | *service | asio_streams.cpp:182:16:182:22 | call to resolve | provenance | MaD:202 | +| asio_streams.cpp:184:35:184:46 | service_view | asio_streams.cpp:184:16:184:22 | call to resolve | provenance | MaD:203 | +| asio_streams.cpp:185:35:185:46 | service_view | asio_streams.cpp:185:16:185:22 | call to resolve | provenance | MaD:204 | +| asio_streams.cpp:186:35:186:46 | service_view | asio_streams.cpp:186:16:186:22 | call to resolve | provenance | MaD:205 | +| asio_streams.cpp:187:35:187:46 | service_view | asio_streams.cpp:187:16:187:22 | call to resolve | provenance | MaD:206 | +| asio_streams.cpp:189:40:189:46 | *service | asio_streams.cpp:189:16:189:22 | call to resolve | provenance | MaD:191 | +| asio_streams.cpp:190:40:190:46 | *service | asio_streams.cpp:190:16:190:22 | call to resolve | provenance | MaD:192 | +| asio_streams.cpp:191:40:191:46 | *service | asio_streams.cpp:191:16:191:22 | call to resolve | provenance | MaD:193 | +| asio_streams.cpp:192:40:192:46 | *service | asio_streams.cpp:192:16:192:22 | call to resolve | provenance | MaD:194 | +| asio_streams.cpp:194:45:194:56 | service_view | asio_streams.cpp:194:16:194:22 | call to resolve | provenance | MaD:195 | +| asio_streams.cpp:195:45:195:56 | service_view | asio_streams.cpp:195:16:195:22 | call to resolve | provenance | MaD:196 | +| asio_streams.cpp:196:45:196:56 | service_view | asio_streams.cpp:196:16:196:22 | call to resolve | provenance | MaD:197 | +| asio_streams.cpp:197:45:197:56 | service_view | asio_streams.cpp:197:16:197:22 | call to resolve | provenance | MaD:198 | | azure.cpp:253:48:253:60 | *call to GetBodyStream | azure.cpp:257:5:257:8 | *resp | provenance | | | azure.cpp:253:48:253:60 | *call to GetBodyStream | azure.cpp:262:5:262:8 | *resp | provenance | | | azure.cpp:253:48:253:60 | *call to GetBodyStream | azure.cpp:266:38:266:41 | *resp | provenance | | @@ -317,243 +396,362 @@ edges | bdlbb.cpp:94:46:94:48 | *src | bdlbb.cpp:94:37:94:40 | copy output argument | provenance | MaD:100 | | bdlbb.cpp:96:37:96:39 | copy output argument | bdlbb.cpp:97:7:97:10 | * ... | provenance | | | bdlbb.cpp:96:42:96:44 | *dst | bdlbb.cpp:96:37:96:39 | copy output argument | provenance | MaD:102 | -| bslx.cpp:155:33:155:40 | call to source | bslx.cpp:156:46:156:49 | *call to data | provenance | TaintFunction | -| bslx.cpp:156:34:156:39 | call to ByteInStream | bslx.cpp:158:2:158:7 | *stream | provenance | | -| bslx.cpp:156:46:156:49 | *call to data | bslx.cpp:156:34:156:39 | call to ByteInStream | provenance | MaD:105 | -| bslx.cpp:158:2:158:7 | *stream | bslx.cpp:158:22:158:24 | getArrayInt8 output argument | provenance | MaD:106 | -| bslx.cpp:158:22:158:24 | getArrayInt8 output argument | bslx.cpp:159:7:159:10 | * ... | provenance | | -| bslx.cpp:163:33:163:40 | call to source | bslx.cpp:164:46:164:49 | *call to data | provenance | TaintFunction | -| bslx.cpp:164:34:164:39 | call to ByteInStream | bslx.cpp:166:2:166:7 | *stream | provenance | | -| bslx.cpp:164:46:164:49 | *call to data | bslx.cpp:164:34:164:39 | call to ByteInStream | provenance | MaD:105 | -| bslx.cpp:166:2:166:7 | *stream | bslx.cpp:166:19:166:21 | getString output argument | provenance | MaD:108 | -| bslx.cpp:166:19:166:21 | getString output argument | bslx.cpp:167:7:167:17 | * ... | provenance | TaintFunction | -| bslx.cpp:171:33:171:40 | call to source | bslx.cpp:172:46:172:49 | *call to data | provenance | TaintFunction | -| bslx.cpp:172:34:172:39 | call to ByteInStream | bslx.cpp:175:2:175:7 | *stream | provenance | | -| bslx.cpp:172:46:172:49 | *call to data | bslx.cpp:172:34:172:39 | call to ByteInStream | provenance | MaD:105 | -| bslx.cpp:175:2:175:7 | *stream | bslx.cpp:175:17:175:20 | *call to getInt32 | provenance | MaD:107 | -| bslx.cpp:175:17:175:20 | *call to getInt32 | bslx.cpp:175:31:175:33 | getString output argument | provenance | MaD:108 | -| bslx.cpp:175:31:175:33 | getString output argument | bslx.cpp:176:7:176:17 | * ... | provenance | TaintFunction | -| bslx.cpp:181:33:181:40 | call to source | bslx.cpp:182:20:182:23 | *call to data | provenance | TaintFunction | -| bslx.cpp:182:2:182:7 | reset output argument | bslx.cpp:184:2:184:7 | *stream | provenance | | -| bslx.cpp:182:20:182:23 | *call to data | bslx.cpp:182:2:182:7 | reset output argument | provenance | MaD:109 | -| bslx.cpp:184:2:184:7 | *stream | bslx.cpp:184:19:184:21 | getString output argument | provenance | MaD:108 | -| bslx.cpp:184:19:184:21 | getString output argument | bslx.cpp:185:7:185:17 | * ... | provenance | TaintFunction | -| bslx.cpp:189:33:189:40 | call to source | bslx.cpp:190:20:190:45 | *call to data | provenance | TaintFunction | -| bslx.cpp:190:20:190:45 | *call to data | bslx.cpp:191:57:191:58 | *sb | provenance | | -| bslx.cpp:190:20:190:45 | *call to data | bslx.cpp:193:2:193:7 | *stream | provenance | TaintFunction | -| bslx.cpp:191:50:191:55 | call to GenericInStream | bslx.cpp:193:2:193:7 | *stream | provenance | | -| bslx.cpp:191:57:191:58 | *sb | bslx.cpp:191:50:191:55 | call to GenericInStream | provenance | MaD:110 | -| bslx.cpp:193:2:193:7 | *stream | bslx.cpp:193:19:193:21 | getString output argument | provenance | MaD:111 | -| bslx.cpp:193:19:193:21 | getString output argument | bslx.cpp:194:7:194:17 | * ... | provenance | TaintFunction | -| bslx.cpp:207:33:207:40 | call to source | bslx.cpp:208:46:208:49 | *call to data | provenance | TaintFunction | -| bslx.cpp:208:34:208:39 | call to ByteInStream | bslx.cpp:211:7:211:17 | * ... | provenance | TaintFunction | -| bslx.cpp:208:46:208:49 | *call to data | bslx.cpp:208:34:208:39 | call to ByteInStream | provenance | MaD:105 | -| bslx.cpp:267:33:267:40 | call to source | bslx.cpp:268:46:268:49 | *call to data | provenance | TaintFunction | -| bslx.cpp:268:34:268:39 | call to ByteInStream | bslx.cpp:275:53:275:58 | *stream | provenance | | -| bslx.cpp:268:46:268:49 | *call to data | bslx.cpp:268:34:268:39 | call to ByteInStream | provenance | MaD:105 | -| bslx.cpp:275:52:275:66 | *call to bdexStreamIn | bslx.cpp:275:77:275:79 | getString output argument | provenance | MaD:108 | -| bslx.cpp:275:53:275:58 | *stream | bslx.cpp:275:52:275:66 | *call to bdexStreamIn | provenance | MaD:104 | -| bslx.cpp:275:77:275:79 | getString output argument | bslx.cpp:276:7:276:17 | * ... | provenance | TaintFunction | -| bslx.cpp:280:33:280:40 | call to source | bslx.cpp:281:46:281:49 | *call to data | provenance | TaintFunction | -| bslx.cpp:281:34:281:39 | call to ByteInStream | bslx.cpp:284:7:284:17 | * ... | provenance | TaintFunction | -| bslx.cpp:281:46:281:49 | *call to data | bslx.cpp:281:34:281:39 | call to ByteInStream | provenance | MaD:105 | -| bslx.cpp:294:33:294:40 | call to source | bslx.cpp:295:46:295:49 | *call to data | provenance | TaintFunction | -| bslx.cpp:295:34:295:39 | call to ByteInStream | bslx.cpp:298:7:298:9 | out | provenance | TaintFunction | -| bslx.cpp:295:46:295:49 | *call to data | bslx.cpp:295:34:295:39 | call to ByteInStream | provenance | MaD:105 | +| bslx.cpp:161:33:161:40 | call to source | bslx.cpp:162:46:162:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:162:34:162:39 | call to ByteInStream | bslx.cpp:164:2:164:7 | *stream | provenance | | +| bslx.cpp:162:46:162:49 | *call to data | bslx.cpp:162:34:162:39 | call to ByteInStream | provenance | MaD:106 | +| bslx.cpp:164:2:164:7 | *stream | bslx.cpp:164:22:164:24 | getArrayInt8 output argument | provenance | MaD:116 | +| bslx.cpp:164:22:164:24 | getArrayInt8 output argument | bslx.cpp:165:7:165:10 | * ... | provenance | | +| bslx.cpp:169:33:169:40 | call to source | bslx.cpp:170:46:170:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:170:34:170:39 | call to ByteInStream | bslx.cpp:172:2:172:7 | *stream | provenance | | +| bslx.cpp:170:46:170:49 | *call to data | bslx.cpp:170:34:170:39 | call to ByteInStream | provenance | MaD:106 | +| bslx.cpp:172:2:172:7 | *stream | bslx.cpp:172:19:172:21 | getString output argument | provenance | MaD:137 | +| bslx.cpp:172:19:172:21 | getString output argument | bslx.cpp:173:7:173:17 | * ... | provenance | TaintFunction | +| bslx.cpp:177:33:177:40 | call to source | bslx.cpp:178:46:178:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:178:34:178:39 | call to ByteInStream | bslx.cpp:181:2:181:7 | *stream | provenance | | +| bslx.cpp:178:46:178:49 | *call to data | bslx.cpp:178:34:178:39 | call to ByteInStream | provenance | MaD:106 | +| bslx.cpp:181:2:181:7 | *stream | bslx.cpp:181:17:181:20 | *call to getInt32 | provenance | MaD:130 | +| bslx.cpp:181:17:181:20 | *call to getInt32 | bslx.cpp:181:31:181:33 | getString output argument | provenance | MaD:137 | +| bslx.cpp:181:31:181:33 | getString output argument | bslx.cpp:182:7:182:17 | * ... | provenance | TaintFunction | +| bslx.cpp:187:33:187:40 | call to source | bslx.cpp:188:20:188:23 | *call to data | provenance | TaintFunction | +| bslx.cpp:188:2:188:7 | reset output argument | bslx.cpp:190:2:190:7 | *stream | provenance | | +| bslx.cpp:188:20:188:23 | *call to data | bslx.cpp:188:2:188:7 | reset output argument | provenance | MaD:149 | +| bslx.cpp:190:2:190:7 | *stream | bslx.cpp:190:19:190:21 | getString output argument | provenance | MaD:137 | +| bslx.cpp:190:19:190:21 | getString output argument | bslx.cpp:191:7:191:17 | * ... | provenance | TaintFunction | +| bslx.cpp:195:33:195:40 | call to source | bslx.cpp:196:20:196:45 | *call to data | provenance | TaintFunction | +| bslx.cpp:196:20:196:45 | *call to data | bslx.cpp:197:57:197:58 | *sb | provenance | | +| bslx.cpp:196:20:196:45 | *call to data | bslx.cpp:199:2:199:7 | *stream | provenance | TaintFunction | +| bslx.cpp:197:50:197:55 | call to GenericInStream | bslx.cpp:199:2:199:7 | *stream | provenance | | +| bslx.cpp:197:57:197:58 | *sb | bslx.cpp:197:50:197:55 | call to GenericInStream | provenance | MaD:150 | +| bslx.cpp:199:2:199:7 | *stream | bslx.cpp:199:19:199:21 | getString output argument | provenance | MaD:180 | +| bslx.cpp:199:19:199:21 | getString output argument | bslx.cpp:200:7:200:17 | * ... | provenance | TaintFunction | +| bslx.cpp:213:33:213:40 | call to source | bslx.cpp:214:46:214:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:214:34:214:39 | call to ByteInStream | bslx.cpp:216:53:216:58 | *stream | provenance | | +| bslx.cpp:214:46:214:49 | *call to data | bslx.cpp:214:34:214:39 | call to ByteInStream | provenance | MaD:106 | +| bslx.cpp:216:53:216:58 | *stream | bslx.cpp:216:61:216:63 | bdexStreamIn output argument | provenance | MaD:104 | +| bslx.cpp:216:61:216:63 | bdexStreamIn output argument | bslx.cpp:217:7:217:17 | * ... | provenance | TaintFunction | +| bslx.cpp:223:33:223:40 | call to source | bslx.cpp:224:46:224:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:224:34:224:39 | call to ByteInStream | bslx.cpp:247:2:247:7 | *stream | provenance | | +| bslx.cpp:224:46:224:49 | *call to data | bslx.cpp:224:34:224:39 | call to ByteInStream | provenance | MaD:106 | +| bslx.cpp:247:2:247:7 | *stream | bslx.cpp:247:18:247:21 | *call to getLength | provenance | MaD:136 | +| bslx.cpp:247:18:247:21 | *call to getLength | bslx.cpp:247:32:247:35 | *call to getVersion | provenance | MaD:147 | +| bslx.cpp:247:32:247:35 | *call to getVersion | bslx.cpp:247:43:247:46 | *call to getInt8 | provenance | MaD:135 | +| bslx.cpp:247:43:247:46 | *call to getInt8 | bslx.cpp:247:55:247:59 | *call to getUint8 | provenance | MaD:146 | +| bslx.cpp:247:55:247:59 | *call to getUint8 | bslx.cpp:247:68:247:71 | *call to getInt16 | provenance | MaD:128 | +| bslx.cpp:247:68:247:71 | *call to getInt16 | bslx.cpp:247:81:247:85 | *call to getUint16 | provenance | MaD:139 | +| bslx.cpp:247:81:247:85 | *call to getUint16 | bslx.cpp:247:94:247:97 | *call to getInt24 | provenance | MaD:129 | +| bslx.cpp:247:94:247:97 | *call to getInt24 | bslx.cpp:247:107:247:111 | *call to getUint24 | provenance | MaD:140 | +| bslx.cpp:247:107:247:111 | *call to getUint24 | bslx.cpp:247:120:247:123 | *call to getInt32 | provenance | MaD:130 | +| bslx.cpp:247:120:247:123 | *call to getInt32 | bslx.cpp:247:133:247:137 | *call to getUint32 | provenance | MaD:141 | +| bslx.cpp:247:133:247:137 | *call to getUint32 | bslx.cpp:247:146:247:150 | *call to getInt40 | provenance | MaD:131 | +| bslx.cpp:247:146:247:150 | *call to getInt40 | bslx.cpp:247:160:247:165 | *call to getUint40 | provenance | MaD:142 | +| bslx.cpp:247:160:247:165 | *call to getUint40 | bslx.cpp:247:174:247:178 | *call to getInt48 | provenance | MaD:132 | +| bslx.cpp:247:174:247:178 | *call to getInt48 | bslx.cpp:247:188:247:193 | *call to getUint48 | provenance | MaD:143 | +| bslx.cpp:247:188:247:193 | *call to getUint48 | bslx.cpp:247:202:247:206 | *call to getInt56 | provenance | MaD:133 | +| bslx.cpp:247:202:247:206 | *call to getInt56 | bslx.cpp:247:216:247:221 | *call to getUint56 | provenance | MaD:144 | +| bslx.cpp:247:216:247:221 | *call to getUint56 | bslx.cpp:247:230:247:234 | *call to getInt64 | provenance | MaD:134 | +| bslx.cpp:247:230:247:234 | *call to getInt64 | bslx.cpp:247:244:247:249 | *call to getUint64 | provenance | MaD:145 | +| bslx.cpp:247:244:247:249 | *call to getUint64 | bslx.cpp:247:260:247:263 | *call to getFloat32 | provenance | MaD:126 | +| bslx.cpp:247:260:247:263 | *call to getFloat32 | bslx.cpp:247:274:247:277 | *call to getFloat64 | provenance | MaD:127 | +| bslx.cpp:247:274:247:277 | *call to getFloat64 | bslx.cpp:247:287:247:292 | *call to getString | provenance | MaD:138 | +| bslx.cpp:247:287:247:292 | *call to getString | bslx.cpp:247:305:247:315 | *call to getArrayInt8 | provenance | MaD:117 | +| bslx.cpp:247:305:247:315 | *call to getArrayInt8 | bslx.cpp:247:329:247:340 | *call to getArrayUint8 | provenance | MaD:125 | +| bslx.cpp:247:329:247:340 | *call to getArrayUint8 | bslx.cpp:247:354:247:364 | *call to getArrayInt16 | provenance | MaD:109 | +| bslx.cpp:247:354:247:364 | *call to getArrayInt16 | bslx.cpp:247:379:247:390 | *call to getArrayUint16 | provenance | MaD:118 | +| bslx.cpp:247:379:247:390 | *call to getArrayUint16 | bslx.cpp:247:404:247:414 | *call to getArrayInt24 | provenance | MaD:110 | +| bslx.cpp:247:404:247:414 | *call to getArrayInt24 | bslx.cpp:247:429:247:440 | *call to getArrayUint24 | provenance | MaD:119 | +| bslx.cpp:247:429:247:440 | *call to getArrayUint24 | bslx.cpp:247:454:247:464 | *call to getArrayInt32 | provenance | MaD:111 | +| bslx.cpp:247:454:247:464 | *call to getArrayInt32 | bslx.cpp:247:479:247:490 | *call to getArrayUint32 | provenance | MaD:120 | +| bslx.cpp:247:479:247:490 | *call to getArrayUint32 | bslx.cpp:247:504:247:515 | *call to getArrayInt40 | provenance | MaD:112 | +| bslx.cpp:247:504:247:515 | *call to getArrayInt40 | bslx.cpp:247:530:247:542 | *call to getArrayUint40 | provenance | MaD:121 | +| bslx.cpp:247:530:247:542 | *call to getArrayUint40 | bslx.cpp:247:556:247:567 | *call to getArrayInt48 | provenance | MaD:113 | +| bslx.cpp:247:556:247:567 | *call to getArrayInt48 | bslx.cpp:247:582:247:594 | *call to getArrayUint48 | provenance | MaD:122 | +| bslx.cpp:247:582:247:594 | *call to getArrayUint48 | bslx.cpp:247:608:247:619 | *call to getArrayInt56 | provenance | MaD:114 | +| bslx.cpp:247:608:247:619 | *call to getArrayInt56 | bslx.cpp:247:634:247:646 | *call to getArrayUint56 | provenance | MaD:123 | +| bslx.cpp:247:634:247:646 | *call to getArrayUint56 | bslx.cpp:247:660:247:671 | *call to getArrayInt64 | provenance | MaD:115 | +| bslx.cpp:247:660:247:671 | *call to getArrayInt64 | bslx.cpp:247:686:247:698 | *call to getArrayUint64 | provenance | MaD:124 | +| bslx.cpp:247:686:247:698 | *call to getArrayUint64 | bslx.cpp:247:714:247:724 | *call to getArrayFloat32 | provenance | MaD:107 | +| bslx.cpp:247:714:247:724 | *call to getArrayFloat32 | bslx.cpp:247:740:247:750 | *call to getArrayFloat64 | provenance | MaD:108 | +| bslx.cpp:247:740:247:750 | *call to getArrayFloat64 | bslx.cpp:247:761:247:763 | getString output argument | provenance | MaD:137 | +| bslx.cpp:247:761:247:763 | getString output argument | bslx.cpp:248:7:248:17 | * ... | provenance | TaintFunction | +| bslx.cpp:252:33:252:40 | call to source | bslx.cpp:253:20:253:45 | *call to data | provenance | TaintFunction | +| bslx.cpp:253:20:253:45 | *call to data | bslx.cpp:254:57:254:58 | *sb | provenance | | +| bslx.cpp:253:20:253:45 | *call to data | bslx.cpp:277:2:277:7 | *stream | provenance | TaintFunction | +| bslx.cpp:254:50:254:55 | call to GenericInStream | bslx.cpp:277:2:277:7 | *stream | provenance | | +| bslx.cpp:254:57:254:58 | *sb | bslx.cpp:254:50:254:55 | call to GenericInStream | provenance | MaD:150 | +| bslx.cpp:277:2:277:7 | *stream | bslx.cpp:277:18:277:21 | *call to getLength | provenance | MaD:179 | +| bslx.cpp:277:18:277:21 | *call to getLength | bslx.cpp:277:32:277:35 | *call to getVersion | provenance | MaD:190 | +| bslx.cpp:277:32:277:35 | *call to getVersion | bslx.cpp:277:43:277:46 | *call to getInt8 | provenance | MaD:178 | +| bslx.cpp:277:43:277:46 | *call to getInt8 | bslx.cpp:277:55:277:59 | *call to getUint8 | provenance | MaD:189 | +| bslx.cpp:277:55:277:59 | *call to getUint8 | bslx.cpp:277:68:277:71 | *call to getInt16 | provenance | MaD:171 | +| bslx.cpp:277:68:277:71 | *call to getInt16 | bslx.cpp:277:81:277:85 | *call to getUint16 | provenance | MaD:182 | +| bslx.cpp:277:81:277:85 | *call to getUint16 | bslx.cpp:277:94:277:97 | *call to getInt24 | provenance | MaD:172 | +| bslx.cpp:277:94:277:97 | *call to getInt24 | bslx.cpp:277:107:277:111 | *call to getUint24 | provenance | MaD:183 | +| bslx.cpp:277:107:277:111 | *call to getUint24 | bslx.cpp:277:120:277:123 | *call to getInt32 | provenance | MaD:173 | +| bslx.cpp:277:120:277:123 | *call to getInt32 | bslx.cpp:277:133:277:137 | *call to getUint32 | provenance | MaD:184 | +| bslx.cpp:277:133:277:137 | *call to getUint32 | bslx.cpp:277:146:277:150 | *call to getInt40 | provenance | MaD:174 | +| bslx.cpp:277:146:277:150 | *call to getInt40 | bslx.cpp:277:160:277:165 | *call to getUint40 | provenance | MaD:185 | +| bslx.cpp:277:160:277:165 | *call to getUint40 | bslx.cpp:277:174:277:178 | *call to getInt48 | provenance | MaD:175 | +| bslx.cpp:277:174:277:178 | *call to getInt48 | bslx.cpp:277:188:277:193 | *call to getUint48 | provenance | MaD:186 | +| bslx.cpp:277:188:277:193 | *call to getUint48 | bslx.cpp:277:202:277:206 | *call to getInt56 | provenance | MaD:176 | +| bslx.cpp:277:202:277:206 | *call to getInt56 | bslx.cpp:277:216:277:221 | *call to getUint56 | provenance | MaD:187 | +| bslx.cpp:277:216:277:221 | *call to getUint56 | bslx.cpp:277:230:277:234 | *call to getInt64 | provenance | MaD:177 | +| bslx.cpp:277:230:277:234 | *call to getInt64 | bslx.cpp:277:244:277:249 | *call to getUint64 | provenance | MaD:188 | +| bslx.cpp:277:244:277:249 | *call to getUint64 | bslx.cpp:277:260:277:263 | *call to getFloat32 | provenance | MaD:169 | +| bslx.cpp:277:260:277:263 | *call to getFloat32 | bslx.cpp:277:274:277:277 | *call to getFloat64 | provenance | MaD:170 | +| bslx.cpp:277:274:277:277 | *call to getFloat64 | bslx.cpp:277:287:277:292 | *call to getString | provenance | MaD:181 | +| bslx.cpp:277:287:277:292 | *call to getString | bslx.cpp:277:305:277:315 | *call to getArrayInt8 | provenance | MaD:160 | +| bslx.cpp:277:305:277:315 | *call to getArrayInt8 | bslx.cpp:277:329:277:340 | *call to getArrayUint8 | provenance | MaD:168 | +| bslx.cpp:277:329:277:340 | *call to getArrayUint8 | bslx.cpp:277:354:277:364 | *call to getArrayInt16 | provenance | MaD:153 | +| bslx.cpp:277:354:277:364 | *call to getArrayInt16 | bslx.cpp:277:379:277:390 | *call to getArrayUint16 | provenance | MaD:161 | +| bslx.cpp:277:379:277:390 | *call to getArrayUint16 | bslx.cpp:277:404:277:414 | *call to getArrayInt24 | provenance | MaD:154 | +| bslx.cpp:277:404:277:414 | *call to getArrayInt24 | bslx.cpp:277:429:277:440 | *call to getArrayUint24 | provenance | MaD:162 | +| bslx.cpp:277:429:277:440 | *call to getArrayUint24 | bslx.cpp:277:454:277:464 | *call to getArrayInt32 | provenance | MaD:155 | +| bslx.cpp:277:454:277:464 | *call to getArrayInt32 | bslx.cpp:277:479:277:490 | *call to getArrayUint32 | provenance | MaD:163 | +| bslx.cpp:277:479:277:490 | *call to getArrayUint32 | bslx.cpp:277:504:277:515 | *call to getArrayInt40 | provenance | MaD:156 | +| bslx.cpp:277:504:277:515 | *call to getArrayInt40 | bslx.cpp:277:530:277:542 | *call to getArrayUint40 | provenance | MaD:164 | +| bslx.cpp:277:530:277:542 | *call to getArrayUint40 | bslx.cpp:277:556:277:567 | *call to getArrayInt48 | provenance | MaD:157 | +| bslx.cpp:277:556:277:567 | *call to getArrayInt48 | bslx.cpp:277:582:277:594 | *call to getArrayUint48 | provenance | MaD:165 | +| bslx.cpp:277:582:277:594 | *call to getArrayUint48 | bslx.cpp:277:608:277:619 | *call to getArrayInt56 | provenance | MaD:158 | +| bslx.cpp:277:608:277:619 | *call to getArrayInt56 | bslx.cpp:277:634:277:646 | *call to getArrayUint56 | provenance | MaD:166 | +| bslx.cpp:277:634:277:646 | *call to getArrayUint56 | bslx.cpp:277:660:277:671 | *call to getArrayInt64 | provenance | MaD:159 | +| bslx.cpp:277:660:277:671 | *call to getArrayInt64 | bslx.cpp:277:686:277:698 | *call to getArrayUint64 | provenance | MaD:167 | +| bslx.cpp:277:686:277:698 | *call to getArrayUint64 | bslx.cpp:277:714:277:724 | *call to getArrayFloat32 | provenance | MaD:151 | +| bslx.cpp:277:714:277:724 | *call to getArrayFloat32 | bslx.cpp:277:740:277:750 | *call to getArrayFloat64 | provenance | MaD:152 | +| bslx.cpp:277:740:277:750 | *call to getArrayFloat64 | bslx.cpp:277:761:277:763 | getString output argument | provenance | MaD:180 | +| bslx.cpp:277:761:277:763 | getString output argument | bslx.cpp:278:7:278:17 | * ... | provenance | TaintFunction | +| bslx.cpp:282:33:282:40 | call to source | bslx.cpp:283:46:283:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:283:34:283:39 | call to ByteInStream | bslx.cpp:285:53:285:58 | *stream | provenance | | +| bslx.cpp:283:34:283:39 | call to ByteInStream | bslx.cpp:287:53:287:58 | *stream | provenance | | +| bslx.cpp:283:34:283:39 | call to ByteInStream | bslx.cpp:290:53:290:58 | *stream | provenance | | +| bslx.cpp:283:46:283:49 | *call to data | bslx.cpp:283:34:283:39 | call to ByteInStream | provenance | MaD:106 | +| bslx.cpp:285:53:285:58 | *stream | bslx.cpp:285:61:285:61 | bdexStreamIn output argument | provenance | MaD:104 | +| bslx.cpp:285:61:285:61 | bdexStreamIn output argument | bslx.cpp:286:7:286:7 | x | provenance | | +| bslx.cpp:285:61:285:61 | bdexStreamIn output argument | bslx.cpp:288:7:288:7 | x | provenance | | +| bslx.cpp:287:53:287:58 | *stream | bslx.cpp:287:61:287:61 | bdexStreamIn output argument | provenance | MaD:104 | +| bslx.cpp:287:61:287:61 | bdexStreamIn output argument | bslx.cpp:288:7:288:7 | x | provenance | | +| bslx.cpp:290:52:290:66 | *call to bdexStreamIn | bslx.cpp:290:77:290:79 | getString output argument | provenance | MaD:137 | +| bslx.cpp:290:53:290:58 | *stream | bslx.cpp:290:52:290:66 | *call to bdexStreamIn | provenance | MaD:105 | +| bslx.cpp:290:77:290:79 | getString output argument | bslx.cpp:291:7:291:17 | * ... | provenance | TaintFunction | +| bslx.cpp:295:33:295:40 | call to source | bslx.cpp:296:46:296:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:296:34:296:39 | call to ByteInStream | bslx.cpp:298:53:298:58 | *stream | provenance | | +| bslx.cpp:296:46:296:49 | *call to data | bslx.cpp:296:34:296:39 | call to ByteInStream | provenance | MaD:106 | +| bslx.cpp:298:53:298:58 | *stream | bslx.cpp:298:61:298:63 | bdexStreamIn output argument | provenance | MaD:104 | +| bslx.cpp:298:61:298:63 | bdexStreamIn output argument | bslx.cpp:299:7:299:17 | * ... | provenance | TaintFunction | +| bslx.cpp:309:33:309:40 | call to source | bslx.cpp:310:46:310:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:310:34:310:39 | call to ByteInStream | bslx.cpp:312:53:312:58 | *stream | provenance | | +| bslx.cpp:310:46:310:49 | *call to data | bslx.cpp:310:34:310:39 | call to ByteInStream | provenance | MaD:106 | +| bslx.cpp:312:53:312:58 | *stream | bslx.cpp:312:61:312:63 | bdexStreamIn output argument | provenance | MaD:104 | +| bslx.cpp:312:61:312:63 | bdexStreamIn output argument | bslx.cpp:313:7:313:9 | out | provenance | | +| bslx.cpp:322:40:322:60 | call to source | bslx.cpp:322:40:322:60 | call to source | provenance | | +| bslx.cpp:322:40:322:60 | call to source | bslx.cpp:323:15:323:18 | *data | provenance | | +| bslx.cpp:323:2:323:7 | reset output argument | bslx.cpp:325:2:325:7 | *stream | provenance | | +| bslx.cpp:323:15:323:18 | *data | bslx.cpp:323:2:323:7 | reset output argument | provenance | MaD:148 | +| bslx.cpp:325:2:325:7 | *stream | bslx.cpp:325:19:325:21 | getString output argument | provenance | MaD:137 | +| bslx.cpp:325:19:325:21 | getString output argument | bslx.cpp:326:7:326:17 | * ... | provenance | TaintFunction | +| bslx.cpp:330:33:330:40 | call to source | bslx.cpp:331:46:331:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:331:34:331:39 | call to ByteInStream | bslx.cpp:334:2:334:7 | *stream | provenance | | +| bslx.cpp:331:46:331:49 | *call to data | bslx.cpp:331:34:331:39 | call to ByteInStream | provenance | MaD:106 | +| bslx.cpp:334:2:334:7 | *stream | bslx.cpp:334:19:334:21 | getString output argument | provenance | MaD:137 | +| bslx.cpp:334:19:334:21 | getString output argument | bslx.cpp:335:7:335:17 | * ... | provenance | TaintFunction | +| bslx.cpp:349:33:349:40 | call to source | bslx.cpp:350:46:350:49 | *call to data | provenance | TaintFunction | +| bslx.cpp:350:34:350:39 | call to ByteInStream | bslx.cpp:354:2:354:7 | *stream | provenance | | +| bslx.cpp:350:46:350:49 | *call to data | bslx.cpp:350:34:350:39 | call to ByteInStream | provenance | MaD:106 | +| bslx.cpp:354:2:354:7 | *stream | bslx.cpp:354:19:354:21 | getString output argument | provenance | MaD:137 | +| bslx.cpp:354:19:354:21 | getString output argument | bslx.cpp:356:7:356:17 | * ... | provenance | TaintFunction | | protobuf.cpp:117:27:117:51 | call to source | protobuf.cpp:117:27:117:51 | call to source | provenance | | | protobuf.cpp:117:27:117:51 | call to source | protobuf.cpp:118:22:118:25 | data | provenance | | | protobuf.cpp:118:2:118:4 | ParseFromString output argument | protobuf.cpp:119:7:119:9 | msg | provenance | | -| protobuf.cpp:118:22:118:25 | data | protobuf.cpp:118:2:118:4 | ParseFromString output argument | provenance | MaD:149 | +| protobuf.cpp:118:22:118:25 | data | protobuf.cpp:118:2:118:4 | ParseFromString output argument | provenance | MaD:228 | | protobuf.cpp:124:20:124:37 | call to source | protobuf.cpp:124:20:124:37 | call to source | provenance | | | protobuf.cpp:124:20:124:37 | call to source | protobuf.cpp:125:22:125:25 | *data | provenance | | | protobuf.cpp:125:2:125:4 | ParseFromString output argument | protobuf.cpp:126:7:126:9 | msg | provenance | | -| protobuf.cpp:125:22:125:25 | *data | protobuf.cpp:125:2:125:4 | ParseFromString output argument | provenance | MaD:148 | +| protobuf.cpp:125:22:125:25 | *data | protobuf.cpp:125:2:125:4 | ParseFromString output argument | provenance | MaD:227 | | protobuf.cpp:131:27:131:51 | call to source | protobuf.cpp:131:27:131:51 | call to source | provenance | | | protobuf.cpp:131:27:131:51 | call to source | protobuf.cpp:132:29:132:32 | data | provenance | | | protobuf.cpp:132:2:132:4 | ParsePartialFromString output argument | protobuf.cpp:133:7:133:9 | msg | provenance | | -| protobuf.cpp:132:29:132:32 | data | protobuf.cpp:132:2:132:4 | ParsePartialFromString output argument | provenance | MaD:157 | +| protobuf.cpp:132:29:132:32 | data | protobuf.cpp:132:2:132:4 | ParsePartialFromString output argument | provenance | MaD:236 | | protobuf.cpp:138:20:138:37 | call to source | protobuf.cpp:138:20:138:37 | call to source | provenance | | | protobuf.cpp:138:20:138:37 | call to source | protobuf.cpp:139:29:139:32 | *data | provenance | | | protobuf.cpp:139:2:139:4 | ParsePartialFromString output argument | protobuf.cpp:140:7:140:9 | msg | provenance | | -| protobuf.cpp:139:29:139:32 | *data | protobuf.cpp:139:2:139:4 | ParsePartialFromString output argument | provenance | MaD:156 | +| protobuf.cpp:139:29:139:32 | *data | protobuf.cpp:139:2:139:4 | ParsePartialFromString output argument | provenance | MaD:235 | | protobuf.cpp:145:27:145:51 | call to source | protobuf.cpp:145:27:145:51 | call to source | provenance | | | protobuf.cpp:145:27:145:51 | call to source | protobuf.cpp:146:22:146:25 | data | provenance | | | protobuf.cpp:146:2:146:4 | MergeFromString output argument | protobuf.cpp:147:7:147:9 | msg | provenance | | -| protobuf.cpp:146:22:146:25 | data | protobuf.cpp:146:2:146:4 | MergeFromString output argument | provenance | MaD:137 | +| protobuf.cpp:146:22:146:25 | data | protobuf.cpp:146:2:146:4 | MergeFromString output argument | provenance | MaD:216 | | protobuf.cpp:152:20:152:37 | call to source | protobuf.cpp:152:20:152:37 | call to source | provenance | | | protobuf.cpp:152:20:152:37 | call to source | protobuf.cpp:153:22:153:25 | *data | provenance | | | protobuf.cpp:153:2:153:4 | MergeFromString output argument | protobuf.cpp:154:7:154:9 | msg | provenance | | -| protobuf.cpp:153:22:153:25 | *data | protobuf.cpp:153:2:153:4 | MergeFromString output argument | provenance | MaD:136 | +| protobuf.cpp:153:22:153:25 | *data | protobuf.cpp:153:2:153:4 | MergeFromString output argument | provenance | MaD:215 | | protobuf.cpp:159:27:159:51 | call to source | protobuf.cpp:159:27:159:51 | call to source | provenance | | | protobuf.cpp:159:27:159:51 | call to source | protobuf.cpp:160:29:160:32 | data | provenance | | | protobuf.cpp:160:2:160:4 | MergePartialFromString output argument | protobuf.cpp:161:7:161:9 | msg | provenance | | -| protobuf.cpp:160:29:160:32 | data | protobuf.cpp:160:2:160:4 | MergePartialFromString output argument | provenance | MaD:142 | +| protobuf.cpp:160:29:160:32 | data | protobuf.cpp:160:2:160:4 | MergePartialFromString output argument | provenance | MaD:221 | | protobuf.cpp:166:20:166:37 | call to source | protobuf.cpp:166:20:166:37 | call to source | provenance | | | protobuf.cpp:166:20:166:37 | call to source | protobuf.cpp:167:29:167:32 | *data | provenance | | | protobuf.cpp:167:2:167:4 | MergePartialFromString output argument | protobuf.cpp:168:7:168:9 | msg | provenance | | -| protobuf.cpp:167:29:167:32 | *data | protobuf.cpp:167:2:167:4 | MergePartialFromString output argument | provenance | MaD:141 | +| protobuf.cpp:167:29:167:32 | *data | protobuf.cpp:167:2:167:4 | MergePartialFromString output argument | provenance | MaD:220 | | protobuf.cpp:173:19:173:38 | call to source | protobuf.cpp:174:21:174:31 | *call to data | provenance | TaintFunction | | protobuf.cpp:174:2:174:4 | ParseFromArray output argument | protobuf.cpp:175:7:175:9 | msg | provenance | | -| protobuf.cpp:174:21:174:31 | *call to data | protobuf.cpp:174:2:174:4 | ParseFromArray output argument | provenance | MaD:143 | +| protobuf.cpp:174:21:174:31 | *call to data | protobuf.cpp:174:2:174:4 | ParseFromArray output argument | provenance | MaD:222 | | protobuf.cpp:180:19:180:38 | call to source | protobuf.cpp:181:28:181:38 | *call to data | provenance | TaintFunction | | protobuf.cpp:181:2:181:4 | ParsePartialFromArray output argument | protobuf.cpp:182:7:182:9 | msg | provenance | | -| protobuf.cpp:181:28:181:38 | *call to data | protobuf.cpp:181:2:181:4 | ParsePartialFromArray output argument | provenance | MaD:151 | +| protobuf.cpp:181:28:181:38 | *call to data | protobuf.cpp:181:2:181:4 | ParsePartialFromArray output argument | provenance | MaD:230 | | protobuf.cpp:187:20:187:37 | call to source | protobuf.cpp:187:20:187:37 | call to source | provenance | | | protobuf.cpp:187:20:187:37 | call to source | protobuf.cpp:188:20:188:23 | *data | provenance | | | protobuf.cpp:188:2:188:4 | ParseFromCord output argument | protobuf.cpp:189:7:189:9 | msg | provenance | | -| protobuf.cpp:188:20:188:23 | *data | protobuf.cpp:188:2:188:4 | ParseFromCord output argument | provenance | MaD:146 | +| protobuf.cpp:188:20:188:23 | *data | protobuf.cpp:188:2:188:4 | ParseFromCord output argument | provenance | MaD:225 | | protobuf.cpp:194:20:194:37 | call to source | protobuf.cpp:194:20:194:37 | call to source | provenance | | | protobuf.cpp:194:20:194:37 | call to source | protobuf.cpp:195:27:195:30 | *data | provenance | | | protobuf.cpp:195:2:195:4 | ParsePartialFromCord output argument | protobuf.cpp:196:7:196:9 | msg | provenance | | -| protobuf.cpp:195:27:195:30 | *data | protobuf.cpp:195:2:195:4 | ParsePartialFromCord output argument | provenance | MaD:154 | +| protobuf.cpp:195:27:195:30 | *data | protobuf.cpp:195:2:195:4 | ParsePartialFromCord output argument | provenance | MaD:233 | | protobuf.cpp:201:20:201:37 | call to source | protobuf.cpp:201:20:201:37 | call to source | provenance | | | protobuf.cpp:201:20:201:37 | call to source | protobuf.cpp:202:20:202:23 | *data | provenance | | | protobuf.cpp:202:2:202:4 | MergeFromCord output argument | protobuf.cpp:203:7:203:9 | msg | provenance | | -| protobuf.cpp:202:20:202:23 | *data | protobuf.cpp:202:2:202:4 | MergeFromCord output argument | provenance | MaD:135 | +| protobuf.cpp:202:20:202:23 | *data | protobuf.cpp:202:2:202:4 | MergeFromCord output argument | provenance | MaD:214 | | protobuf.cpp:208:20:208:37 | call to source | protobuf.cpp:208:20:208:37 | call to source | provenance | | | protobuf.cpp:208:20:208:37 | call to source | protobuf.cpp:209:27:209:30 | *data | provenance | | | protobuf.cpp:209:2:209:4 | MergePartialFromCord output argument | protobuf.cpp:210:7:210:9 | msg | provenance | | -| protobuf.cpp:209:27:209:30 | *data | protobuf.cpp:209:2:209:4 | MergePartialFromCord output argument | provenance | MaD:140 | +| protobuf.cpp:209:27:209:30 | *data | protobuf.cpp:209:2:209:4 | MergePartialFromCord output argument | provenance | MaD:219 | | protobuf.cpp:215:20:215:39 | call to source | protobuf.cpp:215:20:215:39 | call to source | provenance | | | protobuf.cpp:215:20:215:39 | call to source | protobuf.cpp:216:23:216:25 | *& ... | provenance | | | protobuf.cpp:216:2:216:4 | ParseFromIstream output argument | protobuf.cpp:217:7:217:9 | msg | provenance | | -| protobuf.cpp:216:23:216:25 | *& ... | protobuf.cpp:216:2:216:4 | ParseFromIstream output argument | provenance | MaD:147 | +| protobuf.cpp:216:23:216:25 | *& ... | protobuf.cpp:216:2:216:4 | ParseFromIstream output argument | provenance | MaD:226 | | protobuf.cpp:222:20:222:39 | call to source | protobuf.cpp:222:20:222:39 | call to source | provenance | | | protobuf.cpp:222:20:222:39 | call to source | protobuf.cpp:223:30:223:32 | *& ... | provenance | | | protobuf.cpp:223:2:223:4 | ParsePartialFromIstream output argument | protobuf.cpp:224:7:224:9 | msg | provenance | | -| protobuf.cpp:223:30:223:32 | *& ... | protobuf.cpp:223:2:223:4 | ParsePartialFromIstream output argument | provenance | MaD:155 | +| protobuf.cpp:223:30:223:32 | *& ... | protobuf.cpp:223:2:223:4 | ParsePartialFromIstream output argument | provenance | MaD:234 | | protobuf.cpp:229:27:229:53 | call to source | protobuf.cpp:229:27:229:53 | call to source | provenance | | | protobuf.cpp:229:27:229:53 | call to source | protobuf.cpp:230:30:230:32 | *& ... | provenance | | | protobuf.cpp:230:2:230:4 | ParseFromZeroCopyStream output argument | protobuf.cpp:231:7:231:9 | msg | provenance | | -| protobuf.cpp:230:30:230:32 | *& ... | protobuf.cpp:230:2:230:4 | ParseFromZeroCopyStream output argument | provenance | MaD:150 | +| protobuf.cpp:230:30:230:32 | *& ... | protobuf.cpp:230:2:230:4 | ParseFromZeroCopyStream output argument | provenance | MaD:229 | | protobuf.cpp:236:27:236:53 | call to source | protobuf.cpp:236:27:236:53 | call to source | provenance | | | protobuf.cpp:236:27:236:53 | call to source | protobuf.cpp:237:37:237:39 | *& ... | provenance | | | protobuf.cpp:237:2:237:4 | ParsePartialFromZeroCopyStream output argument | protobuf.cpp:238:7:238:9 | msg | provenance | | -| protobuf.cpp:237:37:237:39 | *& ... | protobuf.cpp:237:2:237:4 | ParsePartialFromZeroCopyStream output argument | provenance | MaD:158 | +| protobuf.cpp:237:37:237:39 | *& ... | protobuf.cpp:237:2:237:4 | ParsePartialFromZeroCopyStream output argument | provenance | MaD:237 | | protobuf.cpp:243:27:243:53 | call to source | protobuf.cpp:243:27:243:53 | call to source | provenance | | | protobuf.cpp:243:27:243:53 | call to source | protobuf.cpp:244:37:244:39 | *& ... | provenance | | | protobuf.cpp:244:2:244:4 | ParseFromBoundedZeroCopyStream output argument | protobuf.cpp:245:7:245:9 | msg | provenance | | -| protobuf.cpp:244:37:244:39 | *& ... | protobuf.cpp:244:2:244:4 | ParseFromBoundedZeroCopyStream output argument | provenance | MaD:144 | +| protobuf.cpp:244:37:244:39 | *& ... | protobuf.cpp:244:2:244:4 | ParseFromBoundedZeroCopyStream output argument | provenance | MaD:223 | | protobuf.cpp:250:27:250:53 | call to source | protobuf.cpp:250:27:250:53 | call to source | provenance | | | protobuf.cpp:250:27:250:53 | call to source | protobuf.cpp:251:44:251:46 | *& ... | provenance | | | protobuf.cpp:251:2:251:4 | ParsePartialFromBoundedZeroCopyStream output argument | protobuf.cpp:252:7:252:9 | msg | provenance | | -| protobuf.cpp:251:44:251:46 | *& ... | protobuf.cpp:251:2:251:4 | ParsePartialFromBoundedZeroCopyStream output argument | provenance | MaD:152 | +| protobuf.cpp:251:44:251:46 | *& ... | protobuf.cpp:251:2:251:4 | ParsePartialFromBoundedZeroCopyStream output argument | provenance | MaD:231 | | protobuf.cpp:257:27:257:53 | call to source | protobuf.cpp:257:27:257:53 | call to source | provenance | | | protobuf.cpp:257:27:257:53 | call to source | protobuf.cpp:258:37:258:39 | *& ... | provenance | | | protobuf.cpp:258:2:258:4 | MergeFromBoundedZeroCopyStream output argument | protobuf.cpp:259:7:259:9 | msg | provenance | | -| protobuf.cpp:258:37:258:39 | *& ... | protobuf.cpp:258:2:258:4 | MergeFromBoundedZeroCopyStream output argument | provenance | MaD:133 | +| protobuf.cpp:258:37:258:39 | *& ... | protobuf.cpp:258:2:258:4 | MergeFromBoundedZeroCopyStream output argument | provenance | MaD:212 | | protobuf.cpp:264:27:264:53 | call to source | protobuf.cpp:264:27:264:53 | call to source | provenance | | | protobuf.cpp:264:27:264:53 | call to source | protobuf.cpp:265:44:265:46 | *& ... | provenance | | | protobuf.cpp:265:2:265:4 | MergePartialFromBoundedZeroCopyStream output argument | protobuf.cpp:266:7:266:9 | msg | provenance | | -| protobuf.cpp:265:44:265:46 | *& ... | protobuf.cpp:265:2:265:4 | MergePartialFromBoundedZeroCopyStream output argument | provenance | MaD:138 | +| protobuf.cpp:265:44:265:46 | *& ... | protobuf.cpp:265:2:265:4 | MergePartialFromBoundedZeroCopyStream output argument | provenance | MaD:217 | | protobuf.cpp:271:24:271:47 | call to source | protobuf.cpp:271:24:271:47 | call to source | provenance | | | protobuf.cpp:271:24:271:47 | call to source | protobuf.cpp:272:27:272:29 | *& ... | provenance | | | protobuf.cpp:272:2:272:4 | ParseFromCodedStream output argument | protobuf.cpp:273:7:273:9 | msg | provenance | | -| protobuf.cpp:272:27:272:29 | *& ... | protobuf.cpp:272:2:272:4 | ParseFromCodedStream output argument | provenance | MaD:145 | +| protobuf.cpp:272:27:272:29 | *& ... | protobuf.cpp:272:2:272:4 | ParseFromCodedStream output argument | provenance | MaD:224 | | protobuf.cpp:278:24:278:47 | call to source | protobuf.cpp:278:24:278:47 | call to source | provenance | | | protobuf.cpp:278:24:278:47 | call to source | protobuf.cpp:279:34:279:36 | *& ... | provenance | | | protobuf.cpp:279:2:279:4 | ParsePartialFromCodedStream output argument | protobuf.cpp:280:7:280:9 | msg | provenance | | -| protobuf.cpp:279:34:279:36 | *& ... | protobuf.cpp:279:2:279:4 | ParsePartialFromCodedStream output argument | provenance | MaD:153 | +| protobuf.cpp:279:34:279:36 | *& ... | protobuf.cpp:279:2:279:4 | ParsePartialFromCodedStream output argument | provenance | MaD:232 | | protobuf.cpp:285:24:285:47 | call to source | protobuf.cpp:285:24:285:47 | call to source | provenance | | | protobuf.cpp:285:24:285:47 | call to source | protobuf.cpp:286:27:286:29 | *& ... | provenance | | | protobuf.cpp:286:2:286:4 | MergeFromCodedStream output argument | protobuf.cpp:287:7:287:9 | msg | provenance | | -| protobuf.cpp:286:27:286:29 | *& ... | protobuf.cpp:286:2:286:4 | MergeFromCodedStream output argument | provenance | MaD:134 | +| protobuf.cpp:286:27:286:29 | *& ... | protobuf.cpp:286:2:286:4 | MergeFromCodedStream output argument | provenance | MaD:213 | | protobuf.cpp:292:24:292:47 | call to source | protobuf.cpp:292:24:292:47 | call to source | provenance | | | protobuf.cpp:292:24:292:47 | call to source | protobuf.cpp:293:34:293:36 | *& ... | provenance | | | protobuf.cpp:293:2:293:4 | MergePartialFromCodedStream output argument | protobuf.cpp:294:7:294:9 | msg | provenance | | -| protobuf.cpp:293:34:293:36 | *& ... | protobuf.cpp:293:2:293:4 | MergePartialFromCodedStream output argument | provenance | MaD:139 | +| protobuf.cpp:293:34:293:36 | *& ... | protobuf.cpp:293:2:293:4 | MergePartialFromCodedStream output argument | provenance | MaD:218 | | protobuf.cpp:307:15:307:28 | call to source | protobuf.cpp:307:15:307:28 | call to source | provenance | | | protobuf.cpp:307:15:307:28 | call to source | protobuf.cpp:309:2:309:4 | *msg | provenance | | -| protobuf.cpp:309:2:309:4 | *msg | protobuf.cpp:309:24:309:27 | SerializeToString output argument | provenance | MaD:173 | +| protobuf.cpp:309:2:309:4 | *msg | protobuf.cpp:309:24:309:27 | SerializeToString output argument | provenance | MaD:252 | | protobuf.cpp:309:24:309:27 | SerializeToString output argument | protobuf.cpp:310:7:310:9 | out | provenance | | | protobuf.cpp:314:15:314:28 | call to source | protobuf.cpp:314:15:314:28 | call to source | provenance | | | protobuf.cpp:314:15:314:28 | call to source | protobuf.cpp:316:2:316:4 | *msg | provenance | | -| protobuf.cpp:316:2:316:4 | *msg | protobuf.cpp:316:31:316:34 | SerializePartialToString output argument | provenance | MaD:167 | +| protobuf.cpp:316:2:316:4 | *msg | protobuf.cpp:316:31:316:34 | SerializePartialToString output argument | provenance | MaD:246 | | protobuf.cpp:316:31:316:34 | SerializePartialToString output argument | protobuf.cpp:317:7:317:9 | out | provenance | | | protobuf.cpp:321:15:321:28 | call to source | protobuf.cpp:321:15:321:28 | call to source | provenance | | | protobuf.cpp:321:15:321:28 | call to source | protobuf.cpp:323:2:323:4 | *msg | provenance | | -| protobuf.cpp:323:2:323:4 | *msg | protobuf.cpp:323:21:323:24 | AppendToString output argument | provenance | MaD:132 | +| protobuf.cpp:323:2:323:4 | *msg | protobuf.cpp:323:21:323:24 | AppendToString output argument | provenance | MaD:211 | | protobuf.cpp:323:21:323:24 | AppendToString output argument | protobuf.cpp:324:7:324:9 | out | provenance | | | protobuf.cpp:328:15:328:28 | call to source | protobuf.cpp:328:15:328:28 | call to source | provenance | | | protobuf.cpp:328:15:328:28 | call to source | protobuf.cpp:330:2:330:4 | *msg | provenance | | -| protobuf.cpp:330:2:330:4 | *msg | protobuf.cpp:330:28:330:31 | AppendPartialToString output argument | provenance | MaD:130 | +| protobuf.cpp:330:2:330:4 | *msg | protobuf.cpp:330:28:330:31 | AppendPartialToString output argument | provenance | MaD:209 | | protobuf.cpp:330:28:330:31 | AppendPartialToString output argument | protobuf.cpp:331:7:331:9 | out | provenance | | | protobuf.cpp:335:15:335:28 | call to source | protobuf.cpp:335:15:335:28 | call to source | provenance | | | protobuf.cpp:335:15:335:28 | call to source | protobuf.cpp:337:2:337:4 | *msg | provenance | | -| protobuf.cpp:337:2:337:4 | *msg | protobuf.cpp:337:24:337:27 | SerializeToString output argument | provenance | MaD:173 | +| protobuf.cpp:337:2:337:4 | *msg | protobuf.cpp:337:24:337:27 | SerializeToString output argument | provenance | MaD:252 | | protobuf.cpp:337:24:337:27 | SerializeToString output argument | protobuf.cpp:338:7:338:9 | out | provenance | | | protobuf.cpp:342:15:342:28 | call to source | protobuf.cpp:342:15:342:28 | call to source | provenance | | | protobuf.cpp:342:15:342:28 | call to source | protobuf.cpp:344:2:344:4 | *msg | provenance | | -| protobuf.cpp:344:2:344:4 | *msg | protobuf.cpp:344:31:344:34 | SerializePartialToString output argument | provenance | MaD:167 | +| protobuf.cpp:344:2:344:4 | *msg | protobuf.cpp:344:31:344:34 | SerializePartialToString output argument | provenance | MaD:246 | | protobuf.cpp:344:31:344:34 | SerializePartialToString output argument | protobuf.cpp:345:7:345:9 | out | provenance | | | protobuf.cpp:349:15:349:28 | call to source | protobuf.cpp:349:15:349:28 | call to source | provenance | | | protobuf.cpp:349:15:349:28 | call to source | protobuf.cpp:351:2:351:4 | *msg | provenance | | -| protobuf.cpp:351:2:351:4 | *msg | protobuf.cpp:351:21:351:24 | AppendToString output argument | provenance | MaD:132 | +| protobuf.cpp:351:2:351:4 | *msg | protobuf.cpp:351:21:351:24 | AppendToString output argument | provenance | MaD:211 | | protobuf.cpp:351:21:351:24 | AppendToString output argument | protobuf.cpp:352:7:352:9 | out | provenance | | | protobuf.cpp:356:15:356:28 | call to source | protobuf.cpp:356:15:356:28 | call to source | provenance | | | protobuf.cpp:356:15:356:28 | call to source | protobuf.cpp:358:2:358:4 | *msg | provenance | | -| protobuf.cpp:358:2:358:4 | *msg | protobuf.cpp:358:28:358:31 | AppendPartialToString output argument | provenance | MaD:130 | +| protobuf.cpp:358:2:358:4 | *msg | protobuf.cpp:358:28:358:31 | AppendPartialToString output argument | provenance | MaD:209 | | protobuf.cpp:358:28:358:31 | AppendPartialToString output argument | protobuf.cpp:359:7:359:9 | out | provenance | | | protobuf.cpp:363:15:363:28 | call to source | protobuf.cpp:363:15:363:28 | call to source | provenance | | | protobuf.cpp:363:15:363:28 | call to source | protobuf.cpp:365:2:365:4 | *msg | provenance | | -| protobuf.cpp:365:2:365:4 | *msg | protobuf.cpp:365:23:365:25 | SerializeToArray output argument | provenance | MaD:169 | +| protobuf.cpp:365:2:365:4 | *msg | protobuf.cpp:365:23:365:25 | SerializeToArray output argument | provenance | MaD:248 | | protobuf.cpp:365:23:365:25 | SerializeToArray output argument | protobuf.cpp:366:7:366:10 | * ... | provenance | | | protobuf.cpp:370:15:370:28 | call to source | protobuf.cpp:370:15:370:28 | call to source | provenance | | | protobuf.cpp:370:15:370:28 | call to source | protobuf.cpp:372:2:372:4 | *msg | provenance | | -| protobuf.cpp:372:2:372:4 | *msg | protobuf.cpp:372:30:372:32 | SerializePartialToArray output argument | provenance | MaD:163 | +| protobuf.cpp:372:2:372:4 | *msg | protobuf.cpp:372:30:372:32 | SerializePartialToArray output argument | provenance | MaD:242 | | protobuf.cpp:372:30:372:32 | SerializePartialToArray output argument | protobuf.cpp:373:7:373:10 | * ... | provenance | | | protobuf.cpp:377:15:377:28 | call to source | protobuf.cpp:377:15:377:28 | call to source | provenance | | | protobuf.cpp:377:15:377:28 | call to source | protobuf.cpp:379:2:379:4 | *msg | provenance | | -| protobuf.cpp:379:2:379:4 | *msg | protobuf.cpp:379:22:379:25 | SerializeToCord output argument | provenance | MaD:171 | +| protobuf.cpp:379:2:379:4 | *msg | protobuf.cpp:379:22:379:25 | SerializeToCord output argument | provenance | MaD:250 | | protobuf.cpp:379:22:379:25 | SerializeToCord output argument | protobuf.cpp:380:7:380:9 | out | provenance | | | protobuf.cpp:384:15:384:28 | call to source | protobuf.cpp:384:15:384:28 | call to source | provenance | | | protobuf.cpp:384:15:384:28 | call to source | protobuf.cpp:386:2:386:4 | *msg | provenance | | -| protobuf.cpp:386:2:386:4 | *msg | protobuf.cpp:386:29:386:32 | SerializePartialToCord output argument | provenance | MaD:165 | +| protobuf.cpp:386:2:386:4 | *msg | protobuf.cpp:386:29:386:32 | SerializePartialToCord output argument | provenance | MaD:244 | | protobuf.cpp:386:29:386:32 | SerializePartialToCord output argument | protobuf.cpp:387:7:387:9 | out | provenance | | | protobuf.cpp:391:15:391:28 | call to source | protobuf.cpp:391:15:391:28 | call to source | provenance | | | protobuf.cpp:391:15:391:28 | call to source | protobuf.cpp:393:2:393:4 | *msg | provenance | | -| protobuf.cpp:393:2:393:4 | *msg | protobuf.cpp:393:19:393:22 | AppendToCord output argument | provenance | MaD:131 | +| protobuf.cpp:393:2:393:4 | *msg | protobuf.cpp:393:19:393:22 | AppendToCord output argument | provenance | MaD:210 | | protobuf.cpp:393:19:393:22 | AppendToCord output argument | protobuf.cpp:394:7:394:9 | out | provenance | | | protobuf.cpp:398:15:398:28 | call to source | protobuf.cpp:398:15:398:28 | call to source | provenance | | | protobuf.cpp:398:15:398:28 | call to source | protobuf.cpp:400:2:400:4 | *msg | provenance | | -| protobuf.cpp:400:2:400:4 | *msg | protobuf.cpp:400:26:400:29 | AppendPartialToCord output argument | provenance | MaD:129 | +| protobuf.cpp:400:2:400:4 | *msg | protobuf.cpp:400:26:400:29 | AppendPartialToCord output argument | provenance | MaD:208 | | protobuf.cpp:400:26:400:29 | AppendPartialToCord output argument | protobuf.cpp:401:7:401:9 | out | provenance | | | protobuf.cpp:405:15:405:28 | call to source | protobuf.cpp:405:15:405:28 | call to source | provenance | | | protobuf.cpp:405:15:405:28 | call to source | protobuf.cpp:407:2:407:4 | *msg | provenance | | -| protobuf.cpp:407:2:407:4 | *msg | protobuf.cpp:407:25:407:28 | SerializeToOstream output argument | provenance | MaD:172 | +| protobuf.cpp:407:2:407:4 | *msg | protobuf.cpp:407:25:407:28 | SerializeToOstream output argument | provenance | MaD:251 | | protobuf.cpp:407:25:407:28 | SerializeToOstream output argument | protobuf.cpp:408:7:408:9 | out | provenance | | | protobuf.cpp:412:15:412:28 | call to source | protobuf.cpp:412:15:412:28 | call to source | provenance | | | protobuf.cpp:412:15:412:28 | call to source | protobuf.cpp:414:2:414:4 | *msg | provenance | | -| protobuf.cpp:414:2:414:4 | *msg | protobuf.cpp:414:32:414:35 | SerializePartialToOstream output argument | provenance | MaD:166 | +| protobuf.cpp:414:2:414:4 | *msg | protobuf.cpp:414:32:414:35 | SerializePartialToOstream output argument | provenance | MaD:245 | | protobuf.cpp:414:32:414:35 | SerializePartialToOstream output argument | protobuf.cpp:415:7:415:9 | out | provenance | | | protobuf.cpp:419:15:419:28 | call to source | protobuf.cpp:419:15:419:28 | call to source | provenance | | | protobuf.cpp:419:15:419:28 | call to source | protobuf.cpp:421:2:421:4 | *msg | provenance | | -| protobuf.cpp:421:2:421:4 | *msg | protobuf.cpp:421:32:421:35 | SerializeToZeroCopyStream output argument | provenance | MaD:174 | +| protobuf.cpp:421:2:421:4 | *msg | protobuf.cpp:421:32:421:35 | SerializeToZeroCopyStream output argument | provenance | MaD:253 | | protobuf.cpp:421:32:421:35 | SerializeToZeroCopyStream output argument | protobuf.cpp:422:7:422:9 | out | provenance | | | protobuf.cpp:426:15:426:28 | call to source | protobuf.cpp:426:15:426:28 | call to source | provenance | | | protobuf.cpp:426:15:426:28 | call to source | protobuf.cpp:428:2:428:4 | *msg | provenance | | -| protobuf.cpp:428:2:428:4 | *msg | protobuf.cpp:428:39:428:42 | SerializePartialToZeroCopyStream output argument | provenance | MaD:168 | +| protobuf.cpp:428:2:428:4 | *msg | protobuf.cpp:428:39:428:42 | SerializePartialToZeroCopyStream output argument | provenance | MaD:247 | | protobuf.cpp:428:39:428:42 | SerializePartialToZeroCopyStream output argument | protobuf.cpp:429:7:429:9 | out | provenance | | | protobuf.cpp:433:15:433:28 | call to source | protobuf.cpp:433:15:433:28 | call to source | provenance | | | protobuf.cpp:433:15:433:28 | call to source | protobuf.cpp:435:2:435:4 | *msg | provenance | | -| protobuf.cpp:435:2:435:4 | *msg | protobuf.cpp:435:29:435:32 | SerializeToCodedStream output argument | provenance | MaD:170 | +| protobuf.cpp:435:2:435:4 | *msg | protobuf.cpp:435:29:435:32 | SerializeToCodedStream output argument | provenance | MaD:249 | | protobuf.cpp:435:29:435:32 | SerializeToCodedStream output argument | protobuf.cpp:436:7:436:9 | out | provenance | | | protobuf.cpp:440:15:440:28 | call to source | protobuf.cpp:440:15:440:28 | call to source | provenance | | | protobuf.cpp:440:15:440:28 | call to source | protobuf.cpp:442:2:442:4 | *msg | provenance | | -| protobuf.cpp:442:2:442:4 | *msg | protobuf.cpp:442:36:442:39 | SerializePartialToCodedStream output argument | provenance | MaD:164 | +| protobuf.cpp:442:2:442:4 | *msg | protobuf.cpp:442:36:442:39 | SerializePartialToCodedStream output argument | provenance | MaD:243 | | protobuf.cpp:442:36:442:39 | SerializePartialToCodedStream output argument | protobuf.cpp:443:7:443:9 | out | provenance | | | protobuf.cpp:449:15:449:28 | call to source | protobuf.cpp:449:15:449:28 | call to source | provenance | | | protobuf.cpp:449:15:449:28 | call to source | protobuf.cpp:450:7:450:9 | *msg | provenance | | -| protobuf.cpp:450:7:450:9 | *msg | protobuf.cpp:450:11:450:27 | call to SerializeAsString | provenance | MaD:160 | +| protobuf.cpp:450:7:450:9 | *msg | protobuf.cpp:450:11:450:27 | call to SerializeAsString | provenance | MaD:239 | | protobuf.cpp:454:15:454:28 | call to source | protobuf.cpp:454:15:454:28 | call to source | provenance | | | protobuf.cpp:454:15:454:28 | call to source | protobuf.cpp:455:7:455:9 | *msg | provenance | | -| protobuf.cpp:455:7:455:9 | *msg | protobuf.cpp:455:11:455:34 | call to SerializePartialAsString | provenance | MaD:162 | +| protobuf.cpp:455:7:455:9 | *msg | protobuf.cpp:455:11:455:34 | call to SerializePartialAsString | provenance | MaD:241 | | protobuf.cpp:459:15:459:28 | call to source | protobuf.cpp:459:15:459:28 | call to source | provenance | | | protobuf.cpp:459:15:459:28 | call to source | protobuf.cpp:460:7:460:9 | *msg | provenance | | -| protobuf.cpp:460:7:460:9 | *msg | protobuf.cpp:460:11:460:25 | call to SerializeAsCord | provenance | MaD:159 | +| protobuf.cpp:460:7:460:9 | *msg | protobuf.cpp:460:11:460:25 | call to SerializeAsCord | provenance | MaD:238 | | protobuf.cpp:464:15:464:28 | call to source | protobuf.cpp:464:15:464:28 | call to source | provenance | | | protobuf.cpp:464:15:464:28 | call to source | protobuf.cpp:465:7:465:9 | *msg | provenance | | -| protobuf.cpp:465:7:465:9 | *msg | protobuf.cpp:465:11:465:32 | call to SerializePartialAsCord | provenance | MaD:161 | +| protobuf.cpp:465:7:465:9 | *msg | protobuf.cpp:465:11:465:32 | call to SerializePartialAsCord | provenance | MaD:240 | | test.cpp:7:47:7:52 | value2 | test.cpp:7:64:7:69 | value2 | provenance | | | test.cpp:7:64:7:69 | value2 | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | provenance | | | test.cpp:10:10:10:18 | call to ymlSource | test.cpp:10:10:10:18 | call to ymlSource | provenance | Src:MaD:48 | @@ -1056,57 +1254,179 @@ nodes | bdlbb.cpp:96:37:96:39 | copy output argument | semmle.label | copy output argument | | bdlbb.cpp:96:42:96:44 | *dst | semmle.label | *dst | | bdlbb.cpp:97:7:97:10 | * ... | semmle.label | * ... | -| bslx.cpp:155:33:155:40 | call to source | semmle.label | call to source | -| bslx.cpp:156:34:156:39 | call to ByteInStream | semmle.label | call to ByteInStream | -| bslx.cpp:156:46:156:49 | *call to data | semmle.label | *call to data | -| bslx.cpp:158:2:158:7 | *stream | semmle.label | *stream | -| bslx.cpp:158:22:158:24 | getArrayInt8 output argument | semmle.label | getArrayInt8 output argument | -| bslx.cpp:159:7:159:10 | * ... | semmle.label | * ... | -| bslx.cpp:163:33:163:40 | call to source | semmle.label | call to source | -| bslx.cpp:164:34:164:39 | call to ByteInStream | semmle.label | call to ByteInStream | -| bslx.cpp:164:46:164:49 | *call to data | semmle.label | *call to data | -| bslx.cpp:166:2:166:7 | *stream | semmle.label | *stream | -| bslx.cpp:166:19:166:21 | getString output argument | semmle.label | getString output argument | -| bslx.cpp:167:7:167:17 | * ... | semmle.label | * ... | -| bslx.cpp:171:33:171:40 | call to source | semmle.label | call to source | -| bslx.cpp:172:34:172:39 | call to ByteInStream | semmle.label | call to ByteInStream | -| bslx.cpp:172:46:172:49 | *call to data | semmle.label | *call to data | -| bslx.cpp:175:2:175:7 | *stream | semmle.label | *stream | -| bslx.cpp:175:17:175:20 | *call to getInt32 | semmle.label | *call to getInt32 | -| bslx.cpp:175:31:175:33 | getString output argument | semmle.label | getString output argument | -| bslx.cpp:176:7:176:17 | * ... | semmle.label | * ... | -| bslx.cpp:181:33:181:40 | call to source | semmle.label | call to source | -| bslx.cpp:182:2:182:7 | reset output argument | semmle.label | reset output argument | -| bslx.cpp:182:20:182:23 | *call to data | semmle.label | *call to data | -| bslx.cpp:184:2:184:7 | *stream | semmle.label | *stream | -| bslx.cpp:184:19:184:21 | getString output argument | semmle.label | getString output argument | -| bslx.cpp:185:7:185:17 | * ... | semmle.label | * ... | -| bslx.cpp:189:33:189:40 | call to source | semmle.label | call to source | -| bslx.cpp:190:20:190:45 | *call to data | semmle.label | *call to data | -| bslx.cpp:191:50:191:55 | call to GenericInStream | semmle.label | call to GenericInStream | -| bslx.cpp:191:57:191:58 | *sb | semmle.label | *sb | -| bslx.cpp:193:2:193:7 | *stream | semmle.label | *stream | -| bslx.cpp:193:19:193:21 | getString output argument | semmle.label | getString output argument | -| bslx.cpp:194:7:194:17 | * ... | semmle.label | * ... | -| bslx.cpp:207:33:207:40 | call to source | semmle.label | call to source | -| bslx.cpp:208:34:208:39 | call to ByteInStream | semmle.label | call to ByteInStream | -| bslx.cpp:208:46:208:49 | *call to data | semmle.label | *call to data | -| bslx.cpp:211:7:211:17 | * ... | semmle.label | * ... | -| bslx.cpp:267:33:267:40 | call to source | semmle.label | call to source | -| bslx.cpp:268:34:268:39 | call to ByteInStream | semmle.label | call to ByteInStream | -| bslx.cpp:268:46:268:49 | *call to data | semmle.label | *call to data | -| bslx.cpp:275:52:275:66 | *call to bdexStreamIn | semmle.label | *call to bdexStreamIn | -| bslx.cpp:275:53:275:58 | *stream | semmle.label | *stream | -| bslx.cpp:275:77:275:79 | getString output argument | semmle.label | getString output argument | -| bslx.cpp:276:7:276:17 | * ... | semmle.label | * ... | -| bslx.cpp:280:33:280:40 | call to source | semmle.label | call to source | -| bslx.cpp:281:34:281:39 | call to ByteInStream | semmle.label | call to ByteInStream | -| bslx.cpp:281:46:281:49 | *call to data | semmle.label | *call to data | -| bslx.cpp:284:7:284:17 | * ... | semmle.label | * ... | -| bslx.cpp:294:33:294:40 | call to source | semmle.label | call to source | -| bslx.cpp:295:34:295:39 | call to ByteInStream | semmle.label | call to ByteInStream | -| bslx.cpp:295:46:295:49 | *call to data | semmle.label | *call to data | -| bslx.cpp:298:7:298:9 | out | semmle.label | out | +| bslx.cpp:161:33:161:40 | call to source | semmle.label | call to source | +| bslx.cpp:162:34:162:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:162:46:162:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:164:2:164:7 | *stream | semmle.label | *stream | +| bslx.cpp:164:22:164:24 | getArrayInt8 output argument | semmle.label | getArrayInt8 output argument | +| bslx.cpp:165:7:165:10 | * ... | semmle.label | * ... | +| bslx.cpp:169:33:169:40 | call to source | semmle.label | call to source | +| bslx.cpp:170:34:170:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:170:46:170:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:172:2:172:7 | *stream | semmle.label | *stream | +| bslx.cpp:172:19:172:21 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:173:7:173:17 | * ... | semmle.label | * ... | +| bslx.cpp:177:33:177:40 | call to source | semmle.label | call to source | +| bslx.cpp:178:34:178:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:178:46:178:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:181:2:181:7 | *stream | semmle.label | *stream | +| bslx.cpp:181:17:181:20 | *call to getInt32 | semmle.label | *call to getInt32 | +| bslx.cpp:181:31:181:33 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:182:7:182:17 | * ... | semmle.label | * ... | +| bslx.cpp:187:33:187:40 | call to source | semmle.label | call to source | +| bslx.cpp:188:2:188:7 | reset output argument | semmle.label | reset output argument | +| bslx.cpp:188:20:188:23 | *call to data | semmle.label | *call to data | +| bslx.cpp:190:2:190:7 | *stream | semmle.label | *stream | +| bslx.cpp:190:19:190:21 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:191:7:191:17 | * ... | semmle.label | * ... | +| bslx.cpp:195:33:195:40 | call to source | semmle.label | call to source | +| bslx.cpp:196:20:196:45 | *call to data | semmle.label | *call to data | +| bslx.cpp:197:50:197:55 | call to GenericInStream | semmle.label | call to GenericInStream | +| bslx.cpp:197:57:197:58 | *sb | semmle.label | *sb | +| bslx.cpp:199:2:199:7 | *stream | semmle.label | *stream | +| bslx.cpp:199:19:199:21 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:200:7:200:17 | * ... | semmle.label | * ... | +| bslx.cpp:213:33:213:40 | call to source | semmle.label | call to source | +| bslx.cpp:214:34:214:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:214:46:214:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:216:53:216:58 | *stream | semmle.label | *stream | +| bslx.cpp:216:61:216:63 | bdexStreamIn output argument | semmle.label | bdexStreamIn output argument | +| bslx.cpp:217:7:217:17 | * ... | semmle.label | * ... | +| bslx.cpp:223:33:223:40 | call to source | semmle.label | call to source | +| bslx.cpp:224:34:224:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:224:46:224:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:247:2:247:7 | *stream | semmle.label | *stream | +| bslx.cpp:247:18:247:21 | *call to getLength | semmle.label | *call to getLength | +| bslx.cpp:247:32:247:35 | *call to getVersion | semmle.label | *call to getVersion | +| bslx.cpp:247:43:247:46 | *call to getInt8 | semmle.label | *call to getInt8 | +| bslx.cpp:247:55:247:59 | *call to getUint8 | semmle.label | *call to getUint8 | +| bslx.cpp:247:68:247:71 | *call to getInt16 | semmle.label | *call to getInt16 | +| bslx.cpp:247:81:247:85 | *call to getUint16 | semmle.label | *call to getUint16 | +| bslx.cpp:247:94:247:97 | *call to getInt24 | semmle.label | *call to getInt24 | +| bslx.cpp:247:107:247:111 | *call to getUint24 | semmle.label | *call to getUint24 | +| bslx.cpp:247:120:247:123 | *call to getInt32 | semmle.label | *call to getInt32 | +| bslx.cpp:247:133:247:137 | *call to getUint32 | semmle.label | *call to getUint32 | +| bslx.cpp:247:146:247:150 | *call to getInt40 | semmle.label | *call to getInt40 | +| bslx.cpp:247:160:247:165 | *call to getUint40 | semmle.label | *call to getUint40 | +| bslx.cpp:247:174:247:178 | *call to getInt48 | semmle.label | *call to getInt48 | +| bslx.cpp:247:188:247:193 | *call to getUint48 | semmle.label | *call to getUint48 | +| bslx.cpp:247:202:247:206 | *call to getInt56 | semmle.label | *call to getInt56 | +| bslx.cpp:247:216:247:221 | *call to getUint56 | semmle.label | *call to getUint56 | +| bslx.cpp:247:230:247:234 | *call to getInt64 | semmle.label | *call to getInt64 | +| bslx.cpp:247:244:247:249 | *call to getUint64 | semmle.label | *call to getUint64 | +| bslx.cpp:247:260:247:263 | *call to getFloat32 | semmle.label | *call to getFloat32 | +| bslx.cpp:247:274:247:277 | *call to getFloat64 | semmle.label | *call to getFloat64 | +| bslx.cpp:247:287:247:292 | *call to getString | semmle.label | *call to getString | +| bslx.cpp:247:305:247:315 | *call to getArrayInt8 | semmle.label | *call to getArrayInt8 | +| bslx.cpp:247:329:247:340 | *call to getArrayUint8 | semmle.label | *call to getArrayUint8 | +| bslx.cpp:247:354:247:364 | *call to getArrayInt16 | semmle.label | *call to getArrayInt16 | +| bslx.cpp:247:379:247:390 | *call to getArrayUint16 | semmle.label | *call to getArrayUint16 | +| bslx.cpp:247:404:247:414 | *call to getArrayInt24 | semmle.label | *call to getArrayInt24 | +| bslx.cpp:247:429:247:440 | *call to getArrayUint24 | semmle.label | *call to getArrayUint24 | +| bslx.cpp:247:454:247:464 | *call to getArrayInt32 | semmle.label | *call to getArrayInt32 | +| bslx.cpp:247:479:247:490 | *call to getArrayUint32 | semmle.label | *call to getArrayUint32 | +| bslx.cpp:247:504:247:515 | *call to getArrayInt40 | semmle.label | *call to getArrayInt40 | +| bslx.cpp:247:530:247:542 | *call to getArrayUint40 | semmle.label | *call to getArrayUint40 | +| bslx.cpp:247:556:247:567 | *call to getArrayInt48 | semmle.label | *call to getArrayInt48 | +| bslx.cpp:247:582:247:594 | *call to getArrayUint48 | semmle.label | *call to getArrayUint48 | +| bslx.cpp:247:608:247:619 | *call to getArrayInt56 | semmle.label | *call to getArrayInt56 | +| bslx.cpp:247:634:247:646 | *call to getArrayUint56 | semmle.label | *call to getArrayUint56 | +| bslx.cpp:247:660:247:671 | *call to getArrayInt64 | semmle.label | *call to getArrayInt64 | +| bslx.cpp:247:686:247:698 | *call to getArrayUint64 | semmle.label | *call to getArrayUint64 | +| bslx.cpp:247:714:247:724 | *call to getArrayFloat32 | semmle.label | *call to getArrayFloat32 | +| bslx.cpp:247:740:247:750 | *call to getArrayFloat64 | semmle.label | *call to getArrayFloat64 | +| bslx.cpp:247:761:247:763 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:248:7:248:17 | * ... | semmle.label | * ... | +| bslx.cpp:252:33:252:40 | call to source | semmle.label | call to source | +| bslx.cpp:253:20:253:45 | *call to data | semmle.label | *call to data | +| bslx.cpp:254:50:254:55 | call to GenericInStream | semmle.label | call to GenericInStream | +| bslx.cpp:254:57:254:58 | *sb | semmle.label | *sb | +| bslx.cpp:277:2:277:7 | *stream | semmle.label | *stream | +| bslx.cpp:277:18:277:21 | *call to getLength | semmle.label | *call to getLength | +| bslx.cpp:277:32:277:35 | *call to getVersion | semmle.label | *call to getVersion | +| bslx.cpp:277:43:277:46 | *call to getInt8 | semmle.label | *call to getInt8 | +| bslx.cpp:277:55:277:59 | *call to getUint8 | semmle.label | *call to getUint8 | +| bslx.cpp:277:68:277:71 | *call to getInt16 | semmle.label | *call to getInt16 | +| bslx.cpp:277:81:277:85 | *call to getUint16 | semmle.label | *call to getUint16 | +| bslx.cpp:277:94:277:97 | *call to getInt24 | semmle.label | *call to getInt24 | +| bslx.cpp:277:107:277:111 | *call to getUint24 | semmle.label | *call to getUint24 | +| bslx.cpp:277:120:277:123 | *call to getInt32 | semmle.label | *call to getInt32 | +| bslx.cpp:277:133:277:137 | *call to getUint32 | semmle.label | *call to getUint32 | +| bslx.cpp:277:146:277:150 | *call to getInt40 | semmle.label | *call to getInt40 | +| bslx.cpp:277:160:277:165 | *call to getUint40 | semmle.label | *call to getUint40 | +| bslx.cpp:277:174:277:178 | *call to getInt48 | semmle.label | *call to getInt48 | +| bslx.cpp:277:188:277:193 | *call to getUint48 | semmle.label | *call to getUint48 | +| bslx.cpp:277:202:277:206 | *call to getInt56 | semmle.label | *call to getInt56 | +| bslx.cpp:277:216:277:221 | *call to getUint56 | semmle.label | *call to getUint56 | +| bslx.cpp:277:230:277:234 | *call to getInt64 | semmle.label | *call to getInt64 | +| bslx.cpp:277:244:277:249 | *call to getUint64 | semmle.label | *call to getUint64 | +| bslx.cpp:277:260:277:263 | *call to getFloat32 | semmle.label | *call to getFloat32 | +| bslx.cpp:277:274:277:277 | *call to getFloat64 | semmle.label | *call to getFloat64 | +| bslx.cpp:277:287:277:292 | *call to getString | semmle.label | *call to getString | +| bslx.cpp:277:305:277:315 | *call to getArrayInt8 | semmle.label | *call to getArrayInt8 | +| bslx.cpp:277:329:277:340 | *call to getArrayUint8 | semmle.label | *call to getArrayUint8 | +| bslx.cpp:277:354:277:364 | *call to getArrayInt16 | semmle.label | *call to getArrayInt16 | +| bslx.cpp:277:379:277:390 | *call to getArrayUint16 | semmle.label | *call to getArrayUint16 | +| bslx.cpp:277:404:277:414 | *call to getArrayInt24 | semmle.label | *call to getArrayInt24 | +| bslx.cpp:277:429:277:440 | *call to getArrayUint24 | semmle.label | *call to getArrayUint24 | +| bslx.cpp:277:454:277:464 | *call to getArrayInt32 | semmle.label | *call to getArrayInt32 | +| bslx.cpp:277:479:277:490 | *call to getArrayUint32 | semmle.label | *call to getArrayUint32 | +| bslx.cpp:277:504:277:515 | *call to getArrayInt40 | semmle.label | *call to getArrayInt40 | +| bslx.cpp:277:530:277:542 | *call to getArrayUint40 | semmle.label | *call to getArrayUint40 | +| bslx.cpp:277:556:277:567 | *call to getArrayInt48 | semmle.label | *call to getArrayInt48 | +| bslx.cpp:277:582:277:594 | *call to getArrayUint48 | semmle.label | *call to getArrayUint48 | +| bslx.cpp:277:608:277:619 | *call to getArrayInt56 | semmle.label | *call to getArrayInt56 | +| bslx.cpp:277:634:277:646 | *call to getArrayUint56 | semmle.label | *call to getArrayUint56 | +| bslx.cpp:277:660:277:671 | *call to getArrayInt64 | semmle.label | *call to getArrayInt64 | +| bslx.cpp:277:686:277:698 | *call to getArrayUint64 | semmle.label | *call to getArrayUint64 | +| bslx.cpp:277:714:277:724 | *call to getArrayFloat32 | semmle.label | *call to getArrayFloat32 | +| bslx.cpp:277:740:277:750 | *call to getArrayFloat64 | semmle.label | *call to getArrayFloat64 | +| bslx.cpp:277:761:277:763 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:278:7:278:17 | * ... | semmle.label | * ... | +| bslx.cpp:282:33:282:40 | call to source | semmle.label | call to source | +| bslx.cpp:283:34:283:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:283:46:283:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:285:53:285:58 | *stream | semmle.label | *stream | +| bslx.cpp:285:61:285:61 | bdexStreamIn output argument | semmle.label | bdexStreamIn output argument | +| bslx.cpp:286:7:286:7 | x | semmle.label | x | +| bslx.cpp:287:53:287:58 | *stream | semmle.label | *stream | +| bslx.cpp:287:61:287:61 | bdexStreamIn output argument | semmle.label | bdexStreamIn output argument | +| bslx.cpp:288:7:288:7 | x | semmle.label | x | +| bslx.cpp:290:52:290:66 | *call to bdexStreamIn | semmle.label | *call to bdexStreamIn | +| bslx.cpp:290:53:290:58 | *stream | semmle.label | *stream | +| bslx.cpp:290:77:290:79 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:291:7:291:17 | * ... | semmle.label | * ... | +| bslx.cpp:295:33:295:40 | call to source | semmle.label | call to source | +| bslx.cpp:296:34:296:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:296:46:296:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:298:53:298:58 | *stream | semmle.label | *stream | +| bslx.cpp:298:61:298:63 | bdexStreamIn output argument | semmle.label | bdexStreamIn output argument | +| bslx.cpp:299:7:299:17 | * ... | semmle.label | * ... | +| bslx.cpp:309:33:309:40 | call to source | semmle.label | call to source | +| bslx.cpp:310:34:310:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:310:46:310:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:312:53:312:58 | *stream | semmle.label | *stream | +| bslx.cpp:312:61:312:63 | bdexStreamIn output argument | semmle.label | bdexStreamIn output argument | +| bslx.cpp:313:7:313:9 | out | semmle.label | out | +| bslx.cpp:322:40:322:60 | call to source | semmle.label | call to source | +| bslx.cpp:322:40:322:60 | call to source | semmle.label | call to source | +| bslx.cpp:323:2:323:7 | reset output argument | semmle.label | reset output argument | +| bslx.cpp:323:15:323:18 | *data | semmle.label | *data | +| bslx.cpp:325:2:325:7 | *stream | semmle.label | *stream | +| bslx.cpp:325:19:325:21 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:326:7:326:17 | * ... | semmle.label | * ... | +| bslx.cpp:330:33:330:40 | call to source | semmle.label | call to source | +| bslx.cpp:331:34:331:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:331:46:331:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:334:2:334:7 | *stream | semmle.label | *stream | +| bslx.cpp:334:19:334:21 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:335:7:335:17 | * ... | semmle.label | * ... | +| bslx.cpp:349:33:349:40 | call to source | semmle.label | call to source | +| bslx.cpp:350:34:350:39 | call to ByteInStream | semmle.label | call to ByteInStream | +| bslx.cpp:350:46:350:49 | *call to data | semmle.label | *call to data | +| bslx.cpp:354:2:354:7 | *stream | semmle.label | *stream | +| bslx.cpp:354:19:354:21 | getString output argument | semmle.label | getString output argument | +| bslx.cpp:356:7:356:17 | * ... | semmle.label | * ... | | protobuf.cpp:117:27:117:51 | call to source | semmle.label | call to source | | protobuf.cpp:117:27:117:51 | call to source | semmle.label | call to source | | protobuf.cpp:118:2:118:4 | ParseFromString output argument | semmle.label | ParseFromString output argument | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/steps.expected b/cpp/ql/test/library-tests/dataflow/external-models/steps.expected index 9290dc8ecf64..4daf1fa5b1e3 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/steps.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/steps.expected @@ -82,155 +82,180 @@ | bdlbb.cpp:92:48:92:51 | *call to data | bdlbb.cpp:92:37:92:40 | copy output argument | | bdlbb.cpp:94:46:94:48 | *src | bdlbb.cpp:94:37:94:40 | copy output argument | | bdlbb.cpp:96:42:96:44 | *dst | bdlbb.cpp:96:37:96:39 | copy output argument | -| bslx.cpp:132:11:132:16 | *stream | bslx.cpp:132:26:132:36 | *call to getInt32 | -| bslx.cpp:148:46:148:49 | *call to data | bslx.cpp:148:34:148:39 | call to ByteInStream | -| bslx.cpp:150:2:150:7 | *stream | bslx.cpp:150:17:150:20 | *call to getInt32 | -| bslx.cpp:156:46:156:49 | *call to data | bslx.cpp:156:34:156:39 | call to ByteInStream | -| bslx.cpp:158:2:158:7 | *stream | bslx.cpp:158:21:158:30 | *call to getArrayInt8 | -| bslx.cpp:158:2:158:7 | *stream | bslx.cpp:158:22:158:24 | getArrayInt8 output argument | -| bslx.cpp:164:46:164:49 | *call to data | bslx.cpp:164:34:164:39 | call to ByteInStream | -| bslx.cpp:166:2:166:7 | *stream | bslx.cpp:166:18:166:23 | *call to getString | -| bslx.cpp:166:2:166:7 | *stream | bslx.cpp:166:19:166:21 | getString output argument | -| bslx.cpp:172:46:172:49 | *call to data | bslx.cpp:172:34:172:39 | call to ByteInStream | -| bslx.cpp:175:2:175:7 | *stream | bslx.cpp:175:17:175:20 | *call to getInt32 | -| bslx.cpp:175:17:175:20 | *call to getInt32 | bslx.cpp:175:30:175:35 | *call to getString | -| bslx.cpp:175:17:175:20 | *call to getInt32 | bslx.cpp:175:31:175:33 | getString output argument | -| bslx.cpp:182:20:182:23 | *call to data | bslx.cpp:182:2:182:7 | reset output argument | -| bslx.cpp:184:2:184:7 | *stream | bslx.cpp:184:18:184:23 | *call to getString | -| bslx.cpp:184:2:184:7 | *stream | bslx.cpp:184:19:184:21 | getString output argument | -| bslx.cpp:191:57:191:58 | *sb | bslx.cpp:191:50:191:55 | call to GenericInStream | -| bslx.cpp:193:2:193:7 | *stream | bslx.cpp:193:18:193:23 | *call to getString | -| bslx.cpp:193:2:193:7 | *stream | bslx.cpp:193:19:193:21 | getString output argument | -| bslx.cpp:200:57:200:58 | *sb | bslx.cpp:200:50:200:55 | call to GenericInStream | -| bslx.cpp:202:2:202:7 | *stream | bslx.cpp:202:17:202:20 | *call to getInt32 | -| bslx.cpp:208:46:208:49 | *call to data | bslx.cpp:208:34:208:39 | call to ByteInStream | -| bslx.cpp:210:53:210:58 | *stream | bslx.cpp:210:52:210:65 | *call to bdexStreamIn | -| bslx.cpp:238:2:238:7 | *stream | bslx.cpp:238:18:238:21 | *call to getLength | -| bslx.cpp:238:18:238:21 | *call to getLength | bslx.cpp:238:32:238:35 | *call to getVersion | -| bslx.cpp:238:32:238:35 | *call to getVersion | bslx.cpp:238:43:238:46 | *call to getInt8 | -| bslx.cpp:238:43:238:46 | *call to getInt8 | bslx.cpp:238:55:238:59 | *call to getUint8 | -| bslx.cpp:238:55:238:59 | *call to getUint8 | bslx.cpp:238:68:238:71 | *call to getInt16 | -| bslx.cpp:238:68:238:71 | *call to getInt16 | bslx.cpp:238:81:238:85 | *call to getUint16 | -| bslx.cpp:238:81:238:85 | *call to getUint16 | bslx.cpp:238:94:238:97 | *call to getInt24 | -| bslx.cpp:238:94:238:97 | *call to getInt24 | bslx.cpp:238:107:238:111 | *call to getUint24 | -| bslx.cpp:238:107:238:111 | *call to getUint24 | bslx.cpp:238:120:238:123 | *call to getInt32 | -| bslx.cpp:238:120:238:123 | *call to getInt32 | bslx.cpp:238:133:238:137 | *call to getUint32 | -| bslx.cpp:238:133:238:137 | *call to getUint32 | bslx.cpp:238:146:238:150 | *call to getInt40 | -| bslx.cpp:238:146:238:150 | *call to getInt40 | bslx.cpp:238:160:238:165 | *call to getUint40 | -| bslx.cpp:238:160:238:165 | *call to getUint40 | bslx.cpp:238:174:238:178 | *call to getInt48 | -| bslx.cpp:238:174:238:178 | *call to getInt48 | bslx.cpp:238:188:238:193 | *call to getUint48 | -| bslx.cpp:238:188:238:193 | *call to getUint48 | bslx.cpp:238:202:238:206 | *call to getInt56 | -| bslx.cpp:238:202:238:206 | *call to getInt56 | bslx.cpp:238:216:238:221 | *call to getUint56 | -| bslx.cpp:238:216:238:221 | *call to getUint56 | bslx.cpp:238:230:238:234 | *call to getInt64 | -| bslx.cpp:238:230:238:234 | *call to getInt64 | bslx.cpp:238:244:238:249 | *call to getUint64 | -| bslx.cpp:238:244:238:249 | *call to getUint64 | bslx.cpp:238:260:238:263 | *call to getFloat32 | -| bslx.cpp:238:260:238:263 | *call to getFloat32 | bslx.cpp:238:274:238:277 | *call to getFloat64 | -| bslx.cpp:238:274:238:277 | *call to getFloat64 | bslx.cpp:238:287:238:292 | *call to getString | -| bslx.cpp:238:274:238:277 | *call to getFloat64 | bslx.cpp:238:288:238:290 | getString output argument | -| bslx.cpp:238:287:238:292 | *call to getString | bslx.cpp:238:305:238:315 | *call to getArrayInt8 | -| bslx.cpp:238:287:238:292 | *call to getString | bslx.cpp:238:306:238:309 | getArrayInt8 output argument | -| bslx.cpp:238:305:238:315 | *call to getArrayInt8 | bslx.cpp:238:329:238:340 | *call to getArrayUint8 | -| bslx.cpp:238:305:238:315 | *call to getArrayInt8 | bslx.cpp:238:330:238:334 | getArrayUint8 output argument | -| bslx.cpp:238:329:238:340 | *call to getArrayUint8 | bslx.cpp:238:354:238:364 | *call to getArrayInt16 | -| bslx.cpp:238:329:238:340 | *call to getArrayUint8 | bslx.cpp:238:355:238:358 | getArrayInt16 output argument | -| bslx.cpp:238:354:238:364 | *call to getArrayInt16 | bslx.cpp:238:379:238:390 | *call to getArrayUint16 | -| bslx.cpp:238:354:238:364 | *call to getArrayInt16 | bslx.cpp:238:380:238:384 | getArrayUint16 output argument | -| bslx.cpp:238:379:238:390 | *call to getArrayUint16 | bslx.cpp:238:404:238:414 | *call to getArrayInt24 | -| bslx.cpp:238:379:238:390 | *call to getArrayUint16 | bslx.cpp:238:405:238:408 | getArrayInt24 output argument | -| bslx.cpp:238:404:238:414 | *call to getArrayInt24 | bslx.cpp:238:429:238:440 | *call to getArrayUint24 | -| bslx.cpp:238:404:238:414 | *call to getArrayInt24 | bslx.cpp:238:430:238:434 | getArrayUint24 output argument | -| bslx.cpp:238:429:238:440 | *call to getArrayUint24 | bslx.cpp:238:454:238:464 | *call to getArrayInt32 | -| bslx.cpp:238:429:238:440 | *call to getArrayUint24 | bslx.cpp:238:455:238:458 | getArrayInt32 output argument | -| bslx.cpp:238:454:238:464 | *call to getArrayInt32 | bslx.cpp:238:479:238:490 | *call to getArrayUint32 | -| bslx.cpp:238:454:238:464 | *call to getArrayInt32 | bslx.cpp:238:480:238:484 | getArrayUint32 output argument | -| bslx.cpp:238:479:238:490 | *call to getArrayUint32 | bslx.cpp:238:504:238:515 | *call to getArrayInt40 | -| bslx.cpp:238:479:238:490 | *call to getArrayUint32 | bslx.cpp:238:505:238:509 | getArrayInt40 output argument | -| bslx.cpp:238:504:238:515 | *call to getArrayInt40 | bslx.cpp:238:530:238:542 | *call to getArrayUint40 | -| bslx.cpp:238:504:238:515 | *call to getArrayInt40 | bslx.cpp:238:531:238:536 | getArrayUint40 output argument | -| bslx.cpp:238:530:238:542 | *call to getArrayUint40 | bslx.cpp:238:556:238:567 | *call to getArrayInt48 | -| bslx.cpp:238:530:238:542 | *call to getArrayUint40 | bslx.cpp:238:557:238:561 | getArrayInt48 output argument | -| bslx.cpp:238:556:238:567 | *call to getArrayInt48 | bslx.cpp:238:582:238:594 | *call to getArrayUint48 | -| bslx.cpp:238:556:238:567 | *call to getArrayInt48 | bslx.cpp:238:583:238:588 | getArrayUint48 output argument | -| bslx.cpp:238:582:238:594 | *call to getArrayUint48 | bslx.cpp:238:608:238:619 | *call to getArrayInt56 | -| bslx.cpp:238:582:238:594 | *call to getArrayUint48 | bslx.cpp:238:609:238:613 | getArrayInt56 output argument | -| bslx.cpp:238:608:238:619 | *call to getArrayInt56 | bslx.cpp:238:634:238:646 | *call to getArrayUint56 | -| bslx.cpp:238:608:238:619 | *call to getArrayInt56 | bslx.cpp:238:635:238:640 | getArrayUint56 output argument | -| bslx.cpp:238:634:238:646 | *call to getArrayUint56 | bslx.cpp:238:660:238:671 | *call to getArrayInt64 | -| bslx.cpp:238:634:238:646 | *call to getArrayUint56 | bslx.cpp:238:661:238:665 | getArrayInt64 output argument | -| bslx.cpp:238:660:238:671 | *call to getArrayInt64 | bslx.cpp:238:686:238:698 | *call to getArrayUint64 | -| bslx.cpp:238:660:238:671 | *call to getArrayInt64 | bslx.cpp:238:687:238:692 | getArrayUint64 output argument | -| bslx.cpp:238:686:238:698 | *call to getArrayUint64 | bslx.cpp:238:714:238:724 | *call to getArrayFloat32 | -| bslx.cpp:238:686:238:698 | *call to getArrayUint64 | bslx.cpp:238:715:238:718 | getArrayFloat32 output argument | -| bslx.cpp:238:714:238:724 | *call to getArrayFloat32 | bslx.cpp:238:740:238:750 | *call to getArrayFloat64 | -| bslx.cpp:238:714:238:724 | *call to getArrayFloat32 | bslx.cpp:238:741:238:744 | getArrayFloat64 output argument | -| bslx.cpp:263:2:263:7 | *stream | bslx.cpp:263:18:263:21 | *call to getLength | -| bslx.cpp:263:18:263:21 | *call to getLength | bslx.cpp:263:32:263:35 | *call to getVersion | -| bslx.cpp:263:32:263:35 | *call to getVersion | bslx.cpp:263:43:263:46 | *call to getInt8 | -| bslx.cpp:263:43:263:46 | *call to getInt8 | bslx.cpp:263:55:263:59 | *call to getUint8 | -| bslx.cpp:263:55:263:59 | *call to getUint8 | bslx.cpp:263:68:263:71 | *call to getInt16 | -| bslx.cpp:263:68:263:71 | *call to getInt16 | bslx.cpp:263:81:263:85 | *call to getUint16 | -| bslx.cpp:263:81:263:85 | *call to getUint16 | bslx.cpp:263:94:263:97 | *call to getInt24 | -| bslx.cpp:263:94:263:97 | *call to getInt24 | bslx.cpp:263:107:263:111 | *call to getUint24 | -| bslx.cpp:263:107:263:111 | *call to getUint24 | bslx.cpp:263:120:263:123 | *call to getInt32 | -| bslx.cpp:263:120:263:123 | *call to getInt32 | bslx.cpp:263:133:263:137 | *call to getUint32 | -| bslx.cpp:263:133:263:137 | *call to getUint32 | bslx.cpp:263:146:263:150 | *call to getInt40 | -| bslx.cpp:263:146:263:150 | *call to getInt40 | bslx.cpp:263:160:263:165 | *call to getUint40 | -| bslx.cpp:263:160:263:165 | *call to getUint40 | bslx.cpp:263:174:263:178 | *call to getInt48 | -| bslx.cpp:263:174:263:178 | *call to getInt48 | bslx.cpp:263:188:263:193 | *call to getUint48 | -| bslx.cpp:263:188:263:193 | *call to getUint48 | bslx.cpp:263:202:263:206 | *call to getInt56 | -| bslx.cpp:263:202:263:206 | *call to getInt56 | bslx.cpp:263:216:263:221 | *call to getUint56 | -| bslx.cpp:263:216:263:221 | *call to getUint56 | bslx.cpp:263:230:263:234 | *call to getInt64 | -| bslx.cpp:263:230:263:234 | *call to getInt64 | bslx.cpp:263:244:263:249 | *call to getUint64 | -| bslx.cpp:263:244:263:249 | *call to getUint64 | bslx.cpp:263:260:263:263 | *call to getFloat32 | -| bslx.cpp:263:260:263:263 | *call to getFloat32 | bslx.cpp:263:274:263:277 | *call to getFloat64 | -| bslx.cpp:263:274:263:277 | *call to getFloat64 | bslx.cpp:263:287:263:292 | *call to getString | -| bslx.cpp:263:274:263:277 | *call to getFloat64 | bslx.cpp:263:288:263:290 | getString output argument | -| bslx.cpp:263:287:263:292 | *call to getString | bslx.cpp:263:305:263:315 | *call to getArrayInt8 | -| bslx.cpp:263:287:263:292 | *call to getString | bslx.cpp:263:306:263:309 | getArrayInt8 output argument | -| bslx.cpp:263:305:263:315 | *call to getArrayInt8 | bslx.cpp:263:329:263:340 | *call to getArrayUint8 | -| bslx.cpp:263:305:263:315 | *call to getArrayInt8 | bslx.cpp:263:330:263:334 | getArrayUint8 output argument | -| bslx.cpp:263:329:263:340 | *call to getArrayUint8 | bslx.cpp:263:354:263:364 | *call to getArrayInt16 | -| bslx.cpp:263:329:263:340 | *call to getArrayUint8 | bslx.cpp:263:355:263:358 | getArrayInt16 output argument | -| bslx.cpp:263:354:263:364 | *call to getArrayInt16 | bslx.cpp:263:379:263:390 | *call to getArrayUint16 | -| bslx.cpp:263:354:263:364 | *call to getArrayInt16 | bslx.cpp:263:380:263:384 | getArrayUint16 output argument | -| bslx.cpp:263:379:263:390 | *call to getArrayUint16 | bslx.cpp:263:404:263:414 | *call to getArrayInt24 | -| bslx.cpp:263:379:263:390 | *call to getArrayUint16 | bslx.cpp:263:405:263:408 | getArrayInt24 output argument | -| bslx.cpp:263:404:263:414 | *call to getArrayInt24 | bslx.cpp:263:429:263:440 | *call to getArrayUint24 | -| bslx.cpp:263:404:263:414 | *call to getArrayInt24 | bslx.cpp:263:430:263:434 | getArrayUint24 output argument | -| bslx.cpp:263:429:263:440 | *call to getArrayUint24 | bslx.cpp:263:454:263:464 | *call to getArrayInt32 | -| bslx.cpp:263:429:263:440 | *call to getArrayUint24 | bslx.cpp:263:455:263:458 | getArrayInt32 output argument | -| bslx.cpp:263:454:263:464 | *call to getArrayInt32 | bslx.cpp:263:479:263:490 | *call to getArrayUint32 | -| bslx.cpp:263:454:263:464 | *call to getArrayInt32 | bslx.cpp:263:480:263:484 | getArrayUint32 output argument | -| bslx.cpp:263:479:263:490 | *call to getArrayUint32 | bslx.cpp:263:504:263:515 | *call to getArrayInt40 | -| bslx.cpp:263:479:263:490 | *call to getArrayUint32 | bslx.cpp:263:505:263:509 | getArrayInt40 output argument | -| bslx.cpp:263:504:263:515 | *call to getArrayInt40 | bslx.cpp:263:530:263:542 | *call to getArrayUint40 | -| bslx.cpp:263:504:263:515 | *call to getArrayInt40 | bslx.cpp:263:531:263:536 | getArrayUint40 output argument | -| bslx.cpp:263:530:263:542 | *call to getArrayUint40 | bslx.cpp:263:556:263:567 | *call to getArrayInt48 | -| bslx.cpp:263:530:263:542 | *call to getArrayUint40 | bslx.cpp:263:557:263:561 | getArrayInt48 output argument | -| bslx.cpp:263:556:263:567 | *call to getArrayInt48 | bslx.cpp:263:582:263:594 | *call to getArrayUint48 | -| bslx.cpp:263:556:263:567 | *call to getArrayInt48 | bslx.cpp:263:583:263:588 | getArrayUint48 output argument | -| bslx.cpp:263:582:263:594 | *call to getArrayUint48 | bslx.cpp:263:608:263:619 | *call to getArrayInt56 | -| bslx.cpp:263:582:263:594 | *call to getArrayUint48 | bslx.cpp:263:609:263:613 | getArrayInt56 output argument | -| bslx.cpp:263:608:263:619 | *call to getArrayInt56 | bslx.cpp:263:634:263:646 | *call to getArrayUint56 | -| bslx.cpp:263:608:263:619 | *call to getArrayInt56 | bslx.cpp:263:635:263:640 | getArrayUint56 output argument | -| bslx.cpp:263:634:263:646 | *call to getArrayUint56 | bslx.cpp:263:660:263:671 | *call to getArrayInt64 | -| bslx.cpp:263:634:263:646 | *call to getArrayUint56 | bslx.cpp:263:661:263:665 | getArrayInt64 output argument | -| bslx.cpp:263:660:263:671 | *call to getArrayInt64 | bslx.cpp:263:686:263:698 | *call to getArrayUint64 | -| bslx.cpp:263:660:263:671 | *call to getArrayInt64 | bslx.cpp:263:687:263:692 | getArrayUint64 output argument | -| bslx.cpp:263:686:263:698 | *call to getArrayUint64 | bslx.cpp:263:714:263:724 | *call to getArrayFloat32 | -| bslx.cpp:263:686:263:698 | *call to getArrayUint64 | bslx.cpp:263:715:263:718 | getArrayFloat32 output argument | -| bslx.cpp:263:714:263:724 | *call to getArrayFloat32 | bslx.cpp:263:740:263:750 | *call to getArrayFloat64 | -| bslx.cpp:263:714:263:724 | *call to getArrayFloat32 | bslx.cpp:263:741:263:744 | getArrayFloat64 output argument | -| bslx.cpp:268:46:268:49 | *call to data | bslx.cpp:268:34:268:39 | call to ByteInStream | -| bslx.cpp:270:53:270:58 | *stream | bslx.cpp:270:52:270:63 | *call to bdexStreamIn | -| bslx.cpp:272:53:272:58 | *stream | bslx.cpp:272:52:272:66 | *call to bdexStreamIn | -| bslx.cpp:275:52:275:66 | *call to bdexStreamIn | bslx.cpp:275:76:275:81 | *call to getString | -| bslx.cpp:275:52:275:66 | *call to bdexStreamIn | bslx.cpp:275:77:275:79 | getString output argument | -| bslx.cpp:275:53:275:58 | *stream | bslx.cpp:275:52:275:66 | *call to bdexStreamIn | -| bslx.cpp:281:46:281:49 | *call to data | bslx.cpp:281:34:281:39 | call to ByteInStream | -| bslx.cpp:283:53:283:58 | *stream | bslx.cpp:283:52:283:68 | *call to bdexStreamIn | -| bslx.cpp:295:46:295:49 | *call to data | bslx.cpp:295:34:295:39 | call to ByteInStream | -| bslx.cpp:297:53:297:58 | *stream | bslx.cpp:297:52:297:68 | *call to bdexStreamIn | +| bslx.cpp:138:11:138:16 | *stream | bslx.cpp:138:26:138:36 | *call to getInt32 | +| bslx.cpp:154:46:154:49 | *call to data | bslx.cpp:154:34:154:39 | call to ByteInStream | +| bslx.cpp:156:2:156:7 | *stream | bslx.cpp:156:17:156:20 | *call to getInt32 | +| bslx.cpp:162:46:162:49 | *call to data | bslx.cpp:162:34:162:39 | call to ByteInStream | +| bslx.cpp:164:2:164:7 | *stream | bslx.cpp:164:21:164:30 | *call to getArrayInt8 | +| bslx.cpp:164:2:164:7 | *stream | bslx.cpp:164:22:164:24 | getArrayInt8 output argument | +| bslx.cpp:170:46:170:49 | *call to data | bslx.cpp:170:34:170:39 | call to ByteInStream | +| bslx.cpp:172:2:172:7 | *stream | bslx.cpp:172:18:172:23 | *call to getString | +| bslx.cpp:172:2:172:7 | *stream | bslx.cpp:172:19:172:21 | getString output argument | +| bslx.cpp:178:46:178:49 | *call to data | bslx.cpp:178:34:178:39 | call to ByteInStream | +| bslx.cpp:181:2:181:7 | *stream | bslx.cpp:181:17:181:20 | *call to getInt32 | +| bslx.cpp:181:17:181:20 | *call to getInt32 | bslx.cpp:181:30:181:35 | *call to getString | +| bslx.cpp:181:17:181:20 | *call to getInt32 | bslx.cpp:181:31:181:33 | getString output argument | +| bslx.cpp:188:20:188:23 | *call to data | bslx.cpp:188:2:188:7 | reset output argument | +| bslx.cpp:190:2:190:7 | *stream | bslx.cpp:190:18:190:23 | *call to getString | +| bslx.cpp:190:2:190:7 | *stream | bslx.cpp:190:19:190:21 | getString output argument | +| bslx.cpp:197:57:197:58 | *sb | bslx.cpp:197:50:197:55 | call to GenericInStream | +| bslx.cpp:199:2:199:7 | *stream | bslx.cpp:199:18:199:23 | *call to getString | +| bslx.cpp:199:2:199:7 | *stream | bslx.cpp:199:19:199:21 | getString output argument | +| bslx.cpp:206:57:206:58 | *sb | bslx.cpp:206:50:206:55 | call to GenericInStream | +| bslx.cpp:208:2:208:7 | *stream | bslx.cpp:208:17:208:20 | *call to getInt32 | +| bslx.cpp:214:46:214:49 | *call to data | bslx.cpp:214:34:214:39 | call to ByteInStream | +| bslx.cpp:216:53:216:58 | *stream | bslx.cpp:216:52:216:65 | *call to bdexStreamIn | +| bslx.cpp:216:53:216:58 | *stream | bslx.cpp:216:61:216:63 | bdexStreamIn output argument | +| bslx.cpp:224:46:224:49 | *call to data | bslx.cpp:224:34:224:39 | call to ByteInStream | +| bslx.cpp:247:2:247:7 | *stream | bslx.cpp:247:18:247:21 | *call to getLength | +| bslx.cpp:247:18:247:21 | *call to getLength | bslx.cpp:247:32:247:35 | *call to getVersion | +| bslx.cpp:247:32:247:35 | *call to getVersion | bslx.cpp:247:43:247:46 | *call to getInt8 | +| bslx.cpp:247:43:247:46 | *call to getInt8 | bslx.cpp:247:55:247:59 | *call to getUint8 | +| bslx.cpp:247:55:247:59 | *call to getUint8 | bslx.cpp:247:68:247:71 | *call to getInt16 | +| bslx.cpp:247:68:247:71 | *call to getInt16 | bslx.cpp:247:81:247:85 | *call to getUint16 | +| bslx.cpp:247:81:247:85 | *call to getUint16 | bslx.cpp:247:94:247:97 | *call to getInt24 | +| bslx.cpp:247:94:247:97 | *call to getInt24 | bslx.cpp:247:107:247:111 | *call to getUint24 | +| bslx.cpp:247:107:247:111 | *call to getUint24 | bslx.cpp:247:120:247:123 | *call to getInt32 | +| bslx.cpp:247:120:247:123 | *call to getInt32 | bslx.cpp:247:133:247:137 | *call to getUint32 | +| bslx.cpp:247:133:247:137 | *call to getUint32 | bslx.cpp:247:146:247:150 | *call to getInt40 | +| bslx.cpp:247:146:247:150 | *call to getInt40 | bslx.cpp:247:160:247:165 | *call to getUint40 | +| bslx.cpp:247:160:247:165 | *call to getUint40 | bslx.cpp:247:174:247:178 | *call to getInt48 | +| bslx.cpp:247:174:247:178 | *call to getInt48 | bslx.cpp:247:188:247:193 | *call to getUint48 | +| bslx.cpp:247:188:247:193 | *call to getUint48 | bslx.cpp:247:202:247:206 | *call to getInt56 | +| bslx.cpp:247:202:247:206 | *call to getInt56 | bslx.cpp:247:216:247:221 | *call to getUint56 | +| bslx.cpp:247:216:247:221 | *call to getUint56 | bslx.cpp:247:230:247:234 | *call to getInt64 | +| bslx.cpp:247:230:247:234 | *call to getInt64 | bslx.cpp:247:244:247:249 | *call to getUint64 | +| bslx.cpp:247:244:247:249 | *call to getUint64 | bslx.cpp:247:260:247:263 | *call to getFloat32 | +| bslx.cpp:247:260:247:263 | *call to getFloat32 | bslx.cpp:247:274:247:277 | *call to getFloat64 | +| bslx.cpp:247:274:247:277 | *call to getFloat64 | bslx.cpp:247:287:247:292 | *call to getString | +| bslx.cpp:247:274:247:277 | *call to getFloat64 | bslx.cpp:247:288:247:290 | getString output argument | +| bslx.cpp:247:287:247:292 | *call to getString | bslx.cpp:247:305:247:315 | *call to getArrayInt8 | +| bslx.cpp:247:287:247:292 | *call to getString | bslx.cpp:247:306:247:309 | getArrayInt8 output argument | +| bslx.cpp:247:305:247:315 | *call to getArrayInt8 | bslx.cpp:247:329:247:340 | *call to getArrayUint8 | +| bslx.cpp:247:305:247:315 | *call to getArrayInt8 | bslx.cpp:247:330:247:334 | getArrayUint8 output argument | +| bslx.cpp:247:329:247:340 | *call to getArrayUint8 | bslx.cpp:247:354:247:364 | *call to getArrayInt16 | +| bslx.cpp:247:329:247:340 | *call to getArrayUint8 | bslx.cpp:247:355:247:358 | getArrayInt16 output argument | +| bslx.cpp:247:354:247:364 | *call to getArrayInt16 | bslx.cpp:247:379:247:390 | *call to getArrayUint16 | +| bslx.cpp:247:354:247:364 | *call to getArrayInt16 | bslx.cpp:247:380:247:384 | getArrayUint16 output argument | +| bslx.cpp:247:379:247:390 | *call to getArrayUint16 | bslx.cpp:247:404:247:414 | *call to getArrayInt24 | +| bslx.cpp:247:379:247:390 | *call to getArrayUint16 | bslx.cpp:247:405:247:408 | getArrayInt24 output argument | +| bslx.cpp:247:404:247:414 | *call to getArrayInt24 | bslx.cpp:247:429:247:440 | *call to getArrayUint24 | +| bslx.cpp:247:404:247:414 | *call to getArrayInt24 | bslx.cpp:247:430:247:434 | getArrayUint24 output argument | +| bslx.cpp:247:429:247:440 | *call to getArrayUint24 | bslx.cpp:247:454:247:464 | *call to getArrayInt32 | +| bslx.cpp:247:429:247:440 | *call to getArrayUint24 | bslx.cpp:247:455:247:458 | getArrayInt32 output argument | +| bslx.cpp:247:454:247:464 | *call to getArrayInt32 | bslx.cpp:247:479:247:490 | *call to getArrayUint32 | +| bslx.cpp:247:454:247:464 | *call to getArrayInt32 | bslx.cpp:247:480:247:484 | getArrayUint32 output argument | +| bslx.cpp:247:479:247:490 | *call to getArrayUint32 | bslx.cpp:247:504:247:515 | *call to getArrayInt40 | +| bslx.cpp:247:479:247:490 | *call to getArrayUint32 | bslx.cpp:247:505:247:509 | getArrayInt40 output argument | +| bslx.cpp:247:504:247:515 | *call to getArrayInt40 | bslx.cpp:247:530:247:542 | *call to getArrayUint40 | +| bslx.cpp:247:504:247:515 | *call to getArrayInt40 | bslx.cpp:247:531:247:536 | getArrayUint40 output argument | +| bslx.cpp:247:530:247:542 | *call to getArrayUint40 | bslx.cpp:247:556:247:567 | *call to getArrayInt48 | +| bslx.cpp:247:530:247:542 | *call to getArrayUint40 | bslx.cpp:247:557:247:561 | getArrayInt48 output argument | +| bslx.cpp:247:556:247:567 | *call to getArrayInt48 | bslx.cpp:247:582:247:594 | *call to getArrayUint48 | +| bslx.cpp:247:556:247:567 | *call to getArrayInt48 | bslx.cpp:247:583:247:588 | getArrayUint48 output argument | +| bslx.cpp:247:582:247:594 | *call to getArrayUint48 | bslx.cpp:247:608:247:619 | *call to getArrayInt56 | +| bslx.cpp:247:582:247:594 | *call to getArrayUint48 | bslx.cpp:247:609:247:613 | getArrayInt56 output argument | +| bslx.cpp:247:608:247:619 | *call to getArrayInt56 | bslx.cpp:247:634:247:646 | *call to getArrayUint56 | +| bslx.cpp:247:608:247:619 | *call to getArrayInt56 | bslx.cpp:247:635:247:640 | getArrayUint56 output argument | +| bslx.cpp:247:634:247:646 | *call to getArrayUint56 | bslx.cpp:247:660:247:671 | *call to getArrayInt64 | +| bslx.cpp:247:634:247:646 | *call to getArrayUint56 | bslx.cpp:247:661:247:665 | getArrayInt64 output argument | +| bslx.cpp:247:660:247:671 | *call to getArrayInt64 | bslx.cpp:247:686:247:698 | *call to getArrayUint64 | +| bslx.cpp:247:660:247:671 | *call to getArrayInt64 | bslx.cpp:247:687:247:692 | getArrayUint64 output argument | +| bslx.cpp:247:686:247:698 | *call to getArrayUint64 | bslx.cpp:247:714:247:724 | *call to getArrayFloat32 | +| bslx.cpp:247:686:247:698 | *call to getArrayUint64 | bslx.cpp:247:715:247:718 | getArrayFloat32 output argument | +| bslx.cpp:247:714:247:724 | *call to getArrayFloat32 | bslx.cpp:247:740:247:750 | *call to getArrayFloat64 | +| bslx.cpp:247:714:247:724 | *call to getArrayFloat32 | bslx.cpp:247:741:247:744 | getArrayFloat64 output argument | +| bslx.cpp:247:740:247:750 | *call to getArrayFloat64 | bslx.cpp:247:760:247:765 | *call to getString | +| bslx.cpp:247:740:247:750 | *call to getArrayFloat64 | bslx.cpp:247:761:247:763 | getString output argument | +| bslx.cpp:254:57:254:58 | *sb | bslx.cpp:254:50:254:55 | call to GenericInStream | +| bslx.cpp:277:2:277:7 | *stream | bslx.cpp:277:18:277:21 | *call to getLength | +| bslx.cpp:277:18:277:21 | *call to getLength | bslx.cpp:277:32:277:35 | *call to getVersion | +| bslx.cpp:277:32:277:35 | *call to getVersion | bslx.cpp:277:43:277:46 | *call to getInt8 | +| bslx.cpp:277:43:277:46 | *call to getInt8 | bslx.cpp:277:55:277:59 | *call to getUint8 | +| bslx.cpp:277:55:277:59 | *call to getUint8 | bslx.cpp:277:68:277:71 | *call to getInt16 | +| bslx.cpp:277:68:277:71 | *call to getInt16 | bslx.cpp:277:81:277:85 | *call to getUint16 | +| bslx.cpp:277:81:277:85 | *call to getUint16 | bslx.cpp:277:94:277:97 | *call to getInt24 | +| bslx.cpp:277:94:277:97 | *call to getInt24 | bslx.cpp:277:107:277:111 | *call to getUint24 | +| bslx.cpp:277:107:277:111 | *call to getUint24 | bslx.cpp:277:120:277:123 | *call to getInt32 | +| bslx.cpp:277:120:277:123 | *call to getInt32 | bslx.cpp:277:133:277:137 | *call to getUint32 | +| bslx.cpp:277:133:277:137 | *call to getUint32 | bslx.cpp:277:146:277:150 | *call to getInt40 | +| bslx.cpp:277:146:277:150 | *call to getInt40 | bslx.cpp:277:160:277:165 | *call to getUint40 | +| bslx.cpp:277:160:277:165 | *call to getUint40 | bslx.cpp:277:174:277:178 | *call to getInt48 | +| bslx.cpp:277:174:277:178 | *call to getInt48 | bslx.cpp:277:188:277:193 | *call to getUint48 | +| bslx.cpp:277:188:277:193 | *call to getUint48 | bslx.cpp:277:202:277:206 | *call to getInt56 | +| bslx.cpp:277:202:277:206 | *call to getInt56 | bslx.cpp:277:216:277:221 | *call to getUint56 | +| bslx.cpp:277:216:277:221 | *call to getUint56 | bslx.cpp:277:230:277:234 | *call to getInt64 | +| bslx.cpp:277:230:277:234 | *call to getInt64 | bslx.cpp:277:244:277:249 | *call to getUint64 | +| bslx.cpp:277:244:277:249 | *call to getUint64 | bslx.cpp:277:260:277:263 | *call to getFloat32 | +| bslx.cpp:277:260:277:263 | *call to getFloat32 | bslx.cpp:277:274:277:277 | *call to getFloat64 | +| bslx.cpp:277:274:277:277 | *call to getFloat64 | bslx.cpp:277:287:277:292 | *call to getString | +| bslx.cpp:277:274:277:277 | *call to getFloat64 | bslx.cpp:277:288:277:290 | getString output argument | +| bslx.cpp:277:287:277:292 | *call to getString | bslx.cpp:277:305:277:315 | *call to getArrayInt8 | +| bslx.cpp:277:287:277:292 | *call to getString | bslx.cpp:277:306:277:309 | getArrayInt8 output argument | +| bslx.cpp:277:305:277:315 | *call to getArrayInt8 | bslx.cpp:277:329:277:340 | *call to getArrayUint8 | +| bslx.cpp:277:305:277:315 | *call to getArrayInt8 | bslx.cpp:277:330:277:334 | getArrayUint8 output argument | +| bslx.cpp:277:329:277:340 | *call to getArrayUint8 | bslx.cpp:277:354:277:364 | *call to getArrayInt16 | +| bslx.cpp:277:329:277:340 | *call to getArrayUint8 | bslx.cpp:277:355:277:358 | getArrayInt16 output argument | +| bslx.cpp:277:354:277:364 | *call to getArrayInt16 | bslx.cpp:277:379:277:390 | *call to getArrayUint16 | +| bslx.cpp:277:354:277:364 | *call to getArrayInt16 | bslx.cpp:277:380:277:384 | getArrayUint16 output argument | +| bslx.cpp:277:379:277:390 | *call to getArrayUint16 | bslx.cpp:277:404:277:414 | *call to getArrayInt24 | +| bslx.cpp:277:379:277:390 | *call to getArrayUint16 | bslx.cpp:277:405:277:408 | getArrayInt24 output argument | +| bslx.cpp:277:404:277:414 | *call to getArrayInt24 | bslx.cpp:277:429:277:440 | *call to getArrayUint24 | +| bslx.cpp:277:404:277:414 | *call to getArrayInt24 | bslx.cpp:277:430:277:434 | getArrayUint24 output argument | +| bslx.cpp:277:429:277:440 | *call to getArrayUint24 | bslx.cpp:277:454:277:464 | *call to getArrayInt32 | +| bslx.cpp:277:429:277:440 | *call to getArrayUint24 | bslx.cpp:277:455:277:458 | getArrayInt32 output argument | +| bslx.cpp:277:454:277:464 | *call to getArrayInt32 | bslx.cpp:277:479:277:490 | *call to getArrayUint32 | +| bslx.cpp:277:454:277:464 | *call to getArrayInt32 | bslx.cpp:277:480:277:484 | getArrayUint32 output argument | +| bslx.cpp:277:479:277:490 | *call to getArrayUint32 | bslx.cpp:277:504:277:515 | *call to getArrayInt40 | +| bslx.cpp:277:479:277:490 | *call to getArrayUint32 | bslx.cpp:277:505:277:509 | getArrayInt40 output argument | +| bslx.cpp:277:504:277:515 | *call to getArrayInt40 | bslx.cpp:277:530:277:542 | *call to getArrayUint40 | +| bslx.cpp:277:504:277:515 | *call to getArrayInt40 | bslx.cpp:277:531:277:536 | getArrayUint40 output argument | +| bslx.cpp:277:530:277:542 | *call to getArrayUint40 | bslx.cpp:277:556:277:567 | *call to getArrayInt48 | +| bslx.cpp:277:530:277:542 | *call to getArrayUint40 | bslx.cpp:277:557:277:561 | getArrayInt48 output argument | +| bslx.cpp:277:556:277:567 | *call to getArrayInt48 | bslx.cpp:277:582:277:594 | *call to getArrayUint48 | +| bslx.cpp:277:556:277:567 | *call to getArrayInt48 | bslx.cpp:277:583:277:588 | getArrayUint48 output argument | +| bslx.cpp:277:582:277:594 | *call to getArrayUint48 | bslx.cpp:277:608:277:619 | *call to getArrayInt56 | +| bslx.cpp:277:582:277:594 | *call to getArrayUint48 | bslx.cpp:277:609:277:613 | getArrayInt56 output argument | +| bslx.cpp:277:608:277:619 | *call to getArrayInt56 | bslx.cpp:277:634:277:646 | *call to getArrayUint56 | +| bslx.cpp:277:608:277:619 | *call to getArrayInt56 | bslx.cpp:277:635:277:640 | getArrayUint56 output argument | +| bslx.cpp:277:634:277:646 | *call to getArrayUint56 | bslx.cpp:277:660:277:671 | *call to getArrayInt64 | +| bslx.cpp:277:634:277:646 | *call to getArrayUint56 | bslx.cpp:277:661:277:665 | getArrayInt64 output argument | +| bslx.cpp:277:660:277:671 | *call to getArrayInt64 | bslx.cpp:277:686:277:698 | *call to getArrayUint64 | +| bslx.cpp:277:660:277:671 | *call to getArrayInt64 | bslx.cpp:277:687:277:692 | getArrayUint64 output argument | +| bslx.cpp:277:686:277:698 | *call to getArrayUint64 | bslx.cpp:277:714:277:724 | *call to getArrayFloat32 | +| bslx.cpp:277:686:277:698 | *call to getArrayUint64 | bslx.cpp:277:715:277:718 | getArrayFloat32 output argument | +| bslx.cpp:277:714:277:724 | *call to getArrayFloat32 | bslx.cpp:277:740:277:750 | *call to getArrayFloat64 | +| bslx.cpp:277:714:277:724 | *call to getArrayFloat32 | bslx.cpp:277:741:277:744 | getArrayFloat64 output argument | +| bslx.cpp:277:740:277:750 | *call to getArrayFloat64 | bslx.cpp:277:760:277:765 | *call to getString | +| bslx.cpp:277:740:277:750 | *call to getArrayFloat64 | bslx.cpp:277:761:277:763 | getString output argument | +| bslx.cpp:283:46:283:49 | *call to data | bslx.cpp:283:34:283:39 | call to ByteInStream | +| bslx.cpp:285:53:285:58 | *stream | bslx.cpp:285:52:285:63 | *call to bdexStreamIn | +| bslx.cpp:285:53:285:58 | *stream | bslx.cpp:285:61:285:61 | bdexStreamIn output argument | +| bslx.cpp:287:53:287:58 | *stream | bslx.cpp:287:52:287:66 | *call to bdexStreamIn | +| bslx.cpp:287:53:287:58 | *stream | bslx.cpp:287:61:287:61 | bdexStreamIn output argument | +| bslx.cpp:290:52:290:66 | *call to bdexStreamIn | bslx.cpp:290:76:290:81 | *call to getString | +| bslx.cpp:290:52:290:66 | *call to bdexStreamIn | bslx.cpp:290:77:290:79 | getString output argument | +| bslx.cpp:290:53:290:58 | *stream | bslx.cpp:290:52:290:66 | *call to bdexStreamIn | +| bslx.cpp:290:53:290:58 | *stream | bslx.cpp:290:61:290:61 | bdexStreamIn output argument | +| bslx.cpp:296:46:296:49 | *call to data | bslx.cpp:296:34:296:39 | call to ByteInStream | +| bslx.cpp:298:53:298:58 | *stream | bslx.cpp:298:52:298:68 | *call to bdexStreamIn | +| bslx.cpp:298:53:298:58 | *stream | bslx.cpp:298:61:298:63 | bdexStreamIn output argument | +| bslx.cpp:310:46:310:49 | *call to data | bslx.cpp:310:34:310:39 | call to ByteInStream | +| bslx.cpp:312:53:312:58 | *stream | bslx.cpp:312:52:312:68 | *call to bdexStreamIn | +| bslx.cpp:312:53:312:58 | *stream | bslx.cpp:312:61:312:63 | bdexStreamIn output argument | +| bslx.cpp:323:15:323:18 | *data | bslx.cpp:323:2:323:7 | reset output argument | +| bslx.cpp:325:2:325:7 | *stream | bslx.cpp:325:18:325:23 | *call to getString | +| bslx.cpp:325:2:325:7 | *stream | bslx.cpp:325:19:325:21 | getString output argument | +| bslx.cpp:331:46:331:49 | *call to data | bslx.cpp:331:34:331:39 | call to ByteInStream | +| bslx.cpp:334:2:334:7 | *stream | bslx.cpp:334:18:334:23 | *call to getString | +| bslx.cpp:334:2:334:7 | *stream | bslx.cpp:334:19:334:21 | getString output argument | +| bslx.cpp:341:15:341:18 | *data | bslx.cpp:341:2:341:7 | reset output argument | +| bslx.cpp:344:2:344:7 | *stream | bslx.cpp:344:18:344:23 | *call to getString | +| bslx.cpp:344:2:344:7 | *stream | bslx.cpp:344:19:344:21 | getString output argument | +| bslx.cpp:350:46:350:49 | *call to data | bslx.cpp:350:34:350:39 | call to ByteInStream | +| bslx.cpp:352:15:352:19 | *clean | bslx.cpp:352:2:352:7 | reset output argument | +| bslx.cpp:354:2:354:7 | *stream | bslx.cpp:354:18:354:23 | *call to getString | +| bslx.cpp:354:2:354:7 | *stream | bslx.cpp:354:19:354:21 | getString output argument | | protobuf.cpp:118:22:118:25 | data | protobuf.cpp:118:2:118:4 | ParseFromString output argument | | protobuf.cpp:125:22:125:25 | *data | protobuf.cpp:125:2:125:4 | ParseFromString output argument | | protobuf.cpp:132:29:132:32 | data | protobuf.cpp:132:2:132:4 | ParsePartialFromString output argument | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected b/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected index d5b0b0cc0213..62bcdd8f0f94 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected @@ -3691,6 +3691,7 @@ | Dubious signature "(const SSL_SESSION *,unsigned int *)" in summary model. | | Dubious signature "(const SXNET *,unsigned char **)" in summary model. | | Dubious signature "(const SXNETID *,unsigned char **)" in summary model. | +| Dubious signature "(const StringRef &)" in summary model. | | Dubious signature "(const T &,BOOL)" in summary model. | | Dubious signature "(const TS_ACCURACY *)" in summary model. | | Dubious signature "(const TS_ACCURACY *,unsigned char **)" in summary model. |