[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