javamanager/javaregistry/legacy/server/src/javaregserverpolicycheck.cpp
branchRCL_3
changeset 14 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javamanager/javaregistry/legacy/server/src/javaregserverpolicycheck.cpp	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,84 @@
+/*
+* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  javaregserverpolicycheck implementation
+*
+*/
+
+
+#include "javaregserver.h"
+#include "javaregserversession.h"
+#include "javaregserverallowedid.h"
+#include "logger.h"
+
+// ============================ MEMBER FUNCTIONS ==============================
+
+// ---------------------------------------------------------------------------
+// CJavaRegServer::CustomSecurityCheckL
+// ---------------------------------------------------------------------------
+//
+// using namespace Java::Utilities;
+using namespace Java::Manager::Registry;
+
+CPolicyServer::TCustomResult CJavaRegServer::CustomSecurityCheckL(
+    const RMessage2&  aMsg,
+    TInt&  aAction,
+    TSecurityInfo&  /*aMissing*/)
+{
+    JELOG(EJavaStorage, "CJavaRegServer::CustomSecurityCheckL()");
+    switch (aMsg.Function())
+    {
+    case EInitializeServerTransId:
+    case ESetEntry:
+    case ERemoveEntry:
+    case ERemoveEntryFromAll:
+    case EAllocateUids:
+        // Pass if the client is Java Installer OR OSGi VM OR SDK debug agent
+        if (aMsg.SecureId() == AllowedClientSecureId_Installer ||
+                aMsg.SecureId() == AllowedClientSecureId_OsgiVm ||
+                aMsg.SecureId() == AllowedClientSecureId_SDKDebugAgent)
+        {
+            return CPolicyServer::EPass;
+        }
+        // Pass if the client is using the legacy API AND
+        // it's either JavaHelperServer OR AppInstUi.
+        // Written as an 'elseif' only for better readability's sake.
+        else if (((CJavaRegServerSession*)(aMsg.Session()))->IsLegacy() &&
+                 (aMsg.SecureId() == AllowedClientSecureId_JavaHelperServer ||
+                  aMsg.SecureId() == AllowedClientSecureId_AppInstUi))
+        {
+            return CPolicyServer::EPass;
+        }
+        else
+        {
+            aAction = CPolicyServer::EFailClient;
+            return CPolicyServer::EFail;
+        }
+        // falltrough not possible here
+    case ESetBackupState:
+        if (aMsg.SecureId() == AllowedClientSecureId_Backup)
+        {
+            return CPolicyServer::EPass;
+        }
+        else
+        {
+            aAction = CPolicyServer::EFailClient;
+            return CPolicyServer::EFail;
+        }
+        // falltrough not possible here
+    default:
+        aAction = CPolicyServer::EFailClient;
+        return CPolicyServer::EFail;
+        // falltrough not possible here
+    }
+}