From 9b4256bf059f30e3f707cd3eb0d8e6db96b19a3f Mon Sep 17 00:00:00 2001 From: Andrei Borzenkov Date: Sat, 16 Jan 2016 20:48:33 +0300 Subject: [PATCH] net: fix memory leaks Found by: Coverity scan. CID: 96638, 96648 --- grub-core/net/net.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/grub-core/net/net.c b/grub-core/net/net.c index 85b0cf774..d07029b34 100644 --- a/grub-core/net/net.c +++ b/grub-core/net/net.c @@ -299,12 +299,6 @@ grub_net_ipv6_get_link_local (struct grub_net_card *card, char *ptr; grub_net_network_level_address_t addr; - name = grub_malloc (grub_strlen (card->name) - + GRUB_NET_MAX_STR_HWADDR_LEN - + sizeof (":link")); - if (!name) - return NULL; - addr.type = GRUB_NET_NETWORK_LEVEL_PROTOCOL_IPV6; addr.ipv6[0] = grub_cpu_to_be64_compile_time (0xfe80ULL << 48); addr.ipv6[1] = grub_net_ipv6_get_id (hwaddr); @@ -317,6 +311,12 @@ grub_net_ipv6_get_link_local (struct grub_net_card *card, return inf; } + name = grub_malloc (grub_strlen (card->name) + + GRUB_NET_MAX_STR_HWADDR_LEN + + sizeof (":link")); + if (!name) + return NULL; + ptr = grub_stpcpy (name, card->name); if (grub_net_hwaddr_cmp (&card->default_address, hwaddr) != 0) { @@ -1421,7 +1421,10 @@ grub_net_fs_open (struct grub_file *file_out, const char *name) file->device->net->packs.last = NULL; file->device->net->name = grub_strdup (name); if (!file->device->net->name) - return grub_errno; + { + grub_free (file); + return grub_errno; + } err = file->device->net->protocol->open (file, name); if (err)