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..e1edd01e8e5e --- /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`. diff --git a/cpp/ql/lib/ext/bslx.model.yml b/cpp/ql/lib/ext/bslx.model.yml new file mode 100644 index 000000000000..11732ff5e4b2 --- /dev/null +++ b/cpp/ql/lib/ext/bslx.model.yml @@ -0,0 +1,140 @@ +# 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 + - ["BloombergLP::bslx", "ByteInStream", true, "ByteInStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + # 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"] + - ["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"] + # 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"] + - ["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 + - ["BloombergLP::bslx", "GenericInStream", true, "GenericInStream", "", "", "Argument[*0]", "Argument[-1]", "taint", "manual"] + # 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"] + - ["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"] + # 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"] + - ["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 + - ["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..10d1179e4c33 --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/external-models/bslx.cpp @@ -0,0 +1,357 @@ + +// --- 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 bslstl { + template class StringRefImp {}; + typedef StringRefImp StringRef; +} +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(); + 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); + 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); + template + STREAM &bdexStreamIn(STREAM &stream, TYPE &variable, int version); + template + STREAM &bdexStreamIn(STREAM &stream, int &variable, int version = 0) { + return stream.getInt32(variable); + } + } +} +} + +struct MyStreamBuf {}; + +char *source(); +void sink(int); +void sink(char); + +// --- flow tests (source -> sink) --- + +void test_ByteInStream_getInt32_no_flow() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + int x = 0; + stream.getInt32(x); + sink(x); // no flow: scalar outputs are deliberately not modeled +} + +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; + bsl::string out; + stream.getInt32(a).getString(out); + sink(*out.data()); // $ ir +} + +void test_ByteInStream_reset() { + BloombergLP::bslx::ByteInStream stream; + std::string data = std::string(source()); + stream.reset(data.data(), data.size()); + bsl::string out; + stream.getString(out); + sink(*out.data()); // $ ir +} + +void test_GenericInStream_flow() { + std::string data = std::string(source()); + MyStreamBuf *sb = (MyStreamBuf *)data.data(); + BloombergLP::bslx::GenericInStream stream(sb); + bsl::string out; + stream.getString(out); + sink(*out.data()); // $ ir +} + +void test_GenericInStream_getInt32_no_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); // no flow: scalar outputs are deliberately not modeled +} + +void test_bdexStreamIn() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + bsl::string obj; + BloombergLP::bslx::InStreamFunctions::bdexStreamIn(stream, obj); + sink(*obj.data()); // $ ir +} + +// --- coverage: verify flow through every modeled getter in a fluent chain --- + +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; + 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]; + 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() { + 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; + 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]; + 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() { + 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); // $ ir + BloombergLP::bslx::InStreamFunctions::bdexStreamIn(stream, x, 0); + sink(x); // $ ir + bsl::string out; + BloombergLP::bslx::InStreamFunctions::bdexStreamIn(stream, x, 0).getString(out); + sink(*out.data()); // $ ir +} + +void test_bdexStreamIn_versioned_string() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + bsl::string out; + BloombergLP::bslx::InStreamFunctions::bdexStreamIn(stream, out, 1); + sink(*out.data()); // $ ir +} + +struct BdexObject { + int value; +}; + +void sink(BdexObject); + +void test_bdexStreamIn_object() { + std::string data = std::string(source()); + BloombergLP::bslx::ByteInStream stream(data.data(), data.size()); + BdexObject out; + 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 43ab7d01c4c4..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,69 +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: 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 | -| 121 | Summary: google::protobuf; MessageLite; true; AppendPartialToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 122 | Summary: google::protobuf; MessageLite; true; AppendPartialToString; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 123 | Summary: google::protobuf; MessageLite; true; AppendToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 124 | Summary: google::protobuf; MessageLite; true; AppendToString; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 125 | Summary: google::protobuf; MessageLite; true; MergeFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 126 | Summary: google::protobuf; MessageLite; true; MergeFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 127 | Summary: google::protobuf; MessageLite; true; MergeFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 128 | Summary: google::protobuf; MessageLite; true; MergeFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | -| 129 | Summary: google::protobuf; MessageLite; true; MergeFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | -| 130 | Summary: google::protobuf; MessageLite; true; MergePartialFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 131 | Summary: google::protobuf; MessageLite; true; MergePartialFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 132 | Summary: google::protobuf; MessageLite; true; MergePartialFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 133 | Summary: google::protobuf; MessageLite; true; MergePartialFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | -| 134 | Summary: google::protobuf; MessageLite; true; MergePartialFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | -| 135 | Summary: google::protobuf; MessageLite; true; ParseFromArray; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 136 | Summary: google::protobuf; MessageLite; true; ParseFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 137 | Summary: google::protobuf; MessageLite; true; ParseFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 138 | Summary: google::protobuf; MessageLite; true; ParseFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 139 | Summary: google::protobuf; MessageLite; true; ParseFromIstream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 140 | Summary: google::protobuf; MessageLite; true; ParseFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | -| 141 | Summary: google::protobuf; MessageLite; true; ParseFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | -| 142 | Summary: google::protobuf; MessageLite; true; ParseFromZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 143 | Summary: google::protobuf; MessageLite; true; ParsePartialFromArray; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 144 | Summary: google::protobuf; MessageLite; true; ParsePartialFromBoundedZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 145 | Summary: google::protobuf; MessageLite; true; ParsePartialFromCodedStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 146 | Summary: google::protobuf; MessageLite; true; ParsePartialFromCord; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 147 | Summary: google::protobuf; MessageLite; true; ParsePartialFromIstream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 148 | Summary: google::protobuf; MessageLite; true; ParsePartialFromString; (const Cord &); ; Argument[*0]; Argument[-1]; taint; manual | -| 149 | Summary: google::protobuf; MessageLite; true; ParsePartialFromString; (string_view); ; Argument[0]; Argument[-1]; taint; manual | -| 150 | Summary: google::protobuf; MessageLite; true; ParsePartialFromZeroCopyStream; ; ; Argument[*0]; Argument[-1]; taint; manual | -| 151 | Summary: google::protobuf; MessageLite; true; SerializeAsCord; ; ; Argument[-1]; ReturnValue; taint; manual | -| 152 | Summary: google::protobuf; MessageLite; true; SerializeAsString; ; ; Argument[-1]; ReturnValue; taint; manual | -| 153 | Summary: google::protobuf; MessageLite; true; SerializePartialAsCord; ; ; Argument[-1]; ReturnValue; taint; manual | -| 154 | Summary: google::protobuf; MessageLite; true; SerializePartialAsString; ; ; Argument[-1]; ReturnValue; taint; manual | -| 155 | Summary: google::protobuf; MessageLite; true; SerializePartialToArray; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 156 | Summary: google::protobuf; MessageLite; true; SerializePartialToCodedStream; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 157 | Summary: google::protobuf; MessageLite; true; SerializePartialToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 158 | Summary: google::protobuf; MessageLite; true; SerializePartialToOstream; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 159 | Summary: google::protobuf; MessageLite; true; SerializePartialToString; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 160 | Summary: google::protobuf; MessageLite; true; SerializePartialToZeroCopyStream; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 161 | Summary: google::protobuf; MessageLite; true; SerializeToArray; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 162 | Summary: google::protobuf; MessageLite; true; SerializeToCodedStream; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 163 | Summary: google::protobuf; MessageLite; true; SerializeToCord; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 164 | Summary: google::protobuf; MessageLite; true; SerializeToOstream; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 165 | Summary: google::protobuf; MessageLite; true; SerializeToString; ; ; Argument[-1]; Argument[*0]; taint; manual | -| 166 | 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 | @@ -173,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:120 | +| 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 | @@ -190,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:112 | -| asio_streams.cpp:149:24:149:27 | *host | asio_streams.cpp:149:16:149:22 | call to resolve | provenance | MaD:113 | -| asio_streams.cpp:150:24:150:27 | *host | asio_streams.cpp:150:16:150:22 | call to resolve | provenance | MaD:114 | -| asio_streams.cpp:151:24:151:27 | *host | asio_streams.cpp:151:16:151:22 | call to resolve | provenance | MaD:115 | -| asio_streams.cpp:153:24:153:32 | host_view | asio_streams.cpp:153:16:153:22 | call to resolve | provenance | MaD:116 | -| asio_streams.cpp:154:24:154:32 | host_view | asio_streams.cpp:154:16:154:22 | call to resolve | provenance | MaD:117 | -| asio_streams.cpp:155:24:155:32 | host_view | asio_streams.cpp:155:16:155:22 | call to resolve | provenance | MaD:118 | -| asio_streams.cpp:156:24:156:32 | host_view | asio_streams.cpp:156:16:156:22 | call to resolve | provenance | MaD:119 | -| asio_streams.cpp:158:34:158:37 | *host | asio_streams.cpp:158:16:158:22 | call to resolve | provenance | MaD:104 | -| asio_streams.cpp:159:34:159:37 | *host | asio_streams.cpp:159:16:159:22 | call to resolve | provenance | MaD:105 | -| asio_streams.cpp:160:34:160:37 | *host | asio_streams.cpp:160:16:160:22 | call to resolve | provenance | MaD:106 | -| asio_streams.cpp:161:34:161:37 | *host | asio_streams.cpp:161:16:161:22 | call to resolve | provenance | MaD:107 | -| asio_streams.cpp:163:34:163:42 | host_view | asio_streams.cpp:163:16:163:22 | call to resolve | provenance | MaD:108 | -| asio_streams.cpp:164:34:164:42 | host_view | asio_streams.cpp:164:16:164:22 | call to resolve | provenance | MaD:109 | -| asio_streams.cpp:165:34:165:42 | host_view | asio_streams.cpp:165:16:165:22 | call to resolve | provenance | MaD:110 | -| asio_streams.cpp:166:34:166:42 | host_view | asio_streams.cpp:166:16:166:22 | call to resolve | provenance | MaD:111 | +| 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 | @@ -222,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:112 | -| asio_streams.cpp:180:30:180:36 | *service | asio_streams.cpp:180:16:180:22 | call to resolve | provenance | MaD:113 | -| asio_streams.cpp:181:30:181:36 | *service | asio_streams.cpp:181:16:181:22 | call to resolve | provenance | MaD:114 | -| asio_streams.cpp:182:30:182:36 | *service | asio_streams.cpp:182:16:182:22 | call to resolve | provenance | MaD:115 | -| asio_streams.cpp:184:35:184:46 | service_view | asio_streams.cpp:184:16:184:22 | call to resolve | provenance | MaD:116 | -| asio_streams.cpp:185:35:185:46 | service_view | asio_streams.cpp:185:16:185:22 | call to resolve | provenance | MaD:117 | -| asio_streams.cpp:186:35:186:46 | service_view | asio_streams.cpp:186:16:186:22 | call to resolve | provenance | MaD:118 | -| asio_streams.cpp:187:35:187:46 | service_view | asio_streams.cpp:187:16:187:22 | call to resolve | provenance | MaD:119 | -| asio_streams.cpp:189:40:189:46 | *service | asio_streams.cpp:189:16:189:22 | call to resolve | provenance | MaD:104 | -| asio_streams.cpp:190:40:190:46 | *service | asio_streams.cpp:190:16:190:22 | call to resolve | provenance | MaD:105 | -| asio_streams.cpp:191:40:191:46 | *service | asio_streams.cpp:191:16:191:22 | call to resolve | provenance | MaD:106 | -| asio_streams.cpp:192:40:192:46 | *service | asio_streams.cpp:192:16:192:22 | call to resolve | provenance | MaD:107 | -| asio_streams.cpp:194:45:194:56 | service_view | asio_streams.cpp:194:16:194:22 | call to resolve | provenance | MaD:108 | -| asio_streams.cpp:195:45:195:56 | service_view | asio_streams.cpp:195:16:195:22 | call to resolve | provenance | MaD:109 | -| asio_streams.cpp:196:45:196:56 | service_view | asio_streams.cpp:196:16:196:22 | call to resolve | provenance | MaD:110 | -| asio_streams.cpp:197:45:197:56 | service_view | asio_streams.cpp:197:16:197:22 | call to resolve | provenance | MaD:111 | +| 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 | | @@ -309,200 +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: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:141 | +| 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:140 | +| 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:149 | +| 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:148 | +| 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:129 | +| 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:128 | +| 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:134 | +| 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:133 | +| 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:135 | +| 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:143 | +| 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:138 | +| 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:146 | +| 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:127 | +| 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:132 | +| 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:139 | +| 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:147 | +| 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:142 | +| 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:150 | +| 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:136 | +| 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:144 | +| 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:125 | +| 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:130 | +| 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:137 | +| 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:145 | +| 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:126 | +| 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:131 | +| 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:165 | +| 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:159 | +| 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:124 | +| 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:122 | +| 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:165 | +| 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:159 | +| 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:124 | +| 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:122 | +| 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:161 | +| 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:155 | +| 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:163 | +| 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:157 | +| 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:123 | +| 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:121 | +| 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:164 | +| 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:158 | +| 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:166 | +| 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:160 | +| 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:162 | +| 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:156 | +| 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:152 | +| 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:154 | +| 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:151 | +| 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:153 | +| 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 | @@ -1005,6 +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: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 2afe83bbaed7..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,6 +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: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. |