From: Vladimir Serbinenko Date: Thu, 6 Jul 2023 15:12:09 +0000 (+0200) Subject: ZFS: Fix invalid memcmp X-Git-Tag: grub-2.12~81 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=96446ce14e2d1fe9f5b36ec4ac45a2efd92a40d1;p=thirdparty%2Fgrub.git ZFS: Fix invalid memcmp We ended up comparing over unset values as we had dnode_phys on one side and dnode on another Signed-off-by: Vladimir Serbinenko Reviewed-by: Daniel Kiper --- diff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c index d6a321f08..bd49ddb9e 100644 --- a/grub-core/fs/zfs/zfs.c +++ b/grub-core/fs/zfs/zfs.c @@ -2684,8 +2684,8 @@ dnode_get (dnode_end_t * mdn, grub_uint64_t objnum, grub_uint8_t type, blkid = objnum >> epbs; idx = objnum & ((1 << epbs) - 1); - if (data->dnode_buf != NULL && grub_memcmp (data->dnode_mdn, mdn, - sizeof (*mdn)) == 0 + if (data->dnode_buf != NULL && grub_memcmp (data->dnode_mdn, &mdn->dn, + sizeof (mdn->dn)) == 0 && objnum >= data->dnode_start && objnum < data->dnode_end) { grub_memmove (&(buf->dn), &(data->dnode_buf)[idx], DNODE_SIZE);