On 7/14/25 11:34 AM, Thomas Huth wrote:
> On 14/07/2025 16.54, Jared Rossi wrote:
>>
>> [snip...]
>>>> +
>>>> +        entry++;
>>>> +
>>>> +        if ((uint8_t *)(&entry[1]) > tmp_sec + MAX_SECTOR_SIZE) {
>>>> +            puts("Wrong entry value");
>>>> +            return -EINVAL;
>>>> +        }
>>> Can someone who is more informed than I am of the IPL process please
>>> explain to me what is the purpose of the above check?  Why does it check
>>> if the next entry, the one which isn't going to be inspected/loaded, is
>>> within the bounds of tmp_sec?  This has been here since this file's
>>> inception and I can't find any documentation or mention that supports it.
>>>
>>> This code precludes any of the secure IPL changes.
>>>
>>> Was this actually meant to be entry[0] to ensure the actual entry we
>>> want to work on is not outside the bounds of tmp_sec?  Or perhaps it was
>>> meant to be done before the increment to entry?
>>>
>>
>> I noticed that as well and came to the same conclusions as you, which is to 
>> say,
>> it has always been that way and it is not clear what the purpose is, but it 
>> does
>> not appear to have any impact on the proposed secure IPL functionality.

Fair enough.  Let's keep the current code in and address it later.
Thanks, Jared.

> 
> I think it's meant as a check for the *end* of entry[0], so it's likely just 
> a quirky way of saying:
> 
>     if (((uint8_t *)entry) + sizeof(*entry) > tmp_sec + MAX_SECTOR_SIZE)
> 
> ?
> 
>   Thomas
> 

This makes a lot more sense to me.  Thanks, Thomas.

-- 
Regards,
  Collin

Reply via email to