From d83872f46db11e9e7bf752afb7a74b2258bac85a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= Date: Mon, 28 Jun 2010 18:46:59 +0200 Subject: [PATCH] ipv6: fix a crash when getting 'nameservers' property over D-Bus dbus-send --system --print-reply --dest=org.freedesktop.NetworkManager /org/freedesktop/NetworkManager/IP6Config/0 org.freedesktop.DBus.Properties.Get string:org.freedesktop.NetworkManager string:Nameservers --- src/nm-ip6-config.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c index 2fea38f331..4c6c5c6273 100644 --- a/src/nm-ip6-config.c +++ b/src/nm-ip6-config.c @@ -654,6 +654,27 @@ finalize (GObject *object) G_OBJECT_CLASS (nm_ip6_config_parent_class)->finalize (object); } +static void +nameservers_to_gvalue (GArray *array, GValue *value) +{ + GPtrArray *dns; + guint i = 0; + + dns = g_ptr_array_new (); + + while (array && (i < array->len)) { + struct in6_addr *addr; + GByteArray *bytearray; + addr = &g_array_index (array, struct in6_addr, i++); + + bytearray = g_byte_array_sized_new (16); + g_byte_array_append (bytearray, (guint8 *) addr->s6_addr, 16); + g_ptr_array_add (dns, bytearray); + } + + g_value_take_boxed (value, dns); +} + static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) @@ -665,7 +686,7 @@ get_property (GObject *object, guint prop_id, nm_utils_ip6_addresses_to_gvalue (priv->addresses, value); break; case PROP_NAMESERVERS: - g_value_set_boxed (value, priv->nameservers); + nameservers_to_gvalue (priv->nameservers, value); break; case PROP_DOMAINS: g_value_set_boxed (value, priv->domains);