Writing parsers like it is 2017

Geoffroy Couprie, Pierre Chifflier


Despite being known since a long time, memory violations are still a very important cause of security problems in low-level programming languages containing data parsers.

We address this problem by proposing a pragmatic solution to fix not only bugs, but classes of bugs. First, using a fast and safe language such as Rust, and then using a parser combinator.

We discuss the advantages and difficulties of this solution, and we present two cases of how to implement safe parsers and insert them in large C projects. The implementation is provided as a set of parsers and projects in the Rust language.