diff --git a/cpp/ql/lib/change-notes/2026-09-08-boost-asio-ip-resolve.md b/cpp/ql/lib/change-notes/2026-09-08-boost-asio-ip-resolve.md new file mode 100644 index 000000000000..9276eed8ed83 --- /dev/null +++ b/cpp/ql/lib/change-notes/2026-09-08-boost-asio-ip-resolve.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added taint flow models for the `boost::asio::ip::basic_resolver::resolve` function. \ No newline at end of file diff --git a/cpp/ql/lib/ext/Boost.Asio.model.yml b/cpp/ql/lib/ext/Boost.Asio.model.yml index f6ba957d2596..eb6728af4124 100644 --- a/cpp/ql/lib/ext/Boost.Asio.model.yml +++ b/cpp/ql/lib/ext/Boost.Asio.model.yml @@ -23,3 +23,19 @@ extensions: extensible: summaryModel data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance - ["boost::asio", "", False, "buffer", "", "", "Argument[*0]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const string &,const string &)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const string &,const string &,error_code &)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const string &,const string &,flags)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const string &,const string &,flags,error_code &)", "", "Argument[*0..1]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(string_view,string_view)", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(string_view,string_view,error_code &)", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(string_view,string_view,flags)", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(string_view,string_view,flags,error_code &)", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const InternetProtocol &,const string &,const string &)", "", "Argument[*1..2]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const InternetProtocol &,const string &,const string &,error_code &)", "", "Argument[*1..2]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const InternetProtocol &,const string &,const string &,flags)", "", "Argument[*1..2]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const InternetProtocol &,const string &,const string &,flags,error_code &)", "", "Argument[*1..2]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const InternetProtocol &,string_view,string_view)", "", "Argument[1..2]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const InternetProtocol &,string_view,string_view,error_code &)", "", "Argument[1..2]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const InternetProtocol &,string_view,string_view,flags)", "", "Argument[1..2]", "ReturnValue", "taint", "manual"] + - ["boost::asio::ip", "basic_resolver", False, "resolve", "(const InternetProtocol &,string_view,string_view,flags,error_code &)", "", "Argument[1..2]", "ReturnValue", "taint", "manual"] \ No newline at end of file diff --git a/cpp/ql/test/library-tests/dataflow/external-models/asio_streams.cpp b/cpp/ql/test/library-tests/dataflow/external-models/asio_streams.cpp index 401091122b8e..76b2a07fc858 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/asio_streams.cpp +++ b/cpp/ql/test/library-tests/dataflow/external-models/asio_streams.cpp @@ -18,6 +18,11 @@ namespace std { }; typedef basic_string string; + + class string_view { + public: + string_view(const char* s); + }; }; namespace boost { @@ -29,14 +34,50 @@ namespace boost { }; namespace asio { - template - class basic_stream_socket /*: public basic_socket*/ { - }; + class any_io_executor { }; + + class socket_base { }; + + template + class basic_socket : public socket_base { }; + + template + class basic_stream_socket : public basic_socket { }; namespace ip { + class resolver_base { + public: + enum flags { passive = 1 }; + }; + + template + class basic_resolver { + public: + class results_type { + }; + + results_type resolve(const std::string &host, const std::string &service); + results_type resolve(const std::string &host, const std::string &service, boost::system::error_code &ec); + results_type resolve(const std::string &host, const std::string &service, resolver_base::flags resolve_flags); + results_type resolve(const std::string &host, const std::string &service, resolver_base::flags resolve_flags, boost::system::error_code &ec); + results_type resolve(std::string_view host, std::string_view service); + results_type resolve(std::string_view host, std::string_view service, boost::system::error_code &ec); + results_type resolve(std::string_view host, std::string_view service, resolver_base::flags resolve_flags); + results_type resolve(std::string_view host, std::string_view service, resolver_base::flags resolve_flags, boost::system::error_code &ec); + results_type resolve(const InternetProtocol &protocol, const std::string &host, const std::string &service); + results_type resolve(const InternetProtocol &protocol, const std::string &host, const std::string &service, boost::system::error_code &ec); + results_type resolve(const InternetProtocol &protocol, const std::string &host, const std::string &service, resolver_base::flags resolve_flags); + results_type resolve(const InternetProtocol &protocol, const std::string &host, const std::string &service, resolver_base::flags resolve_flags, boost::system::error_code &ec); + results_type resolve(const InternetProtocol &protocol, std::string_view host, std::string_view service); + results_type resolve(const InternetProtocol &protocol, std::string_view host, std::string_view service, boost::system::error_code &ec); + results_type resolve(const InternetProtocol &protocol, std::string_view host, std::string_view service, resolver_base::flags resolve_flags); + results_type resolve(const InternetProtocol &protocol, std::string_view host, std::string_view service, resolver_base::flags resolve_flags, boost::system::error_code &ec); + }; + class tcp { public: typedef basic_stream_socket socket; + typedef basic_resolver resolver; }; }; @@ -76,6 +117,7 @@ void sink(char *); void sink(std::string); void sink(boost::asio::streambuf); void sink(boost::asio::mutable_buffer); +void sink(boost::asio::ip::tcp::resolver::results_type); char *getenv(const char *name); int send(int, const void*, int, int); @@ -105,3 +147,65 @@ void test(boost::asio::ip::tcp::socket &socket) { // ... } } + +void test_resolve_host() { + boost::asio::ip::tcp::resolver resolver; + boost::asio::ip::tcp protocol; + boost::asio::ip::resolver_base::flags flags = boost::asio::ip::resolver_base::passive; + boost::system::error_code error; + std::string host(source()); + std::string service(""); + std::string_view host_view(source()); + std::string_view service_view(""); + + sink(resolver.resolve(host, service)); // $ ir + sink(resolver.resolve(host, service, error)); // $ ir + sink(resolver.resolve(host, service, flags)); // $ ir + sink(resolver.resolve(host, service, flags, error)); // $ ir + + sink(resolver.resolve(host_view, service_view)); // $ ir + sink(resolver.resolve(host_view, service_view, error)); // $ ir + sink(resolver.resolve(host_view, service_view, flags)); // $ ir + sink(resolver.resolve(host_view, service_view, flags, error)); // $ ir + + sink(resolver.resolve(protocol, host, service)); // $ ir + sink(resolver.resolve(protocol, host, service, error)); // $ ir + sink(resolver.resolve(protocol, host, service, flags)); // $ ir + sink(resolver.resolve(protocol, host, service, flags, error)); // $ ir + + sink(resolver.resolve(protocol, host_view, service_view)); // $ ir + sink(resolver.resolve(protocol, host_view, service_view, error)); // $ ir + sink(resolver.resolve(protocol, host_view, service_view, flags)); // $ ir + sink(resolver.resolve(protocol, host_view, service_view, flags, error)); // $ ir +} + +void test_resolve_service() { + boost::asio::ip::tcp::resolver resolver; + boost::asio::ip::tcp protocol; + boost::asio::ip::resolver_base::flags flags = boost::asio::ip::resolver_base::passive; + boost::system::error_code error; + std::string host(""); + std::string service(source()); + std::string_view host_view(""); + std::string_view service_view(source()); + + sink(resolver.resolve(host, service)); // $ ir + sink(resolver.resolve(host, service, error)); // $ ir + sink(resolver.resolve(host, service, flags)); // $ ir + sink(resolver.resolve(host, service, flags, error)); // $ ir + + sink(resolver.resolve(host_view, service_view)); // $ ir + sink(resolver.resolve(host_view, service_view, error)); // $ ir + sink(resolver.resolve(host_view, service_view, flags)); // $ ir + sink(resolver.resolve(host_view, service_view, flags, error)); // $ ir + + sink(resolver.resolve(protocol, host, service)); // $ ir + sink(resolver.resolve(protocol, host, service, error)); // $ ir + sink(resolver.resolve(protocol, host, service, flags)); // $ ir + sink(resolver.resolve(protocol, host, service, flags, error)); // $ ir + + sink(resolver.resolve(protocol, host_view, service_view)); // $ ir + sink(resolver.resolve(protocol, host_view, service_view, error)); // $ ir + sink(resolver.resolve(protocol, host_view, service_view, flags)); // $ ir + sink(resolver.resolve(protocol, host_view, service_view, flags, error)); // $ 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 65817b549a90..ee6d7539cc0a 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected @@ -102,16 +102,96 @@ 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; ; false; buffer; ; ; Argument[*0]; 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 | edges -| asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:91:7:91:17 | recv_buffer | provenance | Src:MaD:56 | -| asio_streams.cpp:87:34:87:44 | read_until output argument | asio_streams.cpp:93:29:93:39 | recv_buffer | provenance | Src:MaD:56 Sink:MaD:4 | -| asio_streams.cpp:97:37:97:44 | call to source | asio_streams.cpp:98:7:98:14 | send_str | provenance | TaintFunction | -| asio_streams.cpp:97:37:97:44 | call to source | asio_streams.cpp:100:64:100:71 | *send_str | provenance | TaintFunction | -| asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | | -| asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:101:7:101:17 | send_buffer | provenance | | -| asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:103:29:103:39 | send_buffer | provenance | Sink:MaD:4 | -| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | MaD:104 | +| asio_streams.cpp:129:34:129:44 | read_until output argument | asio_streams.cpp:133:7:133:17 | recv_buffer | provenance | Src:MaD:56 | +| asio_streams.cpp:129:34:129:44 | read_until output argument | asio_streams.cpp:135:29:135:39 | recv_buffer | provenance | Src:MaD:56 Sink:MaD:4 | +| asio_streams.cpp:139:37:139:44 | call to source | asio_streams.cpp:140:7:140:14 | send_str | provenance | TaintFunction | +| asio_streams.cpp:139:37:139:44 | call to source | asio_streams.cpp:142:64:142:71 | *send_str | provenance | TaintFunction | +| asio_streams.cpp:142:44:142:62 | call to buffer | asio_streams.cpp:142:44:142:62 | call to buffer | provenance | | +| asio_streams.cpp:142:44:142:62 | call to buffer | asio_streams.cpp:143:7:143:17 | send_buffer | provenance | | +| asio_streams.cpp:142:44:142:62 | call to buffer | asio_streams.cpp:145:29:145:39 | send_buffer | provenance | Sink:MaD:4 | +| asio_streams.cpp:142:64:142:71 | *send_str | asio_streams.cpp:142:44:142:62 | call to buffer | provenance | MaD:120 | +| asio_streams.cpp:156:19:156:26 | call to source | asio_streams.cpp:161:24:161:27 | *host | provenance | TaintFunction | +| asio_streams.cpp:156:19:156:26 | call to source | asio_streams.cpp:162:24:162:27 | *host | provenance | TaintFunction | +| asio_streams.cpp:156:19:156:26 | call to source | asio_streams.cpp:163:24:163:27 | *host | provenance | TaintFunction | +| asio_streams.cpp:156:19:156:26 | call to source | asio_streams.cpp:164:24:164:27 | *host | provenance | TaintFunction | +| asio_streams.cpp:156:19:156:26 | call to source | asio_streams.cpp:171:34:171:37 | *host | provenance | TaintFunction | +| asio_streams.cpp:156:19:156:26 | call to source | asio_streams.cpp:172:34:172:37 | *host | provenance | TaintFunction | +| asio_streams.cpp:156:19:156:26 | call to source | asio_streams.cpp:173:34:173:37 | *host | provenance | TaintFunction | +| asio_streams.cpp:156:19:156:26 | call to source | asio_streams.cpp:174:34:174:37 | *host | provenance | TaintFunction | +| asio_streams.cpp:158:29:158:36 | call to source | asio_streams.cpp:166:24:166:32 | host_view | provenance | TaintFunction | +| asio_streams.cpp:158:29:158:36 | call to source | asio_streams.cpp:167:24:167:32 | host_view | provenance | TaintFunction | +| asio_streams.cpp:158:29:158:36 | call to source | asio_streams.cpp:168:24:168:32 | host_view | provenance | TaintFunction | +| asio_streams.cpp:158:29:158:36 | call to source | asio_streams.cpp:169:24:169:32 | host_view | provenance | TaintFunction | +| asio_streams.cpp:158:29:158:36 | call to source | asio_streams.cpp:176:34:176:42 | host_view | provenance | TaintFunction | +| asio_streams.cpp:158:29:158:36 | call to source | asio_streams.cpp:177:34:177:42 | host_view | provenance | TaintFunction | +| asio_streams.cpp:158:29:158:36 | call to source | asio_streams.cpp:178:34:178:42 | host_view | provenance | TaintFunction | +| asio_streams.cpp:158:29:158:36 | call to source | asio_streams.cpp:179:34:179:42 | host_view | provenance | TaintFunction | +| asio_streams.cpp:161:24:161:27 | *host | asio_streams.cpp:161:16:161:22 | call to resolve | provenance | MaD:112 | +| asio_streams.cpp:162:24:162:27 | *host | asio_streams.cpp:162:16:162:22 | call to resolve | provenance | MaD:113 | +| asio_streams.cpp:163:24:163:27 | *host | asio_streams.cpp:163:16:163:22 | call to resolve | provenance | MaD:114 | +| asio_streams.cpp:164:24:164:27 | *host | asio_streams.cpp:164:16:164:22 | call to resolve | provenance | MaD:115 | +| asio_streams.cpp:166:24:166:32 | host_view | asio_streams.cpp:166:16:166:22 | call to resolve | provenance | MaD:116 | +| asio_streams.cpp:167:24:167:32 | host_view | asio_streams.cpp:167:16:167:22 | call to resolve | provenance | MaD:117 | +| asio_streams.cpp:168:24:168:32 | host_view | asio_streams.cpp:168:16:168:22 | call to resolve | provenance | MaD:118 | +| asio_streams.cpp:169:24:169:32 | host_view | asio_streams.cpp:169:16:169:22 | call to resolve | provenance | MaD:119 | +| asio_streams.cpp:171:34:171:37 | *host | asio_streams.cpp:171:16:171:22 | call to resolve | provenance | MaD:104 | +| asio_streams.cpp:172:34:172:37 | *host | asio_streams.cpp:172:16:172:22 | call to resolve | provenance | MaD:105 | +| asio_streams.cpp:173:34:173:37 | *host | asio_streams.cpp:173:16:173:22 | call to resolve | provenance | MaD:106 | +| asio_streams.cpp:174:34:174:37 | *host | asio_streams.cpp:174:16:174:22 | call to resolve | provenance | MaD:107 | +| asio_streams.cpp:176:34:176:42 | host_view | asio_streams.cpp:176:16:176:22 | call to resolve | provenance | MaD:108 | +| asio_streams.cpp:177:34:177:42 | host_view | asio_streams.cpp:177:16:177:22 | call to resolve | provenance | MaD:109 | +| asio_streams.cpp:178:34:178:42 | host_view | asio_streams.cpp:178:16:178:22 | call to resolve | provenance | MaD:110 | +| asio_streams.cpp:179:34:179:42 | host_view | asio_streams.cpp:179:16:179:22 | call to resolve | provenance | MaD:111 | +| asio_streams.cpp:188:22:188:29 | call to source | asio_streams.cpp:192:30:192:36 | *service | provenance | TaintFunction | +| asio_streams.cpp:188:22:188:29 | call to source | asio_streams.cpp:193:30:193:36 | *service | provenance | TaintFunction | +| asio_streams.cpp:188:22:188:29 | call to source | asio_streams.cpp:194:30:194:36 | *service | provenance | TaintFunction | +| asio_streams.cpp:188:22:188:29 | call to source | asio_streams.cpp:195:30:195:36 | *service | provenance | TaintFunction | +| asio_streams.cpp:188:22:188:29 | call to source | asio_streams.cpp:202:40:202:46 | *service | provenance | TaintFunction | +| asio_streams.cpp:188:22:188:29 | call to source | asio_streams.cpp:203:40:203:46 | *service | provenance | TaintFunction | +| asio_streams.cpp:188:22:188:29 | call to source | asio_streams.cpp:204:40:204:46 | *service | provenance | TaintFunction | +| asio_streams.cpp:188:22:188:29 | call to source | asio_streams.cpp:205:40:205:46 | *service | provenance | TaintFunction | +| asio_streams.cpp:190:32:190:39 | call to source | asio_streams.cpp:197:35:197:46 | service_view | provenance | TaintFunction | +| asio_streams.cpp:190:32:190:39 | call to source | asio_streams.cpp:198:35:198:46 | service_view | provenance | TaintFunction | +| asio_streams.cpp:190:32:190:39 | call to source | asio_streams.cpp:199:35:199:46 | service_view | provenance | TaintFunction | +| asio_streams.cpp:190:32:190:39 | call to source | asio_streams.cpp:200:35:200:46 | service_view | provenance | TaintFunction | +| asio_streams.cpp:190:32:190:39 | call to source | asio_streams.cpp:207:45:207:56 | service_view | provenance | TaintFunction | +| asio_streams.cpp:190:32:190:39 | call to source | asio_streams.cpp:208:45:208:56 | service_view | provenance | TaintFunction | +| asio_streams.cpp:190:32:190:39 | call to source | asio_streams.cpp:209:45:209:56 | service_view | provenance | TaintFunction | +| asio_streams.cpp:190:32:190:39 | call to source | asio_streams.cpp:210:45:210:56 | service_view | provenance | TaintFunction | +| asio_streams.cpp:192:30:192:36 | *service | asio_streams.cpp:192:16:192:22 | call to resolve | provenance | MaD:112 | +| asio_streams.cpp:193:30:193:36 | *service | asio_streams.cpp:193:16:193:22 | call to resolve | provenance | MaD:113 | +| asio_streams.cpp:194:30:194:36 | *service | asio_streams.cpp:194:16:194:22 | call to resolve | provenance | MaD:114 | +| asio_streams.cpp:195:30:195:36 | *service | asio_streams.cpp:195:16:195:22 | call to resolve | provenance | MaD:115 | +| asio_streams.cpp:197:35:197:46 | service_view | asio_streams.cpp:197:16:197:22 | call to resolve | provenance | MaD:116 | +| asio_streams.cpp:198:35:198:46 | service_view | asio_streams.cpp:198:16:198:22 | call to resolve | provenance | MaD:117 | +| asio_streams.cpp:199:35:199:46 | service_view | asio_streams.cpp:199:16:199:22 | call to resolve | provenance | MaD:118 | +| asio_streams.cpp:200:35:200:46 | service_view | asio_streams.cpp:200:16:200:22 | call to resolve | provenance | MaD:119 | +| asio_streams.cpp:202:40:202:46 | *service | asio_streams.cpp:202:16:202:22 | call to resolve | provenance | MaD:104 | +| asio_streams.cpp:203:40:203:46 | *service | asio_streams.cpp:203:16:203:22 | call to resolve | provenance | MaD:105 | +| asio_streams.cpp:204:40:204:46 | *service | asio_streams.cpp:204:16:204:22 | call to resolve | provenance | MaD:106 | +| asio_streams.cpp:205:40:205:46 | *service | asio_streams.cpp:205:16:205:22 | call to resolve | provenance | MaD:107 | +| asio_streams.cpp:207:45:207:56 | service_view | asio_streams.cpp:207:16:207:22 | call to resolve | provenance | MaD:108 | +| asio_streams.cpp:208:45:208:56 | service_view | asio_streams.cpp:208:16:208:22 | call to resolve | provenance | MaD:109 | +| asio_streams.cpp:209:45:209:56 | service_view | asio_streams.cpp:209:16:209:22 | call to resolve | provenance | MaD:110 | +| asio_streams.cpp:210:45:210:56 | service_view | asio_streams.cpp:210:16:210:22 | call to resolve | provenance | MaD:111 | | 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 | | @@ -526,16 +606,84 @@ edges | windows.cpp:1172:21:1172:24 | *guid | windows.cpp:1172:27:1172:29 | StringFromGUID2 output argument | provenance | MaD:76 | | windows.cpp:1172:27:1172:29 | StringFromGUID2 output argument | windows.cpp:1174:10:1174:13 | * ... | provenance | | nodes -| asio_streams.cpp:87:34:87:44 | read_until output argument | semmle.label | read_until output argument | -| asio_streams.cpp:91:7:91:17 | recv_buffer | semmle.label | recv_buffer | -| asio_streams.cpp:93:29:93:39 | recv_buffer | semmle.label | recv_buffer | -| asio_streams.cpp:97:37:97:44 | call to source | semmle.label | call to source | -| asio_streams.cpp:98:7:98:14 | send_str | semmle.label | send_str | -| asio_streams.cpp:100:44:100:62 | call to buffer | semmle.label | call to buffer | -| asio_streams.cpp:100:44:100:62 | call to buffer | semmle.label | call to buffer | -| asio_streams.cpp:100:64:100:71 | *send_str | semmle.label | *send_str | -| asio_streams.cpp:101:7:101:17 | send_buffer | semmle.label | send_buffer | -| asio_streams.cpp:103:29:103:39 | send_buffer | semmle.label | send_buffer | +| asio_streams.cpp:129:34:129:44 | read_until output argument | semmle.label | read_until output argument | +| asio_streams.cpp:133:7:133:17 | recv_buffer | semmle.label | recv_buffer | +| asio_streams.cpp:135:29:135:39 | recv_buffer | semmle.label | recv_buffer | +| asio_streams.cpp:139:37:139:44 | call to source | semmle.label | call to source | +| asio_streams.cpp:140:7:140:14 | send_str | semmle.label | send_str | +| asio_streams.cpp:142:44:142:62 | call to buffer | semmle.label | call to buffer | +| asio_streams.cpp:142:44:142:62 | call to buffer | semmle.label | call to buffer | +| asio_streams.cpp:142:64:142:71 | *send_str | semmle.label | *send_str | +| asio_streams.cpp:143:7:143:17 | send_buffer | semmle.label | send_buffer | +| asio_streams.cpp:145:29:145:39 | send_buffer | semmle.label | send_buffer | +| asio_streams.cpp:156:19:156:26 | call to source | semmle.label | call to source | +| asio_streams.cpp:158:29:158:36 | call to source | semmle.label | call to source | +| asio_streams.cpp:161:16:161:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:161:24:161:27 | *host | semmle.label | *host | +| asio_streams.cpp:162:16:162:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:162:24:162:27 | *host | semmle.label | *host | +| asio_streams.cpp:163:16:163:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:163:24:163:27 | *host | semmle.label | *host | +| asio_streams.cpp:164:16:164:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:164:24:164:27 | *host | semmle.label | *host | +| asio_streams.cpp:166:16:166:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:166:24:166:32 | host_view | semmle.label | host_view | +| asio_streams.cpp:167:16:167:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:167:24:167:32 | host_view | semmle.label | host_view | +| asio_streams.cpp:168:16:168:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:168:24:168:32 | host_view | semmle.label | host_view | +| asio_streams.cpp:169:16:169:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:169:24:169:32 | host_view | semmle.label | host_view | +| asio_streams.cpp:171:16:171:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:171:34:171:37 | *host | semmle.label | *host | +| asio_streams.cpp:172:16:172:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:172:34:172:37 | *host | semmle.label | *host | +| asio_streams.cpp:173:16:173:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:173:34:173:37 | *host | semmle.label | *host | +| asio_streams.cpp:174:16:174:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:174:34:174:37 | *host | semmle.label | *host | +| asio_streams.cpp:176:16:176:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:176:34:176:42 | host_view | semmle.label | host_view | +| asio_streams.cpp:177:16:177:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:177:34:177:42 | host_view | semmle.label | host_view | +| asio_streams.cpp:178:16:178:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:178:34:178:42 | host_view | semmle.label | host_view | +| asio_streams.cpp:179:16:179:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:179:34:179:42 | host_view | semmle.label | host_view | +| asio_streams.cpp:188:22:188:29 | call to source | semmle.label | call to source | +| asio_streams.cpp:190:32:190:39 | call to source | semmle.label | call to source | +| asio_streams.cpp:192:16:192:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:192:30:192:36 | *service | semmle.label | *service | +| asio_streams.cpp:193:16:193:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:193:30:193:36 | *service | semmle.label | *service | +| asio_streams.cpp:194:16:194:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:194:30:194:36 | *service | semmle.label | *service | +| asio_streams.cpp:195:16:195:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:195:30:195:36 | *service | semmle.label | *service | +| asio_streams.cpp:197:16:197:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:197:35:197:46 | service_view | semmle.label | service_view | +| asio_streams.cpp:198:16:198:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:198:35:198:46 | service_view | semmle.label | service_view | +| asio_streams.cpp:199:16:199:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:199:35:199:46 | service_view | semmle.label | service_view | +| asio_streams.cpp:200:16:200:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:200:35:200:46 | service_view | semmle.label | service_view | +| asio_streams.cpp:202:16:202:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:202:40:202:46 | *service | semmle.label | *service | +| asio_streams.cpp:203:16:203:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:203:40:203:46 | *service | semmle.label | *service | +| asio_streams.cpp:204:16:204:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:204:40:204:46 | *service | semmle.label | *service | +| asio_streams.cpp:205:16:205:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:205:40:205:46 | *service | semmle.label | *service | +| asio_streams.cpp:207:16:207:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:207:45:207:56 | service_view | semmle.label | service_view | +| asio_streams.cpp:208:16:208:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:208:45:208:56 | service_view | semmle.label | service_view | +| asio_streams.cpp:209:16:209:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:209:45:209:56 | service_view | semmle.label | service_view | +| asio_streams.cpp:210:16:210:22 | call to resolve | semmle.label | call to resolve | +| asio_streams.cpp:210:45:210:56 | service_view | semmle.label | service_view | | azure.cpp:253:48:253:60 | *call to GetBodyStream | semmle.label | *call to GetBodyStream | | azure.cpp:253:48:253:60 | call to GetBodyStream | semmle.label | call to GetBodyStream | | azure.cpp:257:5:257:8 | *resp | semmle.label | *resp | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected b/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected index 5851e825013d..f3423b983053 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/sinks.expected @@ -1,5 +1,5 @@ -| asio_streams.cpp:93:29:93:39 | recv_buffer | remote-sink | -| asio_streams.cpp:103:29:103:39 | send_buffer | remote-sink | +| asio_streams.cpp:135:29:135:39 | recv_buffer | remote-sink | +| asio_streams.cpp:145:29:145:39 | send_buffer | remote-sink | | test.cpp:12:10:12:10 | 0 | test-sink | | test.cpp:14:10:14:10 | x | test-sink | | test.cpp:18:10:18:10 | y | test-sink | diff --git a/cpp/ql/test/library-tests/dataflow/external-models/sources.expected b/cpp/ql/test/library-tests/dataflow/external-models/sources.expected index b30f1e88b99a..6f1b889e2bb8 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/sources.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/sources.expected @@ -1,4 +1,4 @@ -| asio_streams.cpp:87:34:87:44 | read_until output argument | remote | +| asio_streams.cpp:129:34:129:44 | read_until output argument | remote | | azure.cpp:253:48:253:60 | call to GetBodyStream | remote | | azure.cpp:273:52:273:61 | call to GetHeaders | remote | | azure.cpp:277:38:277:44 | call to GetBody | remote | 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 42d2c0183c34..04d300ecbc81 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/steps.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/steps.expected @@ -1,4 +1,68 @@ -| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer | +| asio_streams.cpp:142:64:142:71 | *send_str | asio_streams.cpp:142:44:142:62 | call to buffer | +| asio_streams.cpp:161:24:161:27 | *host | asio_streams.cpp:161:16:161:22 | call to resolve | +| asio_streams.cpp:161:30:161:36 | *service | asio_streams.cpp:161:16:161:22 | call to resolve | +| asio_streams.cpp:162:24:162:27 | *host | asio_streams.cpp:162:16:162:22 | call to resolve | +| asio_streams.cpp:162:30:162:36 | *service | asio_streams.cpp:162:16:162:22 | call to resolve | +| asio_streams.cpp:163:24:163:27 | *host | asio_streams.cpp:163:16:163:22 | call to resolve | +| asio_streams.cpp:163:30:163:36 | *service | asio_streams.cpp:163:16:163:22 | call to resolve | +| asio_streams.cpp:164:24:164:27 | *host | asio_streams.cpp:164:16:164:22 | call to resolve | +| asio_streams.cpp:164:30:164:36 | *service | asio_streams.cpp:164:16:164:22 | call to resolve | +| asio_streams.cpp:166:24:166:32 | host_view | asio_streams.cpp:166:16:166:22 | call to resolve | +| asio_streams.cpp:166:35:166:46 | service_view | asio_streams.cpp:166:16:166:22 | call to resolve | +| asio_streams.cpp:167:24:167:32 | host_view | asio_streams.cpp:167:16:167:22 | call to resolve | +| asio_streams.cpp:167:35:167:46 | service_view | asio_streams.cpp:167:16:167:22 | call to resolve | +| asio_streams.cpp:168:24:168:32 | host_view | asio_streams.cpp:168:16:168:22 | call to resolve | +| asio_streams.cpp:168:35:168:46 | service_view | asio_streams.cpp:168:16:168:22 | call to resolve | +| asio_streams.cpp:169:24:169:32 | host_view | asio_streams.cpp:169:16:169:22 | call to resolve | +| asio_streams.cpp:169:35:169:46 | service_view | asio_streams.cpp:169:16:169:22 | call to resolve | +| asio_streams.cpp:171:34:171:37 | *host | asio_streams.cpp:171:16:171:22 | call to resolve | +| asio_streams.cpp:171:40:171:46 | *service | asio_streams.cpp:171:16:171:22 | call to resolve | +| asio_streams.cpp:172:34:172:37 | *host | asio_streams.cpp:172:16:172:22 | call to resolve | +| asio_streams.cpp:172:40:172:46 | *service | asio_streams.cpp:172:16:172:22 | call to resolve | +| asio_streams.cpp:173:34:173:37 | *host | asio_streams.cpp:173:16:173:22 | call to resolve | +| asio_streams.cpp:173:40:173:46 | *service | asio_streams.cpp:173:16:173:22 | call to resolve | +| asio_streams.cpp:174:34:174:37 | *host | asio_streams.cpp:174:16:174:22 | call to resolve | +| asio_streams.cpp:174:40:174:46 | *service | asio_streams.cpp:174:16:174:22 | call to resolve | +| asio_streams.cpp:176:34:176:42 | host_view | asio_streams.cpp:176:16:176:22 | call to resolve | +| asio_streams.cpp:176:45:176:56 | service_view | asio_streams.cpp:176:16:176:22 | call to resolve | +| asio_streams.cpp:177:34:177:42 | host_view | asio_streams.cpp:177:16:177:22 | call to resolve | +| asio_streams.cpp:177:45:177:56 | service_view | asio_streams.cpp:177:16:177:22 | call to resolve | +| asio_streams.cpp:178:34:178:42 | host_view | asio_streams.cpp:178:16:178:22 | call to resolve | +| asio_streams.cpp:178:45:178:56 | service_view | asio_streams.cpp:178:16:178:22 | call to resolve | +| asio_streams.cpp:179:34:179:42 | host_view | asio_streams.cpp:179:16:179:22 | call to resolve | +| asio_streams.cpp:179:45:179:56 | service_view | asio_streams.cpp:179:16:179:22 | call to resolve | +| asio_streams.cpp:192:24:192:27 | *host | asio_streams.cpp:192:16:192:22 | call to resolve | +| asio_streams.cpp:192:30:192:36 | *service | asio_streams.cpp:192:16:192:22 | call to resolve | +| asio_streams.cpp:193:24:193:27 | *host | asio_streams.cpp:193:16:193:22 | call to resolve | +| asio_streams.cpp:193:30:193:36 | *service | asio_streams.cpp:193:16:193:22 | call to resolve | +| asio_streams.cpp:194:24:194:27 | *host | asio_streams.cpp:194:16:194:22 | call to resolve | +| asio_streams.cpp:194:30:194:36 | *service | asio_streams.cpp:194:16:194:22 | call to resolve | +| asio_streams.cpp:195:24:195:27 | *host | asio_streams.cpp:195:16:195:22 | call to resolve | +| asio_streams.cpp:195:30:195:36 | *service | asio_streams.cpp:195:16:195:22 | call to resolve | +| asio_streams.cpp:197:24:197:32 | host_view | asio_streams.cpp:197:16:197:22 | call to resolve | +| asio_streams.cpp:197:35:197:46 | service_view | asio_streams.cpp:197:16:197:22 | call to resolve | +| asio_streams.cpp:198:24:198:32 | host_view | asio_streams.cpp:198:16:198:22 | call to resolve | +| asio_streams.cpp:198:35:198:46 | service_view | asio_streams.cpp:198:16:198:22 | call to resolve | +| asio_streams.cpp:199:24:199:32 | host_view | asio_streams.cpp:199:16:199:22 | call to resolve | +| asio_streams.cpp:199:35:199:46 | service_view | asio_streams.cpp:199:16:199:22 | call to resolve | +| asio_streams.cpp:200:24:200:32 | host_view | asio_streams.cpp:200:16:200:22 | call to resolve | +| asio_streams.cpp:200:35:200:46 | service_view | asio_streams.cpp:200:16:200:22 | call to resolve | +| asio_streams.cpp:202:34:202:37 | *host | asio_streams.cpp:202:16:202:22 | call to resolve | +| asio_streams.cpp:202:40:202:46 | *service | asio_streams.cpp:202:16:202:22 | call to resolve | +| asio_streams.cpp:203:34:203:37 | *host | asio_streams.cpp:203:16:203:22 | call to resolve | +| asio_streams.cpp:203:40:203:46 | *service | asio_streams.cpp:203:16:203:22 | call to resolve | +| asio_streams.cpp:204:34:204:37 | *host | asio_streams.cpp:204:16:204:22 | call to resolve | +| asio_streams.cpp:204:40:204:46 | *service | asio_streams.cpp:204:16:204:22 | call to resolve | +| asio_streams.cpp:205:34:205:37 | *host | asio_streams.cpp:205:16:205:22 | call to resolve | +| asio_streams.cpp:205:40:205:46 | *service | asio_streams.cpp:205:16:205:22 | call to resolve | +| asio_streams.cpp:207:34:207:42 | host_view | asio_streams.cpp:207:16:207:22 | call to resolve | +| asio_streams.cpp:207:45:207:56 | service_view | asio_streams.cpp:207:16:207:22 | call to resolve | +| asio_streams.cpp:208:34:208:42 | host_view | asio_streams.cpp:208:16:208:22 | call to resolve | +| asio_streams.cpp:208:45:208:56 | service_view | asio_streams.cpp:208:16:208:22 | call to resolve | +| asio_streams.cpp:209:34:209:42 | host_view | asio_streams.cpp:209:16:209:22 | call to resolve | +| asio_streams.cpp:209:45:209:56 | service_view | asio_streams.cpp:209:16:209:22 | call to resolve | +| asio_streams.cpp:210:34:210:42 | host_view | asio_streams.cpp:210:16:210:22 | call to resolve | +| asio_streams.cpp:210:45:210:56 | service_view | asio_streams.cpp:210:16:210:22 | call to resolve | | azure.cpp:252:79:252:98 | call to string | azure.cpp:252:62:252:99 | call to Url | | azure.cpp:257:5:257:8 | *resp | azure.cpp:257:16:257:21 | Read output argument | | azure.cpp:262:5:262:8 | *resp | azure.cpp:262:23:262:28 | ReadToCount 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 1fbe5da66459..694427213c86 100644 --- a/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected +++ b/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected @@ -3350,6 +3350,14 @@ | Dubious signature "(const IPAddressRange *,unsigned char **)" in summary model. | | Dubious signature "(const ISSUER_SIGN_TOOL *,unsigned char **)" in summary model. | | Dubious signature "(const ISSUING_DIST_POINT *,unsigned char **)" in summary model. | +| Dubious signature "(const InternetProtocol &,const string &,const string &)" in summary model. | +| Dubious signature "(const InternetProtocol &,const string &,const string &,error_code &)" in summary model. | +| Dubious signature "(const InternetProtocol &,const string &,const string &,flags)" in summary model. | +| Dubious signature "(const InternetProtocol &,const string &,const string &,flags,error_code &)" in summary model. | +| Dubious signature "(const InternetProtocol &,string_view,string_view)" in summary model. | +| Dubious signature "(const InternetProtocol &,string_view,string_view,error_code &)" in summary model. | +| Dubious signature "(const InternetProtocol &,string_view,string_view,flags)" in summary model. | +| Dubious signature "(const InternetProtocol &,string_view,string_view,flags,error_code &)" in summary model. | | Dubious signature "(const MATRIX *,const VECTOR *,VECTOR *)" in summary model. | | Dubious signature "(const MD5_params *)" in summary model. | | Dubious signature "(const ML_DSA_KEY *)" in summary model. | @@ -4153,6 +4161,10 @@ | Dubious signature "(const stack_st_X509_EXTENSION *,int,int)" in summary model. | | Dubious signature "(const stack_st_X509_NAME *)" in summary model. | | Dubious signature "(const stat *)" in summary model. | +| Dubious signature "(const string &,const string &)" in summary model. | +| Dubious signature "(const string &,const string &,error_code &)" in summary model. | +| Dubious signature "(const string &,const string &,flags)" in summary model. | +| Dubious signature "(const string &,const string &,flags,error_code &)" in summary model. | | Dubious signature "(const td_thragent_t *,lwpid_t,td_thrhandle_t *)" in summary model. | | Dubious signature "(const td_thragent_t *,ps_prochandle **)" in summary model. | | Dubious signature "(const td_thragent_t *,pthread_t,td_thrhandle_t *)" in summary model. | @@ -5180,6 +5192,8 @@ | Dubious signature "(string_buf *,uint32_t *)" in summary model. | | Dubious signature "(string_buf *,unsigned char *)" in summary model. | | Dubious signature "(string_buf *,unsigned char **,size_t *)" in summary model. | +| Dubious signature "(string_view,string_view,error_code &)" in summary model. | +| Dubious signature "(string_view,string_view,flags,error_code &)" in summary model. | | Dubious signature "(stringtable *,const char *)" in summary model. | | Dubious signature "(stringtable *,stringtable_finalized *)" in summary model. | | Dubious signature "(support_descriptors *,const char *,FILE *)" in summary model. | diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected index 2da7e83cca37..65a5391a3ed0 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected @@ -15040,6 +15040,38 @@ getSignatureParameterName | (const ISSUER_SIGN_TOOL *,unsigned char **) | | i2d_ISSUER_SIGN_TOOL | 1 | unsigned char ** | | (const ISSUING_DIST_POINT *,unsigned char **) | | i2d_ISSUING_DIST_POINT | 0 | const ISSUING_DIST_POINT * | | (const ISSUING_DIST_POINT *,unsigned char **) | | i2d_ISSUING_DIST_POINT | 1 | unsigned char ** | +| (const InternetProtocol &,const string &,const string &) | basic_resolver | resolve | 0 | const class:0 & | +| (const InternetProtocol &,const string &,const string &) | basic_resolver | resolve | 1 | const string & | +| (const InternetProtocol &,const string &,const string &) | basic_resolver | resolve | 2 | const string & | +| (const InternetProtocol &,const string &,const string &,error_code &) | basic_resolver | resolve | 0 | const class:0 & | +| (const InternetProtocol &,const string &,const string &,error_code &) | basic_resolver | resolve | 1 | const string & | +| (const InternetProtocol &,const string &,const string &,error_code &) | basic_resolver | resolve | 2 | const string & | +| (const InternetProtocol &,const string &,const string &,error_code &) | basic_resolver | resolve | 3 | error_code & | +| (const InternetProtocol &,const string &,const string &,flags) | basic_resolver | resolve | 0 | const class:0 & | +| (const InternetProtocol &,const string &,const string &,flags) | basic_resolver | resolve | 1 | const string & | +| (const InternetProtocol &,const string &,const string &,flags) | basic_resolver | resolve | 2 | const string & | +| (const InternetProtocol &,const string &,const string &,flags) | basic_resolver | resolve | 3 | flags | +| (const InternetProtocol &,const string &,const string &,flags,error_code &) | basic_resolver | resolve | 0 | const class:0 & | +| (const InternetProtocol &,const string &,const string &,flags,error_code &) | basic_resolver | resolve | 1 | const string & | +| (const InternetProtocol &,const string &,const string &,flags,error_code &) | basic_resolver | resolve | 2 | const string & | +| (const InternetProtocol &,const string &,const string &,flags,error_code &) | basic_resolver | resolve | 3 | flags | +| (const InternetProtocol &,const string &,const string &,flags,error_code &) | basic_resolver | resolve | 4 | error_code & | +| (const InternetProtocol &,string_view,string_view) | basic_resolver | resolve | 0 | const class:0 & | +| (const InternetProtocol &,string_view,string_view) | basic_resolver | resolve | 1 | string_view | +| (const InternetProtocol &,string_view,string_view) | basic_resolver | resolve | 2 | string_view | +| (const InternetProtocol &,string_view,string_view,error_code &) | basic_resolver | resolve | 0 | const class:0 & | +| (const InternetProtocol &,string_view,string_view,error_code &) | basic_resolver | resolve | 1 | string_view | +| (const InternetProtocol &,string_view,string_view,error_code &) | basic_resolver | resolve | 2 | string_view | +| (const InternetProtocol &,string_view,string_view,error_code &) | basic_resolver | resolve | 3 | error_code & | +| (const InternetProtocol &,string_view,string_view,flags) | basic_resolver | resolve | 0 | const class:0 & | +| (const InternetProtocol &,string_view,string_view,flags) | basic_resolver | resolve | 1 | string_view | +| (const InternetProtocol &,string_view,string_view,flags) | basic_resolver | resolve | 2 | string_view | +| (const InternetProtocol &,string_view,string_view,flags) | basic_resolver | resolve | 3 | flags | +| (const InternetProtocol &,string_view,string_view,flags,error_code &) | basic_resolver | resolve | 0 | const class:0 & | +| (const InternetProtocol &,string_view,string_view,flags,error_code &) | basic_resolver | resolve | 1 | string_view | +| (const InternetProtocol &,string_view,string_view,flags,error_code &) | basic_resolver | resolve | 2 | string_view | +| (const InternetProtocol &,string_view,string_view,flags,error_code &) | basic_resolver | resolve | 3 | flags | +| (const InternetProtocol &,string_view,string_view,flags,error_code &) | basic_resolver | resolve | 4 | error_code & | | (const MATRIX *,const VECTOR *,VECTOR *) | | ossl_ml_dsa_matrix_mult_vector | 0 | const MATRIX * | | (const MATRIX *,const VECTOR *,VECTOR *) | | ossl_ml_dsa_matrix_mult_vector | 1 | const VECTOR * | | (const MATRIX *,const VECTOR *,VECTOR *) | | ossl_ml_dsa_matrix_mult_vector | 2 | VECTOR * | @@ -18552,6 +18584,18 @@ getSignatureParameterName | (const stat *) | | get_stat_ctime_ns | 0 | const stat * | | (const stat *) | | get_stat_mtime | 0 | const stat * | | (const stat *) | | get_stat_mtime_ns | 0 | const stat * | +| (const string &,const string &) | basic_resolver | resolve | 0 | const string & | +| (const string &,const string &) | basic_resolver | resolve | 1 | const string & | +| (const string &,const string &,error_code &) | basic_resolver | resolve | 0 | const string & | +| (const string &,const string &,error_code &) | basic_resolver | resolve | 1 | const string & | +| (const string &,const string &,error_code &) | basic_resolver | resolve | 2 | error_code & | +| (const string &,const string &,flags) | basic_resolver | resolve | 0 | const string & | +| (const string &,const string &,flags) | basic_resolver | resolve | 1 | const string & | +| (const string &,const string &,flags) | basic_resolver | resolve | 2 | flags | +| (const string &,const string &,flags,error_code &) | basic_resolver | resolve | 0 | const string & | +| (const string &,const string &,flags,error_code &) | basic_resolver | resolve | 1 | const string & | +| (const string &,const string &,flags,error_code &) | basic_resolver | resolve | 2 | flags | +| (const string &,const string &,flags,error_code &) | basic_resolver | resolve | 3 | error_code & | | (const td_thragent_t *,lwpid_t,td_thrhandle_t *) | | __td_ta_lookup_th_unique | 0 | const td_thragent_t * | | (const td_thragent_t *,lwpid_t,td_thrhandle_t *) | | __td_ta_lookup_th_unique | 1 | lwpid_t | | (const td_thragent_t *,lwpid_t,td_thrhandle_t *) | | __td_ta_lookup_th_unique | 2 | td_thrhandle_t * | @@ -24702,6 +24746,18 @@ getSignatureParameterName | (string_buf *,unsigned char **,size_t *) | | _libssh2_get_string | 0 | string_buf * | | (string_buf *,unsigned char **,size_t *) | | _libssh2_get_string | 1 | unsigned char ** | | (string_buf *,unsigned char **,size_t *) | | _libssh2_get_string | 2 | size_t * | +| (string_view,string_view) | basic_resolver | resolve | 0 | string_view | +| (string_view,string_view) | basic_resolver | resolve | 1 | string_view | +| (string_view,string_view,error_code &) | basic_resolver | resolve | 0 | string_view | +| (string_view,string_view,error_code &) | basic_resolver | resolve | 1 | string_view | +| (string_view,string_view,error_code &) | basic_resolver | resolve | 2 | error_code & | +| (string_view,string_view,flags) | basic_resolver | resolve | 0 | string_view | +| (string_view,string_view,flags) | basic_resolver | resolve | 1 | string_view | +| (string_view,string_view,flags) | basic_resolver | resolve | 2 | flags | +| (string_view,string_view,flags,error_code &) | basic_resolver | resolve | 0 | string_view | +| (string_view,string_view,flags,error_code &) | basic_resolver | resolve | 1 | string_view | +| (string_view,string_view,flags,error_code &) | basic_resolver | resolve | 2 | flags | +| (string_view,string_view,flags,error_code &) | basic_resolver | resolve | 3 | error_code & | | (stringtable *,const char *) | | stringtable_add | 0 | stringtable * | | (stringtable *,const char *) | | stringtable_add | 1 | const char * | | (stringtable *,stringtable_finalized *) | | stringtable_finalize | 0 | stringtable * |