界: Code Quality

コードの質が低いと、予測できない動作につながります。ユーザーの視点には、それがしばしば使い勝手の悪さとなって現れます。攻撃者にとっては、予期せぬ方法でシステムにストレスを与える機会となります。

Undefined Behavior

Abstract
この関数の動作は、その制御パラメーターに特定の値をセットしない限り定義されません。
Explanation
Linux C ライブラリ用の Linux 標準ベース仕様 2.0.1 では、一部の内部関数の引数に制約を課しています [1]。この制約を満たさないと、関数の動作は未定義の状態です。
1 の値が、次の File System 関数の第 1 パラメーター (バージョン番号) に渡されている。


__xmknod
2 の値が、次のワイド文字列関数の第 3 パラメーター (グループ引数) に渡されている。


__wcstod_internal
__wcstof_internal
_wcstol_internal
__wcstold_internal
__wcstoul_internal
3 の値が、次の File System 関数の第 1 パラメーター (バージョン番号) として渡されている。


__xstat
__lxstat
__fxstat
__xstat64
__lxstat64
__fxstat64

References
[1] The Linux Standard Base Specification 2.0.1, Interfaces Definitions for libc.
[2] Standards Mapping - Common Weakness Enumeration CWE ID 475
[3] Standards Mapping - Motor Industry Software Reliability Association (MISRA) C Guidelines 2012 Rule 1.3
desc.semantic.cpp.undefined_behavior