C++: Add Boost::Asio models.

This commit is contained in:
Geoffrey White
2024-06-03 18:37:35 +01:00
parent 7e5b7346c0
commit f479649727
7 changed files with 39 additions and 6 deletions

View File

@@ -0,0 +1,26 @@
extensions:
# partial model of the Boost::Asio network library
extensions:
- addsTo:
pack: codeql/cpp-all
extensible: sourceModel
data: # namespace, type, subtypes, name, signature, ext, output, kind, provenance
- ["boost::asio", "", False, "read", "", "", "Argument[1*]", "remote", "manual"]
- ["boost::asio", "", False, "read_at", "", "", "Argument[*2]", "remote", "manual"]
- ["boost::asio", "", False, "read_until", "", "", "Argument[*1]", "remote", "manual"]
- ["boost::asio", "", False, "async_read", "", "", "Argument[1*]", "remote", "manual"]
- ["boost::asio", "", False, "async_read_at", "", "", "Argument[*2]", "remote", "manual"]
- ["boost::asio", "", False, "async_read_until", "", "", "Argument[*1]", "remote", "manual"]
- addsTo:
pack: codeql/cpp-all
extensible: sinkModel
data: # namespace, type, subtypes, name, signature, ext, input, kind, provenance
- ["boost::asio", "", False, "write", "", "", "Argument[*1]", "remote-sink", "manual"]
- ["boost::asio", "", False, "write_at", "", "", "Argument[*2]", "remote-sink", "manual"]
- ["boost::asio", "", False, "async_write", "", "", "Argument[*1]", "remote-sink", "manual"]
- ["boost::asio", "", False, "async_write_at", "", "", "Argument[*2]", "remote-sink", "manual"]
- addsTo:
pack: codeql/cpp-all
extensible: summaryModel
data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance
- ["boost::asio", "", False, "buffer", "", "", "Argument[*0]", "ReturnValue", "taint", "manual"]

View File

@@ -88,9 +88,9 @@ void test(boost::asio::ip::tcp::socket &socket) {
if (error) {
// ...
}
sink(recv_buffer); // $ MISSING: ir
sink(recv_buffer); // $ ir
boost::asio::write(socket, recv_buffer, error); // $ MISSING: ir
boost::asio::write(socket, recv_buffer, error); // $ ir
// ---
@@ -98,9 +98,9 @@ void test(boost::asio::ip::tcp::socket &socket) {
sink(send_str); // $ ir
boost::asio::mutable_buffer send_buffer = boost::asio::buffer(send_str);
sink(send_buffer); // $ MISSING: ir
sink(send_buffer); // $ ir
boost::asio::write(socket, send_buffer, error); // $ MISSING: ir
boost::asio::write(socket, send_buffer, error); // $ ir
if (error) {
// ...
}

View File

@@ -1,3 +1,5 @@
| asio_streams.cpp:93:29:93:39 | *recv_buffer | remote-sink |
| asio_streams.cpp:103:29:103:39 | *send_buffer | remote-sink |
| test.cpp:9:10:9:10 | 0 | test-sink |
| test.cpp:11:10:11:10 | x | test-sink |
| test.cpp:15:10:15:10 | y | test-sink |

View File

@@ -1 +1,2 @@
| asio_streams.cpp:87:34:87:44 | read_until output argument | remote |
| test.cpp:7:10:7:18 | call to ymlSource | local |

View File

@@ -1 +1,2 @@
| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer |
| test.cpp:13:18:13:18 | x | test.cpp:13:10:13:16 | call to ymlStep |

View File

@@ -1,6 +1,9 @@
| Dubious namespace "" in sink model. |
| Dubious namespace "" in source model. |
| Dubious namespace "" in summary model. |
| Dubious namespace "boost::asio" in sink model. |
| Dubious namespace "boost::asio" in source model. |
| Dubious namespace "boost::asio" in summary model. |
| Dubious type "" in sink model. |
| Dubious type "" in source model. |
| Dubious type "" in summary model. |

View File

@@ -75,14 +75,14 @@ void test(boost::asio::ip::tcp::socket &socket) {
boost::asio::streambuf recv_buffer;
boost::system::error_code error;
boost::asio::read_until(socket, recv_buffer, '\0', error); // $ MISSING: remote_source
boost::asio::read_until(socket, recv_buffer, '\0', error); // $ remote_source
if (error) {
// ...
}
std::string send_str = std::string("message");
boost::asio::mutable_buffer send_buffer = boost::asio::buffer(send_str);
boost::asio::write(socket, send_buffer, error); // $ MISSING: remote_sink
boost::asio::write(socket, send_buffer, error); // $ remote_sink
if (error) {
// ...
}