From: Vladimir 'phcoder' Serbinenko Date: Mon, 10 Dec 2012 08:22:40 +0000 (+0100) Subject: * grub-core/fs/ufs.c (grub_ufs_dir): Stop if direntlen is 0 to avoid X-Git-Tag: grub-2.02-beta1~1404 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cc1ce5f9b4e5526fc1037a05ed4331845b3c10b6;p=thirdparty%2Fgrub.git * grub-core/fs/ufs.c (grub_ufs_dir): Stop if direntlen is 0 to avoid infinite loop on corrupted FS. --- 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