PatchSet 4514 
Date: 2004/03/12 18:24:36
Author: dalibor
Branch: HEAD
Tag: (none) 
Log:
Fixed CodeSource for policy files

2004-03-12  Casey Marshall <[EMAIL PROTECTED]>

        * libraries/javalib/java/security/CodeSource.java
        (location): marked final.
        (certificates): marked final.
        (<init>): clone the certificate array.
        (getCertificates): clone the certificate array.
        (equals): handle null components.
        (hashCode): handle null components.
        (toString): handle null components.
        (implies): don't check SocketPermission if the host field of
        location is empty.

Members: 
        ChangeLog:1.2093->1.2094 
        libraries/javalib/java/security/CodeSource.java:1.4->1.5 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2093 kaffe/ChangeLog:1.2094
--- kaffe/ChangeLog:1.2093      Fri Mar 12 18:04:23 2004
+++ kaffe/ChangeLog     Fri Mar 12 18:24:36 2004
@@ -1,3 +1,16 @@
+2004-03-12  Casey Marshall <[EMAIL PROTECTED]>
+
+        * libraries/javalib/java/security/CodeSource.java
+        (location): marked final.
+        (certificates): marked final.
+        (<init>): clone the certificate array.
+        (getCertificates): clone the certificate array.
+        (equals): handle null components.
+        (hashCode): handle null components.
+        (toString): handle null components.
+        (implies): don't check SocketPermission if the host field of
+        `location' is empty.
+
 2004-03-12  Jon Nall <[EMAIL PROTECTED]>
 
        * kaffe/jvmpi/jvmpi_kaffe.c:
Index: kaffe/libraries/javalib/java/security/CodeSource.java
diff -u kaffe/libraries/javalib/java/security/CodeSource.java:1.4 
kaffe/libraries/javalib/java/security/CodeSource.java:1.5
--- kaffe/libraries/javalib/java/security/CodeSource.java:1.4   Sun May 18 16:44:56 
2003
+++ kaffe/libraries/javalib/java/security/CodeSource.java       Fri Mar 12 18:24:37 
2004
@@ -5,7 +5,7 @@
  * Copyright (c) 1999
  *     Archie L. Cobbs.  All rights reserved.
  * Copyright (c) 1999
- *     Transvirtual Technologies, Inc.  All rights reserved.
+ *     Transvirtual Technologies, Inc.  All rights reserved.
  *
  * See the file "license.terms" for information on usage and redistribution
  * of this file.
@@ -24,12 +24,16 @@
 
 public class CodeSource implements Serializable {
 
-    private URL location;
-    private java.security.cert.Certificate [] certificates;
+    private final URL location;
+    private final java.security.cert.Certificate [] certificates;
 
-    public CodeSource(URL location, java.security.cert.Certificate[] certificates) {
+    public CodeSource(final URL location, final java.security.cert.Certificate[] 
certificates) {
        this.location = location;
-       this.certificates = certificates;
+       if (certificates != null) {
+           this.certificates = (java.security.cert.Certificate[]) 
certificates.clone();
+       } else {
+           this.certificates = null;
+       }
     }
 
     public boolean equals(Object obj) {
@@ -42,12 +46,30 @@
 
        CodeSource that = (CodeSource) obj;
 
-       return getLocation().equals(that.getLocation())
-           && getCertSet().equals(that.getCertSet());
+       if (location == null) {
+           if (that.location != null) {
+               return false;
+           }
+       } else if (!location.equals(that.location)) {
+           return false;
+       }
+       if (certificates == null) {
+           if (that.certificates != null) {
+               return false;
+           }
+       } else {
+           if (!getCertSet().equals(that.getCertSet())) {
+               return false;
+           }
+       }
+       return true;
     }
 
     public final java.security.cert.Certificate[] getCertificates() {
-       return certificates;
+       if (certificates == null) {
+           return null;
+       }
+       return (java.security.cert.Certificate[]) certificates.clone();
     }
 
     private Set getCertSet() {
@@ -59,8 +81,16 @@
     }
 
     public int hashCode() {
-       return getLocation().hashCode()
-           ^ getCertSet().hashCode();
+       int sum = 0;
+       if (location != null) {
+           sum += location.hashCode();
+       }
+       if (certificates != null) {
+           for (int i = 0; i < certificates.length; i++) {
+               sum += certificates[i].hashCode();
+           }
+       }
+       return sum;
     }
 
     public boolean implies(CodeSource other) {
@@ -99,7 +129,7 @@
            }
 
            /* Check 3.4 */
-           if  (getLocation().getHost() != null) {
+           if  (getLocation().getHost() != null && ! 
getLocation().getHost().equals("")) {
                if (! new SocketPermission(getLocation().getHost(), "")
                    .implies(new SocketPermission(other.getLocation().getHost(), ""))) 
{
                    return false;
@@ -151,7 +181,7 @@
     public String toString() {
        return getClass().getName()
            + "[location=" + getLocation()
-           + ",certificates=" + getCertSet()
+           + ",certificates=" + (certificates != null ? getCertSet().toString() : 
"none")
            + ']';
     }
 }

_______________________________________________
kaffe mailing list
[EMAIL PROTECTED]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to