]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/fs/reiserfs.c (grub_reiserfs_iterate_dir): Fix size byteswap
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 22 May 2012 06:30:57 +0000 (08:30 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 22 May 2012 06:30:57 +0000 (08:30 +0200)
with old reiserfs.
(grub_reiserfs_open): Don't free root.

ChangeLog
grub-core/fs/reiserfs.c

index 059b6e405319259773634d1135ca9babf1f6ce05..957b1410479756a4d5729618bb893c8d2103ef12 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-05-22  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/fs/reiserfs.c (grub_reiserfs_iterate_dir): Fix size byteswap
+       with old reiserfs.
+       (grub_reiserfs_open): Don't free root.
+
 2012-05-22  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/fs/fshelp.c (grub_fshelp_find_file): Set currnode to 0
index 4f2f562849e7eca68be4dea4ef85b221826d11d0..26adf23c42a2be8298412ecaf0dc3cbb9dc8d52e 100644 (file)
@@ -884,7 +884,7 @@ grub_reiserfs_iterate_dir (grub_fshelp_node_t item,
                        entry_type = GRUB_FSHELP_SYMLINK;
                      else
                        entry_type = GRUB_FSHELP_REG;
-                     entry_item->size = (grub_off_t) grub_le_to_cpu64 (entry_v1_stat.size);
+                     entry_item->size = (grub_off_t) grub_le_to_cpu32 (entry_v1_stat.size);
                    }
                  else
                    {
@@ -1028,7 +1028,8 @@ grub_reiserfs_open (struct grub_file *file, const char *name)
 
  fail:
   assert (grub_errno != GRUB_ERR_NONE);
-  grub_free (found);
+  if (found != &root)
+    grub_free (found);
   grub_free (data);
   grub_dl_unref (my_mod);
   return grub_errno;