diff -r 35baca0e7a2e -r 023eef975703 javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/AccessControllerImpl.java --- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/AccessControllerImpl.java Tue Jul 06 20:36:19 2010 +0300 +++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/AccessControllerImpl.java Fri Jul 09 16:35:45 2010 +0300 @@ -21,6 +21,7 @@ import java.util.Vector; import java.security.AccessControlException; import com.nokia.mj.impl.utils.Uid; +import com.nokia.mj.impl.security.midp.common.PolicyBasedPermission; import com.nokia.mj.impl.security.midp.common.PolicyBasedPermissionImpl; import com.nokia.mj.impl.security.midp.common.UserPermission; import com.nokia.mj.impl.security.midp.common.UserSecuritySettings; @@ -256,7 +257,7 @@ */ private void handleUserPermission( Permission checkedPermission, - UserPermission resolvedPermission, + PolicyBasedPermissionImpl resolvedPermission, SecurityStorage storage) { UserSecuritySettings settings = resolvedPermission @@ -300,6 +301,14 @@ new java.security.AccessControlException( "Permission " + checkedPermission + " not allowed")); } + + // if the permission was assigned or the settings were not active, + // then activate the user settings + if (resolvedPermission.getType() != PolicyBasedPermission.USER_TYPE + || !settings.isActive()) + { + storage.activateUserSecuritySettings(iAppUID, resolvedPermission); + } // if settings have not changed, still do one check on the current // interaction mode: if it's blanket, mark down that the prompt in