CERT.MSC.NORETURN_FUNC_RETURNS
[[noreturn]] と宣言された関数から返さない
脆弱性とリスク
[[noreturn]] とマークされた関数から返すと、未定義の動作が発生し、データ整合性違反を引き起こすために悪用される可能性があります。
軽減と防止
[[noreturn]] と宣言された関数から返さない
例
コピー
#include <cstdlib>
[[noreturn]] void f1(int i) {
if (i > 0)
throw "Received positive input";
else if (i < 0) {
//std::exit(0);
i++;
}
}
[[noreturn]] void f2(int i) {
if (i > 0)
throw "Received positive input";
std::exit(0);
}