aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorMarek Vasut <marex@denx.de>2022-11-14 22:49:59 +0100
committerSimon Glass <sjg@chromium.org>2022-11-22 15:13:35 -0700
commit7dfcf2a57f91dafa2c39577150d31809cd961e93 (patch)
tree19e3af873b6f7c19eaa564a9c463af1baf3a0113 /cmd
parent0524bfc2976f3d8f2e3a693eedfcad1299e91a94 (diff)
downloadu-boot-7dfcf2a57f91dafa2c39577150d31809cd961e93.zip
u-boot-7dfcf2a57f91dafa2c39577150d31809cd961e93.tar.gz
u-boot-7dfcf2a57f91dafa2c39577150d31809cd961e93.tar.bz2
cmd: fdt: Fix iteration over elements above index 1 in fdt get
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 1 (counting from index 0). Acked-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Fixes: 13982ced2cc ("cmd: fdt: Add support for reading stringlist property values") Signed-off-by: Marek Vasut <marex@denx.de>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/fdt.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/cmd/fdt.c b/cmd/fdt.c
index 4b2dcfe..8e51a43 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;
}