1*4882a593SmuzhiyunFrom 1641d74e16f9d1ca35ba1a87ee4a0bf3afa48e72 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Darren Kenny <darren.kenny@oracle.com> 3*4882a593SmuzhiyunDate: Fri, 4 Dec 2020 15:04:28 +0000 4*4882a593SmuzhiyunSubject: [PATCH] util/glue-efi: Fix incorrect use of a possibly negative value 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunIt is possible for the ftell() function to return a negative value, 7*4882a593Smuzhiyunalthough it is fairly unlikely here, we should be checking for 8*4882a593Smuzhiyuna negative value before we assign it to an unsigned value. 9*4882a593Smuzhiyun 10*4882a593SmuzhiyunFixes: CID 73744 11*4882a593Smuzhiyun 12*4882a593SmuzhiyunSigned-off-by: Darren Kenny <darren.kenny@oracle.com> 13*4882a593SmuzhiyunReviewed-by: Daniel Kiper <daniel.kiper@oracle.com> 14*4882a593SmuzhiyunSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com> 15*4882a593Smuzhiyun--- 16*4882a593Smuzhiyun util/glue-efi.c | 14 ++++++++++++-- 17*4882a593Smuzhiyun 1 file changed, 12 insertions(+), 2 deletions(-) 18*4882a593Smuzhiyun 19*4882a593Smuzhiyundiff --git a/util/glue-efi.c b/util/glue-efi.c 20*4882a593Smuzhiyunindex 68f5316..de0fa6d 100644 21*4882a593Smuzhiyun--- a/util/glue-efi.c 22*4882a593Smuzhiyun+++ b/util/glue-efi.c 23*4882a593Smuzhiyun@@ -39,13 +39,23 @@ write_fat (FILE *in32, FILE *in64, FILE *out, const char *out_filename, 24*4882a593Smuzhiyun struct grub_macho_fat_header head; 25*4882a593Smuzhiyun struct grub_macho_fat_arch arch32, arch64; 26*4882a593Smuzhiyun grub_uint32_t size32, size64; 27*4882a593Smuzhiyun+ long size; 28*4882a593Smuzhiyun char *buf; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun fseek (in32, 0, SEEK_END); 31*4882a593Smuzhiyun- size32 = ftell (in32); 32*4882a593Smuzhiyun+ size = ftell (in32); 33*4882a593Smuzhiyun+ if (size < 0) 34*4882a593Smuzhiyun+ grub_util_error ("cannot get end of input file '%s': %s", 35*4882a593Smuzhiyun+ name32, strerror (errno)); 36*4882a593Smuzhiyun+ size32 = (grub_uint32_t) size; 37*4882a593Smuzhiyun fseek (in32, 0, SEEK_SET); 38*4882a593Smuzhiyun+ 39*4882a593Smuzhiyun fseek (in64, 0, SEEK_END); 40*4882a593Smuzhiyun- size64 = ftell (in64); 41*4882a593Smuzhiyun+ size = ftell (in64); 42*4882a593Smuzhiyun+ if (size < 0) 43*4882a593Smuzhiyun+ grub_util_error ("cannot get end of input file '%s': %s", 44*4882a593Smuzhiyun+ name64, strerror (errno)); 45*4882a593Smuzhiyun+ size64 = (grub_uint64_t) size; 46*4882a593Smuzhiyun fseek (in64, 0, SEEK_SET); 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun head.magic = grub_cpu_to_le32_compile_time (GRUB_MACHO_FAT_EFI_MAGIC); 49*4882a593Smuzhiyun-- 50*4882a593Smuzhiyun2.14.2 51*4882a593Smuzhiyun 52