jdk/src/share/classes/sun/security/krb5/internal/ccache/Credentials.java
changeset 76 87bd6df367b8
parent 73 cf334423502b
child 5506 202f599c92aa
--- a/jdk/src/share/classes/sun/security/krb5/internal/ccache/Credentials.java	Wed Mar 05 21:55:33 2008 +0800
+++ b/jdk/src/share/classes/sun/security/krb5/internal/ccache/Credentials.java	Wed Mar 05 22:15:45 2008 +0800
@@ -79,9 +79,13 @@
         key = (EncryptionKey) new_key.clone();
 
         authtime = (KerberosTime) new_authtime.clone();
-        starttime = (KerberosTime) new_starttime.clone();
+        if (new_starttime != null) {
+            starttime = (KerberosTime) new_starttime.clone();
+        }
         endtime = (KerberosTime) new_endtime.clone();
-        renewTill = (KerberosTime) new_renewTill.clone();
+        if (new_renewTill != null) {
+            renewTill = (KerberosTime) new_renewTill.clone();
+        }
         if (new_caddr != null) {
             caddr = (HostAddresses) new_caddr.clone();
         }
@@ -112,9 +116,13 @@
         key = (EncryptionKey) kdcRep.encKDCRepPart.key.clone();
         flags = (TicketFlags) kdcRep.encKDCRepPart.flags.clone();
         authtime = (KerberosTime) kdcRep.encKDCRepPart.authtime.clone();
-        starttime = (KerberosTime) kdcRep.encKDCRepPart.starttime.clone();
+        if (kdcRep.encKDCRepPart.starttime != null) {
+            starttime = (KerberosTime) kdcRep.encKDCRepPart.starttime.clone();
+        }
         endtime = (KerberosTime) kdcRep.encKDCRepPart.endtime.clone();
-        renewTill = (KerberosTime) kdcRep.encKDCRepPart.renewTill.clone();
+        if (kdcRep.encKDCRepPart.renewTill != null) {
+            renewTill = (KerberosTime) kdcRep.encKDCRepPart.renewTill.clone();
+        }
         srealm = (Realm) kdcRep.encKDCRepPart.srealm.clone();
         sname = (PrincipalName) kdcRep.encKDCRepPart.sname.clone();
         caddr = (HostAddresses) kdcRep.encKDCRepPart.caddr.clone();
@@ -181,9 +189,14 @@
         boolean valid = true;
         if (endtime.getTime() < System.currentTimeMillis()) {
             valid = false;
-        } else if ((starttime.getTime() > System.currentTimeMillis())
-                || ((starttime == null) && (authtime.getTime() > System.currentTimeMillis()))) {
-            valid = false;
+        } else if (starttime != null) {
+            if (starttime.getTime() > System.currentTimeMillis()) {
+                valid = false;
+            }
+        } else {
+            if (authtime.getTime() > System.currentTimeMillis()) {
+                valid = false;
+            }
         }
         return valid;
     }