From: William Tu Date: Thu, 7 Jan 2016 23:53:08 +0000 (-0800) Subject: ovsdb-client: Fix memory leak reported by valgrind. X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Fovs.git;a=commitdiff_plain;h=12f554b0dba36006d5b2c3909cd535f313f21a8e ovsdb-client: Fix memory leak reported by valgrind. test case 1427: ovsdb-server combines updates on backlogged connections. ovsdb_column_set_add (column.c:233) add_column (ovsdb-client.c:730) parse_monitor_columns (ovsdb-client.c:787) add_monitored_table (ovsdb-client.c:872) do_monitor__ (ovsdb-client.c:945) Reported-by: William Tu Reported-at: http://openvswitch.org/pipermail/dev/2016-January/064161.html Signed-off-by: Andy Zhou Signed-off-by: Ben Pfaff --- diff --git a/ovsdb/ovsdb-client.c b/ovsdb/ovsdb-client.c index 9a6f3e92c..7a33ef879 100644 --- a/ovsdb/ovsdb-client.c +++ b/ovsdb/ovsdb-client.c @@ -878,6 +878,19 @@ add_monitored_table(int argc, char *argv[], json_object_put(monitor_requests, table->name, monitor_request_array); } +static void +destroy_monitored_table(struct monitored_table *mts, size_t n) +{ + int i; + + for (i = 0; i < n; i++) { + struct monitored_table *mt = &mts[i]; + ovsdb_column_set_destroy(&mt->columns); + } + + free(mts); +} + static void do_monitor__(struct jsonrpc *rpc, const char *database, enum ovsdb_monitor_version version, @@ -1025,6 +1038,7 @@ do_monitor__(struct jsonrpc *rpc, const char *database, poll_block(); } ovsdb_schema_destroy(schema); + destroy_monitored_table(mts, n_mts); } static void