> C-style programming in C++ is also a bad sign; the IOBuffer design pattern with separate storage of buffers and their sizes is inherently dangerous.
This the main take away. Even when writing C, just prefer safe libraries to default strings and arrays, when possible.
By the way, MSR is hiring for Checked C.
There is no reason to spend time on any variant of C in the age of Rust.
For new projects, sure. For existing projects, it's not trivial to convert them and anyone working on something significant is going to need time to do a migration during which additional new C code will almost certainly need to be written.
It can be semi-automated with the amazing c2rust[1] tool.