<div dir="auto"><div class="gmail_extra" dir="auto"><div class="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span style="font-family:sans-serif">> The returned string of the dbus_message_iter_get_</span><wbr style="font-family:sans-serif"><span style="font-family:sans-serif">signature() must be</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> freed with dbus_free().</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> ---</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>  src/modules/module-stream-</span><wbr style="font-family:sans-serif"><span style="font-family:sans-serif">restore.c | 8 +++++++-</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>  src/pulsecore/dbus-util.c           | 8 +++++++-</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>  2 files changed, 14 insertions(+), 2 deletions(-)</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">></span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> diff --git a/src/modules/module-stream-</span><wbr style="font-family:sans-serif"><span style="font-family:sans-serif">restore.c b/src/modules/module-</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> stream-restore.c</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> index 7ee53340..162d5fef 100644</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> --- a/src/modules/module-stream-</span><wbr style="font-family:sans-serif"><span style="font-family:sans-serif">restore.c</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> +++ b/src/modules/module-stream-</span><wbr style="font-family:sans-serif"><span style="font-family:sans-serif">restore.c</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> @@ -346,14 +346,20 @@ static void dbus_entry_free(struct dbus_entry *de)</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> {</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>  static int get_volume_arg(DBusConnection *conn, DBusMessage *msg,</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> DBusMessageIter *iter, pa_channel_map *map, pa_cvolume *vol) {</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>      DBusMessageIter array_iter;</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>      DBusMessageIter struct_iter;</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> +    char *signature;</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">></span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>      pa_assert(conn);</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>      pa_assert(msg);</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>      pa_assert(iter);</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> -    pa_assert(pa_streq(dbus_</span><wbr style="font-family:sans-serif"><span style="font-family:sans-serif">message_iter_get_signature(</span><wbr style="font-family:sans-serif"><span style="font-family:sans-serif">iter), "a(uu)"));</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>      pa_assert(map);</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>      pa_assert(vol);</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">></span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> +    signature = dbus_message_iter_get_</span><wbr style="font-family:sans-serif"><span style="font-family:sans-serif">signature(iter);</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> +    pa_assert(pa_streq(signature, "a(uu)"));</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> +</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> +    if (signature)</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> +        dbus_free(signature);</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> +</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>      pa_channel_map_init(map);</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>      pa_cvolume_init(vol);</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">></span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> diff --git a/src/pulsecore/dbus-util.c b/src/pulsecore/dbus-util.c</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> index 80e2866e..8053dacf 100644</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> --- a/src/pulsecore/dbus-util.c</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> +++ b/src/pulsecore/dbus-util.c</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> @@ -735,6 +735,7 @@ void</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> pa_dbus_append_proplist_</span><wbr style="font-family:sans-serif"><span style="font-family:sans-serif">variant_dict_entry(</span><wbr style="font-family:sans-serif"><span style="font-family:sans-serif">DBusMessageIter *dict_iter,</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> cons</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>  pa_proplist *pa_dbus_get_proplist_arg(</span><wbr style="font-family:sans-serif"><span style="font-family:sans-serif">DBusConnection *c, DBusMessage</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> *msg, DBusMessageIter *iter) {</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>      DBusMessageIter dict_iter;</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>      DBusMessageIter dict_entry_iter;</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> +    char *signature;</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>      pa_proplist *proplist = NULL;</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>      const char *key = NULL;</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>      const uint8_t *value = NULL;</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> @@ -743,7 +744,12 @@ pa_proplist</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> *pa_dbus_get_proplist_arg(</span><wbr style="font-family:sans-serif"><span style="font-family:sans-serif">DBusConnection *c, DBusMessage *msg, DBusM</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>      pa_assert(c);</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>      pa_assert(msg);</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>      pa_assert(iter);</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> -    pa_assert(pa_streq(dbus_</span><wbr style="font-family:sans-serif"><span style="font-family:sans-serif">message_iter_get_signature(</span><wbr style="font-family:sans-serif"><span style="font-family:sans-serif">iter),</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> "a{say}"));</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> +</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> +    signature = dbus_message_iter_get_</span><wbr style="font-family:sans-serif"><span style="font-family:sans-serif">signature(iter);</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> +    pa_assert(pa_streq(signature, "a{say}"));</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> +</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> +    if (signature)</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> +        dbus_free(signature);</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">></span><br style="font-family:sans-serif"><span style="font-family:sans-serif">>      proplist = pa_proplist_new();</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">></span><br style="font-family:sans-serif"><span style="font-family:sans-serif">> --</span><br style="font-family:sans-serif"><br style="font-family:sans-serif"><span style="font-family:sans-serif">Looks good. Would you also like to fix up src/pulsecore/protocol-dbus.c (seems like there may be more leaks there)?</span><br style="font-family:sans-serif"><br style="font-family:sans-serif"><span style="font-family:sans-serif">Thanks,</span><br style="font-family:sans-serif"><span style="font-family:sans-serif">Arun</span></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Hello,</div><div dir="auto"><br></div><div dir="auto">Thank you for review.</div><div dir="auto">I fixed up src/pulsecore/protocol-dbus.c too.</div><div dir="auto"><br></div><div dir="auto">Thanks.</div><div class="gmail_extra" dir="auto"></div></div>