Permalink
Browse files

inspector: fix Coverity defects

One defect remains - Coverity believes that a session object is never
freed while in reality its lifespan is tied to a libuv socket.

PR-URL: #10240
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
  • Loading branch information...
1 parent 0239561 commit 4bed9475d1b92d78c631f81bbe9f4ec3fd1c0407 @eugeneo eugeneo committed with evanlucas Dec 12, 2016
@@ -210,6 +210,7 @@ InspectorSocketServer::InspectorSocketServer(SocketServerDelegate* delegate,
int port) : loop_(nullptr),
delegate_(delegate),
port_(port),
+ server_(uv_tcp_t()),
closer_(nullptr),
next_session_id_(0) { }
@@ -400,6 +401,7 @@ void InspectorSocketServer::SocketConnectedCallback(uv_stream_t* server,
int status) {
if (status == 0) {
InspectorSocketServer* socket_server = InspectorSocketServer::From(server);
+ // Memory is freed when the socket closes.
SocketSession* session =
new SocketSession(socket_server, socket_server->next_session_id_++);
if (inspector_accept(server, session->Socket(), HandshakeCallback) != 0) {
@@ -370,13 +370,13 @@ class InspectorSocketTest : public ::testing::Test {
uv_tcp_init(&loop, &client_socket);
uv_ip4_addr("127.0.0.1", PORT, &addr);
uv_tcp_bind(&server, reinterpret_cast<const struct sockaddr*>(&addr), 0);
- int err = uv_listen(reinterpret_cast<uv_stream_t*>(&server),
- 1, on_new_connection);
- GTEST_ASSERT_EQ(0, err);
+ GTEST_ASSERT_EQ(0, uv_listen(reinterpret_cast<uv_stream_t*>(&server),
+ 1, on_new_connection));
uv_connect_t connect;
connect.data = nullptr;
- uv_tcp_connect(&connect, &client_socket,
- reinterpret_cast<const sockaddr*>(&addr), on_connection);
+ GTEST_ASSERT_EQ(0, uv_tcp_connect(&connect, &client_socket,
+ reinterpret_cast<const sockaddr*>(&addr),
+ on_connection));
uv_tcp_nodelay(&client_socket, 1); // The buffering messes up the test
SPIN_WHILE(!connect.data || !connected);
really_close(reinterpret_cast<uv_handle_t*>(&server));
@@ -86,7 +86,8 @@ class TestInspectorServerDelegate : public SocketServerDelegate {
public:
TestInspectorServerDelegate() : connected(0), disconnected(0),
targets_({ MAIN_TARGET_ID,
- UNCONNECTABLE_TARGET_ID }) {}
+ UNCONNECTABLE_TARGET_ID }),
+ session_id_(0) {}
void Connect(InspectorSocketServer* server) {
server_ = server;
@@ -152,6 +153,7 @@ class SocketWrapper {
explicit SocketWrapper(uv_loop_t* loop) : closed_(false),
eof_(false),
loop_(loop),
+ socket_(uv_tcp_t()),
connected_(false),
sending_(false) { }

0 comments on commit 4bed947

Please sign in to comment.