Buffer Overflows

C is considered to be insecure by many because it doesn't prevent buffers from overflowing. The standard C library does indeed encourage unsafe programming. It's still possible to write secure C code if you have enough self-discipline not to write to memory in unsafe manner. Read access overflows are more difficult to fix, but with good design they're quite irrelevant.

Possible Exploits

Common Problem Cases

Preventing Exploits

Besides writing secure code, there's some solutions to run existing potentially insecure software more safely:

Overflow Detection Tools