Improved ad-hoc fuzzing coverage revealed a possible access violation
around line 342 of grub-core/fs/ntfs.c when accessing the attr_cur
pointer due to possibility of moving pointer "next" beyond of the end of
the valid buffer inside next_attribute. Prevent this for cases where
full attribute validation is not performed (such as on attribute lists)
by performing a sanity check on the newly calculated next pointer.
Fixes: 06914b614 (fs/ntfs: Correct attribute vs attribute list validation)
Signed-off-by: Andrew Hamilton <adhamilt@gmail.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
return NULL;
next += u16at (curr_attribute, 4);
- if (validate && validate_attribute (next, end) == false)
+ if (validate)
+ {
+ if (validate_attribute (next, end) == false)
+ return NULL;
+ }
+ else if (next >= (grub_uint8_t *) end)
return NULL;
return next;