aboutsummaryrefslogtreecommitdiffstats
path: root/target
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2014-01-24 11:59:32 +0000
committerGabor Juhos <juhosg@openwrt.org>2014-01-24 11:59:32 +0000
commitcb3f2947b16927ad6b937ecd598089caa2272978 (patch)
tree967166d505166c27d147866bf49bf883b4695796 /target
parent4d7fd74a792b7cddf7be9e75fa347a33e63f2727 (diff)
downloadupstream-cb3f2947b16927ad6b937ecd598089caa2272978.tar.gz
upstream-cb3f2947b16927ad6b937ecd598089caa2272978.tar.bz2
upstream-cb3f2947b16927ad6b937ecd598089caa2272978.zip
ar71xx: image: fix size verification in the CatFiles macro
The macro checks the size of the rootfs image even if the second parameter of the macro contains the size of an eraseblock. It is wrong because the size of the kernel image will be adjusted to the next eraseblock and the resulting image might be too large. Fix the macro to check the size of the final image instead of the rootfs image. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39383 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target')
-rw-r--r--target/linux/ar71xx/image/Makefile18
1 files changed, 13 insertions, 5 deletions
diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile
index 2a003a82b3..39e935d11b 100644
--- a/target/linux/ar71xx/image/Makefile
+++ b/target/linux/ar71xx/image/Makefile
@@ -141,13 +141,21 @@ define CatFiles
echo "Warning: $(5) is too big (> $(4) bytes)" >&2; \
rm -f $(5); \
fi; \
- else if [ $(2) -gt 262144 -a `stat -c%s "$(1)"` -gt $(2) ]; then \
- echo "Warning: $(1) is too big (> $(2) bytes)" >&2; \
- else if [ `stat -c%s $(3)` -gt $(4) ]; then \
- echo "Warning: $(3) is too big (> $(4) bytes)" >&2; \
+ else if [ $(2) -gt 262144 ]; then \
+ if [ `stat -c%s "$(1)"` -gt $(2) ]; then \
+ echo "Warning: $(1) is too big (> $(2) bytes)" >&2; \
+ else if [ `stat -c%s $(3)` -gt $(4) ]; then \
+ echo "Warning: $(3) is too big (> $(4) bytes)" >&2; \
+ else \
+ ( dd if=$(1) bs=$(2) conv=sync; dd if=$(3) ) > $(5); \
+ fi; fi; \
else \
( dd if=$(1) bs=$(2) conv=sync; dd if=$(3) ) > $(5); \
- fi; fi; fi
+ if [ `stat -c%s $(5)` -gt $(4) ]; then \
+ echo "Warning: $(5) is too big (> $(4) bytes)" >&2; \
+ rm -f $(5); \
+ fi; \
+ fi; fi
endef
Sysupgrade/KR=$(call CatFiles,$(2),$(3),$(KDIR)/root.$(1),$(4),$(call sysupname,$(1),$(5)))