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