[ticket/10561] All users can choose deactivated styles (fixed).

A form exploit enabled the users to select a deactivated
style. Fixed with extra check on submit, with a new function
styles_verify to check if the selected style is activated or not.

PHPBB3-10561
This commit is contained in:
Hari Sankar R 2012-04-03 22:15:59 +05:30
parent 3477b5e5a8
commit 084e1ae560
2 changed files with 20 additions and 1 deletions

View file

@ -1238,6 +1238,24 @@ function style_select($default = '', $all = false)
return $style_options; return $style_options;
} }
/**
* Check if style is activated
*/
function style_verify($style_id = 0)
{
global $db;
$sql = 'SELECT style_id, style_active
FROM ' . STYLES_TABLE . "
WHERE style_id = $style_id";
$result = $db->sql_query($sql);
$style_verified = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
return $style_verified['style_active'];
}
/** /**
* Pick a timezone * Pick a timezone
*/ */

View file

@ -61,7 +61,8 @@ class ucp_prefs
if ($submit) if ($submit)
{ {
$data['style'] = ($config['override_user_style']) ? $config['default_style'] : $data['style']; $data['style'] = ($config['override_user_style']) ? $config['default_style'] :
(style_verify($data['style']) ? $data['style'] : ((int) $user->data['user_style']));
$error = validate_data($data, array( $error = validate_data($data, array(
'dateformat' => array('string', false, 1, 30), 'dateformat' => array('string', false, 1, 30),