It's worth mentioning that buffer overflows only occur when a program is coded in a sloppy way.
You should always (especially in large projects) code in a defensive way: check every string length, check every return value, ... and you won't get any buffer overflows.
I'm not saying it's entirely banspot's fault though.