[ipxe-devel] [PATCH 1/1] [efi] avoid unaligned read in efi_devpath_end()
Heinrich Schuchardt
xypron.glpk at gmx.de
Wed Mar 28 19:23:11 UTC 2018
On 03/28/2018 09:12 PM, Michael Brown wrote:
> On 28/03/18 20:10, Heinrich Schuchardt wrote:
>>> There's no way that the code:
>>>
>>>> - ( ( path->Length[1] << 8 ) | path->Length[0] ) );
>>>
>>> should ever be able to produce an unaligned access abort, since it just
>>> dereferences individual bytes. What do you see if you disassemble the
>>> object code?
>>
>> I put a DGBC before and after the access. And this is were the interrupt
>> occurs.
>>
>> I do not know how to disassemble the object code. Which files do you
>> need?
>
> You should be able to use:
>
> objdump -dS bin-arm32-efi/efi_utils.o
>
> Michael
>
>
00000000 <efi_devpath_end>:
0: 7803 ldrb r3, [r0, #0] <<< Reading on byte
2: 2b7f cmp r3, #127 ; 0x7f
4: d100 bne.n 8 <efi_devpath_end+0x8>
6: 4770 bx lr
8: 8843 ldrh r3, [r0, #2] <<< Reading two bytes
infocenter.arm.com/help/topic/com.arm.doc.faqs/ka15414.html
LDRH/STRH - address must be 2-byte aligned.
a: 4418 add r0, r3
c: e7f8 b.n 0 <efi_devpath_end>
Regards
Heinrich
More information about the ipxe-devel
mailing list