summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-05-11 10:49:37 +0000
committerDries Buytaert <dries@buytaert.net>2010-05-11 10:49:37 +0000
commit8b0871244950bd389e82fc38809af09124ba60c3 (patch)
tree20d9a4f0455d2346469addc083f2217ac062d685
parentacb2348bcc9015d9ee88e9a6023b55f2d0289357 (diff)
downloadbrdo-8b0871244950bd389e82fc38809af09124ba60c3.tar.gz
brdo-8b0871244950bd389e82fc38809af09124ba60c3.tar.bz2
- Patch #740068 by sun, pwolanin, yoroy: SA-CORE-2010-01 locale module XSS vulnerabilities.
-rw-r--r--modules/locale/locale.admin.inc12
1 files changed, 11 insertions, 1 deletions
diff --git a/modules/locale/locale.admin.inc b/modules/locale/locale.admin.inc
index a2ac18753..da4dcc35d 100644
--- a/modules/locale/locale.admin.inc
+++ b/modules/locale/locale.admin.inc
@@ -337,13 +337,23 @@ function locale_languages_predefined_form_submit($form, &$form_state) {
}
$form_state['redirect'] = 'admin/config/regional/language';
- return;
}
/**
* Validate the language editing form. Reused for custom language addition too.
*/
function locale_languages_edit_form_validate($form, &$form_state) {
+ // Ensure sane field values for langcode, name, and native.
+ if (!isset($form['langcode_view']) && preg_match('@[^a-zA-Z_-]@', $form_state['values']['langcode'])) {
+ form_set_error('langcode', t('%field may only contain characters a-z, underscores, or hyphens.', array('%field' => $form['langcode']['#title'])));
+ }
+ if ($form_state['values']['name'] != check_plain($form_state['values']['name'])) {
+ form_set_error('name', t('%field cannot contain any markup.', array('%field' => $form['name']['#title'])));
+ }
+ if ($form_state['values']['native'] != check_plain($form_state['values']['native'])) {
+ form_set_error('native', t('%field cannot contain any markup.', array('%field' => $form['native']['#title'])));
+ }
+
if (!empty($form_state['values']['domain']) && !empty($form_state['values']['prefix'])) {
form_set_error('prefix', t('Domain and path prefix values should not be set at the same time.'));
}