keyfile: avoid heap allocating temporay name for numbered key in ip_address_or_route_parser()

Odd, we iterate over a thousand names, without aborting when
the first key isn't present.

On the other hand, it means we cannot parse more then 1000
routes either :(

Anyway, don't heap allocate the temporay string for the key
name.
This commit is contained in:
Thomas Haller 2017-12-11 11:57:37 +01:00
parent cb06a36a18
commit d4aae4c255

View file

@ -490,15 +490,17 @@ ip_address_or_route_parser (KeyfileReaderInfo *info, NMSetting *setting, const c
const char **key_basename;
for (key_basename = key_names; *key_basename; key_basename++) {
char *key_name;
char key_name_buf[100];
const char *key_name;
gpointer item;
char options_key[128];
/* -1 means no suffix */
if (i >= 0)
key_name = g_strdup_printf ("%s%d", *key_basename, i);
else
key_name = g_strdup (*key_basename);
key_name = *key_basename;
if (i >= 0) {
nm_sprintf_buf (key_name_buf, "%s%d", key_name, i);
key_name = key_name_buf;
}
item = read_one_ip_address_or_route (info, key, setting_name, key_name, ipv6, routes,
gateway ? NULL : &gateway, setting);
@ -507,8 +509,6 @@ ip_address_or_route_parser (KeyfileReaderInfo *info, NMSetting *setting, const c
fill_route_attributes (info->keyfile, item, setting_name, options_key, ipv6 ? AF_INET6 : AF_INET);
}
g_free (key_name);
if (info->error) {
g_ptr_array_unref (list);
g_free (gateway);