checksum revision 219903
1104349Sphk#!/bin/sh 2104349Sphk#- 3104349Sphk# Copyright (c) 2011 Nathan Whitehorn 4104349Sphk# All rights reserved. 5104349Sphk# 6104349Sphk# Redistribution and use in source and binary forms, with or without 7104349Sphk# modification, are permitted provided that the following conditions 8104349Sphk# are met: 9104349Sphk# 1. Redistributions of source code must retain the above copyright 10104349Sphk# notice, this list of conditions and the following disclaimer. 11104349Sphk# 2. Redistributions in binary form must reproduce the above copyright 12104349Sphk# notice, this list of conditions and the following disclaimer in the 13104349Sphk# documentation and/or other materials provided with the distribution. 14104349Sphk# 15104349Sphk# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16104349Sphk# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17104349Sphk# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18104349Sphk# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19104349Sphk# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20104349Sphk# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21104349Sphk# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22104349Sphk# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23104349Sphk# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24104349Sphk# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25104349Sphk# SUCH DAMAGE. 26104349Sphk# 27104349Sphk# $FreeBSD: head/usr.sbin/bsdinstall/scripts/checksum 219903 2011-03-23 13:43:56Z nwhitehorn $ 28104349Sphk 29104349Sphktest -f $BSDINSTALL_DISTDIR/MANIFEST || exit 0 30104349Sphk 31104349Sphkpercentage=0 32104349Sphkfor dist in $DISTRIBUTIONS; do 33104349Sphk distname=$(basename $dist .txz) 34104349Sphk eval "status_$distname=7" 35104349Sphk 36104349Sphk items="" 37104349Sphk for i in $DISTRIBUTIONS; do 38104349Sphk items="$items $i `eval echo \\\${status_$(basename $i .txz):-Pending}`" 39104349Sphk done 40104349Sphk dialog --backtitle "FreeBSD Installer" --title "Checksum Verification" \ 41104349Sphk --mixedgauge "Verifying checksums of selected distributions." \ 42104349Sphk 0 0 $percentage $items 43104349Sphk 44104349Sphk CK=`sha256 -q $BSDINSTALL_DISTDIR/$dist` 45104349Sphk awk -v checksum=$CK -v dist=$dist -v found=0 '{ 46104349Sphk if (dist == $1) { 47104349Sphk found = 1 48104349Sphk if (checksum == $2) 49104349Sphk exit(0) 50104349Sphk else 51104349Sphk exit(2) 52104349Sphk } 53104349Sphk } END {if (!found) exit(1);}' $BSDINSTALL_DISTDIR/MANIFEST 54104349Sphk 55104349Sphk CK_VALID=$? 56104349Sphk if [ $CK_VALID -le 1 ]; then 57104349Sphk if [ $CK_VALID -eq 0 ]; then 58104349Sphk eval "status_$distname=2" 59104349Sphk else 60104349Sphk eval "status_$distname=6" 61104349Sphk fi 62104349Sphk percentage=$(echo $percentage + 100/`echo $DISTRIBUTIONS | wc -w` | bc) 63104349Sphk else 64104349Sphk eval "status_$distname=1" 65104349Sphk dialog --backtitle "FreeBSD Installer" --title "Error" \ 66104349Sphk --msgbox "The checksum for $dist does not match. It may have become corrupted, and should be redownloaded." 0 0 67104349Sphk exit 1 68104349Sphk fi 69104349Sphkdone 70104349Sphk 71104349Sphkexit 0 72104349Sphk