]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/fs/xfs.c (grub_xfs_iterate_dir): Use grub_get_unaligned16
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 13 Dec 2011 01:02:38 +0000 (02:02 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 13 Dec 2011 01:02:38 +0000 (02:02 +0100)
to get freetag and skip.

ChangeLog
grub-core/fs/xfs.c

index 1fe654de584fea29615a374a222c768e49fef3d7..f83c57348ad4301c376218b6d15f076c62241326 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/fs/xfs.c (grub_xfs_iterate_dir): Use grub_get_unaligned16
+       to get freetag and skip.
+
 2011-12-13  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/fs/nilfs2.c (grub_nilfs2_btree_node): Add zero-size keys
index c7ce3aac90ac02b787950e031c5d5cdb73f00553..fbadc8fa5fe1d1d2ecc9a407c50a136e40651abd 100644 (file)
@@ -589,18 +589,18 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
                          - (int) sizeof (struct grub_xfs_dir2_entry)))
              {
                struct grub_xfs_dir2_entry *direntry;
-               grub_uint16_t *freetag;
+               grub_uint8_t *freetag;
                char *filename;
 
                direntry = (struct grub_xfs_dir2_entry *) &dirblock[pos];
-               freetag = (grub_uint16_t *) direntry;
+               freetag = (grub_uint8_t *) direntry;
 
-               if (*freetag == 0XFFFF)
+               if (grub_get_unaligned16 (freetag) == 0XFFFF)
                  {
-                   grub_uint16_t *skip = (grub_uint16_t *) (freetag + 1);
+                   grub_uint8_t *skip = (freetag + sizeof (grub_uint16_t));
 
                    /* This entry is not used, go to the next one.  */
-                   pos += grub_be_to_cpu16 (*skip);
+                   pos += grub_be_to_cpu16 (grub_get_unaligned16 (skip));
 
                    continue;
                  }