[PATCH v2 12/17] android: boot: support extra command line

Safae Ouajih souajih at baylibre.com
Fri Jan 27 16:51:09 CET 2023


On 27/01/2023 01:54, Simon Glass wrote:
> Hi Safae,
>
> On Thu, 26 Jan 2023 at 09:05, Safae Ouajih <souajih at baylibre.com> wrote:
>> In version 3 and 4 of boot image header, the vendor specific
> vendor-spefcific
>
>> command line are located in vendor boot image. Thus, using
> use the
>
>> extra command line to add those cmd to bootargs.
>>
>> Signed-off-by: Safae Ouajih <souajih at baylibre.com>
>> ---
>>   boot/image-android.c | 11 +++++++++++
>>   1 file changed, 11 insertions(+)
>>
>> diff --git a/boot/image-android.c b/boot/image-android.c
>> index 5b270e4417..cb4fc22b00 100644
>> --- a/boot/image-android.c
>> +++ b/boot/image-android.c
>> @@ -55,6 +55,7 @@ static void android_vendor_boot_image_v3_v4_parse_hdr(const struct andr_vendor_i
>>           * The header takes a full page, the remaining components are aligned
>>           * on page boundary.
>>           */
>> +       data->kcmdline_extra = hdr->cmdline;
>>          data->tags_addr = hdr->tags_addr;
>>          data->image_name = hdr->name;
>>          data->kernel_addr = hdr->kernel_addr;
>> @@ -233,6 +234,11 @@ int android_image_get_kernel(const struct andr_boot_img_hdr_v0 *hdr,
>>                  len += strlen(img_data.kcmdline);
>>          }
>>
>> +       if (img_data.kcmdline_extra) {
>> +               printf("Kernel extra command line: %s\n", img_data.kcmdline_extra);
>> +               len += strlen(img_data.kcmdline_extra);
>> +       }
>> +
>>          char *bootargs = env_get("bootargs");
>>          if (bootargs)
>>                  len += strlen(bootargs);
>> @@ -252,6 +258,11 @@ int android_image_get_kernel(const struct andr_boot_img_hdr_v0 *hdr,
>>          if (*img_data.kcmdline)
>>                  strcat(newbootargs, img_data.kcmdline);
>>
>> +       if (img_data.kcmdline_extra) {
>> +               strcat(newbootargs, " ");
>> +               strcat(newbootargs, img_data.kcmdline_extra);
> Do we need to worry about overflow?

Hi Simon,

This line adds kcmdline_extra length to the len variable:

	len += strlen(img_data.kcmdline_extra);

newbootargs is allocated just after in :

         char *newbootargs = malloc(len + 2);

I can not see a possible overflow, please let me know if you

think this is not enough.

Thank you,

BR,

--safae

>> +       }
>> +
>>          env_set("bootargs", newbootargs);
>>
>>          if (os_data) {
>> --
>> 2.34.1
>>
> Regards,
> Simon


More information about the U-Boot mailing list