Add fallback for random number generator

`getrandom()` is available since Linux 3.17 (2014/10/05) yet there are older devices that don't
meet this requirement.

Closes #22691.
PR #22723.
This commit is contained in:
Chocobo1 2025-05-18 15:37:17 +08:00 committed by Vladimir Golovnev (Glassez)
parent 9133b16431
commit f51ad39ad9
No known key found for this signature in database
GPG key ID: 52A2C7DEE2DFA6F7
4 changed files with 49 additions and 8 deletions

View file

@ -46,7 +46,7 @@ namespace
: m_randDev {fopen("/dev/urandom", "rb")}
{
if (!m_randDev)
qFatal("Failed to open /dev/urandom. Reason: %s. Error code: %d.", std::strerror(errno), errno);
qFatal("Failed to open /dev/urandom. Reason: \"%s\". Error code: %d.", std::strerror(errno), errno);
}
~RandomLayer()
@ -67,10 +67,10 @@ namespace
result_type operator()() const
{
result_type buf = 0;
if (fread(&buf, sizeof(buf), 1, m_randDev) != 1)
qFatal("Read /dev/urandom error. Reason: %s. Error code: %d.", std::strerror(errno), errno);
if (fread(&buf, sizeof(buf), 1, m_randDev) == 1)
return buf;
return buf;
qFatal("Read /dev/urandom error. Reason: \"%s\". Error code: %d.", std::strerror(errno), errno);
}
private: