[pulseaudio-discuss] [PATCH] Fix memory leaks
Arun Raghavan
arun at arunraghavan.net
Thu Mar 15 03:54:23 UTC 2018
On Wed, 14 Mar 2018, at 11:58 AM, Jungsup Lee wrote:
> The returned string of the dbus_message_iter_get_signature() must be
> freed with dbus_free().
> ---
> src/modules/module-stream-restore.c | 8 +++++++-
> src/pulsecore/dbus-util.c | 8 +++++++-
> 2 files changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/src/modules/module-stream-restore.c b/src/modules/module-
> stream-restore.c
> index 7ee53340..162d5fef 100644
> --- a/src/modules/module-stream-restore.c
> +++ b/src/modules/module-stream-restore.c
> @@ -346,14 +346,20 @@ static void dbus_entry_free(struct dbus_entry *de)
> {
> static int get_volume_arg(DBusConnection *conn, DBusMessage *msg,
> DBusMessageIter *iter, pa_channel_map *map, pa_cvolume *vol) {
> DBusMessageIter array_iter;
> DBusMessageIter struct_iter;
> + char *signature;
>
> pa_assert(conn);
> pa_assert(msg);
> pa_assert(iter);
> - pa_assert(pa_streq(dbus_message_iter_get_signature(iter), "a(uu)"));
> pa_assert(map);
> pa_assert(vol);
>
> + signature = dbus_message_iter_get_signature(iter);
> + pa_assert(pa_streq(signature, "a(uu)"));
> +
> + if (signature)
> + dbus_free(signature);
> +
> pa_channel_map_init(map);
> pa_cvolume_init(vol);
>
> diff --git a/src/pulsecore/dbus-util.c b/src/pulsecore/dbus-util.c
> index 80e2866e..8053dacf 100644
> --- a/src/pulsecore/dbus-util.c
> +++ b/src/pulsecore/dbus-util.c
> @@ -735,6 +735,7 @@ void
> pa_dbus_append_proplist_variant_dict_entry(DBusMessageIter *dict_iter,
> cons
> pa_proplist *pa_dbus_get_proplist_arg(DBusConnection *c, DBusMessage
> *msg, DBusMessageIter *iter) {
> DBusMessageIter dict_iter;
> DBusMessageIter dict_entry_iter;
> + char *signature;
> pa_proplist *proplist = NULL;
> const char *key = NULL;
> const uint8_t *value = NULL;
> @@ -743,7 +744,12 @@ pa_proplist
> *pa_dbus_get_proplist_arg(DBusConnection *c, DBusMessage *msg, DBusM
> pa_assert(c);
> pa_assert(msg);
> pa_assert(iter);
> - pa_assert(pa_streq(dbus_message_iter_get_signature(iter),
> "a{say}"));
> +
> + signature = dbus_message_iter_get_signature(iter);
> + pa_assert(pa_streq(signature, "a{say}"));
> +
> + if (signature)
> + dbus_free(signature);
>
> proplist = pa_proplist_new();
>
> --
Looks good. Would you also like to fix up src/pulsecore/protocol-dbus.c (seems like there may be more leaks there)?
Thanks,
Arun
More information about the pulseaudio-discuss
mailing list