introduction: explain what memory safety is
This commit is contained in:
parent
948530826f
commit
d6009ea334
5 changed files with 165 additions and 59 deletions
|
@ -3,14 +3,14 @@ Any changes to this file will be lost if it is regenerated by Mendeley.
|
|||
|
||||
BibTeX export options can be customized via Options -> BibTeX in Mendeley Desktop
|
||||
|
||||
@book{AMD64Vol1,
|
||||
author = {AMD},
|
||||
file = {:home/steveej/src/github/steveej/msc-thesis/docs/AMD64 Architecture Programmer's Manual Volume 1$\backslash$: Application Programming.pdf:pdf},
|
||||
keywords = {AMD64,SIMD,extended media instructions,legacy m},
|
||||
number = {26568},
|
||||
title = {{AMD64 Architecture Programmer's Manual Volume 1: Application Programming}},
|
||||
volume = {4},
|
||||
year = {2012}
|
||||
@article{Reed2015,
|
||||
abstract = {Rust is a new systems language that uses some advanced type system features, specifically affine types and regions, to statically guarantee memory safety and eliminate the need for a garbage collector. While each individual addition to the type system is well understood in isolation and are known to be sound, the combined system is not known to be sound. Furthermore, Rust uses a novel checking scheme for its regions, known as the Borrow Checker, that is not known to be correct. Since Rust's goal is to be a safer alternative to C/C++, we should ensure that this safety scheme actually works. We present a formal semantics that captures the key features relevant to memory safety, unique pointers and borrowed references, specifies how they guarantee memory safety, and describes the operation of the Borrow Checker. We use this model to prove the soudness of some core operations and justify the conjecture that the model, as a whole, is sound. Additionally, our model provides a syntactic version of the Borrow Checker, which may be more understandable than the non-syntactic version in Rust.},
|
||||
author = {Reed, Eric},
|
||||
file = {:home/steveej/src/github/steveej/msc-thesis/docs/Patina$\backslash$: A Formalization of the Rust Programming Language.pdf:pdf},
|
||||
number = {February},
|
||||
pages = {1--37},
|
||||
title = {{Patina: A Formalization of the Rust Programming Language}},
|
||||
year = {2015}
|
||||
}
|
||||
@article{Dhurjati2003,
|
||||
abstract = {Traditional approaches to enforcing memory safety of programs rely heavily on runtime checks of memory accesses and on garbage collection, both of which are unattractive for embedded applications. The long-term goal of our work is to enable 100{\%} static enforcement of memory safety for embedded programs through advanced compiler techniques and minimal semantic restrictions on programs. The key result of this paper is a compiler technique that ensures memory safety of dynamically allocated memory without programmer annotations, runtime checks, or garbage collection, and works for a large subclass of type-safe C programs. The technique is based on a fully automatic pool allocation (i.e., region-inference) algorithm for C programs we developed previously, and it ensures safety of dynamically allocated memory while retaining explicit deallocation of individual objects within regions (to avoid garbage collection). For a diverse set of embedded C programs (and using a previous technique to avoid null pointer checks), we show that we are able to statically ensure the safety of pointer and dynamic memory usage in all these programs. We also describe some improvements over our previous work in static checking of array accesses. Overall, we achieve 100{\%} static enforcement of memory safety without new language syntax for a significant subclass of embedded C programs, and the subclass is much broader if array bounds checks are ignored.},
|
||||
|
@ -145,6 +145,15 @@ pages = {52--57},
|
|||
title = {{A dynamic detection method to C/C++ programs memory vulnerabilities based on pointer analysis}},
|
||||
year = {2013}
|
||||
}
|
||||
@book{AMD64Vol1,
|
||||
author = {AMD},
|
||||
file = {:home/steveej/src/github/steveej/msc-thesis/docs/AMD64 Architecture Programmer's Manual Volume 1$\backslash$: Application Programming.pdf:pdf},
|
||||
keywords = {AMD64,SIMD,extended media instructions,legacy m},
|
||||
number = {26568},
|
||||
title = {{AMD64 Architecture Programmer's Manual Volume 1: Application Programming}},
|
||||
volume = {4},
|
||||
year = {2012}
|
||||
}
|
||||
@article{Getreu2016,
|
||||
author = {Getreu, Jens},
|
||||
file = {:home/steveej/src/github/steveej/msc-thesis/docs/Embedded System Security with Rust - Case Study of Heartbleed.pdf:pdf},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue