Creating a new RNG and replacing rand().
[ Merge of http://go/wvgerrit/84607 ] [ Merge of http://go/wvgerrit/84608 ] The primary goal is to replace the use of `rand()` with the random number generators provided with the C++11 standard. This simplified generator wraps some of the technical aspects of the <random> library and provides an interface for uniformly distributed integers. As part of the `rand()` purge in the CDM, all uses of the C random int function in `core()` have been removed. Places that previously used `rand()` now use `CdmRandom` facilities. Test: Linux unittest and Android unittest Bug: 130680365 Change-Id: Ica383870536ed462dbb80e630c2d66845e38b937
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
#include <memory>
|
||||
#include <sstream>
|
||||
|
||||
#include "cdm_random.h"
|
||||
#include "cdm_session.h"
|
||||
#include "cdm_session_map.h"
|
||||
#include "clock.h"
|
||||
@@ -69,8 +70,6 @@ class UsagePropertySet : public CdmClientPropertySet {
|
||||
const std::string empty_;
|
||||
};
|
||||
|
||||
bool CdmEngine::seeded_ = false;
|
||||
|
||||
CdmEngine::CdmEngine(FileSystem* file_system,
|
||||
std::shared_ptr<metrics::EngineMetrics> metrics,
|
||||
const std::string& spoid)
|
||||
@@ -83,11 +82,7 @@ CdmEngine::CdmEngine(FileSystem* file_system,
|
||||
usage_property_set_(),
|
||||
last_usage_information_update_time_(0) {
|
||||
assert(file_system);
|
||||
if (!seeded_) {
|
||||
Properties::Init();
|
||||
srand(clock_.GetCurrentTime());
|
||||
seeded_ = true;
|
||||
}
|
||||
Properties::Init();
|
||||
}
|
||||
|
||||
CdmEngine::~CdmEngine() {
|
||||
@@ -1260,7 +1255,8 @@ CdmResponseType CdmEngine::GetUsageInfo(const std::string& app_id,
|
||||
CdmUsageInfo* usage_info) {
|
||||
LOGI("Getting usage info: app_id = %s", app_id.c_str());
|
||||
// Return a random usage report from a random security level
|
||||
SecurityLevel security_level = ((rand() % 2) == 0) ? kLevelDefault : kLevel3;
|
||||
SecurityLevel security_level =
|
||||
CdmRandom::RandomBool() ? kLevelDefault : kLevel3;
|
||||
CdmResponseType status = UNKNOWN_ERROR;
|
||||
if (!usage_info) {
|
||||
LOGE("No usage info destination");
|
||||
@@ -1328,7 +1324,7 @@ CdmResponseType CdmEngine::GetUsageInfo(const std::string& app_id,
|
||||
|
||||
usage_info->resize(kUsageReportsPerRequest);
|
||||
|
||||
size_t index = rand() % usage_data.size();
|
||||
size_t index = CdmRandom::RandomInRange(usage_data.size() - 1);
|
||||
status = usage_session_->RestoreUsageSession(usage_data[index], error_detail);
|
||||
if (KEY_ADDED != status) {
|
||||
LOGE("RestoreUsageSession failed: index = %zu, status = %d", index,
|
||||
|
||||
Reference in New Issue
Block a user