(svn r26092) -Fix [FS#5818]: prevent scripts from crashing OpenTTD when they send text with command codes to user editable texts such as sign and station names
This commit is contained in:
		@@ -219,7 +219,7 @@ static const Command _command_proc_table[] = {
 | 
			
		||||
	DEF_CMD(CmdRemoveFromRailStation,                          0, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_REMOVE_FROM_RAIL_STATION
 | 
			
		||||
	DEF_CMD(CmdConvertRail,                                    0, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_CONVERT_RAILD
 | 
			
		||||
	DEF_CMD(CmdBuildRailWaypoint,                              0, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_BUILD_RAIL_WAYPOINT
 | 
			
		||||
	DEF_CMD(CmdRenameWaypoint,                      CMD_STR_CTRL, CMDT_OTHER_MANAGEMENT      ), // CMD_RENAME_WAYPOINT
 | 
			
		||||
	DEF_CMD(CmdRenameWaypoint,                                 0, CMDT_OTHER_MANAGEMENT      ), // CMD_RENAME_WAYPOINT
 | 
			
		||||
	DEF_CMD(CmdRemoveFromRailWaypoint,                         0, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_REMOVE_FROM_RAIL_WAYPOINT
 | 
			
		||||
 | 
			
		||||
	DEF_CMD(CmdBuildRoadStop,            CMD_NO_WATER | CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_BUILD_ROAD_STOP
 | 
			
		||||
 
 | 
			
		||||
@@ -287,7 +287,11 @@ ScriptObject::ActiveInstance::~ActiveInstance()
 | 
			
		||||
		return false;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	assert(StrEmpty(text) || (GetCommandFlags(cmd) & CMD_STR_CTRL) != 0 || StrValid(text, text + strlen(text)));
 | 
			
		||||
	if (!StrEmpty(text) && (GetCommandFlags(cmd) & CMD_STR_CTRL) == 0) {
 | 
			
		||||
		/* The string must be valid, i.e. not contain special codes. Since some
 | 
			
		||||
		 * can be made with GSText, make sure the control codes are removed. */
 | 
			
		||||
		str_validate(text, text + strlen(text)), SVS_NONE);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Set the default callback to return a true/false result of the DoCommand */
 | 
			
		||||
	if (callback == NULL) callback = &ScriptInstance::DoCommandReturn;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user