X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=target%2Flinux%2Fipq40xx%2Fbase-files%2Flib%2Fupgrade%2Flinksys.sh;h=5d25c20ad713c3b1c54a08051d31f44cad70ce44;hb=6fc334cbdc2b1716786768c545b761b338962b43;hp=f1dc81f7c9d6771c7acb0634e406ff418bf62c5f;hpb=9cbc825b30a60c4c4b466301b87e15e59b107f24;p=openwrt%2Fstaging%2Fjow.git diff --git a/target/linux/ipq40xx/base-files/lib/upgrade/linksys.sh b/target/linux/ipq40xx/base-files/lib/upgrade/linksys.sh old mode 100755 new mode 100644 index f1dc81f7c9..5d25c20ad7 --- a/target/linux/ipq40xx/base-files/lib/upgrade/linksys.sh +++ b/target/linux/ipq40xx/base-files/lib/upgrade/linksys.sh @@ -47,6 +47,14 @@ linksys_get_target_firmware() { esac } +linksys_is_factory_image() { + local board=$(board_name) + board=${board##*,} + + # check matching footer signature + tail -c 256 $1 | grep -q -i "\.LINKSYS\.........${board}" +} + platform_do_upgrade_linksys() { local magic_long="$(get_magic_long "$1")" @@ -99,4 +107,14 @@ platform_do_upgrade_linksys() { echo "writing \"$1\" image to \"$part_label\"" get_image "$1" | mtd write - "$part_label" } + + [ "$magic_long" = "d00dfeed" ] && { + if ! linksys_is_factory_image "$1"; then + echo "factory image doesn't match device" + return 1 + fi + + echo "writing \"$1\" factory image to \"$part_label\"" + get_image "$1" | mtd -e "$part_label" write - "$part_label" + } }