Index: includes/form.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/form.inc,v
retrieving revision 1.166
diff -u -p -r1.166 form.inc
--- includes/form.inc	12 Dec 2006 10:01:38 -0000	1.166
+++ includes/form.inc	21 Dec 2006 08:27:36 -0000
@@ -521,6 +521,11 @@ function _form_validate($elements, $form
         form_error($elements, t('!name field is required.', array('!name' => $elements['#title'])));
       }
 
+      // Verify that the value is not longer than #maxlength.
+      if (isset($elements['#maxlength']) && drupal_strlen($elements['#value']) > $elements['#maxlength']) {
+        form_error($elements, t('!name cannot be longer than %max characters but is currently %length characters long.', array('!name' => $elements['#title'], '%max' => $elements['#maxlength'], '%length' => drupal_strlen($elements['#value']))));
+      }
+
       // Add legal choice check if element has #options. Can be skipped, but then you must validate your own element.
       if (isset($elements['#options']) && isset($elements['#value']) && !isset($elements['#DANGEROUS_SKIP_CHECK'])) {
         if ($elements['#type'] == 'select') {
