#define INQUOTEDVALUE 7
#define B4SEPARATOR 8
+#define UTF8DN 1
+
/*
* dn_validate - validate and compress dn. the dn is
* compressed in place are returned if valid.
default:
dn = NULL;
+#ifdef NEW_LOGGING
+ LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
+ "dn_validate: unknown state %d for dn \"%s\".\n",
+ state, dn_in ));
+#else
Debug( LDAP_DEBUG_ANY,
"dn_validate - unknown state %d\n", state, 0, 0 );
+#endif
break;
}
/*
* dn_normalize - put dn into a canonical form suitable for storing
- * in a hash database. this involves normalizing the case as well as
- * the format. the dn is normalized in place as well as returned if valid.
+ * in a hash database. this involves normalizing the case as well as
+ * the format. the dn is normalized in place as well as returned if valid.
*/
char *
dn_normalize( char *dn )
{
+ char *out;
/* upper case it */
+#ifndef UTF8DN
ldap_pvt_str2upper( dn );
-
/* validate and compress dn */
- dn = dn_validate( dn );
+ out = dn_validate( dn );
+#else
+ /* enabling this might require reindexing */
+ struct berval *bvdn, *nbvdn;
- return( dn );
+ out = NULL;
+ bvdn = ber_bvstr( dn );
+
+ if ( dnNormalize( NULL, bvdn, &nbvdn ) == LDAP_SUCCESS ) {
+ if ( nbvdn->bv_len <= bvdn->bv_len ) {
+ out = dn;
+ strcpy( out, nbvdn->bv_val );
+ }
+ ber_bvfree( nbvdn );
+ }
+ bvdn->bv_val = NULL; /* prevent bvfree from freeing dn */
+ ber_bvfree( bvdn );
+#endif
+
+ return( out );
}
/*