diff options
author | Maximilian Brune <maximilian.brune@9elements.com> | 2023-09-20 05:12:04 +0200 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2023-11-16 12:01:40 +0000 |
commit | 77eaec6587e421dd1197f36de9e7c4b3a1afafdc (patch) | |
tree | d7f5ce66eb3bc842eb211180df3b59e7712aa6b9 /src/lib | |
parent | f7f661f375b9408b5e7a89295601b8b63830d3d5 (diff) |
lib/device_tree.c: Fix print_property
This uses the size attribute to traverse the possible string.
This patch traverses the entire property for non printable characters
and not just until the first 0 is hit.
Now numbers that start with a zero (memory wise) are not falsely
recognized as strings:
before the patch:
clock-frequency = "";
after the patch:
clock-frequency = < 0x1c2000 >;
Signed-off-by: Maximilian Brune <maximilian.brune@9elements.com>
Change-Id: I229c07b76468fe54f90fa9df12f103d7c7c2859d
Reviewed-on: https://review.coreboot.org/c/coreboot/+/78025
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/device_tree.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/lib/device_tree.c b/src/lib/device_tree.c index 352f2545db..ab9c937b38 100644 --- a/src/lib/device_tree.c +++ b/src/lib/device_tree.c @@ -75,10 +75,14 @@ static void print_property(const struct fdt_property *prop, int depth) int is_string = prop->size > 0 && ((char *)prop->data)[prop->size - 1] == '\0'; - if (is_string) - for (const char *c = prop->data; *c != '\0'; c++) - if (!isprint(*c)) + if (is_string) { + for (int i = 0; i < prop->size - 1; i++) { + if (!isprint(((char *)prop->data)[i])) { is_string = 0; + break; + } + } + } print_indent(depth); if (is_string) { |