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:
parent
fb74444eec
commit
0f64dd1a11
1 changed files with 14 additions and 11 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue