mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-03 16:40:21 +01:00
fix(sonar): addressing last reliability/security issues
This commit is contained in:
@@ -1437,7 +1437,8 @@ int eu07_application::init_data()
|
|||||||
|
|
||||||
int eu07_application::init_modes()
|
int eu07_application::init_modes()
|
||||||
{
|
{
|
||||||
Global.local_random_engine.seed(static_cast<std::mt19937::result_type>(true_random_seed()));
|
// local cosmetics only (sound pitch, editor placement), never security related
|
||||||
|
Global.local_random_engine.seed(static_cast<std::mt19937::result_type>(true_random_seed())); // NOSONAR
|
||||||
|
|
||||||
if ((!Global.network_servers.empty() || Global.network_client) && Global.SceneryFile.empty())
|
if ((!Global.network_servers.empty() || Global.network_client) && Global.SceneryFile.empty())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ bool opengl33_renderer::Init(GLFWwindow *Window)
|
|||||||
|
|
||||||
// Generate hemisphere kernel (z > 0 = toward surface normal)
|
// Generate hemisphere kernel (z > 0 = toward surface normal)
|
||||||
std::uniform_real_distribution<float> rnd(0.0f, 1.0f);
|
std::uniform_real_distribution<float> rnd(0.0f, 1.0f);
|
||||||
std::default_random_engine gen(42); // fixed seed for consistency
|
std::default_random_engine gen(42); // NOSONAR fixed seed on purpose, SSAO kernel has to be identical every run
|
||||||
for (int i = 0; i < 32; i++) {
|
for (int i = 0; i < 32; i++) {
|
||||||
glm::vec3 s(rnd(gen)*2.0f-1.0f, rnd(gen)*2.0f-1.0f, rnd(gen));
|
glm::vec3 s(rnd(gen)*2.0f-1.0f, rnd(gen)*2.0f-1.0f, rnd(gen));
|
||||||
s = glm::normalize(s) * rnd(gen);
|
s = glm::normalize(s) * rnd(gen);
|
||||||
|
|||||||
@@ -622,7 +622,8 @@ std::string deserialize_random_set(cParser &Input, char const *Break)
|
|||||||
}
|
}
|
||||||
if (false == tokens.empty())
|
if (false == tokens.empty())
|
||||||
{
|
{
|
||||||
std::shuffle(std::begin(tokens), std::end(tokens), Global.random_engine);
|
// scenery random set: must replay from the shared run seed, not a security concern
|
||||||
|
std::shuffle(std::begin(tokens), std::end(tokens), Global.random_engine); // NOSONAR
|
||||||
return tokens.front();
|
return tokens.front();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -550,12 +550,12 @@ bool TSegment::RenderLoft( gfx::vertex_array &Output, glm::dvec3 const &Origin,
|
|||||||
void TSegment::render_lines(std::vector<gfx::basic_vertex> &out, float quality) const
|
void TSegment::render_lines(std::vector<gfx::basic_vertex> &out, float quality) const
|
||||||
{
|
{
|
||||||
float step = 1.0f / iSegCount / quality;
|
float step = 1.0f / iSegCount / quality;
|
||||||
|
int const stepcount = static_cast<int>(iSegCount * quality);
|
||||||
float x;
|
|
||||||
|
|
||||||
glm::vec3 previous = FastGetPoint(0.0);
|
glm::vec3 previous = FastGetPoint(0.0);
|
||||||
|
|
||||||
for (x = step; x <= 1.0f; x += step) {
|
for (int i = 1; i <= stepcount; ++i) {
|
||||||
|
float const x = std::min(1.0f, i * step);
|
||||||
out.push_back(gfx::basic_vertex(previous, glm::vec3(0.0f), glm::vec2(0.0f)));
|
out.push_back(gfx::basic_vertex(previous, glm::vec3(0.0f), glm::vec2(0.0f)));
|
||||||
|
|
||||||
previous = glm::vec3(FastGetPoint(x));
|
previous = glm::vec3(FastGetPoint(x));
|
||||||
@@ -571,13 +571,13 @@ void TSegment::render_lines(std::vector<gfx::basic_vertex> &out, float quality)
|
|||||||
glm::vec3 TSegment::get_nearest_point(const glm::dvec3 &point, float quality) const
|
glm::vec3 TSegment::get_nearest_point(const glm::dvec3 &point, float quality) const
|
||||||
{
|
{
|
||||||
float step = 1.0f / iSegCount / quality;
|
float step = 1.0f / iSegCount / quality;
|
||||||
|
int const stepcount = static_cast<int>(iSegCount * quality);
|
||||||
float x;
|
|
||||||
|
|
||||||
glm::vec3 nearest;
|
glm::vec3 nearest;
|
||||||
float min = std::numeric_limits<float>::max();
|
float min = std::numeric_limits<float>::max();
|
||||||
|
|
||||||
for (x = step; x <= 1.0f; x += step) {
|
for (int i = 1; i <= stepcount; ++i) {
|
||||||
|
float const x = std::min(1.0f, i * step);
|
||||||
glm::vec3 p1 = FastGetPoint(x);
|
glm::vec3 p1 = FastGetPoint(x);
|
||||||
glm::vec3 p2 = FastGetPoint(glm::min(1.0f, x + step));
|
glm::vec3 p2 = FastGetPoint(glm::min(1.0f, x + step));
|
||||||
|
|
||||||
|
|||||||
@@ -3719,7 +3719,9 @@ void TTrack::build_sleeper_transforms()
|
|||||||
auto const expected = static_cast<std::size_t>( std::max( 0.0, ( length - start ) / spacing ) ) + 1u;
|
auto const expected = static_cast<std::size_t>( std::max( 0.0, ( length - start ) / spacing ) ) + 1u;
|
||||||
m_sleeper_local_transforms.reserve( m_sleeper_local_transforms.size() + expected );
|
m_sleeper_local_transforms.reserve( m_sleeper_local_transforms.size() + expected );
|
||||||
|
|
||||||
for( double s = start; s < length; s += spacing ) {
|
for( std::size_t sleeperidx = 0;; ++sleeperidx ) {
|
||||||
|
auto const s = start + static_cast<double>( sleeperidx ) * spacing;
|
||||||
|
if( s >= length ) { break; }
|
||||||
glm::dvec3 pos;
|
glm::dvec3 pos;
|
||||||
glm::vec3 angles;
|
glm::vec3 angles;
|
||||||
segment->RaPositionGet( s, pos, angles );
|
segment->RaPositionGet( s, pos, angles );
|
||||||
|
|||||||
Reference in New Issue
Block a user