Author: emaste
Date: Fri Jan  8 16:37:22 2016
New Revision: 293425
URL: https://svnweb.freebsd.org/changeset/base/293425

Log:
  Add safety belt for boot1.efi file size
  
  Reviewed by:  smh
  Sponsored by: The FreeBSD Foundation
  Differential Revision:        https://reviews.freebsd.org/D4833

Modified:
  head/sys/boot/efi/boot1/Makefile
  head/sys/boot/efi/boot1/generate-fat.sh

Modified: head/sys/boot/efi/boot1/Makefile
==============================================================================
--- head/sys/boot/efi/boot1/Makefile    Fri Jan  8 16:25:11 2016        
(r293424)
+++ head/sys/boot/efi/boot1/Makefile    Fri Jan  8 16:37:22 2016        
(r293425)
@@ -79,8 +79,15 @@ boot1.o: ${.CURDIR}/../../common/ufsread
 # created by generate-fat.sh
 
 .include "${.CURDIR}/Makefile.fat"
+BOOT1_MAXSIZE?=        131072
 
 boot1.efifat: boot1.efi
+       @set -- `ls -l boot1.efi`; \
+       x=$$(($$5-${BOOT1_MAXSIZE})); \
+       if [ $$x -ge 0 ]; then \
+           echo "boot1 $$x bytes too large; regenerate FAT templates?" >&2 ;\
+           exit 1; \
+       fi
        echo ${.OBJDIR}
        uudecode ${.CURDIR}/fat-${MACHINE}.tmpl.bz2.uu
        mv fat-${MACHINE}.tmpl.bz2 ${.TARGET}.bz2

Modified: head/sys/boot/efi/boot1/generate-fat.sh
==============================================================================
--- head/sys/boot/efi/boot1/generate-fat.sh     Fri Jan  8 16:25:11 2016        
(r293424)
+++ head/sys/boot/efi/boot1/generate-fat.sh     Fri Jan  8 16:37:22 2016        
(r293425)
@@ -55,9 +55,20 @@ BOOT1_OFFSET=$(hd $OUTPUT_FILE | grep 'B
 # Convert to number of blocks
 BOOT1_OFFSET=$(echo 0x$BOOT1_OFFSET | awk '{printf("%x\n",$1/512);}')
 
+# Record maximum boot1 size in bytes
+case $BOOT1_SIZE in
+*k)
+       BOOT1_MAXSIZE=$(expr ${BOOT1_SIZE%k} '*' 1024)
+       ;;
+*)
+       BOOT1_MAXSIZE=$BOOT1_SIZE
+       ;;
+esac
+
 echo '# This file autogenerated by generate-fat.sh - DO NOT EDIT' > 
Makefile.fat
 echo '# $FreeBSD$' >> Makefile.fat
 echo "BOOT1_OFFSET=0x$BOOT1_OFFSET" >> Makefile.fat
+echo "BOOT1_MAXSIZE=$BOOT1_MAXSIZE" >> Makefile.fat
 
 bzip2 $OUTPUT_FILE
 echo 'FAT template boot filesystem created by generate-fat.sh' > 
$OUTPUT_FILE.bz2.uu
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to