SoPra-Team-17 / LibCommon

Library für Datentypen (mit JSON-Serialisierung und -Deserialisierung), Spiel-Logik (Validierung, Siegererkennung) und KI-Logik (Generierung von Operationen)
GNU General Public License v3.0
0 stars 0 forks source link

fix segfaults caused by returning invalid references #288

Closed ottojo closed 4 years ago

ottojo commented 4 years ago

fixes https://github.com/SoPra-Team-17/Server/issues/81

getNearFieldsInDist returnt einen vektor by value. Der wird in getRandomNearField einer lokalen variable zugewiesen. Mit getRandomItemFromContainer wird ein zufälliger iterator in den vektor erzeugt. Dann "dereferenziert" getRandomNearField diesen iterator und returnt diese referenz, die in diesem moment ungültig wird da der vektor out of scope geht.

einfacher fix: In den utility funktionen einfach die Points direkt zurückgeben und nicht per referenz. (rechtfertigung: point ist klein, cache ist groß, compiler macht return value optimization, c++17 fordert guaranteed copy elision,...)

sonarcloud[bot] commented 4 years ago

Kudos, SonarCloud Quality Gate passed!

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities (and Security Hotspot 0 Security Hotspots to review)
Code Smell A 0 Code Smells

0.0% 0.0% Coverage
0.0% 0.0% Duplication