diff --git a/ChangeLog b/ChangeLog
index 731a2480f2f0750a4422d03c6fa65fa3180a9901..eef8f4f39aae3538e451503db377f424e7befd89 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,7 @@
 
 	* Fixed bug #12612: Backend Login-Popup not working
 	* Follow-up to bugfix #12612: Removed reference operators for objects and code cleanup
+	* Fixed bug #12517: Password change in User tools -> User setup impossible if rsaauth and saltedpassword are installed
 
 2009-11-17  Benjamin Mack  <benni@typo3.org>
 
diff --git a/typo3/sysext/setup/mod/index.php b/typo3/sysext/setup/mod/index.php
index 998ae855729f0800e244189bdc795d64e440ee26..7e483a2dfca6bbf81c7f451e53e17c4f494c2070 100755
--- a/typo3/sysext/setup/mod/index.php
+++ b/typo3/sysext/setup/mod/index.php
@@ -189,35 +189,20 @@ class SC_mod_user_setup_index {
 				// If email and name is changed, set it in the users record:
 			$be_user_data = $d['be_users'];
 			$this->passwordIsUpdated = strlen($be_user_data['password'].$be_user_data['password2'])>0 ? -1 : 0;
+
+			$passwordIsConfirmed = ($this->passwordIsUpdated && $be_user_data['password'] === $be_user_data['password2']);
+
 			if ($be_user_data['email']!=$BE_USER->user['email']
 					|| $be_user_data['realName']!=$BE_USER->user['realName']
-					|| ( (strlen($be_user_data['password'])==32 || (isset($columns['password']['eval']) && substr($columns['password']['eval'], 0, 3) == 'tx_'))
-							&& !strcmp($be_user_data['password'],$be_user_data['password2']))
+					|| $passwordIsConfirmed
 					)	{
 
 				$BE_USER->user['realName'] = $storeRec['be_users'][$BE_USER->user['uid']]['realName'] = substr($be_user_data['realName'],0,80);
 				$BE_USER->user['email'] = $storeRec['be_users'][$BE_USER->user['uid']]['email'] = substr($be_user_data['email'],0,80);
 
-				if (isset($columns['password']['eval']) && substr($columns['password']['eval'], 0, 3) == 'tx_') {
-						// password encryption by external script (e.g. EXT:saltedpasswords)
-					$func = $columns['password']['eval'];
-					$evalObj = t3lib_div::getUserObj($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tce']['formevals'][$func].':&'.$func);
-					if (is_object($evalObj) && method_exists($evalObj, 'evaluateFieldValue'))	{
-							// initialize vars. If method fails, $set will be set to false
-						$is_in = '';
-						$set = TRUE;
-						$newPassword = $evalObj->evaluateFieldValue($be_user_data['password2'], $is_in, $set);
-						if ($set === TRUE) {
-								// password was changed
-							$storeRec['be_users'][$BE_USER->user['uid']]['password'] = $newPassword;
-							$this->passwordIsUpdated = 1;
-						}
-					}
-				} else {
-					if (strlen($be_user_data['password'])==32 && !strcmp($be_user_data['password'],$be_user_data['password2']))	{
-						$storeRec['be_users'][$BE_USER->user['uid']]['password'] = $be_user_data['password2'];
-						$this->passwordIsUpdated = 1;
-					}
+				if ($passwordIsConfirmed) {
+					$storeRec['be_users'][$BE_USER->user['uid']]['password'] = $be_user_data['password2'];
+					$this->passwordIsUpdated = 1;
 				}
 			}
 			if (count($storeRec)) {