wok annotate BootProg/stuff/bootprog.sh @ rev 25463

Up expat (2.4.9) fixes CVE-2022-40674
author Pascal Bellard <pascal.bellard@slitaz.org>
date Thu Sep 29 20:05:23 2022 +0000 (19 months ago)
parents d4a851cd7f09
children 2155b2665e26
rev   line source
pascal@24476 1 #!/bin/sh
pascal@24476 2
pascal@25463 3 set -- "$1" "${2:-startup.bin}"
pascal@25454 4 [ ! -e "$1" ] && cat<<S && exit 2
pascal@25463 5 Usage: [FS=<FAT12|FAT16|FAT32|EXFAT>] $0 device [file]
pascal@25463 6 Example: $0 /dev/fd0 $2
pascal@25454 7 S
pascal@25454 8 r="dd if=$1 count"
pascal@25454 9 w="dd of=$1 bs=1 conv=notrunc seek"
pascal@25454 10 while read c o b f
pascal@25463 11 do [ "${FS:-$($r=5 bs=1 skip=$c)}" = "$f" ] || continue
pascal@24942 12 echo "Install $f bootsector on $1."
pascal@25454 13 for a in "$o skip=$((o+b)) count=$((512-o))" "0 skip=$b count=11"
pascal@25454 14 do sed '1,/^exit/d' $0 | unlzma | $w=$a; done
pascal@25456 15 echo -n $f | $w=$c
pascal@25463 16 echo "Set boot file $2" && echo -n "$2" | case "$f" in
pascal@24942 17 E*) sed 's| |.|;s| ||g' | cat - /dev/zero;;
pascal@24942 18 *) tr a-z A-Z | sed 's|\.| |;s|^\(.\{8\}\) *|\1|;s|$| |'
pascal@25454 19 esac | $w=499 count=11
pascal@25454 20 case "$f" in
pascal@25454 21 *32) $w=1536 if=$1 count=512;;
pascal@25454 22 E*) $r=11 bs=1b | od -vAn -tu1 -w1 - | LANG=C awk 'BEGIN { a=0;i=-1;m=0xFFFFFFFE }
pascal@24942 23 { if (++i!=106 && i!=107 && i!=112) a=or(and(lshift(a,31),m),and(rshift(a,1),m/2))+$1 }
pascal@25454 24 END { b=a/256;c=b/256; for (;i>0;i-=44) printf "%c%c%c%c",a%256,b%256,c%256,(c/256)%256 }' | $w=5632
pascal@25454 25 esac
pascal@24476 26 exit 0
pascal@25454 27 done<<S 2>/dev/null
pascal@25456 28 54 59 0 FAT12
pascal@25456 29 54 59 0 FAT16
pascal@25456 30 82 87 512 FAT32
pascal@24942 31 3 113 1024 EXFAT
pascal@25454 32 S
pascal@24476 33 exit 1