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.

David Melski

dblp:97/6582 · DBLP profile ↗
← Back
12ranked-venue papers
4as first author
0since 2021 · last 2019
—ORCID · none

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

Software engineering, systems software and programming languages · 9 · 3 first-authorSecurity and privacy · 2Theory of computation · 2 · 1 first-authorArtificial intelligence and machine learning · 1

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.

Network and information security
3 papers
Systems and software security · 100%
Software engineering, system software, and programming languages
4 papers
Program analysis · 76% Program synthesis and code generation · 24%
Theoretical computer science
1 paper
Automated reasoning and model checking · 100%

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

TopicWeightPapersLastEvidence papers
Systems and software security
memory safety
0.322015
Data-Delineation in Software Binaries and its Application to Buffer-Overrun Discovery · ICSE (1) 2015
Exploiting and Protecting Dynamic Code Generation · NDSS 2015
Systems and software security › memory safety › memory error detection
buffer overflow detection
0.322015
Data-Delineation in Software Binaries and its Application to Buffer-Overrun Discovery · ICSE (1) 2015
Buffer overrun detection using linear programming and static analysis · CCS 2003
Program analysis
static analysis
0.322015
Data-Delineation in Software Binaries and its Application to Buffer-Overrun Discovery · ICSE (1) 2015
Buffer overrun detection using linear programming and static analysis · CCS 2003
Systems and software security › secure software development
code generation security
0.212015
Exploiting and Protecting Dynamic Code Generation · NDSS 2015
Program synthesis and code generation › search-based program synthesis
enumerative synthesis
0.112018
Program splicing · ICSE 2018
Program analysis
binary analysis
0.112005
Model Checking x86 Executables with CodeSurfer/x86 and WPDS++ · CAV 2005
Automated reasoning and model checking › model checking
software model checking
0.112005
Model Checking x86 Executables with CodeSurfer/x86 and WPDS++ · CAV 2005
Systems and software security › vulnerability discovery
static analysis
0.012003
Buffer overrun detection using linear programming and static analysis · CCS 2003
Systems and software security
vulnerability discovery
0.012003
Buffer overrun detection using linear programming and static analysis · CCS 2003

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

heuristic static analysis · 0.4DWARF debugging information · 0.4program synthesis · 0.3enumerative search · 0.3weighted pushdown system · 0.1linear programming · 0.1context-sensitive analysis · 0.1
YearPublicationVenuePosition
2019 Automated Customized Bug-Benchmark Generation
abstract
We introduce Bug-Injector, a system that automatically creates benchmarks for customized evaluation of static analysis tools. We share a benchmark generated using Bug-Injector and illustrate its efficacy by using it to evaluate the recall of two leading open-source static analysis tools: Clang Static Analyzer and Infer. Bug-Injector works by inserting bugs based on bug templates into real-world host programs. It runs tests on the host program to collect dynamic traces, searches the traces for a point where the state satisfies the preconditions for some bug template, then modifies the host program to "inject" a bug based on that template. Injected bugs are used as test cases in a static analysis tool evaluation benchmark. Every test case is accompanied by a program input that exercises the injected bug. We have identified a broad range of requirements and desiderata for bug benchmarks; our approach generates on-demand test benchmarks that meet these requirements. It also allows us to create customized benchmarks suitable for evaluating tools for a specific use case (e.g., a given codebase and set of bug types). Our experimental evaluation demonstrates the suitability of our generated benchmark for evaluating static bug-detection tools and for comparing the performance of different tools.
Vineeth Kashyap, Jason Ruchti, Lucja Kot, Emma Turetsky, Rebecca Swords, Shih An Pan, Julien Henry, David Melski, Eric M. Schulte
SCAM8
2018 Program splicing
abstract
We introduce program splicing, a programming methodology that aims to automate the workflow of copying, pasting, and modifying code available online. Here, the programmer starts by writing a "draft" that mixes unfinished code, natural language comments, and correctness requirements. A program synthesizer that interacts with a large, searchable database of program snippets is used to automatically complete the draft into a program that meets the requirements. The synthesis process happens in two stages. First, the synthesizer identifies a small number of programs in the database that are relevant to the synthesis task. Next it uses an enumerative search to systematically fill the draft with expressions and statements from these relevant programs. The resulting program is returned to the programmer, who can modify it and possibly invoke additional rounds of synthesis.
Yanxin Lu, Swarat Chaudhuri, Chris Jermaine, David Melski
ICSE4
2017 MuSynth: Program Synthesis via Code Reuse and Code Manipulation
Vineeth Kashyap, Rebecca Swords, Eric M. Schulte, David Melski
SSBSE4
2015 Data-Delineation in Software Binaries and its Application to Buffer-Overrun Discovery
abstract
Detecting memory-safety violations in binaries is complicated by the lack of knowledge of the intended data layout, i.e., the locations and sizes of objects. We present lightweight, static, heuristic analyses for recovering the intended layout of data in a stripped binary. Comparison against DWARF debugging information shows high precision and recall rates for inferring source-level object boundaries. On a collection of benchmarks, our analysis eliminates a third to a half of incorrect object boundaries identified by an IDA Pro-inspired heuristic, while retaining nearly all valid object boundaries. In addition to measuring their accuracy directly, we evaluate the effect of using the recovered data for improving the precision of static buffer-overrun detection in the defect-detection tool CodeSonar/x86. We demonstrate that CodeSonar's false-positive rate drops by about 80% across our internal evaluation suite for the tool, while our approximation of CodeSonar's recall only degrades about 25%.
Denis Gopan, Evan Driscoll, Ducson Nguyen, Dimitri Naydich, Alexey Loginov, David Melski
ICSE (1)6
2015 Exploiting and Protecting Dynamic Code Generation
Chengyu Song, Chao Zhang 0008, Tielei Wang, Wenke Lee, David Melski
NDSS5
2005 Model Checking x86 Executables with CodeSurfer/x86 and WPDS++
Gogul Balakrishnan, Thomas W. Reps, Nicholas Kidd, Akash Lal, Junghee Lim, David Melski, Radu Gruian, Suan Hsi Yong, Tim Teitelbaum
CAV6
2005 Weighted pushdown systems and their application to interprocedural dataflow analysis
Thomas W. Reps, Stefan Schwoon, Somesh Jha, David Melski
Sci. Comput. Program.4
2003 The Interprocedural Express-Lane Transformation
David Melski, Thomas W. Reps
CC1
2003 Buffer overrun detection using linear programming and static analysis
abstract
This paper addresses the issue of identifying buffer overrun vulnerabilities by statically analyzing C source code. We demonstrate a light-weight analysis based on modeling C string manipulations as a linear program. We also present fast, scalable solvers based on linear programming, and demonstrate techniques to make the program analysis context sensitive. Based on these techniques, we built a prototype and used it to identify several vulnerabilities in popular security critical applications.
Vinod Ganapathy, Somesh Jha, David Chandler, David Melski, David Vitek
CCS4
2000 Interconvertibility of a class of set constraints and context-free-language reachability
David Melski, Thomas W. Reps
Theor. Comput. Sci.1
1999 Interprocedural Path Profiling
David Melski, Thomas W. Reps
CC1
1997 Interconveritibility of Set Constraints and Context-Free Language Reachability
abstract
We show the interconvertibility of context-free-language reachability problems and a class of set-constraint problems: given a context-free-language reachability problem, we show how to construct a set-constraint problem whose answer gives a solution to the reachability problem; given a set-constraint problem, we show how to construct a context-free-language reachability problem whose answer gives a solution to the set-constraint problem. The interconvertibility of these two formalisms offers an conceptual advantage akin to the advantage gained from the interconvertibility of finite-state automata and regular expressions in formal language theory, namely, a problem can be formulated in whichever formalism is most natural. It also offers some insight into the "O(n3) bottleneck" for different types of program-analysis problems, and allows results previously obtained for context-free-language reachability problems to be applied to set-constraint problems.
David Melski, Thomas W. Reps
PEPM1