* grub-core/net/net.c (grub_net_fs_open): Free resources on failed open.

This commit is contained in:
Vladimir 'phcoder' Serbinenko 2012-06-22 22:02:47 +02:00
parent a370616293
commit c7564b8e13
2 changed files with 19 additions and 1 deletions

View file

@ -1,3 +1,7 @@
2012-06-22 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/net/net.c (grub_net_fs_open): Free resources on failed open.
2012-06-22 Vladimir Serbinenko <phcoder@gmail.com> 2012-06-22 Vladimir Serbinenko <phcoder@gmail.com>
* tests/util/grub-shell.in: Fix a typo. * tests/util/grub-shell.in: Fix a typo.

View file

@ -1280,10 +1280,24 @@ grub_net_fs_open (struct grub_file *file_out, const char *name)
err = file->device->net->protocol->open (file, name); err = file->device->net->protocol->open (file, name);
if (err) if (err)
return err; {
while (file->device->net->packs.first)
{
grub_netbuff_free (file->device->net->packs.first->nb);
grub_net_remove_packet (file->device->net->packs.first);
}
grub_free (file->device->net->name);
grub_free (file);
return err;
}
bufio = grub_bufio_open (file, 32768); bufio = grub_bufio_open (file, 32768);
if (! bufio) if (! bufio)
{ {
while (file->device->net->packs.first)
{
grub_netbuff_free (file->device->net->packs.first->nb);
grub_net_remove_packet (file->device->net->packs.first);
}
file->device->net->protocol->close (file); file->device->net->protocol->close (file);
grub_free (file->device->net->name); grub_free (file->device->net->name);
grub_free (file); grub_free (file);