diff --git a/modules/user/user.pages.inc b/modules/user/user.pages.inc
index c4b68b9..1b0d8c0 100644
--- a/modules/user/user.pages.inc
+++ b/modules/user/user.pages.inc
@@ -74,16 +74,23 @@ function user_pass_validate($form, &$form_state) {
 function user_pass_submit($form, &$form_state) {
   global $language;
 
-  $account = $form_state['values']['account'];
-  // Mail one time login URL and instructions using current language.
-  $mail = _user_mail_notify('password_reset', $account, $language);
-  if (!empty($mail)) {
-    watchdog('user', 'Password reset instructions mailed to %name at %email.', array('%name' => $account->name, '%email' => $account->mail));
-    drupal_set_message(t('Further instructions have been sent to your e-mail address.'));
+  // Flood protection check
+  $pass_reset_limit = variable_get('user_failed_pass_reset_limit', 20);
+  $pass_reset_window = variable_get('user_failed_pass_reset_window', 3600);
+  // Register the event
+  flood_register_event('request new password', $pass_reset_window);
+  if (flood_is_allowed('request new password', $pass_reset_limit, $pass_reset_window)) {
+    $account = $form_state['values']['account'];
+    // Mail one time login URL and instructions using current language.
+    $mail = _user_mail_notify('password_reset', $account, $language);
+    if (!empty($mail)) {
+      watchdog('user', 'Password reset instructions mailed to %name at %email.', array('%name' => $account->name, '%email' => $account->mail));
+      drupal_set_message(t('Further instructions have been sent to your e-mail address.'));
+    }
+    $form_state['redirect'] = 'user';
+    return;
   }
-
-  $form_state['redirect'] = 'user';
-  return;
+  form_set_error('name', 'Reset password limit exceeded.  Please contact technical support for further assistance.');
 }
 
 /**
