Applied patch for DIRKRB-595

git-svn-id: https://svn.apache.org/repos/asf/directory/apacheds/trunk@1752418 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/principalName/actions/StoreNameString.java b/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/principalName/actions/StoreNameString.java
index cd1a0a9..c14c197 100644
--- a/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/principalName/actions/StoreNameString.java
+++ b/kerberos-codec/src/main/java/org/apache/directory/shared/kerberos/codec/principalName/actions/StoreNameString.java
@@ -46,6 +46,18 @@
     /** Speedup for logs */
     private static final boolean IS_DEBUG = LOG.isDebugEnabled();
 
+    /** A flag used to allow UTF-8 chars in the name. THanks Microsoft for, once again, blowing a specification */
+    private static boolean ALLOW_UTF8_NAMES = false;
+
+    static 
+    {
+        String allowUTF8Names = System.getProperty( "sun.security.krb5.msinterop.kstring" );
+
+        if ( "true".equalsIgnoreCase( Strings.trim( allowUTF8Names ) ) )
+        {
+            ALLOW_UTF8_NAMES = true;
+        }
+    }
 
     /**
      * Instantiates a new PrincipalNameInit action.
@@ -78,7 +90,7 @@
         BerValue value = tlv.getValue();
 
         // The PrincipalName must be pure ASCII witout any control character
-        if ( KerberosUtils.isKerberosString( value.getData() ) )
+        if ( ALLOW_UTF8_NAMES || KerberosUtils.isKerberosString( value.getData() ) )
         {
             String nameString = Strings.utf8ToString( value.getData() );