[PATCH 1/2] cmd: fdt: Fix iteration over elements above index 2 in fdt get
Heinrich Schuchardt
heinrich.schuchardt at canonical.com
Mon Nov 14 09:22:34 CET 2022
On 11/13/22 21:45, Marek Vasut wrote:
> Always increment both the iterator and pointer into the string
> property value by length of the current element + 1 (to cater
> for the string delimiter), otherwise the element extracted from
> the string property value would be extracted from an offset that
> is multiple of the length of the first element, instead of sum
> of element lengths until select index.
>
> This fixes 'fdt get value' operation for index above 2.
As '0' is the first index: %s/above 2/above 1/
Acked-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
>
> Fixes: 13982ced2cc ("cmd: fdt: Add support for reading stringlist property values")
> Signed-off-by: Marek Vasut <marex at denx.de>
> ---
> Cc: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: Tom Rini <trini at konsulko.com>
> ---
> cmd/fdt.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/cmd/fdt.c b/cmd/fdt.c
> index 4b2dcfec863..8e51a431261 100644
> --- a/cmd/fdt.c
> +++ b/cmd/fdt.c
> @@ -60,11 +60,14 @@ static int fdt_value_env_set(const void *nodep, int len,
> * Iterate over all members in stringlist and find the one at
> * offset $index. If no such index exists, indicate failure.
> */
> - for (i = 0; i < len; i += strlen(nodec) + 1) {
> - if (index-- > 0)
> + for (i = 0; i < len; ) {
> + if (index-- > 0) {
> + i += strlen(nodec) + 1;
> + nodec += strlen(nodec) + 1;
> continue;
> + }
>
> - env_set(var, nodec + i);
> + env_set(var, nodec);
> return 0;
> }
>
More information about the U-Boot
mailing list