16

C と C++ が混在する古いプロジェクトがあります。strcpyC 文字列や、strcat、などを広範囲に使用します。多くのバッファ オーバーフローを発見したのでstrncpy、. MSVC にはこれらの機能が含まれていますが、少なくとも Linux、OSX、および Windows など、さまざまなプラットフォームで動作するものが必要です。strncatstrcpy_s

私は知っていますstrlcpyが、多くの人が指摘しているように ( example )、実際には改善されていません。


strcpy_sでは、strcat_s、 など、または 全体の無料の実装はありTR24731-1ますか?

またはのいずれかpublic domainが必要BSDですが、他のライセンスの下での実装を知っている場合は、先に進んでリストしてください。他の誰かが恩恵を受けると確信しています。

4

3 に答える 3

18

Safe Cライブラリを試してみてください。これはMIT ライセンスの下にあり、このリストによると、探している機能が実装されています。

Safe C ライブラリは、ISO/IEC TR24731 に従って境界チェック メモリと文字列関数を提供します。これらの関数は、より安全でセキュアなプログラミングを促進する既存の標準 C ライブラリの代替関数です。

于 2012-04-09T00:37:19.363 に答える
5

文字列関数よりも移植可能で安全なmemcpyandなどを使用できます。memset

于 2012-04-09T00:38:18.497 に答える
1

strncpyと を使用し ないのはなぜstrncatですか? と とは対照的にstrlcpystrlcatこれらは標準 C 関数です。これらの機能は完璧ではありませんが、安全に使用できます。

また、境界チェック_s関数は現在の標準ではオプションであることに注意してください。

于 2012-04-09T00:54:59.487 に答える