From 6afb93f24d48ff10d4266396b079b79033e05b0a Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Mon, 14 Jul 2014 17:21:29 +0200
Subject: [PATCH 167/261] xfs: Fix termination loop for directory iteration
Directory iteration used wrong position (sizeof wrong structure) for
termination of iteration inside a directory block. Luckily the position
ended up being wrong by just 1 byte and directory entries are larger so
things worked out fine in practice. But fix the problem anyway.
Signed-off-by: Jan Kara <jack@suse.cz>
---
grub-core/fs/xfs.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/grub-core/fs/xfs.c b/grub-core/fs/xfs.c
index 16ffd3f1e..4bd52d1e0 100644
--- a/grub-core/fs/xfs.c
+++ b/grub-core/fs/xfs.c
@@ -603,8 +603,7 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
- grub_be_to_cpu32 (tail->leaf_stale));
/* Iterate over all entries within this block. */
- while (pos < (dirblk_size
- - (int) sizeof (struct grub_xfs_dir2_entry)))
+ while (pos < tail_start)
{
struct grub_xfs_dir2_entry *direntry;
grub_uint8_t *freetag;
--
2.13.5