summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java41
1 files changed, 15 insertions, 26 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java b/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java
index 8665e579ba..cea4e90c31 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java
@@ -179,39 +179,28 @@ public class PlainPasswordFilePrincipalDatabase implements PrincipalDatabase
throw new AccountNotFoundException(principal.getName());
}
+ char[] orig = user.getPassword();
+ _userUpdate.lock();
try
{
- try
- {
- _userUpdate.lock();
- char[] orig = user.getPassword();
- user.setPassword(password);
+ user.setPassword(password);
- try
- {
- savePasswordFile();
- }
- catch (IOException e)
- {
- _logger.error("Unable to save password file, password change for user '" + principal + "' discarded");
- //revert the password change
- user.setPassword(orig);
- return false;
- }
- return true;
- }
- finally
- {
- if (_userUpdate.isHeldByCurrentThread())
- {
- _userUpdate.unlock();
- }
- }
+ savePasswordFile();
+
+ return true;
}
- catch (Exception e)
+ catch (IOException e)
{
+ _logger.error("Unable to save password file due to '"+e.getMessage()
+ +"', password change for user '" + principal + "' discarded");
+ //revert the password change
+ user.setPassword(orig);
return false;
}
+ finally
+ {
+ _userUpdate.unlock();
+ }
}
public boolean createPrincipal(Principal principal, char[] password)