Message ID | 1569828039-19297-1-git-send-email-damjan.skvarc@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series | [ovs-dev,1/1] ovsdb-client: fix memory leak to prevent valgrind reporting memory leaks while running test suite | expand |
On Mon, Sep 30, 2019 at 09:20:39AM +0200, Damijan Skvarc wrote: > memory leaks are reported in several tests and are expressed in a following way: Thank you for the patch. This patch introduces a use-after-free error: > } else if (txn_id && json_equal(txn_id, reply->id)) { > + jsonrpc_msg_destroy(reply); > check_transaction_reply(reply); Thanks, Ben.
Ups, shame on me. Thanks for review, I will send another patch Damijan On Mon, Sep 30, 2019 at 10:47 PM Ben Pfaff <blp@ovn.org> wrote: > On Mon, Sep 30, 2019 at 09:20:39AM +0200, Damijan Skvarc wrote: > > memory leaks are reported in several tests and are expressed in a > following way: > > Thank you for the patch. > > This patch introduces a use-after-free error: > > > } else if (txn_id && json_equal(txn_id, reply->id)) { > > + jsonrpc_msg_destroy(reply); > > check_transaction_reply(reply); > > Thanks, > > Ben. >
diff --git a/ovsdb/ovsdb-client.c b/ovsdb/ovsdb-client.c index bfc90e6..bc12d42 100644 --- a/ovsdb/ovsdb-client.c +++ b/ovsdb/ovsdb-client.c @@ -2464,11 +2464,13 @@ do_wait(struct jsonrpc *rpc_unused OVS_UNUSED, if (reply && reply->id) { if (sdca_id && json_equal(sdca_id, reply->id)) { if (reply->type == JSONRPC_ERROR) { + jsonrpc_msg_destroy(reply); ovs_fatal(0, "%s: set_db_change_aware failed (%s)", jsonrpc_session_get_name(js), json_to_string(reply->error, 0)); } } else if (txn_id && json_equal(txn_id, reply->id)) { + jsonrpc_msg_destroy(reply); check_transaction_reply(reply); exit(0); }
memory leaks are reported in several tests and are expressed in a following way: ==29840== 208 (48 direct, 160 indirect) bytes in 1 blocks are definitely lost in loss record 43 of 44 ==29840== at 0x4C2FB55: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==29840== by 0x449D12: xcalloc (util.c:121) ==29840== by 0x432949: jsonrpc_msg_from_json (jsonrpc.c:697) ==29840== by 0x432A8F: jsonrpc_parse_received_message (jsonrpc.c:472) ==29840== by 0x432A8F: jsonrpc_recv.part.7 (jsonrpc.c:338) ==29840== by 0x4338F7: jsonrpc_recv (jsonrpc.c:1139) ==29840== by 0x4338F7: jsonrpc_session_recv (jsonrpc.c:1112) ==29840== by 0x40719B: do_wait (ovsdb-client.c:2463) ==29840== by 0x405F76: main (ovsdb-client.c:282) Signed-off-by: Damijan Skvarc <damjan.skvarc@gmail.com> --- ovsdb/ovsdb-client.c | 2 ++ 1 file changed, 2 insertions(+)