cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

test-bootconfig.sh (3993B)


      1#!/bin/sh
      2# SPDX-License-Identifier: GPL-2.0-only
      3
      4echo "Boot config test script"
      5
      6if [ -d "$1" ]; then
      7  TESTDIR=$1
      8else
      9  TESTDIR=.
     10fi
     11BOOTCONF=${TESTDIR}/bootconfig
     12ALIGN=4
     13
     14INITRD=`mktemp ${TESTDIR}/initrd-XXXX`
     15TEMPCONF=`mktemp ${TESTDIR}/temp-XXXX.bconf`
     16OUTFILE=`mktemp ${TESTDIR}/tempout-XXXX`
     17NG=0
     18
     19cleanup() {
     20  rm -f $INITRD $TEMPCONF $OUTFILE
     21  exit $NG
     22}
     23
     24trap cleanup EXIT TERM
     25
     26NO=1
     27
     28xpass() { # pass test command
     29  echo "test case $NO ($*)... "
     30  if ! ($@ && echo "\t\t[OK]"); then
     31     echo "\t\t[NG]"; NG=$((NG + 1))
     32  fi
     33  NO=$((NO + 1))
     34}
     35
     36xfail() { # fail test command
     37  echo "test case $NO ($*)... "
     38  if ! (! $@ && echo "\t\t[OK]"); then
     39     echo "\t\t[NG]"; NG=$((NG + 1))
     40  fi
     41  NO=$((NO + 1))
     42}
     43
     44echo "Basic command test"
     45xpass $BOOTCONF $INITRD
     46
     47echo "Delete command should success without bootconfig"
     48xpass $BOOTCONF -d $INITRD
     49
     50dd if=/dev/zero of=$INITRD bs=4096 count=1
     51echo "key = value;" > $TEMPCONF
     52bconf_size=$(stat -c %s $TEMPCONF)
     53initrd_size=$(stat -c %s $INITRD)
     54
     55echo "Apply command test"
     56xpass $BOOTCONF -a $TEMPCONF $INITRD
     57new_size=$(stat -c %s $INITRD)
     58
     59echo "Show command test"
     60xpass $BOOTCONF $INITRD
     61
     62echo "File size check"
     63total_size=$(expr $bconf_size + $initrd_size + 9 + 12 + $ALIGN - 1 )
     64total_size=$(expr $total_size / $ALIGN)
     65total_size=$(expr $total_size \* $ALIGN)
     66xpass test $new_size -eq $total_size
     67
     68echo "Apply command repeat test"
     69xpass $BOOTCONF -a $TEMPCONF $INITRD
     70
     71echo "File size check"
     72xpass test $new_size -eq $(stat -c %s $INITRD)
     73
     74echo "Delete command check"
     75xpass $BOOTCONF -d $INITRD
     76
     77echo "File size check"
     78new_size=$(stat -c %s $INITRD)
     79xpass test $new_size -eq $initrd_size
     80
     81echo "No error messge while applying"
     82dd if=/dev/zero of=$INITRD bs=4096 count=1
     83printf " \0\0\0 \0\0\0" >> $INITRD
     84$BOOTCONF -a $TEMPCONF $INITRD > $OUTFILE 2>&1
     85xfail grep -i "failed" $OUTFILE
     86xfail grep -i "error" $OUTFILE
     87
     88echo "Max node number check"
     89
     90echo -n > $TEMPCONF
     91for i in `seq 1 1024` ; do
     92   echo "node$i" >> $TEMPCONF
     93done
     94xpass $BOOTCONF -a $TEMPCONF $INITRD
     95
     96echo "badnode" >> $TEMPCONF
     97xfail $BOOTCONF -a $TEMPCONF $INITRD
     98
     99echo "Max filesize check"
    100
    101# Max size is 32767 (including terminal byte)
    102echo -n "data = \"" > $TEMPCONF
    103dd if=/dev/urandom bs=768 count=32 | base64 -w0 >> $TEMPCONF
    104echo "\"" >> $TEMPCONF
    105xfail $BOOTCONF -a $TEMPCONF $INITRD
    106
    107truncate -s 32764 $TEMPCONF
    108echo "\"" >> $TEMPCONF	# add 2 bytes + terminal ('\"\n\0')
    109xpass $BOOTCONF -a $TEMPCONF $INITRD
    110
    111echo "Adding same-key values"
    112cat > $TEMPCONF << EOF
    113key = bar, baz
    114key += qux
    115EOF
    116echo > $INITRD
    117
    118xpass $BOOTCONF -a $TEMPCONF $INITRD
    119$BOOTCONF $INITRD > $OUTFILE
    120xpass grep -q "bar" $OUTFILE
    121xpass grep -q "baz" $OUTFILE
    122xpass grep -q "qux" $OUTFILE
    123
    124echo "Override same-key values"
    125cat > $TEMPCONF << EOF
    126key = bar, baz
    127key := qux
    128EOF
    129echo > $INITRD
    130
    131xpass $BOOTCONF -a $TEMPCONF $INITRD
    132$BOOTCONF $INITRD > $OUTFILE
    133xfail grep -q "bar" $OUTFILE
    134xfail grep -q "baz" $OUTFILE
    135xpass grep -q "qux" $OUTFILE
    136
    137echo "Double/single quotes test"
    138echo "key = '\"string\"';" > $TEMPCONF
    139$BOOTCONF -a $TEMPCONF $INITRD
    140$BOOTCONF $INITRD > $TEMPCONF
    141cat $TEMPCONF
    142xpass grep \'\"string\"\' $TEMPCONF
    143
    144echo "Repeat same-key tree"
    145cat > $TEMPCONF << EOF
    146foo
    147bar
    148foo { buz }
    149EOF
    150echo > $INITRD
    151
    152xpass $BOOTCONF -a $TEMPCONF $INITRD
    153$BOOTCONF $INITRD > $OUTFILE
    154xpass grep -q "bar" $OUTFILE
    155
    156
    157echo "Remove/keep tailing spaces"
    158cat > $TEMPCONF << EOF
    159foo = val     # comment
    160bar = "val2 " # comment
    161EOF
    162echo > $INITRD
    163
    164xpass $BOOTCONF -a $TEMPCONF $INITRD
    165$BOOTCONF $INITRD > $OUTFILE
    166xfail grep -q val[[:space:]] $OUTFILE
    167xpass grep -q val2[[:space:]] $OUTFILE
    168
    169echo "=== expected failure cases ==="
    170for i in samples/bad-* ; do
    171  xfail $BOOTCONF -a $i $INITRD
    172done
    173
    174echo "=== expected success cases ==="
    175for i in samples/good-* ; do
    176  xpass $BOOTCONF -a $i $INITRD
    177done
    178
    179
    180echo
    181echo "=== Summary ==="
    182echo "# of Passed: $(expr $NO - $NG - 1)"
    183echo "# of Failed: $NG"
    184
    185echo
    186if [ $NG -eq 0 ]; then
    187	echo "All tests passed"
    188else
    189	echo "$NG tests failed"
    190	exit 1
    191fi