[PATCH v4] fastboot: add UUU command UCmd and ACmd support

Heiko Schocher hs at denx.de
Tue Feb 9 07:54:42 CET 2021


Hello Patrick,

On 08.02.21 17:56, Patrick DELAUNAY wrote:
> Hi Heiko,
> 
> 
> On 2/8/21 12:38 PM, Heiko Schocher wrote:
>> add support for the UUU commands ACmd and UCmd.
>>
>> Enable them through the Kconfig option
>> CONFIG_FASTBOOT_UUU_SUPPORT
>>
>> base was commit in NXP kernel
>> 9b149c2a2882: ("MLK-18591-3 android: Add FSL android fastboot support")
>>
>> and ported it to current mainline. Tested this patch
>> on imx6ul based board.
>>
>> Signed-off-by: Heiko Schocher <hs at denx.de>
>> ---
>>
>> azure build was fine:
>> https://dev.azure.com/hs0298/hs/_build/results?buildId=59&view=results
>>
>> Changes in v4:
>> - fixed missing parts from Sean Anderson patches
>>    lost while rebased to tree from lukasz
>>
>> Changes in v3:
>> - rebased to https://github.com/lmajewski/u-boot-dfu/commits/testing
>>    as Lukasz mentioned.
>>
>> Changes in v2:
>> - remove unused FSL_FASTBOOT option
>> - add comment from Roman:
>>    do not enable this option per default
>>    add Kconfig comment that enabling this option may
>>    introduce a security issue.
>>
>>   doc/android/fastboot-protocol.rst |  5 +++
>>   doc/android/fastboot.rst          |  2 +
>>   drivers/fastboot/Kconfig          |  9 +++++
>>   drivers/fastboot/fb_command.c     | 62 +++++++++++++++++++++++++++++++
>>   drivers/usb/gadget/f_fastboot.c   | 17 +++++++++
>>   include/fastboot.h                |  7 ++++
>>   6 files changed, 102 insertions(+)
>>
> (...)
>> diff --git a/drivers/fastboot/fb_command.c b/drivers/fastboot/fb_command.c
>> index 41fc8d7904d..960e73089e0 100644
>> --- a/drivers/fastboot/fb_command.c
>> +++ b/drivers/fastboot/fb_command.c
> (...)
>> +
>> +static char g_a_cmd_buff[64];
>> +
>> +void fastboot_acmd_complete(void)
>> +{
>> +    run_command(g_a_cmd_buff, 0);
>> +}
>> +
>> +/**
>> + * run_acmd() - Execute the ACmd command
>> + *
>> + * @cmd_parameter: Pointer to command parameter
>> + * @response: Pointer to fastboot response buffer
>> + */
>> +static void run_acmd(char *cmd_parameter, char *response)
>> +{
>> +    if (!cmd_parameter) {
>> +        pr_err("missing slot suffix\n");
>> +        fastboot_fail("missing command", response);
>> +        return;
>> +    }
>> +
>> +    strcpy(g_a_cmd_buff, cmd_parameter);
> 
> 
> to avoid overflow:
> 
> 
> + strncpy (g_a_cmd_buff, cmd_parameter, sizeof(g_a_cmd_buff));
> 
> 
> or check strlen(cmd_parameter) ?
> 
> 
> + if (check strlen(cmd_parameter) > sizeof(g_a_cmd_buff)) {
> 
> +        pr_err("too long command\n");
> 
> +        fastboot_fail("too long command", response);
> +        return;
> +    }

Yes, good catch, thanks! I send a v5 with checking the length
and error message

>> +    fastboot_okay(NULL, response);
>> +}
>> +#endif
>> +
>>   /**
>>    * reboot_bootloader() - Sets reboot bootloader flag.
>>    *
>> diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c
>> index 950cc119495..8ba55aab9f8 100644
>> --- a/drivers/usb/gadget/f_fastboot.c
>> +++ b/drivers/usb/gadget/f_fastboot.c
>> @@ -494,6 +494,18 @@ static void do_bootm_on_complete(struct usb_ep *ep, struct usb_request *req)
>>       do_exit_on_complete(ep, req);
>>   }
>>   
> (...)
> 
> Anyway, except this remark.
> 
> Acked-by: Patrick Delaunay <patrick.delaunay at foss.st.com>

bye,
Heiko
-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-52   Fax: +49-8142-66989-80   Email: hs at denx.de


More information about the U-Boot mailing list