[Skiboot] [PATCH 2/5] nvram: ibm,skiboot NUL terminator check

Oliver O'Halloran oohall at gmail.com
Tue Aug 9 12:53:10 AEST 2016


On Mon, Aug 8, 2016 at 6:00 PM, Joel Stanley <joel at jms.id.au> wrote:
> On Mon, Aug 8, 2016 at 12:28 PM, Oliver O'Halloran <oohall at gmail.com> wrote:
>> NVRAM configuration strings are required to be NUL terminated and unused
>> data bytes in the partition should be set to NUL. Badly behaved system
>> software may not do this so same sanity checking is required. Ensuring
>> that the final data byte in a partition is a NUL should be sufficent.
>
> Spelling (sufficient).

fixed

>
>
>>
>> Signed-off-by: Oliver O'Halloran <oohall at gmail.com>
>> ---
>>  core/nvram-format.c | 14 ++++++++++++++
>>  1 file changed, 14 insertions(+)
>>
>> diff --git a/core/nvram-format.c b/core/nvram-format.c
>> index a81663ceb35f..be8d77f8394b 100644
>> --- a/core/nvram-format.c
>> +++ b/core/nvram-format.c
>> @@ -155,6 +155,20 @@ int nvram_check(void *nvram_image, const uint32_t nvram_size)
>>                 prerror("NVRAM: Skiboot private partition "
>>                         "not found !\n");
>>                 goto failed;
>> +       } else {
>> +               /*
>> +                * The OF NVRAM format requires config strings to be NUL
>> +                * terminated and unused memory to be set ot zero. Well behaved
>
> Typo

fixed

>
>> +                * software should ensure this is done for us, but we should
>> +                * always check.
>> +                */
>> +               const char *c = (const char *) skiboot_part_hdr +
>> +                       skiboot_part_hdr->len * 16 - 1;
>
> c is going to point to the last byte of the partition? We could call
> it 'last_byte'.

That's a better name.

> Is ->len user controlled? Do we need to make sure it's not pointing
> past the end of something?

It is user controlled, but it's validated earlier in that function
while iterating through the nvram partitions.

>
>> +
>> +               if (*c != 0) {
>> +                       prerror("NVRAM: Skiboot private partition is not NUL terminated");
>> +                       goto failed;
>> +               }
>>         }
>>
>>         prlog(PR_INFO, "NVRAM: Layout appears sane\n");
>> --
>> 2.5.5
>>
>> _______________________________________________
>> Skiboot mailing list
>> Skiboot at lists.ozlabs.org
>> https://lists.ozlabs.org/listinfo/skiboot


More information about the Skiboot mailing list