]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/fs/xfs.c (grub_xfs_iterate_dir): Handle read_inode errors.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 3 May 2012 07:15:29 +0000 (09:15 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 3 May 2012 07:15:29 +0000 (09:15 +0200)
ChangeLog
grub-core/fs/xfs.c

index 778c824f36f7d55b545de29af577f84d9e19f71d..afb2d5386d3379b18c3eee915ca666276870142c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2012-05-03  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/fs/xfs.c (grub_xfs_iterate_dir): Handle read_inode errors.
+
 2012-05-03  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/fs/xfs.c (GRUB_XFS_EXTENT_BLOCK): Fix bitmask.
index a3503e652f94df65b63a0a6a3948555a0771b7bf..448f5f340a40484d72ca5778fd0541837b3960c3 100644 (file)
@@ -456,19 +456,28 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
   int NESTED_FUNC_ATTR call_hook (grub_uint64_t ino, const char *filename)
     {
       struct grub_fshelp_node *fdiro;
+      grub_err_t err;
 
       fdiro = grub_malloc (sizeof (struct grub_fshelp_node)
                           - sizeof (struct grub_xfs_inode)
                           + (1 << diro->data->sblock.log2_inode));
       if (!fdiro)
-       return 0;
+       {
+         grub_print_error ();
+         return 0;
+       }
 
       /* The inode should be read, otherwise the filetype can
         not be determined.  */
       fdiro->ino = ino;
       fdiro->inode_read = 1;
       fdiro->data = diro->data;
-      grub_xfs_read_inode (diro->data, ino, &fdiro->inode);
+      err = grub_xfs_read_inode (diro->data, ino, &fdiro->inode);
+      if (err)
+       {
+         grub_print_error ();
+         return 0;
+       }
 
       return hook (filename,
                   grub_xfs_mode_to_filetype (fdiro->inode.mode),