From 239fdd456e72a08465e8ef51bff12d5dbfac43dc Mon Sep 17 00:00:00 2001 From: Melody Horn Date: Mon, 19 Oct 2020 16:27:42 -0600 Subject: super rough draft of memory safety --- safety.md | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 safety.md (limited to 'safety.md') diff --git a/safety.md b/safety.md new file mode 100644 index 0000000..d353227 --- /dev/null +++ b/safety.md @@ -0,0 +1,61 @@ +Each item in Wikipedia's [list of types of memory errors](https://en.wikipedia.org/wiki/Memory_safety#Types_of_memory_errors) and what Crowbar does to prevent them. + +# Access errors + +## Buffer overflow + +bounds checking based on uhhhh something + +## Buffer over-read + +bounds checking again + +## Race condition + +uhhhhh 🤷‍♀️ + +## Page fault + +bounds checking, dubious-pointer checking + +## Use after free + +`free(x);` not followed by `x = NULL;` is a compiler error + +# Uninitialized variables + +C already warns about these in most cases, so we're good. + +## Null pointer dereference + +dubious-pointer checking + +## Wild pointers + +let C handle it + +# Memory leak + +## Stack exhaustion + +uhhhhhh 🤷‍♀️ + +## Heap exhaustion + +that counts as error handling, just the `malloc`-shaped kind + +## Double free + +this is just use-after-free but the use is calling free on it + +## Invalid free + +don't do that + +## Mismatched free + +how does that even happen + +## Unwanted aliasing + +uhhh don't do that? -- cgit v1.2.3