public boolean implies(ProtectionDomain pd, Permission p) { return perms.implies(p); }
public void checkPermission(Permission perm) { // They can be an undefined number of security.provider.* // Used by jmxmp if (perm instanceof java.security.SecurityPermission && perm.getName().startsWith("getProperty.security.provider")) { if (debugPerm) { permUsed.add(perm.toString() + " ="); } return; } if (perm instanceof java.io.FilePermission && "read".equals(perm.getActions())) { String name = perm.getName(); if (filesallowed.contains(name)) { if (debugPerm) { permUsed.add(perm.toString() + " ="); } return; } // Already allowed, don't check any more if (allowed.implies(perm)) { if (debugPerm) { permUsed.add(perm.toString() + " ="); } filesallowed.add(name); return; } // Perhaps it's in the allowed /proc/<pid>/... files if (procinfoPattern.matcher(name).matches() && "read".equals(perm.getActions())) { if (debugPerm) { permUsed.add( "(\"java.io.FilePermission\" \"" + procinfoPattern.pattern() + "\" \"read\") ="); } return; } // Or it's block device if (diskPattern.matcher(name).matches() && "read".equals(perm.getActions())) { if (debugPerm) { permUsed.add("(\"java.io.FilePermission\" \"" + diskPattern.pattern() + "\" \"read\") ="); } filesallowed.add(name); return; } // Only non hidden folder are allowed, for file system usage // If it call itself, privileges will be set to true, // so it can check isDirectory and isHidden PrivilegHolder privileged = Privilege.get(); if (privileged.privileged) { return; } else { File fullpath = new File(name); privileged.privileged = true; boolean allowed = false; try { allowed = fullpath.isDirectory() && !fullpath.isHidden(); } catch (Exception e) { throw new RuntimeException(e); } finally { privileged.privileged = false; } if (allowed) { if (debugPerm) { permUsed.add(perm.toString() + " ="); } filesallowed.add(name); return; } } } if (allowed.implies(perm)) { if (debugPerm) { permUsed.add(perm.toString() + " ="); } return; } try { super.checkPermission(perm); // Was acceped, but we should add it anyway // Some accepted permissions make jrdsagent failed anyway permUsed.add(perm.toString() + " ?"); } catch (SecurityException e) { if (debugPerm) { permUsed.add(perm.toString() + " -"); } else { throw e; } } }
public boolean implies(Permission permission) { return perms.implies(permission); }
private boolean isAllowed(Permission permission) { final boolean isAllowed = permissions.implies(permission); return isAllowed; }
public void checkPermission(Permission permission) { if (denied != null && denied.implies(permission)) throw new SecurityException(); }