Existing program repair systems modify a buggy program so that the modified program passes given tests. The repaired program may not satisfy even the most basic notion of correctness, namely crash-freedom. In other words, repair tools might generate patches which over-fit the test data driving the repair, and the automatically repaired programs may even introduce crashes or vulnerabilities.
We propose an integrated approach for detecting and discarding crashing patches. Our approach fuses test and patch generation into a single process, in which patches are generated with the objective of passing existing tests, and new tests are generated with the objective of filtering out over-fitted patches by distinguishing candidate patches in terms of behavior. We use crash-freedom as the oracle to discard patch candidates which crash on the new tests. In its core, our approach defines a grey-box fuzzing strategy that gives higher priority to new tests that separate patches behaving equivalently on existing tests. This test generation strategy identifies semantic differences between patch candidates and reduces over-fitting in program repair.
We evaluated our approach on real-world vulnerabilities and open-source subjects from the Google OSS-Fuzz infrastructure. We found that our tool Fix2Fit (implementing patch space directed test generation), produces crash-avoiding patches. While we do {\em not} give formal guarantees about crash-freedom, cross-validation with fuzzing tools and their sanitizers provides greater confidence about the crash-freedom of our suggested patches.
Wed 17 JulDisplayed time zone: Beijing, Chongqing, Hong Kong, Urumqi change
11:00 - 12:30 | |||
11:00 22mTalk | Crash-avoiding Program Repair Technical Papers Xiang Gao National University of Singapore, Sergey Mechtaev University College London, Abhik Roychoudhury National University of Singapore | ||
11:22 22mTalk | Practical Program Repair via Bytecode Mutation Technical Papers Pre-print | ||
11:45 22mTalk | TBar: Revisiting Template-based Automated Program Repair Technical Papers Kui Liu , Anil Koyuncu University of Luxembourg, Luxembourg, Dongsun Kim Furiosa.ai, Tegawendé F. Bissyandé SnT, University of Luxembourg Pre-print | ||
12:07 22mTalk | History-driven Build Failure Fixing: How Far Are We? Technical Papers Yiling Lou Peking University, China, Junjie Chen Peking University, Lingming Zhang , Dan Hao Peking University, Lu Zhang Peking University |