From 4a8ffe34e2e23ee84b9ae719d11959f4dff1b64b Mon Sep 17 00:00:00 2001 From: Alena Prokharchyk Date: Tue, 11 Sep 2012 14:33:39 -0700 Subject: [PATCH] CS-16239: don't try to pull key information if the key was removed in the system As a part of the commit, also checking deleteSshKeyPair name - admin was unable to delete the key on behalf of another user Conflicts: server/src/com/cloud/api/ApiDBUtils.java --- server/src/com/cloud/api/ApiDBUtils.java | 6 +++++- server/src/com/cloud/server/ManagementServerImpl.java | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/server/src/com/cloud/api/ApiDBUtils.java b/server/src/com/cloud/api/ApiDBUtils.java index 55c86716790..712693185d1 100755 --- a/server/src/com/cloud/api/ApiDBUtils.java +++ b/server/src/com/cloud/api/ApiDBUtils.java @@ -814,7 +814,11 @@ public class ApiDBUtils { public static String getKeyPairName(String sshPublicKey) { SSHKeyPairVO sshKeyPair = _sshKeyPairDao.findByPublicKey(sshPublicKey); - return sshKeyPair.getName(); + //key might be removed prior to this point + if (sshKeyPair != null) { + return sshKeyPair.getName(); + } + return null; } public static UserVmDetailVO findPublicKeyByVmId(long vmId) { diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 9cd2b487623..4f489bc15f9 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -3298,7 +3298,7 @@ public class ManagementServerImpl implements ManagementServer { throw ex; } - return _sshKeyPairDao.deleteByName(caller.getAccountId(), caller.getDomainId(), cmd.getName()); + return _sshKeyPairDao.deleteByName(owner.getAccountId(), owner.getDomainId(), cmd.getName()); } @Override