  Annex K of C11, bounds-checking interfaces, recently introduced a set of
alternative functions to mitigate buffer overflows, primarily those caused by
string/memory functions. However, poor compatibility limits their adoption.
Failure oblivious computing can eliminate the possibility that an attacker can
exploit memory errors to corrupt the address space and significantly increase
the availability of systems.
  In this paper, we present S3Library (Saturation-Memory-Access Safer String
Library), which is compatible with the standard C library in terms of function
signature. Our technique automatically replaces unsafe deprecated memory/string
functions with safer versions that perform bounds checking and eliminate buffer
overflows via boundless memory. S3Library employs MinFat, a very compact
pointer representation following the Less is More principle, to encode metadata
into unused upper bits within pointers. In addition, S3Library utilizes
Saturation Memory Access to eliminate illegal memory accesses into boundless
padding area. Even if an out-of-bounds access is made, the fault program will
not be interrupted. We implement our scheme within the LLVM framework on X86-64
and evaluate our approach on correctness, security, runtime performance and
availability.
