diff options
Diffstat (limited to 'phpBB/includes/acp/acp_modules.php')
| -rw-r--r-- | phpBB/includes/acp/acp_modules.php | 32 | 
1 files changed, 25 insertions, 7 deletions
diff --git a/phpBB/includes/acp/acp_modules.php b/phpBB/includes/acp/acp_modules.php index ea6b388328..9d14614417 100644 --- a/phpBB/includes/acp/acp_modules.php +++ b/phpBB/includes/acp/acp_modules.php @@ -46,6 +46,9 @@ class acp_modules  		$user->add_lang('acp/modules');  		$this->tpl_name = 'acp_modules'; +		$form_key = 'acp_modules'; +		add_form_key($form_key); +  		// module class  		$this->module_class = $mode; @@ -119,6 +122,11 @@ class acp_modules  					trigger_error($user->lang['NO_MODULE_ID'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING);  				} +				if (!check_link_hash($request->variable('hash', ''), 'acp_modules')) +				{ +					trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING); +				} +  				$sql = 'SELECT *  					FROM ' . MODULES_TABLE . "  					WHERE module_class = '" . $db->sql_escape($this->module_class) . "' @@ -150,6 +158,11 @@ class acp_modules  					trigger_error($user->lang['NO_MODULE_ID'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING);  				} +				if (!check_link_hash($request->variable('hash', ''), 'acp_modules')) +				{ +					trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING); +				} +  				$sql = 'SELECT *  					FROM ' . MODULES_TABLE . "  					WHERE module_class = '" . $db->sql_escape($this->module_class) . "' @@ -273,6 +286,11 @@ class acp_modules  				if ($submit)  				{ +					if (!check_form_key($form_key)) +					{ +						trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING); +					} +  					if (!$module_data['module_langname'])  					{  						trigger_error($user->lang['NO_MODULE_LANGNAME'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING); @@ -460,12 +478,12 @@ class acp_modules  					'S_ACP_MODULE_MANAGEMENT'	=> ($this->module_class == 'acp' && ($row['module_basename'] == 'modules' || $row['module_langname'] == 'ACP_MODULE_MANAGEMENT')) ? true : false,  					'U_MODULE'			=> $this->u_action . '&parent_id=' . $row['module_id'], -					'U_MOVE_UP'			=> $url . '&action=move_up', -					'U_MOVE_DOWN'		=> $url . '&action=move_down', +					'U_MOVE_UP'			=> $url . '&action=move_up&hash=' . generate_link_hash('acp_modules'), +					'U_MOVE_DOWN'		=> $url . '&action=move_down&hash=' . generate_link_hash('acp_modules'),  					'U_EDIT'			=> $url . '&action=edit',  					'U_DELETE'			=> $url . '&action=delete', -					'U_ENABLE'			=> $url . '&action=enable', -					'U_DISABLE'			=> $url . '&action=disable') +					'U_ENABLE'			=> $url . '&action=enable&hash=' . generate_link_hash('acp_modules'), +					'U_DISABLE'			=> $url . '&action=disable&hash=' . generate_link_hash('acp_modules'))  				);  			}  			while ($row = $db->sql_fetchrow($result)); @@ -484,8 +502,8 @@ class acp_modules  				'U_EDIT'			=> $url . '&action=edit',  				'U_DELETE'			=> $url . '&action=delete', -				'U_ENABLE'			=> $url . '&action=enable', -				'U_DISABLE'			=> $url . '&action=disable') +				'U_ENABLE'			=> $url . '&action=enable&hash=' . generate_link_hash('acp_modules'), +				'U_DISABLE'			=> $url . '&action=disable&hash=' . generate_link_hash('acp_modules'))  			);  		}  		$db->sql_freeresult($result); @@ -888,7 +906,7 @@ class acp_modules  		$diff = sizeof($moved_modules) * 2;  		$moved_ids = array(); -		for ($i = 0; $i < sizeof($moved_modules); ++$i) +		for ($i = 0, $size = sizeof($moved_modules); $i < $size; ++$i)  		{  			$moved_ids[] = $moved_modules[$i]['module_id'];  		}  | 
