[2517] 2009-08-23 Vladimir Serbinenko <[email protected]>

Vladimir Serbinenko <[email protected]> Sun, 23 Aug 2009 15:35:23 +0000
Newsgroups gmane.comp.boot-loaders.grub.cvs
Message-ID <[email protected]>
Revision: 2517
          http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=2517
Author:   phcoder
Date:     2009-08-23 15:35:22 +0000 (Sun, 23 Aug 2009)
Log Message:
-----------
2009-08-23  Vladimir Serbinenko  <[email protected]>

	* fs/hfsplus.c (grub_hfsplus_mount): Don't ignore grub_hfsplus_read_file
	errors.
	(grub_hfsplus_btree_iterate_node): Don't ignore grub_hfsplus_read_file
	errors. Call grub_error when needed.

Modified Paths:
--------------
    trunk/grub2/ChangeLog
    trunk/grub2/fs/hfsplus.c

Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog	2009-08-23 15:27:07 UTC (rev 2516)
+++ trunk/grub2/ChangeLog	2009-08-23 15:35:22 UTC (rev 2517)
@@ -1,5 +1,12 @@
 2009-08-23  Vladimir Serbinenko  <[email protected]>
 
+	* fs/hfsplus.c (grub_hfsplus_mount): Don't ignore grub_hfsplus_read_file
+	errors.
+	(grub_hfsplus_btree_iterate_node): Don't ignore grub_hfsplus_read_file
+	errors. Call grub_error when needed.
+
+2009-08-23  Vladimir Serbinenko  <[email protected]>
+
 	* commands/search.c (search_fs): Try searching without autoload first.
 	* util/grub-mkconfig_lib.in (prepare_grub_to_access_device): Load
 	filesystem module explicitly for faster booting.

Modified: trunk/grub2/fs/hfsplus.c
===================================================================
--- trunk/grub2/fs/hfsplus.c	2009-08-23 15:27:07 UTC (rev 2516)
+++ trunk/grub2/fs/hfsplus.c	2009-08-23 15:35:22 UTC (rev 2517)
@@ -469,9 +469,9 @@
     grub_be_to_cpu64 (data->volheader.extents_file.size);
 
   /* Read the essential information about the trees.  */
-  if (! grub_hfsplus_read_file (&data->catalog_tree.file, 0,
-				sizeof (struct grub_hfsplus_btnode),
-				sizeof (header), (char *) &header))
+  if (grub_hfsplus_read_file (&data->catalog_tree.file, 0,
+			      sizeof (struct grub_hfsplus_btnode),
+			      sizeof (header), (char *) &header) <= 0)
     goto fail;
 
   data->catalog_tree.root = grub_be_to_cpu32 (header.root);
@@ -479,15 +479,15 @@
   data->case_sensitive = ((magic == GRUB_HFSPLUSX_MAGIC) &&
 			  (header.key_compare == GRUB_HFSPLUSX_BINARYCOMPARE));
 
-  if (! grub_hfsplus_read_file (&data->extoverflow_tree.file, 0,
-				sizeof (struct grub_hfsplus_btnode),
-				sizeof (header), (char *) &header))
+  if (grub_hfsplus_read_file (&data->extoverflow_tree.file, 0,
+			      sizeof (struct grub_hfsplus_btnode),
+			      sizeof (header), (char *) &header) <= 0)
     goto fail;
 
   data->extoverflow_tree.root = grub_be_to_cpu32 (header.root);
 
-  if (! grub_hfsplus_read_file (&data->extoverflow_tree.file, 0, 0,
-				sizeof (node), (char *) &node))
+  if (grub_hfsplus_read_file (&data->extoverflow_tree.file, 0, 0,
+			      sizeof (node), (char *) &node) <= 0)
     goto fail;
 
   data->extoverflow_tree.root = grub_be_to_cpu32 (header.root);
@@ -608,10 +608,10 @@
       if (! first_node->next)
 	break;
 
-      if (! grub_hfsplus_read_file (&btree->file, 0,
-				    (grub_be_to_cpu32 (first_node->next)
-				     * btree->nodesize),
-				    btree->nodesize, cnode))
+      if (grub_hfsplus_read_file (&btree->file, 0,
+				  (grub_be_to_cpu32 (first_node->next)
+				   * btree->nodesize),
+				  btree->nodesize, cnode) <= 0)
 	return 1;
 
       /* Don't skip any record in the next iteration.  */
@@ -647,12 +647,12 @@
       int match = 0;
 
       /* Read a node.  */
-      if (! grub_hfsplus_read_file (&btree->file, 0,
-				    (long)currnode * (long)btree->nodesize,
-				    btree->nodesize, (char *) node))
+      if (grub_hfsplus_read_file (&btree->file, 0,
+				  (long)currnode * (long)btree->nodesize,
+				  btree->nodesize, (char *) node) <= 0)
 	{
 	  grub_free (node);
-	  return grub_errno;
+	  return grub_error (GRUB_ERR_BAD_FS, "Couldn't read i-node.");
 	}
 
       nodedesc = (struct grub_hfsplus_btnode *) node;