]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/rwmconf.c
Mroe abandon checks for ITS#3671
[openldap] / servers / slapd / overlays / rwmconf.c
index f25229882607a949fcb2e252c89f267ffd8c04a6..ed3121fede40c91da2a28b3cb70fbb4fc253498c 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1999-2004 The OpenLDAP Foundation.
+ * Copyright 1999-2005 The OpenLDAP Foundation.
  * Portions Copyright 1999-2003 Howard Chu.
  * Portions Copyright 2000-2003 Pierangelo Masarati.
  * All rights reserved.
@@ -142,10 +142,19 @@ rwm_map_config(
        "is not defined in schema\n",
                                fname, lineno, dst );
 
+                       mapping[0].m_dst_oc = oc_bvfind_undef( &mapping[0].m_dst );
+                       if ( mapping[0].m_dst_oc == NULL ) {
+                               fprintf( stderr, "%s: line %d: unable to mimic destination objectClass '%s'\n",
+                                       fname, lineno, dst );
+                               return 1;
+                       }
+
+#if 0
                        mapping[0].m_dst_oc = ch_malloc( sizeof( ObjectClass ) );
                        memset( mapping[0].m_dst_oc, 0, sizeof( ObjectClass ) );
                        mapping[0].m_dst_oc->soc_cname = mapping[0].m_dst;
                        mapping[0].m_flags |= RWMMAP_F_FREE_DST;
+#endif
                }
                mapping[1].m_src_oc = mapping[0].m_dst_oc;
 
@@ -338,12 +347,25 @@ rwm_suffix_massage_config(
        rargv[ 4 ] = NULL;
        rewrite_parse( info, "<suffix massage>", ++line, 4, rargv );
 
+#ifdef RWM_REFERRAL_REWRITE
+       /* FIXME: we don't want this on by default, do we? */
        rargv[ 0 ] = "rewriteContext";
        rargv[ 1 ] = "referralDN";
        rargv[ 2 ] = "alias";
        rargv[ 3 ] = "searchEntryDN";
        rargv[ 4 ] = NULL;
        rewrite_parse( info, "<suffix massage>", ++line, 4, rargv );
+#else /* ! RWM_REFERRAL_REWRITE */
+       rargv[ 0 ] = "rewriteContext";
+       rargv[ 1 ] = "referralAttrDN";
+       rargv[ 2 ] = NULL;
+       rewrite_parse( info, "<suffix massage>", ++line, 2, rargv );
+
+       rargv[ 0 ] = "rewriteContext";
+       rargv[ 1 ] = "referralDN";
+       rargv[ 2 ] = NULL;
+       rewrite_parse( info, "<suffix massage>", ++line, 2, rargv );
+#endif /* ! RWM_REFERRAL_REWRITE */
 
        rargv[ 0 ] = "rewriteContext";
        rargv[ 1 ] = "searchAttrDN";