Abstract | ||
---|---|---|
Using the theory of monoids and monoid actions, we give a unified framework that handles three common pointer manipulation tasks, namely, data serialisation, deserialisation, and memory allocation. Our main theoretical contribution is the formulation of the notion of a twisted functor, a generalisation of the semi-direct product construction for monoids. We show that semi-direct products and twisted functors are particularly well suited as an abstraction for many pointer manipulation tasks. We describe the implementation of these abstractions in the context of a cryptographic library for Haskell. Twisted functors allow us to abstract all pointer arithmetic and size calculations into a few lines of code, significantly reducing the opportunities for buffer overflows. |
Year | DOI | Venue |
---|---|---|
2016 | 10.1145/2976002.2976004 | Haskell |
Keywords | Field | DocType |
Languages,Security,monoid,monoid action,applicative functor,semi-direct product,pointer | Pointer (computer programming),Programming language,Computer science,Functor,Monoid,Memory management,Haskell,Syntactic monoid,Buffer overflow,Source lines of code | Conference |
Volume | Issue | ISSN |
51 | 12 | 0362-1340 |
ISBN | Citations | PageRank |
978-1-4503-4434-0 | 0 | 0.34 |
References | Authors | |
4 | 3 |
Name | Order | Citations | PageRank |
---|---|---|---|
Satvik Chauhan | 1 | 0 | 0.34 |
Piyush P. Kurur | 2 | 88 | 9.41 |
Brent A. Yorgey | 3 | 63 | 4.92 |