mirror of https://github.com/OpenTTD/OpenTTD
Fix: CmdRemoveRoadStop didn't validate the height property properly (#9945)
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.pull/9950/head
parent
9957675a66
commit
100aca1848
|
@ -2058,7 +2058,7 @@ static CommandCost RemoveRoadStop(TileIndex tile, DoCommandFlag flags)
|
||||||
* @param remove_road Remove roads of drive-through stops?
|
* @param remove_road Remove roads of drive-through stops?
|
||||||
* @return The cost of this operation or an error.
|
* @return The cost of this operation or an error.
|
||||||
*/
|
*/
|
||||||
CommandCost CmdRemoveRoadStop(DoCommandFlag flags, TileIndex tile, uint8 width, uint height, RoadStopType stop_type, bool remove_road)
|
CommandCost CmdRemoveRoadStop(DoCommandFlag flags, TileIndex tile, uint8 width, uint8 height, RoadStopType stop_type, bool remove_road)
|
||||||
{
|
{
|
||||||
if (stop_type >= ROADSTOP_END) return CMD_ERROR;
|
if (stop_type >= ROADSTOP_END) return CMD_ERROR;
|
||||||
/* Check for incorrect width / height. */
|
/* Check for incorrect width / height. */
|
||||||
|
|
|
@ -20,7 +20,7 @@ CommandCost CmdBuildDock(DoCommandFlag flags, TileIndex tile, StationID station_
|
||||||
CommandCost CmdBuildRailStation(DoCommandFlag flags, TileIndex tile_org, RailType rt, Axis axis, byte numtracks, byte plat_len, StationClassID spec_class, byte spec_index, StationID station_to_join, bool adjacent);
|
CommandCost CmdBuildRailStation(DoCommandFlag flags, TileIndex tile_org, RailType rt, Axis axis, byte numtracks, byte plat_len, StationClassID spec_class, byte spec_index, StationID station_to_join, bool adjacent);
|
||||||
CommandCost CmdRemoveFromRailStation(DoCommandFlag flags, TileIndex start, TileIndex end, bool keep_rail);
|
CommandCost CmdRemoveFromRailStation(DoCommandFlag flags, TileIndex start, TileIndex end, bool keep_rail);
|
||||||
CommandCost CmdBuildRoadStop(DoCommandFlag flags, TileIndex tile, uint8 width, uint8 length, RoadStopType stop_type, bool is_drive_through, DiagDirection ddir, RoadType rt, StationID station_to_join, bool adjacent);
|
CommandCost CmdBuildRoadStop(DoCommandFlag flags, TileIndex tile, uint8 width, uint8 length, RoadStopType stop_type, bool is_drive_through, DiagDirection ddir, RoadType rt, StationID station_to_join, bool adjacent);
|
||||||
CommandCost CmdRemoveRoadStop(DoCommandFlag flags, TileIndex tile, uint8 width, uint height, RoadStopType stop_type, bool remove_road);
|
CommandCost CmdRemoveRoadStop(DoCommandFlag flags, TileIndex tile, uint8 width, uint8 height, RoadStopType stop_type, bool remove_road);
|
||||||
CommandCost CmdRenameStation(DoCommandFlag flags, StationID station_id, const std::string &text);
|
CommandCost CmdRenameStation(DoCommandFlag flags, StationID station_id, const std::string &text);
|
||||||
CommandCost CmdOpenCloseAirport(DoCommandFlag flags, StationID station_id);
|
CommandCost CmdOpenCloseAirport(DoCommandFlag flags, StationID station_id);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue