diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2021-12-29 15:08:28 +1100 |
---|---|---|
committer | David Gibson <david@gibson.dropbear.id.au> | 2021-12-29 17:04:18 +1100 |
commit | ff5afb96d0c08133b6f709a197b8bda023531757 (patch) | |
tree | bec484328c30edc7132abba86a80d06bf250f0fc /tests | |
parent | ca7294434309930076ff99ff4f0c817499f50f5a (diff) | |
download | dtc-ff5afb96d0c08133b6f709a197b8bda023531757.zip dtc-ff5afb96d0c08133b6f709a197b8bda023531757.tar.gz dtc-ff5afb96d0c08133b6f709a197b8bda023531757.tar.bz2 |
Handle integer overflow in check_property_phandle_args()
If the corresponding '#xxx-cells' value is much too large, an integer
overflow can prevent the checks in check_property_phandle_args() from
correctly determining that the checked property is too short for the
given cells value. This leads to an infinite loops.
This patch fixes the bug, and adds a testcase for it. Further
information in https://github.com/dgibson/dtc/issues/64
Reported-by: Anciety <anciety@pku.edu.cn>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/phandle-args-overflow.dts | 18 | ||||
-rwxr-xr-x | tests/run_tests.sh | 3 |
2 files changed, 21 insertions, 0 deletions
diff --git a/tests/phandle-args-overflow.dts b/tests/phandle-args-overflow.dts new file mode 100644 index 0000000..8c8c5d7 --- /dev/null +++ b/tests/phandle-args-overflow.dts @@ -0,0 +1,18 @@ +/dts-v1/; + +/* + * https://github.com/dgibson/dtc/issues/64 + * + * Certain dtc versions had a bug where this input caused an infinite + * loop in check_property_phandle_args(). + * + */ + +/ { + clocks = <&ref &ref>; + + ref: poc { + phandle = <1>; + #clock-cells = <0xffffffff>; + }; +}; diff --git a/tests/run_tests.sh b/tests/run_tests.sh index 11068e1..5e4e7c4 100755 --- a/tests/run_tests.sh +++ b/tests/run_tests.sh @@ -513,6 +513,9 @@ libfdt_tests () { run_dtc_test -I fs -O dtb -o fs.test_tree1.test.dtb $FSBASE/test_tree1 run_test dtbs_equal_unordered -m fs.test_tree1.test.dtb test_tree1.dtb + ## https://github.com/dgibson/dtc/issues/64 + check_tests "$SRCDIR/phandle-args-overflow.dts" clocks_property + # check full tests for good in test_tree1.dtb; do run_test check_full $good |