[syslinux] [PATCH] isohybrid: fix overflow on 32 bit system
Kang Kai
Kai.Kang at windriver.com
Sun May 11 23:53:17 PDT 2014
On 2014年05月12日 10:49, H. Peter Anvin wrote:
> On 05/11/2014 06:56 PM, Kai Kang wrote:
>> When call isohybrid with option '-u', it overflows on a 32 bits host. It
>> seeks to 512 bytes before the end of the image to install gpt header. If
>> the size of image is larger than LONG_MAX, it overflows fseek() and
>> cause error:
>>
>> isohybrid: wrlinux-image-x86-64-20140505110100.iso: seek error - 8: Invalid argument
>>
>> Check the offset and call fseek() multi-times if offset is too large.
>>
>> Signed-off-by: Kai Kang <kai.kang at windriver.com>
> NAK.
>
> The right thing to do is compile it with #define _FILE_OFFSET_BITS 64
> and change fseek to fseeko with the appropriate type being off_t.
>
> -hpa
Hi hpa,
Thanks for your reply.
In utils/Makefile, -D_FILE_OFFSET_BITS=64 is added to CFLAGS. isohybrid
is compiled with -D_FILE_OFFSET_BITS=64 but it still fails to handle the
large offset.
make[3]: Entering directory
`/home/neil/wrlinux/builds/install-x86-64/bitbake_build/tmp/work/i686-linux/syslinux-native/6.01-r0/syslinux-6.01/bios/utils'
gcc
-isystem/home/neil/wrlinux/builds/install-x86-64/bitbake_build/tmp/sysroots/i686-linux/usr/include
-O2 -pipe -Wp,-MT,isohybrid.o,-MMD,./.isohybrid.o.d -W -Wall
-Wstrict-prototypes -Os -fomit-frame-pointer *-D_FILE_OFFSET_BITS=64*
-I/home/neil/wrlinux/builds/install-x86-64/bitbake_build/tmp/work/i686-linux/syslinux-native/6.01-r0/syslinux-6.01/utils
-c -o isohybrid.o
/home/neil/wrlinux/builds/install-x86-64/bitbake_build/tmp/work/i686-linux/syslinux-native/6.01-r0/syslinux-6.01/utils/isohybrid.c
I build it on RedHat Enterprise Linux 6.2 with glibc 2.12.
Regards,
Kai
>
--
Regards,
Neil | Kai Kang
More information about the Syslinux
mailing list