cert-msc51-cpp

此检查会标记所有使用默认参数、常量表达式或任何用户可配置类型初始化或播种的伪随机数引擎、引擎适配器实例化和 srand()。用可预测值播种的伪随机数引擎可能会导致漏洞,例如在安全协议中。这是 CERT 安全规则,请参阅 MSC51-CPP. 确保您的随机数生成器已正确播种MSC32-C. 正确播种伪随机数生成器.

示例

void foo() {
  std::mt19937 engine1; // Diagnose, always generate the same sequence
  std::mt19937 engine2(1); // Diagnose
  engine1.seed(); // Diagnose
  engine2.seed(1); // Diagnose

  std::time_t t;
  engine1.seed(std::time(&t)); // Diagnose, system time might be controlled by user

  int x = atoi(argv[1]);
  std::mt19937 engine3(x);  // Will not warn
}

选项

DisallowedSeedTypes

一个以逗号分隔的类型名称列表,这些名称是不允许的。默认值为 time_tstd::time_t