mirror of
https://github.com/dgibson/dtc.git
synced 2026-01-22 09:40:33 -05:00
fdt_num_mem_rsv() and fdt_get_mem_rsv() currently don't sanity check their parameters, or the memory reserve section offset in the header. That means that on a corrupted blob they could access outside of the range of memory that they should. This improves their safety checking, meaning they shouldn't access outside the blob's bounds, even if its contents are badly corrupted. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Tested-by: Alexey Kardashevskiy <aik@ozlabs.ru> Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru> Reviewed-by: Simon Glass <sjg@chromium.org>
90 lines
2.6 KiB
Text
90 lines
2.6 KiB
Text
LIB_TESTS_L = get_mem_rsv \
|
|
root_node find_property subnode_offset path_offset \
|
|
get_name getprop get_phandle \
|
|
get_path supernode_atdepth_offset parent_offset \
|
|
node_offset_by_prop_value node_offset_by_phandle \
|
|
node_check_compatible node_offset_by_compatible \
|
|
get_alias \
|
|
char_literal \
|
|
sized_cells \
|
|
notfound \
|
|
addr_size_cells \
|
|
stringlist \
|
|
setprop_inplace nop_property nop_node \
|
|
sw_tree1 sw_states \
|
|
move_and_save mangle-layout nopulate \
|
|
open_pack rw_tree1 set_name setprop del_property del_node \
|
|
appendprop1 appendprop2 propname_escapes \
|
|
string_escapes references path-references phandle_format \
|
|
boot-cpuid incbin \
|
|
extra-terminating-null \
|
|
dtbs_equal_ordered \
|
|
dtb_reverse dtbs_equal_unordered \
|
|
add_subnode_with_nops path_offset_aliases \
|
|
utilfdt_test \
|
|
integer-expressions \
|
|
property_iterate \
|
|
subnode_iterate \
|
|
overlay overlay_bad_fixup \
|
|
check_path check_header
|
|
LIB_TESTS = $(LIB_TESTS_L:%=$(TESTS_PREFIX)%)
|
|
|
|
LIBTREE_TESTS_L = truncated_property truncated_string truncated_memrsv
|
|
LIBTREE_TESTS = $(LIBTREE_TESTS_L:%=$(TESTS_PREFIX)%)
|
|
|
|
DL_LIB_TESTS_L = asm_tree_dump value-labels
|
|
DL_LIB_TESTS = $(DL_LIB_TESTS_L:%=$(TESTS_PREFIX)%)
|
|
|
|
TESTS = $(LIB_TESTS) $(LIBTREE_TESTS) $(DL_LIB_TESTS)
|
|
|
|
TESTS_TREES_L = test_tree1.dtb
|
|
TESTS_TREES = $(TESTS_TREES_L:%=$(TESTS_PREFIX)%)
|
|
|
|
TESTS_TARGETS = $(TESTS) $(TESTS_TREES)
|
|
|
|
TESTS_DEPFILES = $(TESTS:%=%.d) \
|
|
$(addprefix $(TESTS_PREFIX),testutils.d trees.d dumptrees.d)
|
|
|
|
TESTS_CLEANFILES_L = *.output vglog.* vgcore.* *.dtb *.test.dts *.dtsv1 tmp.*
|
|
TESTS_CLEANFILES_L += dumptrees
|
|
TESTS_CLEANFILES = $(TESTS) $(TESTS_CLEANFILES_L:%=$(TESTS_PREFIX)%)
|
|
|
|
.PHONY: tests
|
|
tests: $(TESTS) $(TESTS_TREES)
|
|
|
|
$(LIB_TESTS): %: $(TESTS_PREFIX)testutils.o util.o $(LIBFDT_archive)
|
|
|
|
# Not necessary on all platforms; allow -ldl to be excluded instead of forcing
|
|
# other platforms to patch it out.
|
|
LIBDL = -ldl
|
|
$(DL_LIB_TESTS): %: %.o $(TESTS_PREFIX)testutils.o util.o $(LIBFDT_archive)
|
|
@$(VECHO) LD [libdl] $@
|
|
$(LINK.c) -o $@ $^ $(LIBDL)
|
|
|
|
$(LIBTREE_TESTS): %: $(TESTS_PREFIX)testutils.o $(TESTS_PREFIX)trees.o \
|
|
util.o $(LIBFDT_archive)
|
|
|
|
$(TESTS_PREFIX)dumptrees: $(TESTS_PREFIX)trees.o
|
|
|
|
$(TESTS_TREES): $(TESTS_PREFIX)dumptrees
|
|
@$(VECHO) DUMPTREES
|
|
cd $(TESTS_PREFIX); ./dumptrees >/dev/null
|
|
|
|
tests_clean:
|
|
@$(VECHO) CLEAN "(tests)"
|
|
rm -f $(STD_CLEANFILES:%=$(TESTS_PREFIX)%)
|
|
rm -f $(TESTS_CLEANFILES)
|
|
|
|
check: tests ${TESTS_BIN} $(TESTS_PYLIBFDT)
|
|
cd $(TESTS_PREFIX); ./run_tests.sh
|
|
|
|
checkm: tests ${TESTS_BIN} $(TESTS_PYLIBFDT)
|
|
cd $(TESTS_PREFIX); ./run_tests.sh -m 2>&1 | tee vglog.$$$$
|
|
|
|
checkv: tests ${TESTS_BIN} $(TESTS_PYLIBFDT)
|
|
cd $(TESTS_PREFIX); ./run_tests.sh -v
|
|
|
|
ifneq ($(DEPTARGETS),)
|
|
-include $(TESTS_DEPFILES)
|
|
endif
|
|
|