From 40fd3a2b995ae0cb5caccb207e4e1549d2f0825f Mon Sep 17 00:00:00 2001 From: proski Date: Mon, 9 Jun 2008 15:32:43 +0000 Subject: [PATCH] 2008-06-09 Pavel Roskin * fs/minix.c (grub_minix_mount): Handle error reading superblock. --- ChangeLog | 5 +++++ fs/minix.c | 15 +++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3f3230e92..14c205e02 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-06-09 Pavel Roskin + + * fs/minix.c (grub_minix_mount): Handle error reading + superblock. + 2008-06-08 Robert Millan * util/i386/pc/grub-setup.c (main): If install drive is an LVM, diff --git a/fs/minix.c b/fs/minix.c index e78863e27..aa8ffb17d 100644 --- a/fs/minix.c +++ b/fs/minix.c @@ -422,6 +422,8 @@ grub_minix_mount (grub_disk_t disk) /* Read the superblock. */ grub_disk_read (disk, GRUB_MINIX_SBLOCK, 0, sizeof (struct grub_minix_sblock),(char *) &data->sblock); + if (grub_errno) + goto fail; if (grub_le_to_cpu16 (data->sblock.magic) == GRUB_MINIX_MAGIC) { @@ -444,16 +446,17 @@ grub_minix_mount (grub_disk_t disk) data->filename_size = 30; } else - { - grub_free (data); - grub_error (GRUB_ERR_BAD_FS, "not an minix filesystem"); - return 0; - } - + goto fail; + data->disk = disk; data->linknest = 0; return data; + + fail: + grub_free (data); + grub_error (GRUB_ERR_BAD_FS, "not a minix filesystem"); + return 0; } static grub_err_t