The weaknesses of C

Memory management is left to the programmer. Releasing memory to early leads at runtime to strange bugs caused by the program overwriting its own data or heap foilgroups

Functions without bounds checking are causing so called buffer-overflow errors which can be used to take over machines. C has buffer-overflows practically built in - as a glance at the weekly security reports e.g. from cert.org shows.