旧式の標準関数が使用されています
旧式のルーチンがセキュリティの脆弱性や移植性の問題の原因となることがある
説明
この欠陥は、C/C++ コーディング標準でレガシ、削除済み、非推奨、または旧式とされている標準関数ルーチンが使用された場合に発生します。
旧式の関数 | 規格 | リスク | 置換関数 |
---|---|---|---|
asctime | POSIX.1-2008 で使用終了 | スレッドセーフでない。 | strftime または asctime_s |
asctime_r | POSIX.1-2008 で使用終了 | 安全でない関数 sprintf に基づく実装。 | strftime または asctime_s |
bcmp | 4.3BSD で使用終了 POSIX.1–2001 でレガシとマークされている。 | 最初の異なるバイトを見つけたら関数から戻るため、タイミング攻撃に対して脆弱になる。 | memcmp |
bcopy | 4.3BSD で使用終了 POSIX.1–2001 でレガシとマークされている。 | 最初の異なるバイトを見つけたら関数から戻るため、タイミング攻撃に対して脆弱になる。 | memcpy または memmove |
brk および sbrk | SUSv2 および POSIX.1-2001 でレガシとマークされている。 | malloc | |
bsd_signal | POSIX.1–2008 で削除済み | sigaction | |
bzero | POSIX.1–2001 でレガシとマークされている。POSIX.1–2008 で削除済み。 | memset | |
ctime | POSIX.1-2008 で使用終了 | スレッドセーフでない。 | strftime または asctime_s |
ctime_r | POSIX.1-2008 で使用終了 | 安全でない関数 sprintf に基づく実装。 | strftime または asctime_s |
cuserid | POSIX.1–2001 で削除済み。 | 再呼び出し可能でない。正確な機能が標準化されておらず、移植性の問題の原因となる。 | getpwuid |
ecvt および fcvt | POSIX.1–2001 でレガシとマークされている。POSIX.1–2008 で削除済み | 再呼び出し可能でない | snprintf |
ecvt_r および fcvt_r | POSIX.1–2001 でレガシとマークされている。POSIX.1–2008 で削除済み | snprintf | |
ftime | POSIX.1–2008 で削除済み | time , gettimeofday , clock_gettime | |
gamma , gammaf , gammal | 履歴が錯綜しているため、関数はどの規格でも指定されていない | 移植性の問題。 | tgamma , lgamma |
gcvt | POSIX.1–2001 でレガシとマークされている。POSIX.1–2008 で削除済み。 | snprintf | |
getcontext | POSIX.1–2008 で削除済み。 | 移植性の問題。 | POSIX スレッドを代わりに使用。 |
getdtablesize | BSD API 関数が POSIX.1-2001 に含まれていない | 移植性の問題。 | sysconf( _SC_OPEN_MAX ) |
gethostbyaddr | POSIX.1–2008 で削除済み | 再呼び出し可能でない | getaddrinfo |
gethostbyname | POSIX.1–2008 で削除済み | 再呼び出し可能でない | getnameinfo |
getpagesize | BSD API 関数が POSIX.1-2001 に含まれていない | 移植性の問題。 | sysconf( _SC_PAGESIZE ) |
getpass | POSIX.1–2001 で削除済み。 | 再呼び出し可能でない。 | getpwuid |
getw | POSIX.1-2001 に存在しない。 | fread | |
getwd | POSIX.1-2001 でレガシとマークされている。POSIX.1–2008 で削除済み。 | getcwd | |
index | POSIX.1–2001 でレガシとマークされている。POSIX.1–2008 で削除済み。 | strchr | |
makecontext | POSIX.1–2008 で削除済み。 | 移植性の問題。 | POSIX スレッドを代わりに使用。 |
memalign | SunOS 4.1.3 で登場。4.4 BSD または POSIX.1-2001 にはなし | posix_memalign | |
mktemp | POSIX.1–2008 で削除済み。 | 生成された名前が予測可能であり、競合状態の原因となることがある。 | mkstemp は競合リスクを除去 |
pthread_attr_getstackaddr および pthread_attr_setstackaddr | stackaddr 属性の仕様にあいまいさがあり、移植性の問題の原因となる | pthread_attr_getstack および pthread_attr_setstack | |
putw | POSIX.1-2001 に存在しない。 | 移植性の問題。 | fwrite |
qecvt および qfcvt | POSIX.1-2001 でレガシとマークされ、POSIX.1-2008 で削除済み | snprintf | |
qecvt_r および qfcvt_r | POSIX.1-2001 でレガシとマークされ、POSIX.1-2008 で削除済み | snprintf | |
rand_r | POSIX.1-2008 で旧式とマークされている | ||
re_comp | BSD API 関数 | 移植性の問題 | regcomp |
re_exes | BSD API 関数 | 移植性の問題 | regexec |
rindex | POSIX.1–2001 でレガシとマークされている。POSIX.1–2008 で削除済み。 | strrchr | |
scalb | POSIX.1–2008 で削除済み | scalbln 、scalblnf または scalblnl | |
sigblock | 出典が不明な 4.3BSD シグナル API | sigprocmask | |
sigmask | 出典が不明な 4.3BSD シグナル API | sigprocmask | |
sigsetmask | 出典が不明な 4.3BSD シグナル API | sigprocmask | |
sigstack | インターフェイスが旧式であり、ほとんどのプラットフォームで実装されていない。 | 移植性の問題。 | sigaltstack |
sigvec | 出典が不明な 4.3BSD シグナル API | sigaction | |
swapcontext | POSIX.1–2008 で削除済み | 移植性の問題。 | POSIX スレッドを使用。 |
tmpnam および tmpnam_r | POSIX.1–2008 で旧式とマークされている。 | この関数は、呼び出されるたびに TMP_MAX 回目まで異なる文字列を生成。呼び出される回数が TMP_MAX 回を超えると、動作が処理系定義になる。 | mkstemp , tmpfile |
ttyslot | POSIX.1–2001 で削除済み。 | ||
ualarm | POSIX.1–2001 でレガシとマークされている。POSIX.1–2008 で削除済み。 | エラーの指定が不十分。 | setitimer または POSIX timer_create |
usleep | POSIX.1–2008 で削除済み。 | nanosleep | |
utime | SVr4、POSIX.1-2001。POSIX.1-2008 で旧式とマークされている。 | ||
valloc | 4.3BSD で旧式とマークされている。 SUSv2 でレガシとマークされている。 POSIX.1-2001 から削除済み | posix_memalign | |
vfork | POSIX.1-2008 から削除済み | 以前の規格で指定が不十分。 | fork |
wcswcs | この関数は最終的な ISO/IEC 9899:1990/Amendment 1:1995 (E) に含まれていなかった。 | wcsstr | |
WinExec | WinAPI ではこの関数を 16 ビット Windows 互換でのみ提供。 | CreateProcess | |
LoadModule | WinAPI ではこの関数を 16 ビット Windows 互換でのみ提供。 | CreateProcess |
修正方法
修正方法は欠陥の根本原因によって異なります。上の表に記載されている修正と以下の修正付きのコード例を参照してください。
問題を修正しない場合は、改めてレビューされないように結果またはコードにコメントを追加します。詳細は、以下を参照してください。
Polyspace ユーザー インターフェイスでのバグ修正または正当化による結果への対処 (Polyspace ユーザー インターフェイスで結果をレビューする場合)。
Polyspace Access でのバグ修正または正当化による結果への対処 (Polyspace Access) (Web ブラウザーで結果をレビューする場合)。
コードへの注釈付けと既知の結果または許容可能な結果の非表示 (IDE で結果をレビューする場合)
例
結果情報
グループ: セキュリティ |
言語: C | C++ |
既定値: オフ |
コマンド ライン構文: OBSOLETE_STD_FUNC |
影響度: Low |
タグ: #deprecatedFunctions |
バージョン履歴
R2015b で導入