src/share/classes/sun/security/krb5/internal/ccache/CCacheInputStream.java

Print this page
rev 10175 : 8048073: Cannot read ccache entry with a realm-less service name

*** 332,350 **** * entry is used by KDC to inform the client that it support certain * features. Its ticket is not a valid krb5 ticket and thus this method * returns null. */ Credentials readCred(int version) throws IOException,RealmException, KrbApErrException, Asn1Exception { ! PrincipalName cpname = readPrincipal(version); ! if (DEBUG) System.out.println(">>>DEBUG <CCacheInputStream> client principal is " + cpname); ! PrincipalName spname = readPrincipal(version); ! if (DEBUG) System.out.println(">>>DEBUG <CCacheInputStream> server principal is " + spname); EncryptionKey key = readKey(version); ! if (DEBUG) System.out.println(">>>DEBUG <CCacheInputStream> key type: " + key.getEType()); long times[] = readTimes(); KerberosTime authtime = new KerberosTime(times[0]); KerberosTime starttime = (times[1]==0) ? null : new KerberosTime(times[1]); KerberosTime endtime = new KerberosTime(times[2]); --- 332,363 ---- * entry is used by KDC to inform the client that it support certain * features. Its ticket is not a valid krb5 ticket and thus this method * returns null. */ Credentials readCred(int version) throws IOException,RealmException, KrbApErrException, Asn1Exception { ! PrincipalName cpname = null; ! try { ! cpname = readPrincipal(version); ! } catch (Exception e) { ! // cpname is null ! } ! if (DEBUG) { System.out.println(">>>DEBUG <CCacheInputStream> client principal is " + cpname); ! } ! PrincipalName spname = null; ! try { ! spname = readPrincipal(version); ! } catch (Exception e) { ! // spname is null ! } ! if (DEBUG) { System.out.println(">>>DEBUG <CCacheInputStream> server principal is " + spname); + } EncryptionKey key = readKey(version); ! if (DEBUG) { System.out.println(">>>DEBUG <CCacheInputStream> key type: " + key.getEType()); + } long times[] = readTimes(); KerberosTime authtime = new KerberosTime(times[0]); KerberosTime starttime = (times[1]==0) ? null : new KerberosTime(times[1]); KerberosTime endtime = new KerberosTime(times[2]);
*** 373,382 **** --- 386,399 ---- auData = new AuthorizationData(auDataEntry); } byte[] ticketData = readData(); byte[] ticketData2 = readData(); + if (cpname == null || spname == null) { + return null; + } + try { return new Credentials(cpname, spname, key, authtime, starttime, endtime, renewTill, skey, tFlags, addrs, auData, ticketData != null ? new Ticket(ticketData) : null,