The issue was caused by this change:

public class EncTicketPart extends KrbAppSequenceType {
      public static final int TAG = 3;

 -    protected enum MyEnum implements EnumType {
+    protected enum EncTicketPartField implements EnumType {
          FLAGS,
          KEY,
          CREALM,
@@ -77,17 +75,17 @@ public String getName() {
      }

      static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(FLAGS, 0, TicketFlags.class),
-            new ExplicitField(KEY, 1, EncryptionKey.class),
-            new ExplicitField(CREALM, 2, KerberosString.class),
-            new ExplicitField(CNAME, 3, PrincipalName.class),
-            new ExplicitField(TRANSITED, 4, TransitedEncoding.class),
-            new ExplicitField(AUTHTIME, 5, KerberosTime.class),
-            new ExplicitField(STARTTIME, 6, KerberosTime.class),
-            new ExplicitField(ENDTIME, 7, KerberosTime.class),
-            new ExplicitField(ENDTIME, 8, KerberosTime.class),
-            new ExplicitField(CADDR, 9, HostAddresses.class),
-            new ExplicitField(AUTHORIZATION_DATA, 10, AuthorizationData.class)
+            new ExplicitField(EncTicketPartField.FLAGS, TicketFlags.class),
+            new ExplicitField(EncTicketPartField.KEY, EncryptionKey.class),
+            new ExplicitField(EncTicketPartField.CREALM, KerberosString.class),
+            new ExplicitField(EncTicketPartField.CNAME, PrincipalName.class),
+            new ExplicitField(EncTicketPartField.TRANSITED, 
TransitedEncoding.class),
+            new ExplicitField(EncTicketPartField.AUTHTIME, KerberosTime.class),
+            new ExplicitField(EncTicketPartField.STARTTIME, 
KerberosTime.class),
+            new ExplicitField(EncTicketPartField.ENDTIME, KerberosTime.class),
+            new ExplicitField(EncTicketPartField.ENDTIME, KerberosTime.class),
+            new ExplicitField(EncTicketPartField.CADDR, HostAddresses.class),
+            new ExplicitField(EncTicketPartField.AUTHORIZATION_DATA, 
AuthorizationData.class)
      };

We can see that the change is perfect and nothing bad. So what's the bad?

The fix is simple:

diff --git 
a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/EncTicketPart.java
 
b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/EncTicketPart.java
index 9428630..e7ca968 100644
--- 
a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/EncTicketPart.java
+++ 
b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/EncTicketPart.java
@@ -83,7 +83,7 @@ public class EncTicketPart extends KrbAppSequenceType {
             new ExplicitField(EncTicketPartField.AUTHTIME, KerberosTime.class),
             new ExplicitField(EncTicketPartField.STARTTIME, 
KerberosTime.class),
             new ExplicitField(EncTicketPartField.ENDTIME, KerberosTime.class),
-            new ExplicitField(EncTicketPartField.ENDTIME, KerberosTime.class),
+            new ExplicitField(EncTicketPartField.RENEW_TILL, 
KerberosTime.class),
             new ExplicitField(EncTicketPartField.CADDR, HostAddresses.class),
             new ExplicitField(EncTicketPartField.AUTHORIZATION_DATA, 
AuthorizationData.class)
     };

Right, we can see that the change actually exposed a previous coding error (the 
2nd ENDTIME SHOULD BE RENEW_TILL), and the fix is just correcting the error.

I'm describing this just for fun. It's interesting.

Regards,
Kai

From: Zheng, Kai
Sent: Friday, December 25, 2015 6:48 AM
To: [email protected]
Subject: Kerby building failed

Hi,

Kerby building failed. Don't worry, I have figured it out.

Results :

Tests in error:
  EncryptionTest.testAes128:72->testEncWith:124 ▒ Krb Decoding failed
  EncryptionTest.testAes256:79->testEncWith:124 ▒ Krb Decoding failed
  EncryptionTest.testCamellia128:89->testEncWith:124 ▒ Krb Decoding failed
  EncryptionTest.testCamellia256:94->testEncWith:124 ▒ Krb Decoding failed
  EncryptionTest.testDes3CbcSha1:104->testEncWith:124 ▒ Krb Decoding failed
  EncryptionTest.testDesCbcCrc:99->testEncWith:124 ▒ Krb Decoding failed
  EncryptionTest.testRc4:84->testEncWith:124 ▒ Krb Decoding failed

Tests run: 20, Failures: 0, Errors: 7, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Kerby Build Tools .................................. SUCCESS [  1.813 s]
[INFO] Apache Kerby Project ............................... SUCCESS [  3.912 s]
[INFO] Kerby Config ....................................... SUCCESS [  5.381 s]
[INFO] Kerby Util ......................................... SUCCESS [  4.184 s]
[INFO] Kerby ASN1 Project ................................. SUCCESS [  6.410 s]
[INFO] Kerby PKIX Project ................................. SUCCESS [ 24.748 s]
[INFO] Kerby-kerb Project ................................. SUCCESS [  0.315 s]
[INFO] Kerby-kerb core .................................... SUCCESS [  9.317 s]
[INFO] Kerby-kerb Crypto .................................. SUCCESS [ 11.249 s]
[INFO] Kerby-kerb Common .................................. SUCCESS [  1.483 s]
[INFO] Kerby-kerb Util .................................... FAILURE [  4.485 s]
[INFO] Kerby-kerb Identity ................................ SKIPPED
[INFO] Kerby-kerb Identity Test ........................... SKIPPED
[INFO] Kerby-kerb Client .................................. SKIPPED
[INFO] Kerby-kerb Server .................................. SKIPPED
[INFO] Kerby-kerb Admin ................................... SKIPPED
[INFO] Kerb Simple Kdc .................................... SKIPPED
[INFO] Kerb Kdc Test ...................................... SKIPPED
[INFO] Kerby providers .................................... SKIPPED
[INFO] Token provider ..................................... SKIPPED
[INFO] Kerb Integration Test .............................. SKIPPED
[INFO] Kerby-kerb client api all .......................... SKIPPED
[INFO] Kerby-kerb server all .............................. SKIPPED
[INFO] Kerby KDC Server ................................... SKIPPED
[INFO] Kdc Tool Project ................................... SKIPPED
[INFO] Client Tool ........................................ SKIPPED
[INFO] KDC Tool ........................................... SKIPPED
[INFO] Kerby Backend ...................................... SKIPPED
[INFO] Json identity backend .............................. SKIPPED
[INFO] Zookeeper identity backend ......................... SKIPPED
[INFO] Ldap identity backend .............................. SKIPPED
[INFO] Kerby Kdc Test ..................................... SKIPPED
[INFO] Mavibot based backend .............................. SKIPPED
[INFO] Kerby Distribution ................................. SKIPPED
[INFO] KDC Dist ........................................... SKIPPED
[INFO] Tool Dist .......................................... SKIPPED
[INFO] Kerby benchmark .................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:14 min
[INFO] Finished at: 2015-12-25T06:46:18+08:00
[INFO] Final Memory: 39M/351M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal 
org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on 
project kerb-util: There are test failures.
[ERROR]
[ERROR] Please refer to 
C:\work\projects\kerby\kerby-kerb\kerb-util\target\surefire-reports for the 
individual test results.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e 
switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please 
read the following articles:
[ERROR] [Help 1] 
http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :kerb-util
Picked up _JAVA_OPTIONS: -Djava.net.preferIPv4Stack=true


Reply via email to