diff --git a/libfuzzer/split.sh b/libfuzzer/split.sh index da0a16be7..d4a0008fc 100755 --- a/libfuzzer/split.sh +++ b/libfuzzer/split.sh @@ -1,7 +1,11 @@ #!/bin/bash +# Split the file name into path and base name +path=$(dirname $1) +base=$(basename $1) + # Get the first 4 bytes from the file (which is the length of the program) -input="$(xxd -p -l 4 $1)" +input="$(xxd -p -l 4 $base)" # Convert from little endian input="${input:6:2}${input:4:2}${input:2:2}${input:0:2}" @@ -9,25 +13,25 @@ input="${input:6:2}${input:4:2}${input:2:2}${input:0:2}" length=$((16#$input)) # Extract the hash part from the file name -hash=$(echo $1 | cut -d'-' -f2-) +hash=$(echo $base | cut -d'-' -f2-) # Copy the program to a file named program-$hash echo "Extracting program-$hash..." -dd if=$1 of=program-$hash bs=1 skip=4 count=$length 2> /dev/null +dd if=$1 of=$path/program-$hash bs=1 skip=4 count=$length 2> /dev/null echo "Extracting memory-$hash..." # Copy the rest to a file named memory-$hash -dd if=$1 of=memory-$hash bs=1 skip=$((4 + $length)) 2> /dev/null +dd if=$1 of=$path/memory-$hash bs=1 skip=$((4 + $length)) 2> /dev/null echo "Disassembling program-$hash..." # Unassembly program using bin/ubpf-disassembler -bin/ubpf-disassembler program-$hash > program-$hash.asm +bin/ubpf-disassembler $path/program-$hash > $path/program-$hash.asm -echo "Program size: $(stat -c %s program-$hash)" -echo "Memory size: $(stat -c %s memory-$hash)" +echo "Program size: $(stat -c %s $path/program-$hash)" +echo "Memory size: $(stat -c %s $path/memory-$hash)" echo "Disassembled program:" -cat program-$hash.asm +cat $path/program-$hash.asm echo "Memory contents:" -xxd memory-$hash +xxd $path/memory-$hash