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.
docker load -i ddinfer_2511.tar
docker load -i saver_2511.tar
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)
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)
# 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
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.