* grub-core/net/arp.c: Remove variable length arrays.

* grub-core/net/bootp.c: Likewise.
	* grub-core/net/dns.c: Likewise.
	* grub-core/net/icmp6.c: Likewise.
	* grub-core/net/net.c: Likewise.
This commit is contained in:
Vladimir 'phcoder' Serbinenko 2013-10-20 17:40:21 +02:00
parent 88ce4cd7f6
commit 28153eb87a
6 changed files with 118 additions and 53 deletions

View file

@ -421,7 +421,7 @@ grub_net_dns_lookup (const char *name,
grub_size_t send_servers = 0;
grub_size_t i, j;
struct grub_net_buff *nb;
grub_net_udp_socket_t sockets[n_servers];
grub_net_udp_socket_t *sockets;
grub_uint8_t *optr;
const char *iptr;
struct dns_header *head;
@ -463,9 +463,16 @@ grub_net_dns_lookup (const char *name,
}
}
sockets = grub_malloc (sizeof (sockets[0]) * n_servers);
if (!sockets)
return grub_errno;
data.name = grub_strdup (name);
if (!data.name)
return grub_errno;
{
grub_free (sockets);
return grub_errno;
}
nb = grub_netbuff_alloc (GRUB_NET_OUR_MAX_IP_HEADER_SIZE
+ GRUB_NET_MAX_LINK_HEADER_SIZE
@ -475,6 +482,7 @@ grub_net_dns_lookup (const char *name,
+ 2 + 4);
if (!nb)
{
grub_free (sockets);
grub_free (data.name);
return grub_errno;
}
@ -493,6 +501,7 @@ grub_net_dns_lookup (const char *name,
dot = iptr + grub_strlen (iptr);
if ((dot - iptr) >= 64)
{
grub_free (sockets);
grub_free (data.name);
return grub_error (GRUB_ERR_BAD_ARGUMENT,
N_("domain name component is too long"));
@ -584,6 +593,8 @@ grub_net_dns_lookup (const char *name,
for (j = 0; j < send_servers; j++)
grub_net_udp_close (sockets[j]);
grub_free (sockets);
if (*data.naddresses)
return GRUB_ERR_NONE;
if (data.dns_err)