diff options
author | 2022-09-09 19:23:18 +0000 | |
---|---|---|
committer | 2022-09-09 19:23:18 +0000 | |
commit | fe1ff3725cf374e894ff3e833325b2dc185d2b53 (patch) | |
tree | 8d2a0e84e586af40c69dbd249795364a6c6fa279 /fuzzing | |
parent | 111a165b5acc7cc1202d4ec3a554c883d6da612a (diff) | |
parent | f38698893cc428babe61b8eba75bf1d5e92c440e (diff) |
Merge "ANDROID: fuzz: Only check valid phandles" am: 91b7c8d942 am: ec4f0887eb am: 2b3ff5c1b6 am: a8003860c9 am: f38698893c
Original change: https://android-review.googlesource.com/c/platform/external/dtc/+/2171323
Change-Id: If46ee33ec723fc6e7231ae0e0199446078822510
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'fuzzing')
-rw-r--r-- | fuzzing/libfdt_fuzzer.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/fuzzing/libfdt_fuzzer.c b/fuzzing/libfdt_fuzzer.c index f89f1b4..48b50aa 100644 --- a/fuzzing/libfdt_fuzzer.c +++ b/fuzzing/libfdt_fuzzer.c @@ -55,6 +55,9 @@ static void check_mem(const void *mem, size_t len) { #endif } +static bool phandle_is_valid(uint32_t phandle) { + return phandle != 0 && phandle != UINT32_MAX; +} static void walk_node_properties(const void *device_tree, int node) { int property, len = 0; @@ -77,8 +80,9 @@ static void walk_device_tree(const void *device_tree, int parent_node) { } uint32_t phandle = fdt_get_phandle(device_tree, parent_node); - if (phandle != 0) { - assert(parent_node == fdt_node_offset_by_phandle(device_tree, phandle)); + if (phandle_is_valid(phandle)) { + int node = fdt_node_offset_by_phandle(device_tree, phandle); + assert(node >= 0); // it should at least find parent_node } walk_node_properties(device_tree, parent_node); |