grub_netbuff_reserve (&nb, 1500);
err = grub_netbuff_push (&nb, sizeof (*tftph));
if (err)
- return err;
+ {
+ grub_free (data);
+ return err;
+ }
tftph = (struct tftphdr *) nb.data;
err = grub_netbuff_unput (&nb, nb.tail - (nb.data + hdrlen));
if (err)
- return err;
+ {
+ grub_free (data);
+ return err;
+ }
file->not_easily_seekable = 1;
file->data = data;
data->pq = grub_priority_queue_new (sizeof (struct grub_net_buff *), cmp);
if (!data->pq)
- return grub_errno;
+ {
+ grub_free (data);
+ return grub_errno;
+ }
err = grub_net_resolve_address (file->device->net->server, &addr);
if (err)
{
destroy_pq (data);
+ grub_free (data);
return err;
}
if (!data->sock)
{
destroy_pq (data);
+ grub_free (data);
return grub_errno;
}
{
grub_net_udp_close (data->sock);
destroy_pq (data);
+ grub_free (data);
return err;
}
grub_net_poll_cards (GRUB_NET_INTERVAL + (i * GRUB_NET_INTERVAL_ADDITION),
{
grub_net_udp_close (data->sock);
destroy_pq (data);
+ grub_free (data);
return grub_errno;
}