Title
How to twist pointers without breaking them.
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 Chauhan100.34
Piyush P. Kurur2889.41
Brent A. Yorgey3634.92