osdep/devmapper/getroot: Fix build error on 32-bit host

The gcc build has failed for 32-bit host (e.g. i386-emu and arm-emu)
due to mismatch between format specifier and data type.

../grub-core/osdep/devmapper/getroot.c: In function
'grub_util_pull_devmapper':

../grub-core/osdep/devmapper/getroot.c:265:75: error: format '%lu'
expects argument of type 'long unsigned int', but argument 2 has type
'int' [-Werror=format=]

../grub-core/osdep/devmapper/getroot.c:276:80: error: format '%lu'
expects argument of type 'long unsigned int', but argument 2 has type
'int' [-Werror=format=]

This patch fixes the problem by casting the type of calculated offset to
grub_size_t and use platform PRIuGRUB_SIZE as format specifier.

Signed-off-by: Michael Chang <mchang@suse.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
Michael Chang 2023-03-01 17:23:08 +08:00 committed by Daniel Kiper
parent 9e78ab2b0f
commit 8847841731

View File

@ -262,7 +262,7 @@ grub_util_pull_devmapper (const char *os_dev)
params);
cipher = grub_strndup (c, seek_head - c);
if (cipher == NULL)
grub_util_error (_("could not strndup cipher of length `%lu'"), seek_head - c);
grub_util_error (_("could not strndup cipher of length `%" PRIuGRUB_SIZE "'"), (grub_size_t) (seek_head - c));
remaining -= seek_head - c + 1;
c = seek_head + 1;
@ -273,7 +273,7 @@ grub_util_pull_devmapper (const char *os_dev)
params);
cipher_mode = grub_strndup (c, seek_head - c);
if (cipher_mode == NULL)
grub_util_error (_("could not strndup cipher_mode of length `%lu'"), seek_head - c);
grub_util_error (_("could not strndup cipher_mode of length `%" PRIuGRUB_SIZE "'"), (grub_size_t) (seek_head - c));
remaining -= seek_head - c + 1;
c = seek_head + 1;