Updated Branches:
  refs/heads/4.2 1d982a5d4 -> 2ceea80a1

CLOUDSTACK-4862:Admin cannot delete shared network scoped to user
account.

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/2ceea80a
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/2ceea80a
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/2ceea80a

Branch: refs/heads/4.2
Commit: 2ceea80a1ddf8c0ef970efde8a030b2efa261c4b
Parents: 1d982a5
Author: Min Chen <[email protected]>
Authored: Mon Oct 14 16:32:13 2013 -0700
Committer: Min Chen <[email protected]>
Committed: Mon Oct 14 16:32:13 2013 -0700

----------------------------------------------------------------------
 server/src/com/cloud/network/element/VirtualRouterElement.java | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2ceea80a/server/src/com/cloud/network/element/VirtualRouterElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java 
b/server/src/com/cloud/network/element/VirtualRouterElement.java
index 13096b8..783886a 100755
--- a/server/src/com/cloud/network/element/VirtualRouterElement.java
+++ b/server/src/com/cloud/network/element/VirtualRouterElement.java
@@ -75,6 +75,7 @@ import com.cloud.network.rules.StaticNat;
 import com.cloud.offering.NetworkOffering;
 import com.cloud.offerings.NetworkOfferingVO;
 import com.cloud.offerings.dao.NetworkOfferingDao;
+import com.cloud.user.Account;
 import com.cloud.user.AccountManager;
 import com.cloud.uservm.UserVm;
 import com.cloud.utils.Pair;
@@ -663,8 +664,11 @@ public class VirtualRouterElement extends AdapterBase 
implements VirtualRouterEl
             return true;
         }
         boolean result = true;
+        // NOTE that we need to pass caller account to destroyRouter, 
otherwise it will fail permission check there. Context passed in from 
deleteNetwork is the network account, 
+        // not caller account
+        Account callerAccount = 
_accountMgr.getAccount(context.getCaller().getAccountId());        
         for (DomainRouterVO router : routers) {
-            result = result && (_routerMgr.destroyRouter(router.getId(), 
context.getAccount(), context.getCaller().getId()) != null);
+            result = result && (_routerMgr.destroyRouter(router.getId(), 
callerAccount, context.getCaller().getId()) != null);
         }
         return result;
     }

Reply via email to