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
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,...)
fixes https://github.com/SoPra-Team-17/Server/issues/81
getNearFieldsInDist
returnt einen vektor by value. Der wird ingetRandomNearField
einer lokalen variable zugewiesen. MitgetRandomItemFromContainer
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,...)