Java.lang.SecurityManager.checkLink() Method

Advertisements


Description

The java.lang.SecurityManager.checkLink(String lib) method throws a SecurityException if the calling thread is not allowed to dynamic link the library code specified by the string argument file. The argument is either a simple library name or a complete filename. This method is invoked for the current security manager by methods load and loadLibrary of class Runtime.

This method calls checkPermission with the RuntimePermission("loadLibrary."+lib) permission. If you override this method, then you should make a call to super.checkLink at the point the overridden method would normally throw an exception.

Declaration

Following is the declaration for java.lang.SecurityManager.checkLink() method

public void checkLink(String lib)

Parameters

  • lib -- the name of the library.

Return Value

This method does not return a value.

Exception

  • SecurityException -- if the calling thread does not have permission to dynamically link the library.

  • NullPointerException -- if the lib argument is null.

Example

Our examples require that the permissions for each command is blocked. A new policy file was set that allows only the creating and setting of our Security Manager. The file is in C:/java.policy and contains the following text:

grant {
  permission java.lang.RuntimePermission "setSecurityManager";
  permission java.lang.RuntimePermission "createSecurityManager";
  permission java.lang.RuntimePermission "usePolicy";
};

The following example shows the usage of lang.SecurityManager.checkLink() method.

package com.tutorialspoint;

public class SecurityManagerDemo {

   public static void main(String[] args) {


      // set the policy file as the system securuty policy
      System.setProperty("java.security.policy", "file:/C:/java.policy");

      // create a security manager
      SecurityManager sm = new SecurityManager();

      // set the system security manager
      System.setSecurityManager(sm);

      // perform the check
      sm.checkLink("JDBC");

      // print a message if we passed the check
      System.out.println("Allowed!");
   }
}

Let us compile and run the above program, this will produce the following result:

Exception in thread "main" java.security.AccessControlException: access denied (java.lang.RuntimePermission loadLibrary.JDBC)



Advertisements
Advertisements