IoTcube Logo
IoTcube

Security Platform

User Guide : SAVER (Automatic Repair)

INTRODUCTION

SAVER repairs memory errors in C programs using object flow graph analysis. It targets memory leaks, double-free, and use-after-free with scalable and precise fixes.

USAGE

Step 1. Install (from prepared images)

docker load -i ddinfer_2511.tar
docker load -i saver_2511.tar

Step 2. Run (ddinfer, saver each)

docker run --rm -v (input_folder):/data/in -v (output_folder):/data/out ddinfer:latest /bin/bash /ddinfer.sh ($PROJECT_FOLDER_NAME)

docker run --rm -v (input_folder):/data/in -v (output_folder):/data/out saver:latest /bin/bash /home/saver.sh ($PROJECT_FOLDER_NAME) ($ERROR_REPORT_FILE_NAME)

Step 3. Run (saver batch)

docker run --rm -v (input_folder):/data/in -v (output_folder):/data/out saver:latest /bin/bash /home/saver_multi.sh ($PROJECT_FOLDER_NAME) ($ERROR_REPORT_FOLDER_NAME) ((optional)$RUN_UPPER_LIMIT)

Step 4. Example: example_input_bluez

# prepare benchmark project first
# (in this example, we prepared `example_input_bluez` folder -- run `./prepare.sh` inside that folder.)

# use <$tmp> directory for input & output
cp -r ddinfer/example_input_bluez <$tmp>
cd <$tmp> # In my case, use "/Volumes/T7/workspace/example_input

./prepare.sh

# prepare output folder <$tmp-out>
mkdir <$tmp-out> # In my case, use "/Volumes/T7/workspace/example_output

# run ddinfer
docker run --rm -v <$tmp>:/data/in -v <$tmp-out>:/data/out ddinfer:latest /bin/bash /ddinfer.sh bluez-5.55

# run saver (multi, run only two bugs for example-show purpose)
docker run --rm -v (input_folder):/data/in -v (output_folder):/data/out saver:latest /bin/bash /home/saver-multi.sh bluez-5.55 saver_in 2

Step 5. Note

To run saver for every bug-fix (not recommended since it takes a lot of time), put "0" at the last part of the saver docker run, instead of "2" in the example.

POSSIBLE COLLABORATION

For inquiries, suggestions or possible collaboration please send an email to cssa@korea.ac.kr.