From 3a2180d81a214345cfef6576c26216ce73bc66ee Mon Sep 17 00:00:00 2001 From: Suresh Kumar N Date: Mon, 28 Nov 2016 17:03:49 +0530 Subject: [PATCH] Fix memory leak in storage API Change-Id: I8cf39a3c0879297f778908442ee2b7383d2ce649 Signed-off-by: Suresh Kumar N --- packaging/tel-plugin-database.spec | 2 +- src/database_main.c | 24 +++++++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/packaging/tel-plugin-database.spec b/packaging/tel-plugin-database.spec index 5ae2357..395d212 100644 --- a/packaging/tel-plugin-database.spec +++ b/packaging/tel-plugin-database.spec @@ -1,6 +1,6 @@ %define major 0 %define minor 1 -%define patchlevel 29 +%define patchlevel 30 Name: tel-plugin-database Version: %{major}.%{minor}.%{patchlevel} diff --git a/src/database_main.c b/src/database_main.c index fe328b1..24ce10f 100644 --- a/src/database_main.c +++ b/src/database_main.c @@ -187,16 +187,34 @@ static gboolean _read_query_database_internal(Storage *strg, void *handle, const } static gboolean read_query_database(Storage *strg, void *handle, const char *query, GHashTable *in_param, - GHashTable *out_param, int out_param_cnt) + GHashTable **out_param, int out_param_cnt) { - _read_query_database_internal(strg, handle, query, in_param, out_param, out_param_cnt, FALSE); + GHashTable *out_hash_table; + + if (out_param == NULL) + return FALSE; + + out_hash_table = g_hash_table_new_full(g_str_hash, g_str_equal, + g_free, (GDestroyNotify)g_hash_table_destroy); + + if (_read_query_database_internal(strg, + handle, query, in_param, out_hash_table, out_param_cnt, FALSE) == FALSE) { + g_hash_table_destroy(out_hash_table); + return FALSE; + } + + *out_param = out_hash_table; + return TRUE; } static gboolean read_query_database_in_order(Storage *strg, void *handle, const char *query, GHashTable *in_param, GSList **out_param, int out_param_cnt) { - _read_query_database_internal(strg, handle, query, in_param, out_param, out_param_cnt, TRUE); + if (_read_query_database_internal(strg, + handle, query, in_param, out_param, out_param_cnt, TRUE) == FALSE) + return FALSE; + return TRUE; } -- 2.7.4