Matthew Harren

dblp:41/5787 · DBLP profile ↗
← Back
9ranked-venue papers
2as first author
0since 2021 · last 2007
—ORCID · none

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

Software engineering, systems software and programming languages · 7 · 1 first-authorSecurity and privacy · 1Databases, data management, data science and information retrieval · 1 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 1 · 1 first-author

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
4 papers
Programming languages and type systems · 56% Operating systems · 33% Compilers and program optimization · 12%
Network and information security
3 papers
Systems and software security · 100%

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

TopicWeightPapersLastEvidence papers
Systems and software security
memory safety
0.122005
CCured: type-safe retrofitting of legacy software · ACM Trans. Program. Lang. Syst. 2005
CCured in the real world · PLDI 2003
Operating systems
extensible operating systems
0.112006
SafeDrive: Safe and Recoverable Extensions Using Language-Based Techniques · OSDI 2006
Programming languages and type systems
language-based safety
0.112006
SafeDrive: Safe and Recoverable Extensions Using Language-Based Techniques · OSDI 2006
Operating systems › extensible operating systems › kernel extensibility › kernel extensions
safe kernel extensions
0.112006
SafeDrive: Safe and Recoverable Extensions Using Language-Based Techniques · OSDI 2006
Programming languages and type systems
language design
0.112005
XJ: facilitating XML processing in Java · WWW 2005
Programming languages and type systems › type systems
type soundness
0.112005
CCured: type-safe retrofitting of legacy software · ACM Trans. Program. Lang. Syst. 2005
Systems and software security
crash reporting
0.012003
Scrash: A System for Generating Secure Crash Information · USENIX Security Symposium 2003
Systems and software security
vulnerability discovery
0.012003
Scrash: A System for Generating Secure Crash Information · USENIX Security Symposium 2003
Programming languages and type systems
type inference
0.012003
CCured in the real world · PLDI 2003
Compilers and program optimization
program transformation
0.022005
CCured: type-safe retrofitting of legacy software · ACM Trans. Program. Lang. Syst. 2005
CCured in the real world · PLDI 2003
Compilers and program optimization
compiler construction
0.012005
XJ: facilitating XML processing in Java · WWW 2005

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

run-time type information · 0.2instrumentation · 0.2physical subtyping · 0.1prototype compiler · 0.1secure crash information generation · 0.0
YearPublicationVenuePosition
2007 Dependent Types for Low-Level Programming
Jeremy Condit, Matthew Harren, Zachary R. Anderson, David Gay, George C. Necula
ESOP2
2007 Beyond Bug-Finding: Sound Program Analysis for Linux
Zachary R. Anderson, Eric A. Brewer, Jeremy Condit, Robert Ennals, David Gay, Matthew Harren, George C. Necula
HotOS6
2006 SafeDrive: Safe and Recoverable Extensions Using Language-Based Techniques
Jeremy Condit, Zachary R. Anderson, Ilya Bagrak, Robert Ennals, Matthew Harren, George C. Necula, Eric A. Brewer
OSDI6
2006 Analysis of Low-Level Code Using Cooperating Decompilers
Bor-Yuh Evan Chang, Matthew Harren, George C. Necula
SAS2
2005 Using Dependent Types to Certify the Safety of Assembly Code
Matthew Harren, George C. Necula
SAS1
2005 XJ: facilitating XML processing in Java
abstract
The increased importance of XML as a data representation format has led to several proposals for facilitating the development of applications that operate on XML data. These proposals range from runtime API-based interfaces to XML-based programming languages. The subject of this paper is XJ, a research language that proposes novel mechanisms for the integration of XML as a first-class construct into Java™. The design goals of XJ distinguish it from past work on integrating XML support into programming languages --- specifically, the XJ design adheres to the XML Schema and XPath standards. Moreover, it supports in-place updates of XML data thereby keeping with the imperative nature of Java. We have built a prototype compiler for XJ, and our preliminary experiments demonstrate that the performance of XJ programs can approach that of traditional low-level API-based interfaces, while providing a higher level of abstraction.
Matthew Harren, Mukund Raghavachari, Oded Shmueli, Michael G. Burke, Rajesh Bordawekar, Igor Pechtchanski, Vivek Sarkar
WWW1
2005 CCured: type-safe retrofitting of legacy software
abstract
This article describes CCured, a program transformation system that adds type safety guarantees to existing C programs. CCured attempts to verify statically that memory errors cannot occur, and it inserts run-time checks where static verification is insufficient.CCured extends C's type system by separating pointer types according to their usage, and it uses a surprisingly simple type inference algorithm that is able to infer the appropriate pointer kinds for existing C programs. CCured uses physical subtyping to recognize and verify a large number of type casts at compile time. Additional type casts are verified using run-time type information. CCured uses two instrumentation schemes, one that is optimized for performance and one in which metadata is stored in a separate data structure whose shape mirrors that of the original user data. This latter scheme allows instrumented programs to invoke external functions directly on the program's data without the use of a wrapper function.We have used CCured on real-world security-critical network daemons to produce instrumented versions without memory-safety vulnerabilities, and we have found several bugs in these programs. The instrumented code is efficient enough to be used in day-to-day operations.
George C. Necula, Jeremy Condit, Matthew Harren, Scott McPeak, Westley Weimer
ACM Trans. Program. Lang. Syst.3
2003 CCured in the real world
abstract
CCured is a program transformation system that adds memory safety guarantees to C programs by verifying statically that memory errors cannot occur and by inserting run-time checks where static verification is insufficient.This paper addresses major usability issues in a previous version of CCured, in which many type casts required the use of pointers whose representation was expensive and incompatible with precompiled libraries. We have extended the CCured type inference algorithm to recognize and verify statically a large number of type casts; this goal is achieved by using physical subtyping and pointers with run-time type information to allow parametric and subtype polymorphism. In addition, we present a new instrumentation scheme that splits CCured's metadata into a separate data structure whose shape mirrors that of the original user data. This scheme allows instrumented programs to invoke external functions directly on the program's data without the use of a wrapper function.With these extensions we were able to use CCured on real-world security-critical network daemons and to produce instrumented versions without memory-safety vulnerabilities.
Jeremy Condit, Matthew Harren, Scott McPeak, George C. Necula, Westley Weimer
PLDI2
2003 Scrash: A System for Generating Secure Crash Information
Peter Broadwell, Matthew Harren, Naveen Sastry
USENIX Security Symposium2