소스 검색

HADOOP-15143. NPE due to Invalid KerberosTicket in UGI. Contributed by Mukul Kumar Singh.

Jitendra Pandey 7 년 전
부모
커밋
cb60c05c3a
1개의 변경된 파일4개의 추가작업 그리고 1개의 파일을 삭제
  1. 4 1
      hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/UserGroupInformation.java

+ 4 - 1
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/UserGroupInformation.java

@@ -1174,7 +1174,10 @@ public class UserGroupInformation {
         Object cred = iter.next();
         Object cred = iter.next();
         if (cred instanceof KerberosTicket) {
         if (cred instanceof KerberosTicket) {
           KerberosTicket ticket = (KerberosTicket) cred;
           KerberosTicket ticket = (KerberosTicket) cred;
-          if (!ticket.getServer().getName().startsWith("krbtgt")) {
+          if (ticket.isDestroyed() || ticket.getServer() == null) {
+            LOG.warn("Ticket is already destroyed, remove it.");
+            iter.remove();
+          } else if (!ticket.getServer().getName().startsWith("krbtgt")) {
             LOG.warn(
             LOG.warn(
                 "The first kerberos ticket is not TGT"
                 "The first kerberos ticket is not TGT"
                     + "(the server principal is {}), remove and destroy it.",
                     + "(the server principal is {}), remove and destroy it.",