C arrays as first class objects, with size information, can prevent buffer overflows. The necessary features can be added to C without breaking existing code.
(Older versions: August/September 2012 draft, August 2012 draft, July 2012 draft. )
An attempt to make C pointers safe while retaining backwards compatibiilty. Achieving both goals is almost, but not quite, possible. An early attempt at this problem.