Buffer Overflow Causes. ©2002, Jedidiah R. Crandall, Susan L. Gerhart, Jan G. Hogle.  http://sfsecurity.pr.erau.edu
Off-by-one errors
In C, if you create a buffer that will hold 100 bytes then it will only hold 99 ASCII characters (other than the NULL character at the end) , the 99th character being indexed with the number 98.  This can lead to a lot of confusion even for seasoned C programmers who do bounds checking.  This can lead to a small amount of data corruption or even a program crash.