ar71xx: Move OpenMesh image target validation into subfunction

The platform_check_image_openmesh function used break statements to signal
that the board name matched the image target. This worked because the
sysupgrade binary checked the image inside a loop. The break statement
stopped the loop and skipped any additional check.

Instead the check should be done without such sideeffects by simply
combining the board names and image targets. Only a mismatch should cause a
negative result for the caller and skipping of the additional checks.

Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
master
Sven Eckelmann 8 years ago committed by Felix Fietkau
parent 6150c15ad1
commit d1b4a8cfcf
  1. 71
      target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh

@ -36,62 +36,46 @@ platform_add_ramfs_ubootenv()
}
append sysupgrade_pre_upgrade platform_add_ramfs_ubootenv
platform_check_image_openmesh()
platform_check_image_target_openmesh()
{
local img_magic=$1
local img_path=$2
local fw_printenv=/usr/sbin/fw_printenv
local img_board_target= img_num_files= i=0
local cfg_name= kernel_name= rootfs_name=
case "$img_magic" in
# Combined Extended Image v1
43453031)
img_board_target=$(trim $(dd if="$img_path" bs=4 skip=1 count=8 2>/dev/null))
img_num_files=$(trim $(dd if="$img_path" bs=2 skip=18 count=1 2>/dev/null))
;;
*)
echo "Invalid image ($img_magic). Use combined extended images on this platform"
return 1
;;
esac
img_board_target="$1"
case "$img_board_target" in
OM2P)
[ "$board" = "om2p" ] && break
[ "$board" = "om2pv2" ] && break
[ "$board" = "om2p-lc" ] && break
[ "$board" = "om2p-hs" ] && break
[ "$board" = "om2p-hsv2" ] && break
[ "$board" = "om2p" ] && return 0
[ "$board" = "om2pv2" ] && return 0
[ "$board" = "om2p-lc" ] && return 0
[ "$board" = "om2p-hs" ] && return 0
[ "$board" = "om2p-hsv2" ] && return 0
echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform"
return 1
;;
OM5P)
[ "$board" = "om5p" ] && break
[ "$board" = "om5p-an" ] && break
[ "$board" = "om5p" ] && return 0
[ "$board" = "om5p-an" ] && return 0
echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform"
return 1
;;
OM5PAC)
[ "$board" = "om5p-ac" ] && break
[ "$board" = "om5p-acv2" ] && break
[ "$board" = "om5p-ac" ] && return 0
[ "$board" = "om5p-acv2" ] && return 0
echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform"
return 1
;;
MR1750)
[ "$board" = "mr1750" ] && break
[ "$board" = "mr1750" ] && return 0
echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform"
return 1
;;
MR600)
[ "$board" = "mr600" ] && break
[ "$board" = "mr600v2" ] && break
[ "$board" = "mr600" ] && return 0
[ "$board" = "mr600v2" ] && return 0
echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform"
return 1
;;
MR900)
[ "$board" = "mr900" ] && break
[ "$board" = "mr900v2" ] && break
[ "$board" = "mr900" ] && return 0
[ "$board" = "mr900v2" ] && return 0
echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform"
return 1
;;
@ -100,6 +84,29 @@ platform_check_image_openmesh()
return 1
;;
esac
}
platform_check_image_openmesh()
{
local img_magic=$1
local img_path=$2
local fw_printenv=/usr/sbin/fw_printenv
local img_board_target= img_num_files= i=0
local cfg_name= kernel_name= rootfs_name=
case "$img_magic" in
# Combined Extended Image v1
43453031)
img_board_target=$(trim $(dd if="$img_path" bs=4 skip=1 count=8 2>/dev/null))
img_num_files=$(trim $(dd if="$img_path" bs=2 skip=18 count=1 2>/dev/null))
;;
*)
echo "Invalid image ($img_magic). Use combined extended images on this platform"
return 1
;;
esac
platform_check_image_target_openmesh "$img_board_target" || return 1
[ $img_num_files -ne 3 ] && {
echo "Invalid number of embedded images ($img_num_files). Use the correct image for this platform"

Loading…
Cancel
Save