2015-05-15 14:27:44

by Andrei Emeltchenko

[permalink] [raw]
Subject: [RFC] adapter: Fix memory leak

From: Andrei Emeltchenko <[email protected]>

In case of error with dbus stuff free allocated memory and set filter
to NULL.
---
src/adapter.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/adapter.c b/src/adapter.c
index 8ee5b5b..7035a69 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -2219,8 +2219,11 @@ static bool parse_discovery_filter_dict(struct discovery_filter **filter,

dbus_message_iter_init(msg, &iter);
if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY ||
- dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_DICT_ENTRY)
+ dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_DICT_ENTRY) {
+ g_free(*filter);
+ *filter = NULL;
return false;
+ }

dbus_message_iter_recurse(&iter, &subiter);
do {
--
2.1.4



2015-05-18 07:45:32

by Johan Hedberg

[permalink] [raw]
Subject: Re: [PATHv2] adapter: Fix memory leak

Hi Andrei,

On Mon, May 18, 2015, Andrei Emeltchenko wrote:
> In case of error with dbus stuff free allocated memory and set filter
> to NULL.
> ---
> src/adapter.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)

Applied, thanks.

Johan

2015-05-18 07:13:12

by Andrei Emeltchenko

[permalink] [raw]
Subject: [PATHv2] adapter: Fix memory leak

From: Andrei Emeltchenko <[email protected]>

In case of error with dbus stuff free allocated memory and set filter
to NULL.
---
src/adapter.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/adapter.c b/src/adapter.c
index 8ee5b5b..95b5349 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -2220,7 +2220,7 @@ static bool parse_discovery_filter_dict(struct discovery_filter **filter,
dbus_message_iter_init(msg, &iter);
if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY ||
dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_DICT_ENTRY)
- return false;
+ goto invalid_args;

dbus_message_iter_recurse(&iter, &subiter);
do {
--
2.1.4


2015-05-17 07:31:24

by Johan Hedberg

[permalink] [raw]
Subject: Re: [RFC] adapter: Fix memory leak

Hi Andrei,

On Fri, May 15, 2015, Andrei Emeltchenko wrote:
> In case of error with dbus stuff free allocated memory and set filter
> to NULL.
> ---
> src/adapter.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/adapter.c b/src/adapter.c
> index 8ee5b5b..7035a69 100644
> --- a/src/adapter.c
> +++ b/src/adapter.c
> @@ -2219,8 +2219,11 @@ static bool parse_discovery_filter_dict(struct discovery_filter **filter,
>
> dbus_message_iter_init(msg, &iter);
> if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY ||
> - dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_DICT_ENTRY)
> + dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_DICT_ENTRY) {
> + g_free(*filter);
> + *filter = NULL;
> return false;
> + }

Good catch, but I think 'goto invalid_args;' would be a cleaner thing to
do. The extra g_slise_free_full call is fine since NULL is the same as
an empty list.

Johan