How to fix legacy code that uses <string.h> unsafely?
Posted
by
Snowbody
on Programmers
See other posts from Programmers
or by Snowbody
Published on 2014-08-24T04:37:18Z
Indexed on
2014/08/24
16:28 UTC
Read the original article
Hit count: 155
We've got a bunch of legacy code, written in straight C (some of which is K&R!), which for many, many years has been compiled using Visual C 6.0 (circa 1998) on an XP machine. We realize this is unsustainable, and we're trying to move it to a modern compiler. Political issues have said that the most recent compiler allowed is VC++ 2005.
When compiling the project, there are many warnings about the unsafe string manipulation functions used (sprintf()
, strcpy()
, etc). Reviewing some of these places shows that the code is indeed unsafe; it does not check for buffer overflows. The compiler warning recommends that we move to using sprintf_s()
, strcpy_s()
, etc. However, these are Microsoft-created (and proprietary) functions and aren't available on (say) gcc (although we're primarily a Windows shop we do have some clients on various flavors of *NIX)
How ought we to proceed? I don't want to roll our own string libraries. I only want to go over the code once. I'd rather not switch to C++ if we can help it.
© Programmers or respective owner