Skip to content

Commit 4bed947

Browse files
Eugene Ostroukhovevanlucas
Eugene Ostroukhov
authored andcommitted
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 <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Ali Ijaz Sheikh <[email protected]>
1 parent 0239561 commit 4bed947

File tree

3 files changed

+10
-6
lines changed

3 files changed

+10
-6
lines changed

src/inspector_socket_server.cc

+2
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ InspectorSocketServer::InspectorSocketServer(SocketServerDelegate* delegate,
210210
int port) : loop_(nullptr),
211211
delegate_(delegate),
212212
port_(port),
213+
server_(uv_tcp_t()),
213214
closer_(nullptr),
214215
next_session_id_(0) { }
215216

@@ -400,6 +401,7 @@ void InspectorSocketServer::SocketConnectedCallback(uv_stream_t* server,
400401
int status) {
401402
if (status == 0) {
402403
InspectorSocketServer* socket_server = InspectorSocketServer::From(server);
404+
// Memory is freed when the socket closes.
403405
SocketSession* session =
404406
new SocketSession(socket_server, socket_server->next_session_id_++);
405407
if (inspector_accept(server, session->Socket(), HandshakeCallback) != 0) {

test/cctest/test_inspector_socket.cc

+5-5
Original file line numberDiff line numberDiff line change
@@ -370,13 +370,13 @@ class InspectorSocketTest : public ::testing::Test {
370370
uv_tcp_init(&loop, &client_socket);
371371
uv_ip4_addr("127.0.0.1", PORT, &addr);
372372
uv_tcp_bind(&server, reinterpret_cast<const struct sockaddr*>(&addr), 0);
373-
int err = uv_listen(reinterpret_cast<uv_stream_t*>(&server),
374-
1, on_new_connection);
375-
GTEST_ASSERT_EQ(0, err);
373+
GTEST_ASSERT_EQ(0, uv_listen(reinterpret_cast<uv_stream_t*>(&server),
374+
1, on_new_connection));
376375
uv_connect_t connect;
377376
connect.data = nullptr;
378-
uv_tcp_connect(&connect, &client_socket,
379-
reinterpret_cast<const sockaddr*>(&addr), on_connection);
377+
GTEST_ASSERT_EQ(0, uv_tcp_connect(&connect, &client_socket,
378+
reinterpret_cast<const sockaddr*>(&addr),
379+
on_connection));
380380
uv_tcp_nodelay(&client_socket, 1); // The buffering messes up the test
381381
SPIN_WHILE(!connect.data || !connected);
382382
really_close(reinterpret_cast<uv_handle_t*>(&server));

test/cctest/test_inspector_socket_server.cc

+3-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,8 @@ class TestInspectorServerDelegate : public SocketServerDelegate {
8686
public:
8787
TestInspectorServerDelegate() : connected(0), disconnected(0),
8888
targets_({ MAIN_TARGET_ID,
89-
UNCONNECTABLE_TARGET_ID }) {}
89+
UNCONNECTABLE_TARGET_ID }),
90+
session_id_(0) {}
9091

9192
void Connect(InspectorSocketServer* server) {
9293
server_ = server;
@@ -152,6 +153,7 @@ class SocketWrapper {
152153
explicit SocketWrapper(uv_loop_t* loop) : closed_(false),
153154
eof_(false),
154155
loop_(loop),
156+
socket_(uv_tcp_t()),
155157
connected_(false),
156158
sending_(false) { }
157159

0 commit comments

Comments
 (0)