[ovs-dev] [PATCH 1/4] ovsdb-client: fix memory leak reported by valgrind
William Tu
u9012063 at gmail.com
Thu Dec 24 18:28:39 UTC 2015
Free memory allocated from table_add_column and table_add_row. Call
stack is below:
xrealloc (util.c:123)
table_add_column (table.c:146) or table_add_row (table.c:172)
do_list_tables (ovsdb-client.c:449)
main (ovsdb-client.c:151)
Signed-off-by: William Tu <u9012063 at gmail.com>
Signed-off-by: Daniele Di Proietto <diproiettod at vmware.com>
Co-authored-by: Daniele Di Proietto <diproiettod at vmware.com>
---
ovsdb/ovsdb-client.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/ovsdb/ovsdb-client.c b/ovsdb/ovsdb-client.c
index 83cc81d..cca1266 100644
--- a/ovsdb/ovsdb-client.c
+++ b/ovsdb/ovsdb-client.c
@@ -84,7 +84,7 @@ int
main(int argc, char *argv[])
{
const struct ovsdb_client_command *command;
- const char *database;
+ char *database;
struct jsonrpc *rpc;
ovs_cmdl_proctitle_init(argc, argv);
@@ -128,12 +128,14 @@ main(int argc, char *argv[])
fetch_dbs(rpc, &dbs);
if (argc - optind > command->min_args
&& svec_contains(&dbs, argv[optind])) {
- database = argv[optind++];
+ database = xstrdup(argv[optind++]);
} else if (dbs.n == 1) {
database = xstrdup(dbs.names[0]);
} else if (svec_contains(&dbs, "Open_vSwitch")) {
- database = "Open_vSwitch";
+ database = xstrdup("Open_vSwitch");
} else {
+ free(database);
+ jsonrpc_close(rpc);
ovs_fatal(0, "no default database for `%s' command, please "
"specify a database name", command->name);
}
@@ -150,6 +152,7 @@ main(int argc, char *argv[])
command->handler(rpc, database, argc - optind, argv + optind);
+ free(database);
jsonrpc_close(rpc);
if (ferror(stdout)) {
@@ -455,6 +458,7 @@ do_list_tables(struct jsonrpc *rpc, const char *database,
}
ovsdb_schema_destroy(schema);
table_print(&t, &table_style);
+ table_destroy(&t);
}
static void
@@ -493,6 +497,7 @@ do_list_columns(struct jsonrpc *rpc, const char *database,
}
ovsdb_schema_destroy(schema);
table_print(&t, &table_style);
+ table_destroy(&t);
}
static void
--
2.5.0
More information about the dev
mailing list