Commit 01036503 by Mark Wielaard Committed by Mark Wielaard

FilePermission.java (usingPerms): Removed.

       * java/io/FilePermission.java (usingPerms): Removed.
       (actionsString): Made final.
       (cachePerms): Renamed to checkPerms.
       (checkPerms): Renamed from cachePerms. Call trim() and toLowerCase()
       on action String.
       (FilePermission): Check arguments, call checkPerms().
       (equals): Remove cachePerms() call.
       (implies): Likewise.

From-SVN: r83743
parent ce6230c4
2004-06-27 Mark Wielaard <mark@klomp.org>
* java/io/FilePermission.java (usingPerms): Removed.
(actionsString): Made final.
(cachePerms): Renamed to checkPerms.
(checkPerms): Renamed from cachePerms. Call trim() and toLowerCase()
on action String.
(FilePermission): Check arguments, call checkPerms().
(equals): Remove cachePerms() call.
(implies): Likewise.
2004-06-27 Mark Wielaard <mark@klomp.org> 2004-06-27 Mark Wielaard <mark@klomp.org>
* gnu/java/net/protocol/http/Connection.java (userAgent): New static * gnu/java/net/protocol/http/Connection.java (userAgent): New static
......
/* java.lang.FilePermission /* java.lang.FilePermission
Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc. Copyright (C) 1998, 2000, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath. This file is part of GNU Classpath.
...@@ -46,23 +46,21 @@ public final class FilePermission extends Permission implements Serializable ...@@ -46,23 +46,21 @@ public final class FilePermission extends Permission implements Serializable
private static final String CURRENT_DIRECTORY = private static final String CURRENT_DIRECTORY =
System.getProperty("user.dir"); System.getProperty("user.dir");
private boolean usingPerms = false;
private boolean readPerm = false; private boolean readPerm = false;
private boolean writePerm = false; private boolean writePerm = false;
private boolean executePerm = false; private boolean executePerm = false;
private boolean deletePerm = false; private boolean deletePerm = false;
private String actionsString; private final String actionsString;
private void cachePerms() // Checks and caches the actions
private void checkPerms() throws IllegalArgumentException
{ {
// While race conditions could occur, they don't matter at all.
String action; String action;
int i = actionsString.indexOf(','); int i = actionsString.indexOf(',');
int startI = 0; int startI = 0;
while(i != -1) while(i != -1)
{ {
action = actionsString.substring(startI,i); action = actionsString.substring(startI,i).trim().toLowerCase();
if(action.equals("read")) if(action.equals("read"))
readPerm = true; readPerm = true;
else if(action.equals("write")) else if(action.equals("write"))
...@@ -71,12 +69,14 @@ public final class FilePermission extends Permission implements Serializable ...@@ -71,12 +69,14 @@ public final class FilePermission extends Permission implements Serializable
executePerm = true; executePerm = true;
else if(action.equals("delete")) else if(action.equals("delete"))
deletePerm = true; deletePerm = true;
else
throw new IllegalArgumentException("Unknown action: " + action);
startI = i+1; startI = i+1;
i = actionsString.indexOf(',',startI); i = actionsString.indexOf(',',startI);
} }
action = actionsString.substring(startI); action = actionsString.substring(startI).trim().toLowerCase();
if(action.equals("read")) if(action.equals("read"))
readPerm = true; readPerm = true;
else if(action.equals("write")) else if(action.equals("write"))
...@@ -85,19 +85,30 @@ public final class FilePermission extends Permission implements Serializable ...@@ -85,19 +85,30 @@ public final class FilePermission extends Permission implements Serializable
executePerm = true; executePerm = true;
else if(action.equals("delete")) else if(action.equals("delete"))
deletePerm = true; deletePerm = true;
else
throw new IllegalArgumentException("Unknown action: " + action);
} }
/** Create a new FilePermission. /*
** @param pathExpression an expression specifying the paths this * Create a new FilePermission.
** permission represents. *
** @param actionsString a comma-separated list of the actions this * @param pathExpression an expression specifying the paths this
** permission represents. * permission represents.
** FIXME: what to do when the file string is malformed? * @param actionsString a comma-separated list of the actions this
**/ * permission represents. The actions must be "read", "write",
* "execute" and/or "delete".
*
* FIXME: what to do when the file string is malformed?
*/
public FilePermission(String pathExpression, String actionsString) public FilePermission(String pathExpression, String actionsString)
{ {
super(pathExpression); super(pathExpression);
if (pathExpression == null)
throw new NullPointerException("pathExpression");
if (actionsString == null)
throw new IllegalArgumentException("actionsString");
this.actionsString = actionsString; this.actionsString = actionsString;
checkPerms();
} }
/** Get the actions this FilePermission supports. /** Get the actions this FilePermission supports.
...@@ -132,10 +143,6 @@ public final class FilePermission extends Permission implements Serializable ...@@ -132,10 +143,6 @@ public final class FilePermission extends Permission implements Serializable
if(!(o instanceof FilePermission)) if(!(o instanceof FilePermission))
return false; return false;
FilePermission p = (FilePermission)o; FilePermission p = (FilePermission)o;
if(!usingPerms)
cachePerms();
if(!p.usingPerms)
p.cachePerms();
String f1 = getName(); String f1 = getName();
String f2 = p.getName(); String f2 = p.getName();
...@@ -283,11 +290,6 @@ public final class FilePermission extends Permission implements Serializable ...@@ -283,11 +290,6 @@ public final class FilePermission extends Permission implements Serializable
break; break;
} }
if(!usingPerms)
cachePerms();
if(!fp.usingPerms)
fp.cachePerms();
if(readPerm && !fp.readPerm) if(readPerm && !fp.readPerm)
return false; return false;
if(writePerm && !fp.writePerm) if(writePerm && !fp.writePerm)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment