Hi Petr,

Thank you for the patch.

On Sun, Oct 04, 2026 at 22:48, Petr Hodina via B4 Relay 
<[email protected]> wrote:

> From: Petr Hodina <[email protected]>
>
> As dfu_alt_info is read via env_get() it needs to expand the ${var}
> references using cli_simple_process_macros.
>
> Signed-off-by: Petr Hodina <[email protected]>
> ---
>  drivers/dfu/dfu.c | 16 +++++++++++++++-
>  1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c
> index 90d8b45ce8a..fa074db242c 100644
> --- a/drivers/dfu/dfu.c
> +++ b/drivers/dfu/dfu.c
> @@ -6,6 +6,7 @@
>   * author: Lukasz Majewski <[email protected]>
>   */
>  
> +#include <cli.h>
>  #include <env.h>
>  #include <errno.h>
>  #include <log.h>
> @@ -178,7 +179,20 @@ int dfu_init_env_entities(char *interface, char *devstr)
>               return -EINVAL;
>       }
>  
> -     env_bkp = strdup(str_env);
> +     /*
> +      * Expand the dfu_alt_info here as it's read via env_get() which
> +      * does not expand references the way hush does for a command line
> +      */
> +     env_bkp = malloc(strlen(str_env) * 2 + 1);

Can we explain why we picked strlen(str_env) * 2 + 1?

Is it an arbitrary choice or is there any justification?

> +     if (!env_bkp)
> +             return -ENOMEM;
> +
> +     if (cli_simple_process_macros(str_env, env_bkp,
> +                                   strlen(str_env) * 2 + 1)) {
> +             pr_err("\"dfu_alt_info\" expansion ran out of space!\n");
> +             free(env_bkp);
> +             return -ENOSPC;
> +     }
>       if (!interface && !devstr)
>               ret = dfu_config_interfaces(env_bkp);
>       else
>
> -- 
> 2.55.0

Reply via email to