From: Gabor Juhos <juhosg@openwrt.org>
Date: Fri, 26 Oct 2012 18:58:13 +0000 (+0000)
Subject: ar71xx: reject TP-Link images containing a bootloader
X-Git-Tag: reboot~12498
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=ff481a55183d69c0ab9470bf8fee20e80d0ecfaf;p=openwrt%2Fstaging%2Fxback.git

ar71xx: reject TP-Link images containing a bootloader

The original TP-Link firmware images can be flashed via
the sysupgrade command, however those may contain a
bootloader. Flashing such an image via sysupgrade
bricks the board, and it can't be recovered without
a serial console.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 33944
---

diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
index 066bfd4149..f1d95f6f6a 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -65,6 +65,10 @@ tplink_get_image_hwid() {
 	get_image "$@" | dd bs=4 count=1 skip=16 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
 }
 
+tplink_get_image_boot_size() {
+	get_image "$@" | dd bs=4 count=1 skip=37 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
+}
+
 platform_check_image() {
 	local board=$(ar71xx_board_name)
 	local magic="$(get_magic_word "$1")"
@@ -174,6 +178,14 @@ platform_check_image() {
 			return 1
 		}
 
+		local boot_size
+
+		boot_size=$(tplink_get_image_boot_size "$1")
+		[ "$boot_size" != "00000000" ] && {
+			echo "Invalid image, it contains a bootloader."
+			return 1
+		}
+
 		return 0
 		;;
 	wndr3700)