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

(cherry picked from commit cb60c05c3aff762c39d7d81df9a7b6e071acb181)
(cherry picked from commit dd1de1ea373a2afa9bd475cccd655b9d74710f42)

Conflicts:
	hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/UserGroupInformation.java
(cherry picked from commit 7ca1d96b4facf5a9d8700e8e1879abfbb0716cb7)

Conflicts:
	hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/UserGroupInformation.java
(cherry picked from commit 995e059077ef843400281e08054d8740cf38a970)
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/UserGroupInformation.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/UserGroupInformation.java
index fb7f769..e171c11 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/UserGroupInformation.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/UserGroupInformation.java
@@ -1030,10 +1030,14 @@
         Object cred = iter.next();
         if (cred instanceof KerberosTicket) {
           KerberosTicket ticket = (KerberosTicket) cred;
-          if (!ticket.getServer().getName().startsWith("krbtgt")) {
-            LOG.warn("The first kerberos ticket is not TGT(the server" +
-                " principal is " + ticket.getServer() + "), remove" +
-                " and destroy it.");
+          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(
+                "The first kerberos ticket is not TGT"
+                    + "(the server principal is " + ticket.getServer() +
+                    ")), remove and destroy it.");
             iter.remove();
             try {
               ticket.destroy();