[SLOF] [PATCH v2 02/11] obp-tftp: Make sure to not overwrite paflof in memory
Thomas Huth
thuth at redhat.com
Wed May 23 16:03:13 AEST 2018
On 22.05.2018 17:01, Greg Kurz wrote:
> On Fri, 18 May 2018 17:45:31 +0200
> Thomas Huth <thuth at redhat.com> wrote:
>
>> The obp-tftp package is currently using an arbitrary large value
>> as maximal load size. If the downloaded file is big enough, we
>> can easily erase Paflof in memory this way. Let's make sure that
>> this can not happen by limiting the size to the amount of memory
>> below the Paflof binary (which is close to the end of the RAM)
>> in case of board-qemu, or the amount of memory between the minimum
>> RAM size and the load-base on board-js2x.
>>
>> Signed-off-by: Thomas Huth <thuth at redhat.com>
>> ---
>> slof/fs/packages/obp-tftp.fs | 8 +++++++-
>> 1 file changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/slof/fs/packages/obp-tftp.fs b/slof/fs/packages/obp-tftp.fs
>> index 19c11e1..7236624 100644
>> --- a/slof/fs/packages/obp-tftp.fs
>> +++ b/slof/fs/packages/obp-tftp.fs
>> @@ -24,7 +24,13 @@ s" obp-tftp" device-name
>> my-parent ihandle>phandle node>path encode-string
>> s" bootpath" set-chosen
>>
>> - 60000000 ( addr maxlen )
>> + \ Determine the maximum size that we can load:
>> + dup paflof-start < IF
>> + paflof-start
>> + ELSE
>> + MIN-RAM-SIZE
>
> Hmm... IIUC this is a size, not an address...
Depending on how you look at it, it's both, a size and an address. It's
the size of a RAM block starting at address 0. So the address of the
first byte after this ram block is 0 + MIN-RAM-SIZE = MIN-RAM-SIZE.
>> + THEN ( addr endaddr )
>> + over - ( addr maxlen )
>>
>
> ... so we should rather have this, shouldn't we ?
>
> \ Determine the maximum size that we can load:
> dup paflof-start < IF
> paflof-start
> over -
> ELSE
> MIN-RAM-SIZE
> THEN ( addr maxlen )
No, you still got to consider the load-base (the "addr" in above stack
comments) here:
+-------------+-------------------------------------+
^ ^ ^
| | |
Address 0 load-base MIN-RAM-SIZE
( addr )
The amount of data that we can load via TFTP is the size between the
load-base and MIN-RAM-SIZE, not the size between address 0 and MIN-RAM-SIZE.
Thomas
More information about the SLOF
mailing list