Add instructions on evaluating challenges (#821)

This commit is contained in:
Evan Downing
2025-06-11 15:15:20 -04:00
committed by GitHub
parent 512a66f021
commit 4e2a65b167
3 changed files with 320 additions and 183 deletions
+10 -6
View File
@@ -4,11 +4,11 @@
Follow the install instructions for the required dependencies:
* [Docker install guide](https://docs.docker.com/engine/install/ubuntu/)
* [kubectl install guide](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/)
* [helm install guide](https://helm.sh/docs/intro/install/):
* [minikube install guide](https://minikube.sigs.k8s.io/docs/start/?arch=%2Flinux%2Fx86-64%2Fstable%2Fdebian+package)
* Git LFS for some tests
* [Docker install guide](https://docs.docker.com/engine/install/ubuntu/)
* [kubectl install guide](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/)
* [helm install guide](https://helm.sh/docs/intro/install/):
* [minikube install guide](https://minikube.sigs.k8s.io/docs/start/?arch=%2Flinux%2Fx86-64%2Fstable%2Fdebian+package)
* Git LFS for some tests
## Configuration
@@ -119,7 +119,7 @@ kubectl port-forward -n crs service/buttercup-competition-api 31323:1323
```
```shell
./orchestrator/scripts/round_2_sim.sh
./orchestrator/scripts/challenge.sh
```
Check that patches get submitted to the bundler.
@@ -135,3 +135,7 @@ kubectl get pods -n crs
kubectl exec -it -n crs <pod-name> -- /bin/bash
```
## Run Unscored Challenges
See [UNSCORED.md](UNSCORED.md)
+142
View File
@@ -0,0 +1,142 @@
# Unscored
This document serves as instructions on running each challenge from the unscored rounds.
We want to verify that our CRS **still** finds vulnerabilities and patches we have ground-truth for.
Consider this an extra validation apart from our unit and regression tests.
A list of vulnerabilities to find and patch is in this [spreadsheet](https://docs.google.com/spreadsheets/d/1y9Bj0ficMp6VvVz6bCgqYZPqv36l0Yhvxs0D_xuKgDY/edit).
## Setup
* Set up minikube locally on your machine (see [README.md](README.md)).
* `cd deployment && make up`
* Wait for all components to be `Running`: `watch 'kubectl get pods -n crs'`
* `kubectl port-forward -n crs service/buttercup-competition-api 31323:1323`
## Steps
* Run CRS on a challenge: `./orchestrator/scripts/challenge.sh`
* Validate Vulnerabilities and Patches
* We found the correct vulnerability if the ground-truth patch fixes the vulnerability.
* We found the correct patch if the ground-truth vulnerability gets fixed by the patch.
* Put the PoV blobs and Patch files into this [folder](https://drive.google.com/drive/folders/1nkOVqQJc1u15VFTboquax1CH_98RQGnS).
## Example
### Validate the correct Vulnerability and Patch
```shell
git clone git@github.com:aixcc-finals/example-libpng.git
cd example-libpng/
git checkout challenges/lp-delta-01
cd ../
git clone git@github.com:aixcc-finals/oss-fuzz-aixcc.git
cd oss-fuzz-aixcc/
git checkout challenge-state/lp-delta-01
# Build fuzzers
python3 infra/helper.py build_image --pull libpng
python3 infra/helper.py build_fuzzers --clean --sanitizer address --engine libfuzzer libpng ../example-libpng/
python3 infra/helper.py check_build --sanitizer address --engine libfuzzer libpng
# Observe crash
python3 infra/helper.py reproduce libpng libpng_read_fuzzer ../example-libpng/.aixcc/vulns/vuln_0/blobs/data.bin
# Rebuild with patch
cd ../example-libpng/
patch < .aixcc/vulns/vuln_0/patches/good_patch_1.diff
cd ../oss-fuzz-aixcc/
python3 infra/helper.py build_fuzzers --clean --sanitizer address --engine libfuzzer libpng ../example-libpng/
# Observe that crash is prevented
python3 infra/helper.py reproduce libpng libpng_read_fuzzer ../example-libpng/.aixcc/vulns/vuln_0/blobs/data.bin
# Reset challenge
cd ../example-libpng/
git reset --hard HEAD
cd ../oss-fuzz-aixcc/
python3 infra/helper.py build_fuzzers --clean --sanitizer address --engine libfuzzer libpng ../example-libpng/
```
### Submit challenge
* `./orchestrator/scripts/challenge.sh single lp_delta_01`
* `kubectl port-forward -n crs service/buttercup-redis-master 16379:6379`
* Access `redis` server
* `cd common/`
* Note: need to run `uv venv` the first time and `uv sync` after changes have been made.
* `source .venv/bin/activate`
* `buttercup-util --help`
* `buttercup-util --redis_url redis://localhost:16379 list_queues`
* `buttercup-util --redis_url redis://localhost:16379 read_queue tasks_ready_queue`
### Check if we found a Vulnerability and Patch
* Check for crashes: `buttercup-util --redis_url redis://localhost:16379 read_queue confirmed_vulnerabilities_queue`
* Copy crash input file:
* `buttercup-util --redis_url redis://localhost:16379 read_queue confirmed_vulnerabilities_queue | grep "crash_input_path"`
* `kubectl get pods -n crs | grep fuzzer`
* `kubectl cp crs/<fuzzer-bot-name>:<crash-path> crash`
* Check for patches: `buttercup-util --redis_url redis://localhost:16379 read_queue patches_queue`
* Copy patch file:
* `buttercup-util --redis_url redis://localhost:16379 read_queue patches_queue | grep "patch:" > patch.diff`
* Modify `patch.diff`. In vim: `:%s/\\n/\r/g`
### Validate our Vulernability and Patch
```shell
cd oss-fuzz-aixcc/
# Observe your crash
python3 infra/helper.py reproduce libpng libpng_read_fuzzer ../common/crash
# Rebuild with correct patch
cd ../example-libpng/
patch < .aixcc/vulns/vuln_0/patches/good_patch_1.diff
cd ../oss-fuzz-aixcc/
python3 infra/helper.py build_fuzzers --clean --sanitizer address --engine libfuzzer libpng ../example-libpng/
# Observe if your crash is prevented
python3 infra/helper.py reproduce libpng libpng_read_fuzzer ../common/crash
# Reset challenge
cd ../example-libpng/
git reset --hard HEAD
cd ../oss-fuzz-aixcc/
python3 infra/helper.py build_fuzzers --clean --sanitizer address --engine libfuzzer libpng ../example-libpng/
# Observe the correct crash
python3 infra/helper.py reproduce libpng libpng_read_fuzzer ../example-libpng/.aixcc/vulns/vuln_0/blobs/data.bin
# Rebuild with your patch
cd ../example-libpng/
patch < ../common/patch.diff
cd ../oss-fuzz-aixcc/
python3 infra/helper.py build_fuzzers --clean --sanitizer address --engine libfuzzer libpng ../example-libpng/
# Observe if the correct crash is prevented
python3 infra/helper.py reproduce libpng libpng_read_fuzzer ../example-libpng/.aixcc/vulns/vuln_0/blobs/data.bin
# Reset challenge
cd ../example-libpng/
git reset --hard HEAD
cd ../oss-fuzz-aixcc/
python3 infra/helper.py build_fuzzers --clean --sanitizer address --engine libfuzzer libpng ../example-libpng/
```
### Upload our Vulnerability and Patch files to drive folder for future reference (above).
@@ -7,43 +7,7 @@ hours=$((60 * $minutes))
full_set_duration=$((24 * $hours))
delta_set_duration=$((8 * $hours))
declare -A freerdp_full=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-freerdp.git"
["challenge_repo_head_ref"]="challenges/fp-full-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/fp-full-01"
["fuzz_tooling_project_name"]="freerdp"
["duration"]=$full_set_duration
)
declare -A libxml2_full=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-libxml2.git"
["challenge_repo_head_ref"]="challenges/lx-full-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/lx-full-01"
["fuzz_tooling_project_name"]="libxml2"
["duration"]=$full_set_duration
)
declare -A libxml2_full_updated=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-libxml2.git"
["challenge_repo_head_ref"]="challenges/lx-full-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="aixcc-afc"
["fuzz_tooling_project_name"]="libxml2"
["duration"]=$full_set_duration
)
declare -A sqlite_full=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-sqlite3.git"
["challenge_repo_head_ref"]="challenges/sq-full-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/sq-full-01"
["fuzz_tooling_project_name"]="sqlite3"
["duration"]=$full_set_duration
)
declare -A commons_compress_full=(
declare -A cc_full_01=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-commons-compress.git"
["challenge_repo_head_ref"]="challenges/cc-full-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
@@ -52,104 +16,7 @@ declare -A commons_compress_full=(
["duration"]=$full_set_duration
)
declare -A zookeeper_full=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-zookeeper.git"
["challenge_repo_head_ref"]="challenges/zk-full-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/zk-full-01"
["fuzz_tooling_project_name"]="zookeeper"
["duration"]=$full_set_duration
)
declare -A dropbear_full=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-dropbear.git"
["challenge_repo_head_ref"]="challenges/db-full-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/db-full-01"
["fuzz_tooling_project_name"]="dropbear"
["duration"]=$full_set_duration
)
declare -A freerdp_delta_1=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-freerdp.git"
["challenge_repo_base_ref"]="a92cc0f3ebc3d3f4cf5b6097920a391e9b5fcfcf"
["challenge_repo_head_ref"]="challenges/fp-delta-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/fp-delta-01"
["fuzz_tooling_project_name"]="freerdp"
["duration"]=$delta_set_duration
)
declare -A libxml2_delta_2=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-libxml2.git"
["challenge_repo_base_ref"]="0f876b983249cd3fb32b53d405f5985e83d8c3bd"
["challenge_repo_head_ref"]="challenges/lx-delta-02"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/lx-delta-02"
["fuzz_tooling_project_name"]="libxml2"
["duration"]=$delta_set_duration
)
declare -A integration_test_delta_1=(
["challenge_repo_url"]="git@github.com:aixcc-finals/integration-test.git"
["challenge_repo_base_ref"]="4a714359c60858e3821bd478dc846de1d04dc977"
["challenge_repo_head_ref"]="challenges/integration-test-delta-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/integration-test-delta-01"
["fuzz_tooling_project_name"]="integration-test"
["duration"]=$delta_set_duration
)
declare -A integration_test_full=(
["challenge_repo_url"]="git@github.com:aixcc-finals/integration-test.git"
["challenge_repo_head_ref"]="challenges/integration-test-delta-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/integration-test-delta-01"
["fuzz_tooling_project_name"]="integration-test"
["duration"]=$delta_set_duration
)
declare -A libpng_delta_1=(
["challenge_repo_url"]="git@github.com:aixcc-finals/example-libpng.git"
["challenge_repo_base_ref"]="5bf8da2d7953974e5dfbd778429c3affd461f51a"
["challenge_repo_head_ref"]="challenges/lp-delta-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/lp-delta-01"
["fuzz_tooling_project_name"]="libpng"
["duration"]=$delta_set_duration
)
declare -A sqlite_delta_1=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-sqlite3.git"
["challenge_repo_base_ref"]="6a3e7f57f00f0a2b6b89b0db7990e3df47175372"
["challenge_repo_head_ref"]="challenges/sq-delta-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/sq-delta-01"
["fuzz_tooling_project_name"]="sqlite3"
["duration"]=$delta_set_duration
)
declare -A libxml2_delta_1=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-libxml2.git"
["challenge_repo_base_ref"]="39ce264d546f93a0ddb7a1d7987670b8b905c165"
["challenge_repo_head_ref"]="challenges/lx-delta-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/lx-delta-01"
["fuzz_tooling_project_name"]="libxml2"
["duration"]=$delta_set_duration
)
declare -A zookeeper_delta_1=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-zookeeper.git"
["challenge_repo_base_ref"]="f6f34f6d5b6d67205c34de617a0b99fe11e3d323"
["challenge_repo_head_ref"]="challenges/zk-delta-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/zk-delta-01"
["fuzz_tooling_project_name"]="zookeeper"
["duration"]=$delta_set_duration
)
declare -A commons_compress_delta_2=(
declare -A cc_delta_02=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-commons-compress.git"
["challenge_repo_base_ref"]="154edd0066d1aaf18daafb88253cacbf39017d61"
["challenge_repo_head_ref"]="challenges/cc-delta-02"
@@ -159,7 +26,7 @@ declare -A commons_compress_delta_2=(
["duration"]=$delta_set_duration
)
declare -A commons_compress_delta_3=(
declare -A cc_delta_03=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-commons-compress.git"
["challenge_repo_base_ref"]="6e608498013784abb6878cad7906c2ddc41e45f1"
["challenge_repo_head_ref"]="challenges/cc-delta-03"
@@ -169,6 +36,130 @@ declare -A commons_compress_delta_3=(
["duration"]=$delta_set_duration
)
declare -A db_full_01=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-dropbear.git"
["challenge_repo_head_ref"]="challenges/db-full-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/db-full-01"
["fuzz_tooling_project_name"]="dropbear"
["duration"]=$full_set_duration
)
declare -A fp_full_01=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-freerdp.git"
["challenge_repo_head_ref"]="challenges/fp-full-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/fp-full-01"
["fuzz_tooling_project_name"]="freerdp"
["duration"]=$full_set_duration
)
declare -A fp_delta_01=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-freerdp.git"
["challenge_repo_base_ref"]="a92cc0f3ebc3d3f4cf5b6097920a391e9b5fcfcf"
["challenge_repo_head_ref"]="challenges/fp-delta-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/fp-delta-01"
["fuzz_tooling_project_name"]="freerdp"
["duration"]=$delta_set_duration
)
declare -A integration_test_delta_01=(
["challenge_repo_url"]="git@github.com:aixcc-finals/integration-test.git"
["challenge_repo_base_ref"]="4a714359c60858e3821bd478dc846de1d04dc977"
["challenge_repo_head_ref"]="challenges/integration-test-delta-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/integration-test-delta-01"
["fuzz_tooling_project_name"]="integration-test"
["duration"]=$delta_set_duration
)
declare -A lp_delta_01=(
["challenge_repo_url"]="git@github.com:aixcc-finals/example-libpng.git"
["challenge_repo_base_ref"]="5bf8da2d7953974e5dfbd778429c3affd461f51a"
["challenge_repo_head_ref"]="challenges/lp-delta-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/lp-delta-01"
["fuzz_tooling_project_name"]="libpng"
["duration"]=$delta_set_duration
)
declare -A lx_full_01=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-libxml2.git"
["challenge_repo_head_ref"]="challenges/lx-full-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/lx-full-01"
["fuzz_tooling_project_name"]="libxml2"
["duration"]=$full_set_duration
)
declare -A lx_delta_01=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-libxml2.git"
["challenge_repo_base_ref"]="39ce264d546f93a0ddb7a1d7987670b8b905c165"
["challenge_repo_head_ref"]="challenges/lx-delta-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/lx-delta-01"
["fuzz_tooling_project_name"]="libxml2"
["duration"]=$delta_set_duration
)
declare -A lx_delta_02=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-libxml2.git"
["challenge_repo_base_ref"]="0f876b983249cd3fb32b53d405f5985e83d8c3bd"
["challenge_repo_head_ref"]="challenges/lx-delta-02"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/lx-delta-02"
["fuzz_tooling_project_name"]="libxml2"
["duration"]=$delta_set_duration
)
declare -A lx_full_updated=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-libxml2.git"
["challenge_repo_head_ref"]="challenges/lx-full-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="aixcc-afc"
["fuzz_tooling_project_name"]="libxml2"
["duration"]=$full_set_duration
)
declare -A sq_full_01=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-sqlite3.git"
["challenge_repo_head_ref"]="challenges/sq-full-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/sq-full-01"
["fuzz_tooling_project_name"]="sqlite3"
["duration"]=$full_set_duration
)
declare -A sq_delta_01=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-sqlite3.git"
["challenge_repo_base_ref"]="6a3e7f57f00f0a2b6b89b0db7990e3df47175372"
["challenge_repo_head_ref"]="challenges/sq-delta-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/sq-delta-01"
["fuzz_tooling_project_name"]="sqlite3"
["duration"]=$delta_set_duration
)
declare -A zk_full_01=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-zookeeper.git"
["challenge_repo_head_ref"]="challenges/zk-full-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/zk-full-01"
["fuzz_tooling_project_name"]="zookeeper"
["duration"]=$full_set_duration
)
declare -A zk_delta_01=(
["challenge_repo_url"]="git@github.com:aixcc-finals/afc-zookeeper.git"
["challenge_repo_base_ref"]="f6f34f6d5b6d67205c34de617a0b99fe11e3d323"
["challenge_repo_head_ref"]="challenges/zk-delta-01"
["fuzz_tooling_url"]="git@github.com:aixcc-finals/oss-fuzz-aixcc.git"
["fuzz_tooling_ref"]="challenge-state/zk-delta-01"
["fuzz_tooling_project_name"]="zookeeper"
["duration"]=$delta_set_duration
)
submit_task() {
task_name=$1
declare -n task_data_ref=$task_name
@@ -193,47 +184,47 @@ submit_task() {
}
# From: https://github.com/aixcc-finals/example-crs-architecture/blob/1ccabc62b177a86a49c69a5d3b085eea299223ce/docs/round_info/exhibition-round-2.md#challenge-tasks-archive
sim() {
submit_task "freerdp_full"
submit_task "libxml2_full"
submit_task "sqlite_full"
sim2() {
submit_task "fp_full_01"
submit_task "lx_full_01"
submit_task "sq_full_01"
sleep $full_set_duration
submit_task "commons_compress_full"
submit_task "zookeeper_full"
submit_task "dropbear_full"
submit_task "cc_full_01"
submit_task "zk_full_01"
submit_task "db_full_01"
sleep $full_set_duration
submit_task "freerdp_delta_1"
submit_task "libxml2_delta_2"
submit_task "integration_test_delta_1"
submit_task "libpng_delta_1"
submit_task "fp_delta_01"
submit_task "lx_delta_02"
submit_task "integration_test_delta_01"
submit_task "lp_delta_01"
sleep $delta_set_duration
submit_task "sqlite_delta_1"
submit_task "libxml2_delta_1"
submit_task "sq_delta_01"
submit_task "lx_delta_01"
sleep $delta_set_duration
submit_task "zookeeper_delta_1"
submit_task "commons_compress_delta_2"
submit_task "commons_compress_delta_3"
submit_task "zk_delta_01"
submit_task "cc_delta_02"
submit_task "cc_delta_03"
sleep $delta_set_duration
}
all() {
submit_task "commons_compress_full"
submit_task "dropbear_full"
submit_task "freerdp_full"
submit_task "integration_test_delta_1"
submit_task "libpng_delta_1"
submit_task "libxml2_full"
submit_task "sqlite_full"
submit_task "zookeeper_full"
all2() {
submit_task "cc_full_01"
submit_task "db_full_01"
submit_task "fp_full_01"
submit_task "integration_test_delta_01"
submit_task "lp_delta_01"
submit_task "lx_full_01"
submit_task "sq_full_01"
submit_task "zk_full_01"
}
single() {
@@ -241,23 +232,23 @@ single() {
}
usage() {
echo "Usage: $0 [sim|all|single <name>]"
echo "Usage: $0 [sim2|all2|single <name>]"
echo ""
echo "sim = Simulate round 2."
echo "all = Run one challenge from each repository."
echo "sim2 = Simulate round 2."
echo "all2 = Run one challenge from each repository."
echo "single <name> = Run one challenge."
echo ""
echo "name = The name of the challenge to run:"
echo " commons_compress_full | commons_compress_delta_2 | commons_compress_delta_3"
echo " dropbear_full"
echo " freerdp_full | freerdp_delta_1"
echo " integration_test_delta_1"
echo " libpng_delta_1"
echo " libxml2_full | libxml2_delta_1 | libxml2_delta_2"
echo " sqlite_full | sqlite_delta_1"
echo " zookeeper_full | zookeeper_delta_1"
echo " cc_full_01 | cc_delta_02 | cc_delta_03"
echo " db_full_01"
echo " fp_full_01 | fp_delta_01"
echo " integration_test_delta_01"
echo " lp_delta_01"
echo " lx_full_01 | lx_delta_01 | lx_delta_02"
echo " sq_full_01 | sq_delta_01"
echo " zk_full_01 | zk_delta_01"
echo ""
echo " libxml2_full_updated -> using the most recent version of helper.py"
echo " lx_full_updated -> using the most recent version of helper.py"
}
main() {
@@ -267,11 +258,11 @@ main() {
fi
case "$1" in
"sim")
sim
"sim2")
sim2
;;
"all")
all
"all2")
all2
;;
"single")
if [ -z "$2" ]; then