fortify-headers 3.0.1
Mon 05 January 2026 — download

There is a new minor release of fortify-headers, namely 3.0.1. Minor releases means no new features, only bug fixes.

The C language doesn't really have the notion of namespaces: all symbols, except those marked as static are exposed. To mitigate the possibility of collisions, it's a good practise to prefix exported symbols with an library-specific identifier, like xml for libxml2 (eg. xmlReadFile), SSL for OpenSSL (eg. SSL_library_init) and so on. Symbols starting with an underscore followed by either an upper-case letter or another underscore are implementation-reserved. I was a bit cocky, and assumed that since fortify-headers is kind of part of the implementation, I could name macros __format, __warning_if, __access, … Unfortunately, this lead to a collision with LLVM's libcxx, as it defines a __format macro in its C++ locale header (/usr/include/c++/v1/locale). This was found by Haelwenn (lanodan) Monnier, when he tried to make use of fortify-headers on Gentoo. The fix is quite straightforward: make use of a fortify-headers specific prefix, resulting in __fortify_format, __fortify_warning_if, __fortify_access.

The release is available on github, and the tag has been pushed on 2f30 as well.