diff --git a/sites/all/modules/userprotect/userprotect.module b/sites/all/modules/userprotect/userprotect.module
index be35fca..9c5efbc 100644
--- a/sites/all/modules/userprotect/userprotect.module
+++ b/sites/all/modules/userprotect/userprotect.module
@@ -270,6 +270,10 @@ function userprotect_form_alter(&$form, &$form_state, $form_id) {
       }
       userprotect_form_display_protections($account, $protected);
       break;
+    case 'user_pass':
+      $validate = isset($form['#validate']) ? $form['#validate'] : NULL;
+      $form['#validate'] = userprotect_add_validation($validate, array('userprotect_user_pass_validate'));
+      break;
   }
 }
 
@@ -1187,3 +1191,26 @@ function userprotect_get_user_protection($account, $protection) {
   // No protection enabled.
   return FALSE;
 }
+
+
+
+/**
+ * Check to see if the user is allowed to modify their password before allowing
+ * them to request a new one.
+ */
+function userprotect_user_pass_validate($form, &$form_state) {
+	$userID = $form_state['values']['name'];
+	
+	// Try to load the account by email and then by username.  Lifted from user.pages.inc in user module.
+	$account = user_load(array('mail' => $userID, 'status' => 1));
+	if (!$account) {
+		// No success, try to load by name.
+		$account = user_load(array('name' => $userID, 'status' => 1));
+	}
+	if (isset($account->uid)) {
+		if (userprotect_get_user_protection($account, 'up_pass')) {
+			form_set_error('name',t('Sorry, the password for that user can not be reset.'));
+			return;
+		}
+	}
+}
