which provides fine-grained control to an attacker but is not used in most real-world
code. For buffer overflows, canary techniques are available at the compiler layer (such
as Microsoft's /GS compiler option), and hardware-layer features such as the
non-executable (NX) flag can reduce the impact of overflow exploits.