diff --git a/ChangeLog b/ChangeLog index 9c6dde54d..0b1596acd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-12-10 Vladimir Serbinenko + + * grub-core/fs/ufs.c (grub_ufs_dir): Stop if direntlen is 0 to avoid + infinite loop on corrupted FS. + 2012-12-08 Vladimir Serbinenko Fix big-endian mtime. diff --git a/grub-core/fs/ufs.c b/grub-core/fs/ufs.c index c86233674..74a4a4002 100644 --- a/grub-core/fs/ufs.c +++ b/grub-core/fs/ufs.c @@ -664,6 +664,9 @@ grub_ufs_dir (grub_device_t device, const char *path, (char *) &dirent) < 0) break; + if (dirent.direntlen == 0) + break; + #ifdef MODE_UFS2 namelen = dirent.namelen_bsd; #else