CC Takashi and Jeff

On Thu, Aug 14, 2014 at 06:17:45PM +0800, Michael Chang wrote:
> We encountered a weird random kernel initrd unpacking error on btrfs
> and finally found it was caused by incorrect address reference in range
> check for type GRUB_BTRFS_EXTENT_REGULAR and the entire result is
> unpredictable.
> 
> This is a quick fix to make the address reference to the
> grub_btrfs_entent_data structure correctly, not the pointer variable
> to it.
> 
> Any suggestions to this patch is welcome.
> ---
>  grub-core/fs/btrfs.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
> index f7b6c15..95a8fa6 100644
> --- a/grub-core/fs/btrfs.c
> +++ b/grub-core/fs/btrfs.c
> @@ -1051,7 +1051,7 @@ grub_btrfs_extent_read (struct grub_btrfs_data *data,
>  
>         data->extend = data->extstart + grub_le_to_cpu64 (data->extent->size);
>         if (data->extent->type == GRUB_BTRFS_EXTENT_REGULAR
> -           && (char *) &data->extent + elemsize
> +           && (char *) data->extent + elemsize
>             >= (char *) &data->extent->filled + sizeof (data->extent->filled))
>           data->extend =
>             data->extstart + grub_le_to_cpu64 (data->extent->filled);
> -- 
> 1.7.3.4
> 
> 
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to