CONC.SLEEP
クリティカル セクションでのブロック関数の呼び出し
CONC.SLEEP チェッカーは、コードのクリティカルセクションでブロック関数のインスタンスを検出します。
脆弱性とリスク
そのブロック関数が実行されるまで、ロックは解放されません。このため、他のスレッドがブロックされる可能性があります。このような状況では、予期しない動作が発生する可能性があるため、ブロック関数の呼び出しを回避するのがベストです。
脆弱コード例
コピー
#include <pthread.h>
void foo(pthread_mutex_t *mutex) {
pthread_mutex_lock(mutex);
sleep(30000);
pthread_mutex_unlock(mutex);
}
Klocwork は、4 行目で mutex がロックされた後、ブロック関数 sleep が呼び出されていることを示す 5 行目にフラグを立てます。
関連チェッカー
セキュリティトレーニング
Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。