*: extend and refine structure
This commit is contained in:
parent
4101d31ba8
commit
5a8e11c18b
6 changed files with 264 additions and 157 deletions
|
@ -75,7 +75,7 @@ Details about the challenge of writing code that does memory management safely,
|
|||
* TODO: is it worth to explain ECC?
|
||||
* TODO: explain that the hardware might be unsafe but this is not in scope of the thesis
|
||||
|
||||
\section{Summary}
|
||||
\section{Recap}
|
||||
% Summarize the content of Chapter 1 and preview of content of Chapter 2.
|
||||
\label{chap:mmt}
|
||||
The \autoref{chap:mmt} gives a detailed introduction to memory management in contemporary architectures and \glspl{OS}.
|
||||
|
@ -104,7 +104,7 @@ This chapter starts with the provides a thorough introduction to modern memory m
|
|||
|
||||
\subsection{Multi-Level Paging}
|
||||
|
||||
\subsection{Top-Level Page table Self-Reference}
|
||||
\subsection{Top-Level Page Table Self-Reference}
|
||||
|
||||
\subsection{Caching Lookups}
|
||||
|
||||
|
@ -113,12 +113,18 @@ This chapter starts with the provides a thorough introduction to modern memory m
|
|||
* http://taptipalit.blogspot.de/2013/10/theory-recursive-mapping-page.html
|
||||
* https://www.coresecurity.com/blog/getting-physical-extreme-abuse-of-intel-based-paging-systems-part-2-windows
|
||||
|
||||
|
||||
\section{Stack And Heap Concept}
|
||||
|
||||
\section{Memory Allocation}
|
||||
|
||||
\chapter{Common Memory-Related Errors}
|
||||
\chapter{Memory-Related Software-Programming Weaknesses}
|
||||
\label{chap:context.mem-weaknesses}
|
||||
Software vulnerabilities can be categorized by their underlying weaknesses.
|
||||
This chapter explains the weaknesses of interest for this project and gives concrete examples for their manifestation.
|
||||
|
||||
\section{Weakness Categories}
|
||||
This work focuses on the following weaknesses defined in the \gls{CWE}
|
||||
|
||||
\begin{itemize}
|
||||
\item{Improper Restriction of Operations within the Bounds of a Memory Buffer}
|
||||
https://cwe.mitre.org/data/definitions/119.html
|
||||
|
@ -126,6 +132,8 @@ This work focuses on the following weaknesses defined in the \gls{CWE}
|
|||
% TODO: find more
|
||||
\end{itemize}
|
||||
|
||||
\section{Manifestation Examples}
|
||||
|
||||
\subsection{Uninitialized Pointers}
|
||||
|
||||
\begin{lstlisting}[language=C,
|
||||
|
@ -158,26 +166,44 @@ if (ptr == NULL) {
|
|||
}
|
||||
\end{lstlisting}
|
||||
|
||||
\subsection{TODO: more}
|
||||
|
||||
\chapter{Memory-Safety Analysis Techniques}
|
||||
As per the previous \autoref{chap:context.mem-weaknesses} there is general awareness of the problems, and there has been ongoing effort to develop and improve techniques that assist the programmer to detect and avoid such mistakes first- or secondhand.
|
||||
|
||||
\section{Static vs. Dynamic Analysis}
|
||||
* TODO: explain first-/secondhand -> static/dynamic -> compile-time/runtime -> offline/online
|
||||
* TODO: Explain static and dynamic checks
|
||||
|
||||
|
||||
\section{Requirements}
|
||||
* TODO: which knowledge is required to analyze access to memory?
|
||||
|
||||
\section{Limitations}
|
||||
* TODO: deadlock example
|
||||
|
||||
\chapter{Introduction To Rust}
|
||||
|
||||
\section{Compiler Architecture}
|
||||
- TODO: Tokens? AST? LLVM?
|
||||
- TODO: Tokens? AST? LLVM? (http://embed.rs/articles/2016/arm-inline-assembly-rust/)
|
||||
- TODO: BSYS SS17 GITHUB IO Rust Memory Layout - 4
|
||||
|
||||
|
||||
\section{Static Analysis Features}
|
||||
- TODO: How does static typing help with preventing programming errors
|
||||
- TODO: How does the Rust's static analysis work, theoretically and practically
|
||||
- TODO: how could memory be dynamically allocated and still safety checked?
|
||||
- TODO: How can memory be dynamically allocated and still safety checked?
|
||||
|
||||
\subsection{Ownership And Borrows}
|
||||
- TODO: Who owns global 'static variables?
|
||||
|
||||
- https://nercury.github.io/rust/guide/2015/01/19/ownership.html
|
||||
|
||||
\subsection{Lifetimes}
|
||||
- TODO: Where are global 'static variables allocated?
|
||||
|
||||
\subsection{Ownership}
|
||||
- TODO: Who owns global 'static variables?
|
||||
|
||||
\subsection{Type Safety}
|
||||
- TODO: how does casting work?
|
||||
- TODO: demonstrate raw pointers
|
||||
- TODO: what's the equivalent of void*?
|
||||
|
||||
\subsection{The Newtype Pattern}
|
||||
|
@ -188,3 +214,11 @@ if (ptr == NULL) {
|
|||
https://aturon.github.io/features/types/newtype.html
|
||||
|
||||
|
||||
\subsection{Im/mutability}
|
||||
- TODO: describe Rc, Arc, and {Ref,}Cell
|
||||
|
||||
\section Language Extension
|
||||
\subsection{Syntax Extension}
|
||||
\subsubsection{Macros}
|
||||
\subsubsection{Annotations}
|
||||
\subsection{Compiler Plugins}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue