Changeset - r20919:d300f0cafae2
[Not reviewed]
master
0 2 0
frosch - 11 years ago 2013-11-12 15:15:02
frosch@openttd.org
(svn r25966) -Fix: [NoGo] Properly validate the range of the growth rate passed to GSTown::SetGrowthRate, instead of masking it to 16 bit.
2 files changed with 4 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/script/api/script_town.cpp
Show inline comments
 
@@ -154,12 +154,12 @@
 
	}
 
}
 

	
 
/* static */ bool ScriptTown::SetGrowthRate(TownID town_id, uint16 days_between_town_growth)
 
/* static */ bool ScriptTown::SetGrowthRate(TownID town_id, uint32 days_between_town_growth)
 
{
 
	days_between_town_growth = days_between_town_growth * DAY_TICKS / TOWN_GROWTH_TICKS;
 

	
 
	EnforcePrecondition(false, IsValidTown(town_id));
 
	EnforcePrecondition(false, (days_between_town_growth & TOWN_GROW_RATE_CUSTOM) == 0);
 
	EnforcePrecondition(false, days_between_town_growth < TOWN_GROW_RATE_CUSTOM);
 

	
 
	return ScriptObject::DoCommand(::Town::Get(town_id)->xy, town_id, days_between_town_growth, CMD_TOWN_GROWTH_RATE);
 
}
src/script/api/script_town.hpp
Show inline comments
 
@@ -251,12 +251,13 @@ public:
 
	 * @param town_id The index of the town.
 
	 * @param days_between_town_growth The amount of days between town growth.
 
	 * @pre IsValidTown(town_id).
 
	 * @pre days_between_town_growth <= 30000.
 
	 * @return True if the action succeeded.
 
	 * @note Even when setting a growth rate, towns only grow when the conditions for growth (SetCargoCoal) are met,
 
	 *       and the game settings (economy.town_growth_rate) allow town growth at all.
 
	 * @api -ai
 
	 */
 
	static bool SetGrowthRate(TownID town_id, uint16 days_between_town_growth);
 
	static bool SetGrowthRate(TownID town_id, uint32 days_between_town_growth);
 

	
 
	/**
 
	 * Get the amount of days between town growth.
0 comments (0 inline, 0 general)