1*8617a60dSAndroid Build Coastguard Worker#!/bin/sh -u 2*8617a60dSAndroid Build Coastguard Worker# Copyright 2010 The ChromiumOS Authors 3*8617a60dSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 4*8617a60dSAndroid Build Coastguard Worker# found in the LICENSE file. 5*8617a60dSAndroid Build Coastguard Worker# 6*8617a60dSAndroid Build Coastguard Worker# Test the chromeos TPM recovery script by faking the entire execution 7*8617a60dSAndroid Build Coastguard Worker# environment. 8*8617a60dSAndroid Build Coastguard Worker 9*8617a60dSAndroid Build Coastguard Workerrm -rf tpm-recovery-test-workdir 10*8617a60dSAndroid Build Coastguard Workermkdir tpm-recovery-test-workdir 11*8617a60dSAndroid Build Coastguard Workercd tpm-recovery-test-workdir 12*8617a60dSAndroid Build Coastguard Worker 13*8617a60dSAndroid Build Coastguard Workertest_kind= 14*8617a60dSAndroid Build Coastguard Workerif [ $# -ge 1 ]; then 15*8617a60dSAndroid Build Coastguard Worker test_kind="$1" 16*8617a60dSAndroid Build Coastguard Workerfi 17*8617a60dSAndroid Build Coastguard Worker 18*8617a60dSAndroid Build Coastguard Workerif [ "$test_kind" != "" -a "$test_kind" != "fake" ]; then 19*8617a60dSAndroid Build Coastguard Worker echo "$0: usage: $0 [fake]" 20*8617a60dSAndroid Build Coastguard Worker echo "With fake as the argument, use a simulated TPM instead of the real one" 21*8617a60dSAndroid Build Coastguard Workerfi 22*8617a60dSAndroid Build Coastguard Worker 23*8617a60dSAndroid Build Coastguard Workerif [ "$test_kind" = "fake" ]; then 24*8617a60dSAndroid Build Coastguard Worker export USR_BIN=. 25*8617a60dSAndroid Build Coastguard Worker export USR_SBIN=. 26*8617a60dSAndroid Build Coastguard Worker export USR_LOCAL_BIN=. 27*8617a60dSAndroid Build Coastguard Worker export USR_LOCAL_SBIN=. 28*8617a60dSAndroid Build Coastguard Worker export DOT_RECOVERY=.recovery 29*8617a60dSAndroid Build Coastguard Worker export ACPI_DIR=. 30*8617a60dSAndroid Build Coastguard Worker ctr=../chromeos-tpm-recovery 31*8617a60dSAndroid Build Coastguard Worker tpmc=./tpmc 32*8617a60dSAndroid Build Coastguard Workerelse 33*8617a60dSAndroid Build Coastguard Worker ctr=chromeos-tpm-recovery 34*8617a60dSAndroid Build Coastguard Worker tpmc=tpmc 35*8617a60dSAndroid Build Coastguard Workerfi 36*8617a60dSAndroid Build Coastguard Worker 37*8617a60dSAndroid Build Coastguard Worker# For simplicity, build the permanent environment as if we prepared to run the 38*8617a60dSAndroid Build Coastguard Worker# fake test, even if we're running the test on a real TPM. 39*8617a60dSAndroid Build Coastguard Worker 40*8617a60dSAndroid Build Coastguard Workerecho > .recovery 41*8617a60dSAndroid Build Coastguard Workerecho 3 > BINF.0 42*8617a60dSAndroid Build Coastguard Workerecho 0 > CHSW 43*8617a60dSAndroid Build Coastguard Worker 44*8617a60dSAndroid Build Coastguard Workerexport NVRAM_SPACE_OVERHEAD=200 45*8617a60dSAndroid Build Coastguard Workerspace_overhead=$NVRAM_SPACE_OVERHEAD 46*8617a60dSAndroid Build Coastguard Worker 47*8617a60dSAndroid Build Coastguard Worker# build tpmc 48*8617a60dSAndroid Build Coastguard Workercat > tpmc <<"EOF" 49*8617a60dSAndroid Build Coastguard Worker#!/bin/sh -u 50*8617a60dSAndroid Build Coastguard Worker# Fake tpmc program 51*8617a60dSAndroid Build Coastguard Worker 52*8617a60dSAndroid Build Coastguard Workerdefinespace () { 53*8617a60dSAndroid Build Coastguard Worker index=$2 54*8617a60dSAndroid Build Coastguard Worker size=$3 55*8617a60dSAndroid Build Coastguard Worker permissions=$4 56*8617a60dSAndroid Build Coastguard Worker space_overhead=$NVRAM_SPACE_OVERHEAD 57*8617a60dSAndroid Build Coastguard Worker 58*8617a60dSAndroid Build Coastguard Worker if [ -e space.$index.data -a -e tpm-owned ]; then 59*8617a60dSAndroid Build Coastguard Worker echo "cannot redefine space without auth" 60*8617a60dSAndroid Build Coastguard Worker fi 61*8617a60dSAndroid Build Coastguard Worker 62*8617a60dSAndroid Build Coastguard Worker totalsize=$(( $size + $space_overhead )) 63*8617a60dSAndroid Build Coastguard Worker free=$(cat nvram.freespace) 64*8617a60dSAndroid Build Coastguard Worker 65*8617a60dSAndroid Build Coastguard Worker if [ $totalsize -gt $free ]; then 66*8617a60dSAndroid Build Coastguard Worker return 17 # NO_SPACE 67*8617a60dSAndroid Build Coastguard Worker fi 68*8617a60dSAndroid Build Coastguard Worker 69*8617a60dSAndroid Build Coastguard Worker if [ $index != 0xf004 ]; then 70*8617a60dSAndroid Build Coastguard Worker echo $size > space.$index.size 71*8617a60dSAndroid Build Coastguard Worker echo $permissions > space.$index.perm 72*8617a60dSAndroid Build Coastguard Worker for i in $(seq 1 $(($size))); do 73*8617a60dSAndroid Build Coastguard Worker echo -n "ff " >> space.$index.data 74*8617a60dSAndroid Build Coastguard Worker done 75*8617a60dSAndroid Build Coastguard Worker echo $(( $free - $totalsize )) > nvram.freespace 76*8617a60dSAndroid Build Coastguard Worker fi 77*8617a60dSAndroid Build Coastguard Worker return 0 78*8617a60dSAndroid Build Coastguard Worker} 79*8617a60dSAndroid Build Coastguard Worker 80*8617a60dSAndroid Build Coastguard Workercase $1 in 81*8617a60dSAndroid Build Coastguard Worker 82*8617a60dSAndroid Build Coastguard Worker clear) 83*8617a60dSAndroid Build Coastguard Worker rm -f tpm-owned 84*8617a60dSAndroid Build Coastguard Worker ;; 85*8617a60dSAndroid Build Coastguard Worker 86*8617a60dSAndroid Build Coastguard Worker enable) 87*8617a60dSAndroid Build Coastguard Worker # boring 88*8617a60dSAndroid Build Coastguard Worker ;; 89*8617a60dSAndroid Build Coastguard Worker 90*8617a60dSAndroid Build Coastguard Worker activate) 91*8617a60dSAndroid Build Coastguard Worker # boring 92*8617a60dSAndroid Build Coastguard Worker ;; 93*8617a60dSAndroid Build Coastguard Worker 94*8617a60dSAndroid Build Coastguard Worker definespace) 95*8617a60dSAndroid Build Coastguard Worker definespace $* 96*8617a60dSAndroid Build Coastguard Worker ;; 97*8617a60dSAndroid Build Coastguard Worker 98*8617a60dSAndroid Build Coastguard Worker getp) 99*8617a60dSAndroid Build Coastguard Worker echo space blah has permissions $(cat space.$2.perm) 100*8617a60dSAndroid Build Coastguard Worker ;; 101*8617a60dSAndroid Build Coastguard Worker 102*8617a60dSAndroid Build Coastguard Worker read) 103*8617a60dSAndroid Build Coastguard Worker index=$2 104*8617a60dSAndroid Build Coastguard Worker size=$3 105*8617a60dSAndroid Build Coastguard Worker maxsize=$(cat space.$index.size) 106*8617a60dSAndroid Build Coastguard Worker if [ $(($size > $maxsize)) -eq 1 ]; then 107*8617a60dSAndroid Build Coastguard Worker echo "size $size too large for space (max is $maxsize)" 108*8617a60dSAndroid Build Coastguard Worker exit 1 109*8617a60dSAndroid Build Coastguard Worker fi 110*8617a60dSAndroid Build Coastguard Worker dd if=space.$index.data bs=1 count=$(($3 * 3)) 2> /dev/null 111*8617a60dSAndroid Build Coastguard Worker ;; 112*8617a60dSAndroid Build Coastguard Worker 113*8617a60dSAndroid Build Coastguard Worker write) 114*8617a60dSAndroid Build Coastguard Worker args="$@" 115*8617a60dSAndroid Build Coastguard Worker index=$2 116*8617a60dSAndroid Build Coastguard Worker bytes="$(echo $args | sed 's/[^ ]* [^ ]* //')" 117*8617a60dSAndroid Build Coastguard Worker size=$(echo $bytes | wc -w) 118*8617a60dSAndroid Build Coastguard Worker maxsize=$(cat space.$index.size) 119*8617a60dSAndroid Build Coastguard Worker if [ $(($size > $maxsize)) -eq 1 ]; then 120*8617a60dSAndroid Build Coastguard Worker echo "size $size too large for space (max is $(($maxsize)))" 121*8617a60dSAndroid Build Coastguard Worker exit 1 122*8617a60dSAndroid Build Coastguard Worker fi 123*8617a60dSAndroid Build Coastguard Worker re=$(echo "$bytes " | sed 's/././g') 124*8617a60dSAndroid Build Coastguard Worker sed "s/$re/$bytes /" < space.$index.data > _tmp_ 125*8617a60dSAndroid Build Coastguard Worker mv _tmp_ space.$index.data 126*8617a60dSAndroid Build Coastguard Worker ;; 127*8617a60dSAndroid Build Coastguard Worker 128*8617a60dSAndroid Build Coastguard Worker getpf) 129*8617a60dSAndroid Build Coastguard Worker echo "disable 0" 130*8617a60dSAndroid Build Coastguard Worker echo "deactivated 0" 131*8617a60dSAndroid Build Coastguard Worker echo "nvLocked 1" 132*8617a60dSAndroid Build Coastguard Worker echo "physicalPresenceLifetimeLock 1" 133*8617a60dSAndroid Build Coastguard Worker echo "physicalPresenceHWEnable 0" 134*8617a60dSAndroid Build Coastguard Worker echo "physicalPresenceCMDEnable 1" 135*8617a60dSAndroid Build Coastguard Worker ;; 136*8617a60dSAndroid Build Coastguard Worker 137*8617a60dSAndroid Build Coastguard Worker getvf) 138*8617a60dSAndroid Build Coastguard Worker echo "bGlobalLock 1" 139*8617a60dSAndroid Build Coastguard Worker echo "physicalPresence 1" 140*8617a60dSAndroid Build Coastguard Worker echo "physicalPresenceLock 0" 141*8617a60dSAndroid Build Coastguard Worker ;; 142*8617a60dSAndroid Build Coastguard Worker 143*8617a60dSAndroid Build Coastguard Worker ppfin) 144*8617a60dSAndroid Build Coastguard Worker # boring 145*8617a60dSAndroid Build Coastguard Worker ;; 146*8617a60dSAndroid Build Coastguard Worker 147*8617a60dSAndroid Build Coastguard Worker ppon) 148*8617a60dSAndroid Build Coastguard Worker # boring 149*8617a60dSAndroid Build Coastguard Worker ;; 150*8617a60dSAndroid Build Coastguard Worker 151*8617a60dSAndroid Build Coastguard Worker *) 152*8617a60dSAndroid Build Coastguard Worker echo "tpmc: invalid command $1" 153*8617a60dSAndroid Build Coastguard Worker exit 1 154*8617a60dSAndroid Build Coastguard Worker ;; 155*8617a60dSAndroid Build Coastguard Workeresac 156*8617a60dSAndroid Build Coastguard Worker 157*8617a60dSAndroid Build Coastguard WorkerEOF 158*8617a60dSAndroid Build Coastguard Worker 159*8617a60dSAndroid Build Coastguard Worker# build nvtool 160*8617a60dSAndroid Build Coastguard Workercat > tpm-nvtool <<"EOF" 161*8617a60dSAndroid Build Coastguard Worker#!/bin/sh -u 162*8617a60dSAndroid Build Coastguard Worker 163*8617a60dSAndroid Build Coastguard Workerspace_overhead=$NVRAM_SPACE_OVERHEAD 164*8617a60dSAndroid Build Coastguard Worker 165*8617a60dSAndroid Build Coastguard Workerprint_space () { 166*8617a60dSAndroid Build Coastguard Worker local index=$1 167*8617a60dSAndroid Build Coastguard Worker printf "# NV Index 0x%08x" $(( $index )) 168*8617a60dSAndroid Build Coastguard Worker echo " uninteresting random garbage" 169*8617a60dSAndroid Build Coastguard Worker echo " further random garbage" 170*8617a60dSAndroid Build Coastguard Worker echo "" 171*8617a60dSAndroid Build Coastguard Worker} 172*8617a60dSAndroid Build Coastguard Worker 173*8617a60dSAndroid Build Coastguard Workerif [ "$1" = "--release" ]; then 174*8617a60dSAndroid Build Coastguard Worker if [ "$2" != "--index" -o \ 175*8617a60dSAndroid Build Coastguard Worker "$4" != "--owner_password" ]; then 176*8617a60dSAndroid Build Coastguard Worker echo "sorry, picky tpm-nvtool" 177*8617a60dSAndroid Build Coastguard Worker exit 1 178*8617a60dSAndroid Build Coastguard Worker fi 179*8617a60dSAndroid Build Coastguard Worker index=$3 180*8617a60dSAndroid Build Coastguard Worker if [ ! -f tpm-owned ]; then 181*8617a60dSAndroid Build Coastguard Worker echo "tpm is unowned" 182*8617a60dSAndroid Build Coastguard Worker exit 1 183*8617a60dSAndroid Build Coastguard Worker fi 184*8617a60dSAndroid Build Coastguard Worker size=$(cat space.$index.size) 185*8617a60dSAndroid Build Coastguard Worker free=$(cat nvram.freespace) 186*8617a60dSAndroid Build Coastguard Worker rm space.$index.* 187*8617a60dSAndroid Build Coastguard Worker echo $(( $size + $space_overhead + $free )) > nvram.freespace 188*8617a60dSAndroid Build Coastguard Workerelif [ "$1" = "--list" ]; then 189*8617a60dSAndroid Build Coastguard Worker for s in space.*.data; do 190*8617a60dSAndroid Build Coastguard Worker print_space $(echo $s | sed -e "s/[^.]*\.//" -e "s/\..*//") 191*8617a60dSAndroid Build Coastguard Worker done 192*8617a60dSAndroid Build Coastguard Workerfi 193*8617a60dSAndroid Build Coastguard WorkerEOF 194*8617a60dSAndroid Build Coastguard Worker 195*8617a60dSAndroid Build Coastguard Worker# build tpm_takeownership 196*8617a60dSAndroid Build Coastguard Workercat > tpm_takeownership <<"EOF" 197*8617a60dSAndroid Build Coastguard Worker#!/bin/sh -u 198*8617a60dSAndroid Build Coastguard Workerif [ -f tpm-owned ]; then 199*8617a60dSAndroid Build Coastguard Worker echo "tpm is already owned" 200*8617a60dSAndroid Build Coastguard Worker exit 1 201*8617a60dSAndroid Build Coastguard Workerfi 202*8617a60dSAndroid Build Coastguard Workerecho > tpm-owned 203*8617a60dSAndroid Build Coastguard WorkerEOF 204*8617a60dSAndroid Build Coastguard Worker 205*8617a60dSAndroid Build Coastguard Worker# build tcsd 206*8617a60dSAndroid Build Coastguard Workercat > tcsd <<"EOF" 207*8617a60dSAndroid Build Coastguard Worker#!/bin/sh -u 208*8617a60dSAndroid Build Coastguard Workertrap "{ rm tcsd_is_running; }" EXIT 209*8617a60dSAndroid Build Coastguard Workerecho > tcsd_is_running 210*8617a60dSAndroid Build Coastguard Workersleep 365d 211*8617a60dSAndroid Build Coastguard WorkerEOF 212*8617a60dSAndroid Build Coastguard Worker 213*8617a60dSAndroid Build Coastguard Workertcsd_pid=0 214*8617a60dSAndroid Build Coastguard Worker 215*8617a60dSAndroid Build Coastguard Workerstart_tcsd () { 216*8617a60dSAndroid Build Coastguard Worker if [ $tcsd_pid -ne 0 ]; then 217*8617a60dSAndroid Build Coastguard Worker echo TCSD is already started 218*8617a60dSAndroid Build Coastguard Worker exit 1 219*8617a60dSAndroid Build Coastguard Worker fi 220*8617a60dSAndroid Build Coastguard Worker tcsd -f & 221*8617a60dSAndroid Build Coastguard Worker tcsd_pid=$! 222*8617a60dSAndroid Build Coastguard Worker sleep 2 223*8617a60dSAndroid Build Coastguard Worker} 224*8617a60dSAndroid Build Coastguard Worker 225*8617a60dSAndroid Build Coastguard Workerstop_tcsd () { 226*8617a60dSAndroid Build Coastguard Worker if [ $tcsd_pid -eq 0 ]; then 227*8617a60dSAndroid Build Coastguard Worker echo TCSD is already stopped 228*8617a60dSAndroid Build Coastguard Worker exit 1 229*8617a60dSAndroid Build Coastguard Worker fi 230*8617a60dSAndroid Build Coastguard Worker kill $tcsd_pid 231*8617a60dSAndroid Build Coastguard Worker sleep 0.5 232*8617a60dSAndroid Build Coastguard Worker kill $tcsd_pid > /dev/null 2>&1 233*8617a60dSAndroid Build Coastguard Worker sleep 0.5 234*8617a60dSAndroid Build Coastguard Worker wait $tcsd_pid > /dev/null 2>&1 # we trust that tcsd will agree to die 235*8617a60dSAndroid Build Coastguard Worker tcsd_pid=0 236*8617a60dSAndroid Build Coastguard Worker} 237*8617a60dSAndroid Build Coastguard Worker 238*8617a60dSAndroid Build Coastguard Workertpm_clear_and_reenable () { 239*8617a60dSAndroid Build Coastguard Worker tpmc clear 240*8617a60dSAndroid Build Coastguard Worker tpmc enable 241*8617a60dSAndroid Build Coastguard Worker tpmc activate 242*8617a60dSAndroid Build Coastguard Worker} 243*8617a60dSAndroid Build Coastguard Worker 244*8617a60dSAndroid Build Coastguard Workertakeownership () { 245*8617a60dSAndroid Build Coastguard Worker if [ "$test_kind" = "fake" ]; then 246*8617a60dSAndroid Build Coastguard Worker touch tpm_owned 247*8617a60dSAndroid Build Coastguard Worker else 248*8617a60dSAndroid Build Coastguard Worker tpm_clear_and_reenable 249*8617a60dSAndroid Build Coastguard Worker start_tcsd 250*8617a60dSAndroid Build Coastguard Worker tpm_takeownership -y -z 251*8617a60dSAndroid Build Coastguard Worker stop_tcsd 252*8617a60dSAndroid Build Coastguard Worker fi 253*8617a60dSAndroid Build Coastguard Worker} 254*8617a60dSAndroid Build Coastguard Worker 255*8617a60dSAndroid Build Coastguard Workerremove_chromeos_spaces () { 256*8617a60dSAndroid Build Coastguard Worker if [ "$test_kind" = "fake" ]; then 257*8617a60dSAndroid Build Coastguard Worker rm -f space.* 258*8617a60dSAndroid Build Coastguard Worker echo 1500 > nvram.freespace 259*8617a60dSAndroid Build Coastguard Worker else 260*8617a60dSAndroid Build Coastguard Worker takeownership 261*8617a60dSAndroid Build Coastguard Worker start_tcsd 262*8617a60dSAndroid Build Coastguard Worker tpm-nvtool --release --index 0x1007 --owner_password "" 263*8617a60dSAndroid Build Coastguard Worker tpm-nvtool --release --index 0x1008 --owner_password "" 264*8617a60dSAndroid Build Coastguard Worker stop_tcsd 265*8617a60dSAndroid Build Coastguard Worker tpm_clear_and_reenable 266*8617a60dSAndroid Build Coastguard Worker fi 267*8617a60dSAndroid Build Coastguard Worker} 268*8617a60dSAndroid Build Coastguard Worker 269*8617a60dSAndroid Build Coastguard Workerchmod 755 tpmc tpm-nvtool tpm_takeownership tcsd 270*8617a60dSAndroid Build Coastguard Worker 271*8617a60dSAndroid Build Coastguard Workerecho "starting test, results in $(pwd)/log" 272*8617a60dSAndroid Build Coastguard Workerecho "starting TPM recovery test" > log 273*8617a60dSAndroid Build Coastguard Worker 274*8617a60dSAndroid Build Coastguard Workerif ps ax | grep "tcs[d]"; then 275*8617a60dSAndroid Build Coastguard Worker echo "a tcsd is process appears to be running, please kill it first" 276*8617a60dSAndroid Build Coastguard Worker exit 1 277*8617a60dSAndroid Build Coastguard Workerfi 278*8617a60dSAndroid Build Coastguard Worker 279*8617a60dSAndroid Build Coastguard Worker# normal run 280*8617a60dSAndroid Build Coastguard Workertest_normal_run () { 281*8617a60dSAndroid Build Coastguard Worker echo "TEST: normal run" >> log 282*8617a60dSAndroid Build Coastguard Worker 283*8617a60dSAndroid Build Coastguard Worker remove_chromeos_spaces 284*8617a60dSAndroid Build Coastguard Worker $tpmc definespace 0x1007 0xa 0x8001 285*8617a60dSAndroid Build Coastguard Worker $tpmc definespace 0x1008 0xd 0x1 286*8617a60dSAndroid Build Coastguard Worker $tpmc write 0x1008 01 4c 57 52 47 287*8617a60dSAndroid Build Coastguard Worker takeownership 288*8617a60dSAndroid Build Coastguard Worker 289*8617a60dSAndroid Build Coastguard Worker $ctr log 290*8617a60dSAndroid Build Coastguard Worker} 291*8617a60dSAndroid Build Coastguard Worker 292*8617a60dSAndroid Build Coastguard Worker# Kernel space with wrong ID 293*8617a60dSAndroid Build Coastguard Workertest_wrong_id () { 294*8617a60dSAndroid Build Coastguard Worker echo "TEST: bad kernel space ID" >> log 295*8617a60dSAndroid Build Coastguard Worker 296*8617a60dSAndroid Build Coastguard Worker remove_chromeos_spaces 297*8617a60dSAndroid Build Coastguard Worker $tpmc definespace 0x1007 0xa 0x8001 298*8617a60dSAndroid Build Coastguard Worker $tpmc definespace 0x1008 0xd 0x1 299*8617a60dSAndroid Build Coastguard Worker takeownership 300*8617a60dSAndroid Build Coastguard Worker 301*8617a60dSAndroid Build Coastguard Worker $ctr log 302*8617a60dSAndroid Build Coastguard Worker} 303*8617a60dSAndroid Build Coastguard Worker 304*8617a60dSAndroid Build Coastguard Worker# Kernel space with wrong size 305*8617a60dSAndroid Build Coastguard Workertest_wrong_size () { 306*8617a60dSAndroid Build Coastguard Worker echo "TEST: bad kernel space size" >> log 307*8617a60dSAndroid Build Coastguard Worker 308*8617a60dSAndroid Build Coastguard Worker remove_chromeos_spaces 309*8617a60dSAndroid Build Coastguard Worker $tpmc definespace 0x1007 0xa 0x8001 310*8617a60dSAndroid Build Coastguard Worker $tpmc definespace 0x1008 0xc 0x1 311*8617a60dSAndroid Build Coastguard Worker takeownership 312*8617a60dSAndroid Build Coastguard Worker 313*8617a60dSAndroid Build Coastguard Worker $ctr log 314*8617a60dSAndroid Build Coastguard Worker} 315*8617a60dSAndroid Build Coastguard Worker 316*8617a60dSAndroid Build Coastguard Worker# Kernel space with wrong size AND bogus space to exhaust nvram 317*8617a60dSAndroid Build Coastguard Workertest_wrong_size_hog () { 318*8617a60dSAndroid Build Coastguard Worker echo "TEST: bad kernel space size and no room" >> log 319*8617a60dSAndroid Build Coastguard Worker 320*8617a60dSAndroid Build Coastguard Worker remove_chromeos_spaces 321*8617a60dSAndroid Build Coastguard Worker $tpmc definespace 0x1007 0xa 0x8001 322*8617a60dSAndroid Build Coastguard Worker $tpmc definespace 0x1008 0x1 0x1 323*8617a60dSAndroid Build Coastguard Worker if [ "$test_kind" = "fake" ]; then 324*8617a60dSAndroid Build Coastguard Worker space_hog_size=$(( $(cat nvram.freespace) - $space_overhead - 1 )) 325*8617a60dSAndroid Build Coastguard Worker echo "remaining $(cat nvram.freespace) bytes" >> log 326*8617a60dSAndroid Build Coastguard Worker else 327*8617a60dSAndroid Build Coastguard Worker space_hog_size=$(( $(tpm-nvsize) - 2 )) 328*8617a60dSAndroid Build Coastguard Worker fi 329*8617a60dSAndroid Build Coastguard Worker echo "hogging $(( $space_hog_size )) bytes" >> log 330*8617a60dSAndroid Build Coastguard Worker $tpmc definespace 0xcafe $(printf "%#x" $space_hog_size) 0x1 \ 331*8617a60dSAndroid Build Coastguard Worker || echo "hogging failed!" >> log 332*8617a60dSAndroid Build Coastguard Worker takeownership 333*8617a60dSAndroid Build Coastguard Worker 334*8617a60dSAndroid Build Coastguard Worker $ctr log 335*8617a60dSAndroid Build Coastguard Worker} 336*8617a60dSAndroid Build Coastguard Worker 337*8617a60dSAndroid Build Coastguard Workertest_normal_run 338*8617a60dSAndroid Build Coastguard Workertest_wrong_id 339*8617a60dSAndroid Build Coastguard Workertest_wrong_size 340*8617a60dSAndroid Build Coastguard Workertest_wrong_size_hog 341*8617a60dSAndroid Build Coastguard Worker 342*8617a60dSAndroid Build Coastguard Workerecho "test completed" >> log 343*8617a60dSAndroid Build Coastguard Workerecho "test completed" 344