4.3.13 -errsecurity=level
-errsecurity オプションを使用して、コードのセキュリティーに問題がないか検査することができます。
level は、次の表に示す値のいずれかでなければいけません。
表 4-5 -errsecurity のフラグ
|
|
core
|
このレベルでは、たいていの場合で安全でない、または検査することの難しいソースコードの構文がないかどうかを検査します。このレベルで行われる検査には次のものがあります。
-
printf() および scanf() 系の関数での変数書式文字列の使用
-
scanf() 関数における非結合文字列 (%s) 形式の使用
-
安全な使用法のない関数の使用: gets()、 cftime()、 ascftime() 、 creat()
-
O_CREAT と組み合わせた open() の不正使用
このレベルで警告が生成されるソースコードはバグと考えてください。問題のコードを変更することを推奨します。どんな場合でも、単純明快でより安全な別の方法があります。
|
standard
|
このレベルには、core レベルのすべての検査に加えて、安全かもしれないが、より良い別の方法がある構文のすべての検査が含まれます。新しく作成したコードを検査をするときは、このレベルを推奨します。このレベルで追加される検査には、次のものがあります。
|
extended
|
このレベルには、core および standard レベルのすべての検査など、もっとも完全な検査セットが含まれます。また、状況によっては安全でない可能性がある構文について、多数の警告が生成されます。このレベルの検査は、コードを見直す際の一助になりますが、許容しうるソースコードが守る必要のある基準と考える必要はありません。このレベルで追加される検査には、次のものがあります。
|
%none
|
-errsecurity の検査を無効にします。
|
|
-errsecurity の値が指定されていない場合は、-errsecurity=%none に設定されます。-errsecurity は指定されているが、引数が指定されていない場合は、-errsecurity=standard に設定されます。