The bug comes in two slices:
1) the functions never actually checked if "tile" was a depot tile.
This allowed executing the function on tile 0, where are the
things like shadows of aircrafts are.
2) BuildDepotVehicleList() first checked if a vehicle is in a depot
before checking if it was a primary vehicle. This is invalid
for aircraft.
Fixing the first hides the second, and fixing the second makes the
first non-exploitable. But, fixing both felt like the best thing
to do.
Height was a unsigned 32bit integer, where TileAddWrap uses a
signed 32bit integer for the height. In result, there was an
implicit cast from unsigned to signed, messing things up.
But looking at it from a functional perspective, allowing such
large values is not sensible. In fact, width is restricted to
just a 8bit integer. By changing height to a 8bit integer too,
the implicit cast will never make a positive value negative anymore.
It first checked if the vehicle was in the depot, which for some types
is only a valid action for the primary vehicle. Afterwards, it checked
if the vehicle was a primary vehicle.
Although it was checked that RoadType was not 63 (INVALID_ROADTYPE),
and all values lower than 63 are fine, it also allowed values higher
than 63. As the RoadType is a "byte", it could contain values up
to 255.
When you don't type an Enum, it is a signed value. To validate
if an Axis is valid, it is checked to be lower than AXIS_END. Which
is the case for any value below 0.
swedish: 7 changes by translators
norwegian (bokmal): 1 change by translators
spanish (mexican): 41 changes by translators
japanese: 28 changes by translators
english (us): 4 changes by translators
vietnamese: 7 changes by translators
estonian: 60 changes by translators
korean: 9 changes by translators
greek: 4 changes by translators
hungarian: 2 changes by translators
indonesian: 5 changes by translators
italian: 12 changes by translators, 1 change by Rivarossi
german: 33 changes by translators
romanian: 11 changes by translators
russian: 4 changes by translators
finnish: 2 changes by translators
ukrainian: 5 changes by translators
slovak: 9 changes by translators
catalan: 14 changes by translators
turkish: 1 change by translators
danish: 1 change by translators
latvian: 5 changes by translators
dutch: 5 changes by translators
spanish: 98 changes by translators
portuguese: 6 changes by translators
portuguese (brazilian): 2 changes by translators, 1 change by marlondantas
polish: 13 changes by translators
english (us): 2 changes by 2TallTyler
italian: 2 changes by Rivarossi
russian: 5 changes by Ln-Wolf
dutch: 2 changes by Afoklala
french: 25 changes by glx22
portuguese: 2 changes by azulcosta