Cyber Risks · Trail of Bits Blog

Use constexpr for faster, smaller, and safer code

Summary: With C++14, the standards committee strengthened constexpr so developers can force constant expressions to be evaluated at compile time rather than at every invocation, which the author says yields faster execution, smaller executables, and safer code. The author built a libclang-based tool called constexpr-everything that automatically marks conforming functions and variables as constexpr, and notes that constexpr forced a compile error on an uninitialized stack local that clang 8.0 otherwise silently eliminated at optimization levels above -O0.

Key Takeaway: Undefined behavior is the root of real security bugs the source names, including Linux kernel privilege escalation CVE-2009-1897, and the compiler's default warnings (-Wall -Wextra -Wshadow -Wconversion) did not flag the vulnerable case on clang at all.

Read the original at Trail of Bits Blog ↗

Topics
Vulnerabilities & Patching
Mentions
CVE-2009-1897
Related