From d1b4a8cfcfb8f3965b79d199993bc847004a7419 Mon Sep 17 00:00:00 2001 From: Sven Eckelmann Date: Tue, 17 May 2016 17:51:35 +0200 Subject: [PATCH] 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 --- .../ar71xx/base-files/lib/upgrade/openmesh.sh | 95 ++++++++++--------- 1 file changed, 51 insertions(+), 44 deletions(-) diff --git a/target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh b/target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh index 209cdaaf90..e026946716 100644 --- a/target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh @@ -36,6 +36,56 @@ platform_add_ramfs_ubootenv() } append sysupgrade_pre_upgrade platform_add_ramfs_ubootenv +platform_check_image_target_openmesh() +{ + img_board_target="$1" + + case "$img_board_target" in + OM2P) + [ "$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" ] && 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" ] && 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" ] && 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" ] && 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" ] && 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 + ;; + *) + echo "Invalid board target ($img_board_target). Use the correct image for this platform" + return 1 + ;; + esac +} + platform_check_image_openmesh() { local img_magic=$1 @@ -56,50 +106,7 @@ platform_check_image_openmesh() ;; esac - case "$img_board_target" in - OM2P) - [ "$board" = "om2p" ] && break - [ "$board" = "om2pv2" ] && break - [ "$board" = "om2p-lc" ] && break - [ "$board" = "om2p-hs" ] && break - [ "$board" = "om2p-hsv2" ] && break - 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 - 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 - 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 - 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 - 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 - echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform" - return 1 - ;; - *) - echo "Invalid board target ($img_board_target). Use the correct image for 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"