Good feedback, I will update as suggested and send out a v3 shortly! Thanks! Andrew
On Thu, Mar 20, 2025 at 6:04 PM Vladimir 'phcoder' Serbinenko < phco...@gmail.com> wrote: > > > Le ven. 21 mars 2025, 01:54, Andrew Hamilton <adham...@gmail.com> a > écrit : > >> A regression was introduced recently as a part of the series of >> filesystem related patches to address some CVEs found in GRUB. >> >> This issue may cause either an infinite loop at startup when >> accessing certain valid NTFS file systems, or may cause a crash >> due to a NULL pointer deference on systems where "NULL" address >> is invalid (such as may happen when calling grub-mount from >> the operating system level). >> >> Correct this issue by checking that at->attr_cur != NULL inside >> find_attr. >> >> Fixes: https://savannah.gnu.org/bugs/?66855 >> >> Co-authored-by: B Horn <b...@horn.uk> >> Co-authored-by: Andrew Hamilton <adham...@gmail.com> >> Signed-off-by: Andrew Hamilton <adham...@gmail.com> >> --- >> grub-core/fs/ntfs.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/grub-core/fs/ntfs.c b/grub-core/fs/ntfs.c >> index 960833a34..a29e10401 100644 >> --- a/grub-core/fs/ntfs.c >> +++ b/grub-core/fs/ntfs.c >> @@ -387,7 +387,8 @@ find_attr (struct grub_ntfs_attr *at, grub_uint8_t >> attr) >> } >> at->attr_cur = at->attr_nxt; >> mft_end = at->mft->buf + (at->mft->data->mft_size << >> GRUB_NTFS_BLK_SHR); >> - while (at->attr_cur < mft_end && *at->attr_cur != 0xFF) >> + while (at->attr_cur != NULL && at->attr_cur < mft_end >> + && *at->attr_cur != 0xFF) >> > Why not while (at->attr_cur >= at->mft->buf && at->attr_cur < mft_end && > ... ? > >> { >> at->attr_nxt = next_attribute (at->attr_cur, at->end); >> if (*at->attr_cur == GRUB_NTFS_AT_ATTRIBUTE_LIST) >> -- >> 2.39.5 >> >>
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel