2018-12-11 21:24:46 +01:00
|
|
|
#!/usr/bin/env bash
|
2018-12-11 23:44:01 +01:00
|
|
|
|
|
|
|
|
usage() {
|
|
|
|
|
echo "Run makefile until termination condition"
|
|
|
|
|
echo "usage: int_loop.sh [args]"
|
|
|
|
|
echo "--check-args <args> int_loop_check.py args"
|
2018-12-12 01:17:37 +01:00
|
|
|
# intpips ingests all segbits files at once and does a push at the end
|
|
|
|
|
# other loopers do a push every pass
|
2018-12-12 01:46:05 +01:00
|
|
|
echo "--iter-pushdb make pushdb after successful make database as opposed to end"
|
2018-12-11 23:44:01 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
check_args=
|
2018-12-12 01:46:05 +01:00
|
|
|
iter_pushdb=false
|
|
|
|
|
end_pushdb=true
|
2018-12-11 23:44:01 +01:00
|
|
|
while [[ $# -gt 0 ]]; do
|
|
|
|
|
case "$1" in
|
|
|
|
|
--check-args)
|
|
|
|
|
check_args=$2
|
|
|
|
|
shift
|
|
|
|
|
shift
|
|
|
|
|
;;
|
2018-12-12 01:46:05 +01:00
|
|
|
--iter-pushdb)
|
|
|
|
|
iter_pushdb=true
|
|
|
|
|
end_pushdb=false
|
2018-12-12 01:17:37 +01:00
|
|
|
shift
|
|
|
|
|
;;
|
2018-12-11 23:44:01 +01:00
|
|
|
-h|--help)
|
|
|
|
|
usage
|
|
|
|
|
exit 0
|
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
echo "Unrecognized argument"
|
|
|
|
|
usage
|
|
|
|
|
exit 1
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
done
|
|
|
|
|
|
2018-12-12 04:22:16 +01:00
|
|
|
# Quick solves are sloppy
|
|
|
|
|
# Never push them in as they may be under solved
|
|
|
|
|
if [ "$QUICK" = "Y" ] ; then
|
|
|
|
|
iter_pushdb=false
|
|
|
|
|
end_pushdb=false
|
|
|
|
|
fi
|
|
|
|
|
|
2018-12-11 21:24:46 +01:00
|
|
|
set -ex
|
|
|
|
|
MAKE=${MAKE:-make}
|
|
|
|
|
echo $MAKE
|
2018-12-12 03:30:19 +01:00
|
|
|
i=1
|
2018-12-11 23:11:55 +01:00
|
|
|
while true; do
|
2018-12-12 06:36:42 +01:00
|
|
|
${MAKE} ITER=$i cleanprj
|
|
|
|
|
${MAKE} ITER=$i build/todo.txt
|
2018-12-11 23:44:01 +01:00
|
|
|
if python3 ${XRAY_DIR}/fuzzers/int_loop_check.py $check_args ; then
|
2018-12-11 23:11:55 +01:00
|
|
|
break
|
|
|
|
|
fi
|
2018-12-20 02:05:20 +01:00
|
|
|
if [ -f build/todo/timeout ] ; then
|
2018-12-12 00:12:21 +01:00
|
|
|
echo "ERROR: timeout"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
2018-12-11 23:11:55 +01:00
|
|
|
|
2018-12-12 06:36:42 +01:00
|
|
|
if ${MAKE} ITER=$i database; then
|
2018-12-12 01:46:05 +01:00
|
|
|
if $iter_pushdb ; then
|
2018-12-12 06:36:42 +01:00
|
|
|
${MAKE} pushdb
|
2018-12-12 01:17:37 +01:00
|
|
|
fi
|
2018-12-11 21:24:46 +01:00
|
|
|
fi;
|
|
|
|
|
if [ "$QUICK" = "Y" ] ; then
|
|
|
|
|
break;
|
|
|
|
|
fi
|
2018-12-12 03:30:19 +01:00
|
|
|
|
|
|
|
|
i=$((i+1));
|
2018-12-11 21:24:46 +01:00
|
|
|
done;
|
2018-12-12 01:46:05 +01:00
|
|
|
if $end_pushdb ; then
|
2018-12-12 06:36:42 +01:00
|
|
|
${MAKE} pushdb
|
2018-12-12 01:46:05 +01:00
|
|
|
fi
|
2018-12-11 21:24:46 +01:00
|
|
|
exit 0
|
|
|
|
|
|