Source: https://ssvlab.github.io/lucasccordeiro/courses/2020/01/software-security/slides/lecture02.pdf