diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2015-04-21 11:21:34 +0000 |
---|---|---|
committer | Rafał Miłecki <zajec5@gmail.com> | 2015-04-21 11:21:34 +0000 |
commit | 680b5b613de98a6dcea259e1ea96b167de0f23c0 (patch) | |
tree | 85a998fbac17600e46c25aad8d9c29e4d3350dce /target | |
parent | 495a1b4e5ffbe97c72da4b37dd843658ad16e721 (diff) | |
download | upstream-680b5b613de98a6dcea259e1ea96b167de0f23c0.tar.gz upstream-680b5b613de98a6dcea259e1ea96b167de0f23c0.tar.bz2 upstream-680b5b613de98a6dcea259e1ea96b167de0f23c0.zip |
bcm53xx: sysupgrade: check if new kernel fits partition size
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@45547 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target')
-rw-r--r-- | target/linux/bcm53xx/base-files/lib/upgrade/platform.sh | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh b/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh index e53c2513d2..88629549dc 100644 --- a/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh @@ -152,12 +152,17 @@ platform_pre_upgrade() { echo "Unable to find \"linux\" partition size" exit 1 } - linux_length=$((0x$linux_length + 28)) + linux_length=$((0x$linux_length)) + local kernel_length=$(wc -c $dir/kernel | cut -d ' ' -f 1) + [ $kernel_length -gt $linux_length ] && { + echo "New kernel doesn't fit \"linux\" partition." + return + } rm -f /tmp/null.bin rm -f /tmp/kernel.trx touch /tmp/null.bin otrx create /tmp/kernel.trx \ - -f $dir/kernel -b $linux_length \ + -f $dir/kernel -b $(($linux_length + 28)) \ -f /tmp/null.bin # Prepare UBI image (drop unwanted extra blocks) |