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
This commit is contained in:
Mark Wielaard 2004-06-27 19:42:19 +00:00 committed by Mark Wielaard
parent ce6230c406
commit 01036503d1
2 changed files with 37 additions and 24 deletions

View File

@ -1,3 +1,14 @@
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>
* gnu/java/net/protocol/http/Connection.java (userAgent): New static

View File

@ -1,5 +1,5 @@
/* 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.
@ -46,23 +46,21 @@ public final class FilePermission extends Permission implements Serializable
private static final String CURRENT_DIRECTORY =
System.getProperty("user.dir");
private boolean usingPerms = false;
private boolean readPerm = false;
private boolean writePerm = false;
private boolean executePerm = 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;
int i = actionsString.indexOf(',');
int startI = 0;
while(i != -1)
{
action = actionsString.substring(startI,i);
action = actionsString.substring(startI,i).trim().toLowerCase();
if(action.equals("read"))
readPerm = true;
else if(action.equals("write"))
@ -71,12 +69,14 @@ public final class FilePermission extends Permission implements Serializable
executePerm = true;
else if(action.equals("delete"))
deletePerm = true;
else
throw new IllegalArgumentException("Unknown action: " + action);
startI = i+1;
i = actionsString.indexOf(',',startI);
}
action = actionsString.substring(startI);
action = actionsString.substring(startI).trim().toLowerCase();
if(action.equals("read"))
readPerm = true;
else if(action.equals("write"))
@ -85,19 +85,30 @@ public final class FilePermission extends Permission implements Serializable
executePerm = true;
else if(action.equals("delete"))
deletePerm = true;
else
throw new IllegalArgumentException("Unknown action: " + action);
}
/** Create a new FilePermission.
** @param pathExpression an expression specifying the paths this
** permission represents.
** @param actionsString a comma-separated list of the actions this
** permission represents.
** FIXME: what to do when the file string is malformed?
**/
/*
* Create a new FilePermission.
*
* @param pathExpression an expression specifying the paths this
* permission represents.
* @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)
{
super(pathExpression);
if (pathExpression == null)
throw new NullPointerException("pathExpression");
if (actionsString == null)
throw new IllegalArgumentException("actionsString");
this.actionsString = actionsString;
checkPerms();
}
/** Get the actions this FilePermission supports.
@ -132,10 +143,6 @@ public final class FilePermission extends Permission implements Serializable
if(!(o instanceof FilePermission))
return false;
FilePermission p = (FilePermission)o;
if(!usingPerms)
cachePerms();
if(!p.usingPerms)
p.cachePerms();
String f1 = getName();
String f2 = p.getName();
@ -283,11 +290,6 @@ public final class FilePermission extends Permission implements Serializable
break;
}
if(!usingPerms)
cachePerms();
if(!fp.usingPerms)
fp.cachePerms();
if(readPerm && !fp.readPerm)
return false;
if(writePerm && !fp.writePerm)