VisualStudio 2012を使っていて、従来でも警告はされていた古い関数群を使用すると、デフォルト設定ではエラーとなることに気付きました。例えば次のような関数です。
- strcat
- strcpy
- fopen
C関数の古くからある物で、Microsoftが末尾 _s が付く関数が用意されているものがその対象となっているように見えます。
これは、プロジェクト設定の”SDLチェック“という部分で変更が可能となっていました。デフォルトでは有効なのですが、無効にすることで従来と同じ挙動(警告メッセージが出る)に切り替わることが確認できました。
安全なコードを書く、という意味においては有効なままプログラムを作りたいと思いますが、移植性を考えると _s付きの関数が全てで用意されているわけではないので、難しいところだなと思います。
コメント
[…] VS2012で新規プロジェクト作成時に見慣れないチェックボックス □security development lifecycle(SDL)チェック というものを発見。 security development lifecycleでぐぐると http://msdn.microsoft.com/ja-jp/library/ms995349.aspx というページを見つけたけどなんか違う。 さらに調べてみるとSDLチェックについて書かれたブログを見つけました。 VisualStudio2012で古い関数を使う(SDLチェック) […]