[syslinux] [PATCH] isohybrid: fix overflow on 32 bit system

Kang Kai Kai.Kang at windriver.com
Mon May 12 18:26:18 PDT 2014


On 2014年05月12日 22:38, H. Peter Anvin wrote:
> That is because it needs to use fseeko() and use off_t.

Do you mean it does need a patch for isohybrid.c. And the patch looks like:

#if _FILE_OFFSET_BITS == 64
     fseeko(...)
#else
    fseek(...)


Regards,
Kai

>
> On May 11, 2014 11:53:17 PM PDT, Kang Kai <Kai.Kang at windriver.com> wrote:
>> 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