Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Seongjoon Hong

dblp:222/5868 · DBLP profile ↗
← Back
6ranked-venue papers
1as first author
3since 2021 · last 2022
0000-0002-0530-0235ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 5 · 1 first-author · 2 since 2021Security and privacy · 1 · 1 since 2021

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
6 papers
Software testing · 37% Program analysis · 33% Debugging and program repair · 30%
Network and information security
1 paper
Blockchain and cryptocurrency security · 100%

Topics — the 13 heaviest of 13, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Debugging and program repair
automated program repair
1.332022
NPEX: Repairing Java Null Pointer Exceptions without Tests · ICSE 2022
SAVER: scalable, precise, and safe memory-error repair · ICSE 2020
MemFix: static analysis-based repair of memory deallocation errors for C · ESEC/SIGSOFT FSE 2018
Software testing › test coverage › code coverage
branch coverage
0.612022
Enhancing Dynamic Symbolic Execution by Automatically Learning Search Heuristics · IEEE Trans. Software Eng. 2022
Program analysis › symbolic execution
dynamic symbolic execution
0.612022
Enhancing Dynamic Symbolic Execution by Automatically Learning Search Heuristics · IEEE Trans. Software Eng. 2022
Software testing
test coverage
0.612022
Enhancing Dynamic Symbolic Execution by Automatically Learning Search Heuristics · IEEE Trans. Software Eng. 2022
Blockchain and cryptocurrency security › smart contract security
vulnerability detection
0.512021
SmarTest: Effectively Hunting Vulnerable Transaction Sequences in Smart Contracts through Language Model-Guided Symbolic Execution · USENIX Security Symposium 2021
Software testing › test input generation
concolic testing
0.312018
Automatically generating search heuristics for concolic testing · ICSE 2018
Program analysis
dynamic analysis
0.312018
Automatically generating search heuristics for concolic testing · ICSE 2018
Program analysis
static analysis
0.222020
SAVER: scalable, precise, and safe memory-error repair · ICSE 2020
MemFix: static analysis-based repair of memory deallocation errors for C · ESEC/SIGSOFT FSE 2018
Program analysis
symbolic execution
0.112021
SmarTest: Effectively Hunting Vulnerable Transaction Sequences in Smart Contracts through Language Model-Guided Symbolic Execution · USENIX Security Symposium 2021
Program analysis
heap analysis
0.112020
SAVER: scalable, precise, and safe memory-error repair · ICSE 2020
Software testing › test coverage
code coverage
0.112018
Automatically generating search heuristics for concolic testing · ICSE 2018
Software testing
test generation
0.112018
Automatically generating search heuristics for concolic testing · ICSE 2018
Program analysis › type-based analysis
typestate analysis
0.112018
MemFix: static analysis-based repair of memory deallocation errors for C · ESEC/SIGSOFT FSE 2018

Methods — techniques the papers use, named apart from their topics

language model-guided symbolic execution · 1.0static analysis · 0.8symbolic execution · 0.6statistical model · 0.6parametric search heuristic · 0.6machine learning · 0.6graph labeling · 0.4exact cover · 0.3
YearPublicationVenuePosition
2022 NPEX: Repairing Java Null Pointer Exceptions without Tests
abstract
We present NPEX, a new technique for repairing Java null pointer exceptions (NPEs) without tests. State-of-the-art NPE repair techniques rely on test suites written by developers for patch validation. Unfortunately, however, those are typically future test cases that are unavailable at the time bugs are reported or insufficient to identify correct patches. Unlike existing techniques, NPEX does not require test cases; instead, NPEX automatically infers the repair specification of the buggy program and uses the inferred specification to validate patches. The key idea is to learn a statistical model that predicts how developers would handle NPEs by mining null-handling patterns from existing codebases, and to use a variant of symbolic execution that can infer the repair specification from the buggy program using the model. We evaluated NPEX on real-world NPEs collected from diverse open-source projects. The results show that NPEX significantly outperforms the current state-of-the-art.
Seongjoon Hong, Hakjoo Oh
ICSE2
2022 Enhancing Dynamic Symbolic Execution by Automatically Learning Search Heuristics
abstract
We present a technique to automatically generate search heuristics for dynamic symbolic execution. A key challenge in dynamic symbolic execution is how to effectively explore the program's execution paths to achieve high code coverage in a limited time budget. Dynamic symbolic execution employs a search heuristic to address this challenge, which favors exploring particular types of paths that are most likely to maximize the final coverage. However, manually designing a good search heuristic is nontrivial and typically ends up with suboptimal and unstable outcomes. The goal of this paper is to overcome this shortcoming of dynamic symbolic execution by automatically learning search heuristics. We define a class of search heuristics, namely a parametric search heuristic, and present an algorithm that efficiently finds an optimal heuristic for each subject program. Experimental results with industrial-strength symbolic execution tools (e.g., KLEE) show that our technique can successfully generate search heuristics that significantly outperform existing manually-crafted heuristics in terms of branch coverage and bug-finding.
Sooyoung Cha, Seongjoon Hong, Jiseong Bak, Jingyoung Kim, Hakjoo Oh
IEEE Trans. Software Eng.2
2021 SmarTest: Effectively Hunting Vulnerable Transaction Sequences in Smart Contracts through Language Model-Guided Symbolic Execution
Sunbeom So, Seongjoon Hong, Hakjoo Oh
USENIX Security Symposium2
2020 SAVER: scalable, precise, and safe memory-error repair
abstract
We present SAVER, a new memory-error repair technique for C programs. Memory errors such as memory leak, double-free, and use-after-free are highly prevalent and fixing them requires significant effort. Automated program repair techniques hold the promise of reducing this burden but the state-of-the-art is still unsatisfactory. In particular, no existing techniques are able to fix those errors in a scalable, precise, and safe way, all of which are required for a truly practical tool. SAVER aims to address these shortcomings. To this end, we propose a method based on a novel representation of the program called object flow graph, which summarizes the program's heap-related behavior using static analysis. We show that fixing memory errors can be formulated as a graph labeling problem over object flow graph and present an efficient algorithm. We evaluated SAVER in combination with Infer, an industrial-strength static bug-finder, and show that 74% of the reported errors can be fixed automatically for a range of open-source C programs.
Seongjoon Hong, Jeongsoo Lee, Hakjoo Oh
ICSE1
2018 Automatically generating search heuristics for concolic testing
abstract
We present a technique to automatically generate search heuristics for concolic testing. A key challenge in concolic testing is how to effectively explore the program's execution paths to achieve high code coverage in a limited time budget. Concolic testing employs a search heuristic to address this challenge, which favors exploring particular types of paths that are most likely to maximize the final coverage. However, manually designing a good search heuristic is nontrivial and typically ends up with suboptimal and unstable outcomes. The goal of this paper is to overcome this shortcoming of concolic testing by automatically generating search heuristics. We define a class of search heuristics, namely a parameterized heuristic, and present an algorithm that efficiently finds an optimal heuristic for each subject program. Experimental results with open-source C programs show that our technique successfully generates search heuristics that significantly outperform existing manually-crafted heuristics in terms of branch coverage and bug-finding.
Sooyoung Cha, Seongjoon Hong, Hakjoo Oh
ICSE2
2018 MemFix: static analysis-based repair of memory deallocation errors for C
abstract
We present MemFix, an automated technique for fixing memory deallocation errors in C programs. MemFix aims to fix memory-leak, double-free, and use-after-free errors, which occur when developers fail to properly deallocate memory objects. MemFix attempts to fix these errors by finding a set of free-statements that correctly deallocate all allocated objects without causing double-frees and use-after-frees. The key insight behind MemFix is that finding such a set of deallocation statements corresponds to solving an exact cover problem derived from a variant of typestate static analysis. We formally present the technique and experimentally show that MemFix is able to fix real errors found in open-source programs. Because MemFix is based on a sound static analysis, the generated patches guarantee to fix the original errors without introducing new errors.
Seongjoon Hong, Hakjoo Oh
ESEC/SIGSOFT FSE2