Repository navigation
OpenCMR2 1.3.1
Fixes for crashes and memory overruns found by playing the game with random input under AddressSanitizer.
- Fix a crash in the championship's saved stage selection with a driver name longer than three letters: the name was copied into four bytes of the stack. The Rally Challenge results did the same with the computer drivers' names ("A. DRIVER").
- Leaving the service area a second time, after leaving it once without keeping the setup, no longer writes into, and destroys again, the car previews of the first visit.
- Fix memory written past its end: the texts of the championship entry selection, which localised texts make longer than 32 characters, the preview wheel variant of the service area's later slots, and two of the in-race camera offset vectors. The decompilation declared them smaller than the original does; it is corrected there.
- A test that plays the game with random input, through menus, races, pauses, replays and the service area, finds faults like these (
tools/monkey.py).
Tested locally on Linux x86-64: the unit tests, the 34 runtime scenarios, and 64 random-input runs of 60000 frames under AddressSanitizer and UBSan, through every game mode, without a crash. Release packages are built and tested by GitHub Actions for each supported platform.
You need your own original PC Colin McRae Rally 2.0 game data. The downloads contain only the port, its dependencies and licences.