Hi Andrew,

On 12/5/25 18:28, Andrew Goodbody wrote:
> The code to choose the filename to use does not cope with no name set at
> all. Firstly the test for a name in net_boot_file_name tests the pointer
> rather than the string it points to. Secondly the cleanup on exit in
> this case attempts to free a global variable. Fix both issues.
> 
> Signed-off-by: Andrew Goodbody <[email protected]>
> ---
>  net/lwip/tftp.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/net/lwip/tftp.c b/net/lwip/tftp.c
> index 
> 94bacf630752d20357cef40775a25cca39d811dc..6c7ffba661e5903b6b3a6349edf2c8b22eb0d36b
>  100644
> --- a/net/lwip/tftp.c
> +++ b/net/lwip/tftp.c
> @@ -279,7 +279,7 @@ int do_tftpb(struct cmd_tbl *cmdtp, int flag, int argc, 
> char *const argv[])
>       if (!arg)
>               arg = net_boot_file_name;
>  
> -     if (arg) {
> +     if (*arg) {
>               /* Parse [ip:[port:]]fname */
>               i = 0;
>               while ((*(words + i) = strsep(&arg, ":")))
> @@ -342,6 +342,7 @@ int do_tftpb(struct cmd_tbl *cmdtp, int flag, int argc, 
> char *const argv[])
>       if (tftp_loop(eth_get_dev(), laddr, fname, srvip, port) < 0)
>               ret = CMD_RET_FAILURE;
>  out:
> -     free(arg);
> +     if (arg != net_boot_file_name)
> +             free(arg);
>       return ret;
>  }
> 
> ---
> base-commit: 59f9fcc1f514762674ac07c13c2a85f7aace7250
> change-id: 20251205-lwip_fixes-ea4051356612
> 
> Best regards,

Reviewed-by: Jerome Forissier <[email protected]>

Thanks,
-- 
Jerome

Reply via email to