The struct container should always be there, evene if it will contain an
empty dict.
---
Got the exact same issue in src/peer.c, and it was verified when dbus is built
with --enable-checks --enables-aserts
vpn/vpn-provider.c | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/vpn/vpn-provider.c b/vpn/vpn-provider.c
index 16c0c2b..f4e8783 100644
--- a/vpn/vpn-provider.c
+++ b/vpn/vpn-provider.c
@@ -149,24 +149,25 @@ empty_dict:
static void append_routes(DBusMessageIter *iter, void *user_data)
{
GHashTable *routes = user_data;
+ DBusMessageIter container;
GHashTableIter hash;
gpointer value, key;
+ dbus_message_iter_open_container(iter, DBUS_TYPE_STRUCT,
+ NULL, &container);
+
if (!routes) {
- append_route(iter, NULL);
- return;
+ append_route(&container, NULL);
+ goto out;
}
g_hash_table_iter_init(&hash, routes);
- while (g_hash_table_iter_next(&hash, &key, &value)) {
- DBusMessageIter dict;
+ while (g_hash_table_iter_next(&hash, &key, &value))
+ append_route(&container, value);
- dbus_message_iter_open_container(iter, DBUS_TYPE_STRUCT, NULL,
- &dict);
- append_route(&dict, value);
- dbus_message_iter_close_container(iter, &dict);
- }
+out:
+ dbus_message_iter_close_container(iter, &container);
}
static void send_routes(struct vpn_provider *provider, GHashTable *routes,
--
1.8.5.5
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman