====== Safe C Library ======
Safe C Libraryは、ISO/IEC TR 24731に準拠したバウンドチェックメモリと文字列関数を提供します。これらの関数は、より安全で安全なプログラミングを促進する、既存の標準Cライブラリに対する代替関数です。\\
\\
ISO/IEC プログラミング言語 - C spec、C11には、付録K「境界チェックインターフェース」の境界APIが含まれています。\\
\\
この最新のアップロードは静的ライブラリ、共有ライブラリ、そしてLinuxカーネルモジュールの構築をサポートします。\\
\\
[[https://sourceforge.net/projects/safeclib/|Safe C Library download | SourceForge.net]] より\\
[[https://github.com/rurban/safeclib|GitHub - rurban/safeclib: safec libc extension with all C11 Annex K functions]]\\
===== C11:2011 年以降のC言語仕様 =====
バッファオーバーフロー(あふれ)対策が施された strcpy_s 関数をはじめとする 37の関数が導入された。\\
[[https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/c910.html|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
#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 でドキュメント生成前に削除しようとしてエラーになっている様である。\\
ビルド自体に支障は無いためエラーを無視する。\\