2005
DOI: 10.1145/1065887.1065892
|View full text |Cite
|
Sign up to set email alerts
|

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 … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
2
1

Citation Types

1
514
0
1

Year Published

2008
2008
2013
2013

Publication Types

Select...
5
3
1

Relationship

0
9

Authors

Journals

citations
Cited by 487 publications
(516 citation statements)
references
References 9 publications
1
514
0
1
Order By: Relevance
“…Write integrity testing [49] uses static analysis and "guard" values between variables to prevent memory corruption errors, but static analysis alone cannot correctly classify all program writes. CCured [50] is a source code transformation system that adds type safety to C programs, but it incurs a significant performance overhead and is unable to statically handle some data types. Generally, solutions that require recompilation of software are less practical, as source code or parts of it (e.g., third-party libraries) are not always available.…”
Section: Related Workmentioning
confidence: 99%
“…Write integrity testing [49] uses static analysis and "guard" values between variables to prevent memory corruption errors, but static analysis alone cannot correctly classify all program writes. CCured [50] is a source code transformation system that adds type safety to C programs, but it incurs a significant performance overhead and is unable to statically handle some data types. Generally, solutions that require recompilation of software are less practical, as source code or parts of it (e.g., third-party libraries) are not always available.…”
Section: Related Workmentioning
confidence: 99%
“…For example, there have been buffer-overflow attacks in Java [26,4], Perl [59], etc. There also exists a type-safe C: CCured [60].…”
Section: Bounds Checkingmentioning
confidence: 99%
“…There are safe languages, referred to as safe dialects, that remain as close to C or C++ as possible. However, their performance overhead is also significant [4,5].…”
Section: Related Workmentioning
confidence: 99%
“…Some try to solve the problem entirely by inserting bound checks or modifying the language itself [3][4][5]. Others rely on randomness and secrets to detect or prevent modifications of data in memory.…”
Section: Introductionmentioning
confidence: 99%