mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-24 19:30:07 +01:00
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
This commit is contained in:
parent
067ed11d34
commit
d83872f46d
1 changed files with 22 additions and 1 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue