Backport TP-Link image compatibility checks (verify hardware id & revision) from AR71xx platform and adopt it for v2/v3 image header.
Use new functionality for Archer C20/C20i sysupgrade image verification. Signed-off-by: Sergey Ryazanov <ryazanov....@gmail.com> --- target/linux/ramips/base-files/lib/ramips.sh | 18 ++++++++++++ .../ramips/base-files/lib/upgrade/platform.sh | 32 ++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh index d0b9bb1262..0e5d74908d 100755 --- a/target/linux/ramips/base-files/lib/ramips.sh +++ b/target/linux/ramips/base-files/lib/ramips.sh @@ -6,6 +6,24 @@ RAMIPS_BOARD_NAME= RAMIPS_MODEL= +tplink_get_v2_hwid() { + local part + + part=$(find_mtd_part firmware) + [ -z "$part" ] && return 1 + + dd if=$part bs=4 count=1 skip=13 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' +} + +tplink_get_v2_mid() { + local part + + part=$(find_mtd_part firmware) + [ -z "$part" ] && return 1 + + dd if=$part bs=4 count=1 skip=14 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' +} + ramips_board_detect() { local machine local name diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh index e08c45d8db..9892241358 100755 --- a/target/linux/ramips/base-files/lib/upgrade/platform.sh +++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh @@ -2,8 +2,22 @@ # Copyright (C) 2010 OpenWrt.org # +. /lib/ramips.sh + PART_NAME=firmware +tplink_get_image_v2_hwid() { + get_image "$@" | dd bs=4 count=1 skip=13 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' +} + +tplink_get_image_v2_mid() { + get_image "$@" | dd bs=4 count=1 skip=14 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' +} + +tplink_get_image_v2_boot_size() { + get_image "$@" | dd bs=4 count=1 skip=34 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' +} + platform_check_image() { local board=$(board_name) local magic="$(get_magic_long "$1")" @@ -240,6 +254,24 @@ platform_check_image() { echo "Invalid image type." return 1 } + + local hwid=$(tplink_get_v2_hwid) + local mid=$(tplink_get_v2_mid) + local imagehwid=$(tplink_get_image_v2_hwid "$1") + local imagemid=$(tplink_get_image_v2_mid "$1") + + [ "$hwid" != "$imagehwid" -o "$mid" != "$imagemid" ] && { + echo "Invalid image, hardware ID mismatch, hw:$hwid $mid image:$imagehwid $imagemid." + return 1 + } + + local boot_size=$(tplink_get_image_v2_boot_size "$1") + + [ "$boot_size" != "00000000" ] && { + echo "Invalid image, it contains a bootloader." + return 1 + } + return 0 ;; cy-swr1100|\ -- 2.13.0 _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev