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

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


On 2014年05月13日 09:29, H. Peter Anvin wrote:
> No #if.
OK. I'll send V2.

Thanks,
Kai

>
> On May 12, 2014 6:26:18 PM PDT, Kang Kai <Kai.Kang at windriver.com> wrote:
>> 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