目次
Safe C Library
Safe C Libraryは、ISO/IEC TR 24731に準拠したバウンドチェックメモリと文字列関数を提供します。これらの関数は、より安全で安全なプログラミングを促進する、既存の標準Cライブラリに対する代替関数です。
ISO/IEC プログラミング言語 - C spec、C11には、付録K「境界チェックインターフェース」の境界APIが含まれています。
この最新のアップロードは静的ライブラリ、共有ライブラリ、そしてLinuxカーネルモジュールの構築をサポートします。
Safe C Library download | SourceForge.net より
GitHub - rurban/safeclib: safec libc extension with all C11 Annex K functions
C11:2011 年以降のC言語仕様
バッファオーバーフロー(あふれ)対策が施された strcpy_s 関数をはじめとする 37の関数が導入された。
IPA ISEC セキュア・プログラミング講座:C/C++言語編 第10章 著名な脆弱性対策:コマンド注入攻撃対策 より
gcc で strcpy_s などの関数群を使用する方法
2019/02/12 現在、glibc が strcpy_s などの関数をサポートしていない。
そこで登場するのが Safe C Library である。
Safe C Library は glibc の代わりに関数群を提供してくれます。
ダウンロード
GitHub より最新の Safe C Library を入手する。
$ git clone https://github.com/rurban/safeclib.git
ビルド
ビルドに必要な Graphviz の dot ツールをインストールするために Graphviz をインストールする。
$ sudo dnf install graphviz
Safe C Library のビルドを行う。
$ cd safeclib/ $ ./build-tools/autogen.sh $ ./configure --libdir=/usr/local/lib64 $ make
インストール
$ sudo make install
トラブルシューティング
make で以下の警告が発生する
doxygen warning: Included by graph for 'safe_str_lib.h' not generated, too many nodes. Consider increasing DOT_GRAPH_MAX_NODES.
Doxyfile.in を修正して DOT_GRAPH_MAX_NODES の値を 10 から 100 に変更すると警告されなくなる。
$ vi Doxyfile.in
- Doxyfile.in
#DOT_GRAPH_MAX_NODES = 10 DOT_GRAPH_MAX_NODES = 100
make で以下の警告が発生する
rm doc/man/man3/EOK.3 rm: 'doc/man/man3/EOK.3' を削除できません: そのようなファイルやディレクトリはありません make[2]: [Makefile:1660: doc/man/man3/EOK.3] エラー 1 (無視されました)
Makefile.am でドキュメント生成前に削除しようとしてエラーになっている様である。
ビルド自体に支障は無いためエラーを無視する。