]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2005-10-15 Marco Gerards <mgerards@xs4all.nl>
authormarco_g <marco_g@localhost>
Sat, 15 Oct 2005 21:33:38 +0000 (21:33 +0000)
committermarco_g <marco_g@localhost>
Sat, 15 Oct 2005 21:33:38 +0000 (21:33 +0000)
* fs/xfs.c (grub_xfs_iterate_dir): Detect an error if part of a
directory can not be read.

ChangeLog
conf/i386-pc.mk
fs/xfs.c

index d1661b169b9cc6ced514f6a406379fe0fddf4a79..9c2039641a9478156b1065bb3d7bcc73d5920e9f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-10-15  Marco Gerards  <mgerards@xs4all.nl>
+
+       * fs/xfs.c (grub_xfs_iterate_dir): Detect an error if part of a
+       directory can not be read.
+
 2005-10-15  Yoshinori K. Okuji  <okuji@enbug.org>
 
        * configure.ac (AC_INIT): Increase the version number to 1.91.
index 27cf39e113b75707aa1f03a16ed78990e81ca19c..8403363d91b1ef920266132084b1990f47a84193 100644 (file)
@@ -728,8 +728,8 @@ grub_emu_SOURCES = commands/boot.c commands/cat.c commands/cmp.c    \
        commands/timeout.c                                              \
        commands/i386/pc/halt.c commands/i386/pc/reboot.c               \
        disk/loopback.c                                                 \
-       fs/affs.c fs/ext2.c fs/fat.c fs/fshelp.c fs/hfs.c               \
-       fs/iso9660.c fs/jfs.c fs/minix.c fs/sfs.c fs/ufs.c fs/xfs.c     \
+       fs/affs.c fs/ext2.c fs/fat.c fs/fshelp.c fs/hfs.c fs/iso9660.c  \
+       fs/jfs.c fs/minix.c fs/sfs.c fs/ufs.c fs/xfs.c                  \
        io/gzio.c                                                       \
        kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c       \
        kern/file.c kern/fs.c kern/loader.c kern/main.c kern/misc.c     \
index 44b1cec07ea5528f32974de9fdbad6be4b0b9d4c..e7a1e7a946212da6300a189eb37bf7d047a77702 100644 (file)
--- a/fs/xfs.c
+++ b/fs/xfs.c
@@ -418,6 +418,8 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
            numread = grub_xfs_read_file (dir, 0,
                                          blk << dir->data->sblock.log2_bsize,
                                          dir->data->bsize, dirblock);
+           if (numread != dir->data->bsize)
+             return 0;
 
            entries = (grub_be_to_cpu32 (tail->leaf_count)
                       - grub_be_to_cpu32 (tail->leaf_stale));