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 +++++++-
src/pulsecore/protocol-dbus.c | 6 +++++-
3 files changed, 19 insertions(+), 3 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();
diff --git a/src/pulsecore/protocol-dbus.c b/src/pulsecore/protocol-dbus.c
index 59afc1ab..c8a84589 100644
--- a/src/pulsecore/protocol-dbus.c
+++ b/src/pulsecore/protocol-dbus.c
@@ -313,7 +313,7 @@ struct call_info {
const char *property_interface; /* The interface argument of a property
call is stored here. */
pa_dbus_property_handler *property_handler;
const char *expected_property_sig; /* Property signature from the
introspection data. */
- const char *property_sig; /* The signature of the new value in the
received .Set message. */
+ char *property_sig; /* The signature of the new value in the received .Set
message. */
DBusMessageIter variant_iter; /* Iterator pointing to the beginning of the
new value variant of a .Set call. */
const char *method; /* Method name (extracted from the message). */
@@ -494,6 +494,7 @@ static enum find_result_t find_handler(struct call_info
*call_info) {
static DBusHandlerResult handle_message_cb(DBusConnection *connection,
DBusMessage *message, void *user_data) {
pa_dbus_protocol *p = user_data;
struct call_info call_info;
+ call_info.property_sig = NULL;
pa_assert(connection);
pa_assert(message);
@@ -588,6 +589,9 @@ static DBusHandlerResult handle_message_cb(DBusConnection
*connection, DBusMessa
}
finish:
+ if (call_info.property_sig)
+ dbus_free(call_info.property_sig);
+
return DBUS_HANDLER_RESULT_HANDLED;
}
--
2.13.GIT
_______________________________________________
pulseaudio-discuss mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss