From d47d4bbd2069e72031fd6728a448948d8fde1c6e Mon Sep 17 00:00:00 2001 From: Min Chen Date: Thu, 23 Jan 2014 18:32:20 -0800 Subject: [PATCH] Guard NPE due to empty policies. --- server/src/com/cloud/api/query/QueryManagerImpl.java | 2 +- .../org/apache/cloudstack/iam/server/IAMServiceImpl.java | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/server/src/com/cloud/api/query/QueryManagerImpl.java b/server/src/com/cloud/api/query/QueryManagerImpl.java index e84356bcd8e..182a5e49777 100644 --- a/server/src/com/cloud/api/query/QueryManagerImpl.java +++ b/server/src/com/cloud/api/query/QueryManagerImpl.java @@ -2268,7 +2268,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { Object id = cmd.getId(); Object keyword = cmd.getKeyword(); Long domainId = cmd.getDomainId(); - Boolean isRootAdmin = _accountMgr.isRootAdmin(account.getType()); + Boolean isRootAdmin = _accountMgr.isRootAdmin(account.getAccountId()); // Keeping this logic consistent with domain specific zones // if a domainId is provided, we just return the disk offering // associated with this domain diff --git a/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java b/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java index 8a070dd928d..d84dad4788d 100644 --- a/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java +++ b/services/iam/server/src/org/apache/cloudstack/iam/server/IAMServiceImpl.java @@ -137,6 +137,7 @@ public class IAMServiceImpl extends ManagerBase implements IAMService, Manager { groupSB.selectFields(groupSB.entity().getAclGroupId()); groupSB.and("account", groupSB.entity().getAccountId(), Op.EQ); SearchCriteria groupSc = groupSB.create(); + groupSc.setParameters("account", accountId); List groupIds = _aclGroupAccountMapDao.customSearch(groupSc, null); @@ -340,7 +341,9 @@ public class IAMServiceImpl extends ManagerBase implements IAMService, Manager { policySc.setJoinParameters("accountgroupjoin", "account", accountId); List policyIds = _aclGroupPolicyMapDao.customSearch(policySc, null); - + if (policyIds == null || policyIds.size() == 0) { + return new ArrayList(); + } SearchBuilder sb = _aclPolicyDao.createSearchBuilder(); sb.and("ids", sb.entity().getId(), Op.IN); SearchCriteria sc = sb.create(); @@ -609,6 +612,10 @@ public class IAMServiceImpl extends ManagerBase implements IAMService, Manager { boolean allowed = false; + if (policies == null || policies.size() == 0) { + return allowed; + } + List policyIds = new ArrayList(); for (AclPolicy policy : policies) { policyIds.add(policy.getId());