network: Fix empty ignore-hosts setting

If the ignore-hosts setting is set to an empty array we were using
unintialized memory.

This also now ignores zero length strings if there are any in the
array.

https://bugzilla.gnome.org/show_bug.cgi?id=707966
This commit is contained in:
Rui Matos 2013-09-12 13:18:14 +02:00
parent fb74444eec
commit 0f64dd1a11

View file

@ -263,19 +263,22 @@ get_ignore_hosts (GValue *value,
GVariant *variant, GVariant *variant,
gpointer user_data) gpointer user_data)
{ {
int i; GVariantIter iter;
gsize n = 0, avlen; const gchar *s;
gchar buffer[10240]; gchar **av, **p;
gchar *p = buffer; gsize n;
const gchar **av = g_variant_get_strv (variant, &avlen);
if (avlen > 0) { n = g_variant_iter_init (&iter, variant);
n = g_strlcpy (p, av[0], sizeof buffer); p = av = g_new0 (gchar *, n + 1);
for (i = 1; i < avlen; i ++)
n += g_snprintf (p + n, sizeof (buffer) - n, ", %s", av[i]); while (g_variant_iter_next (&iter, "&s", &s))
if (s[0] != '\0') {
*p = (gchar *) s;
++p;
} }
g_value_take_string (value, g_strjoinv (", ", av));
g_free (av); g_free (av);
g_value_set_string (value, buffer);
return TRUE; return TRUE;
} }