[Pkg-openldap-devel] r1208 - in openldap/vendor/openldap-release: . build doc/guide/admin include libraries/libldap libraries/liblutil servers/slapd servers/slapd/back-bdb servers/slapd/back-ldap servers/slapd/back-meta servers/slapd/back-relay servers/slapd/back-sql servers/slapd/overlays tests/data tests/progs tests/scripts

vorlon at alioth.debian.org vorlon at alioth.debian.org
Tue Feb 24 07:04:11 UTC 2009


Author: vorlon
Date: 2009-02-24 07:04:10 +0000 (Tue, 24 Feb 2009)
New Revision: 1208

Modified:
   openldap/vendor/openldap-release/CHANGES
   openldap/vendor/openldap-release/README
   openldap/vendor/openldap-release/build/version.var
   openldap/vendor/openldap-release/doc/guide/admin/guide.html
   openldap/vendor/openldap-release/include/ldap.h
   openldap/vendor/openldap-release/include/ldap_pvt.h
   openldap/vendor/openldap-release/libraries/libldap/abandon.c
   openldap/vendor/openldap-release/libraries/libldap/gssapi.c
   openldap/vendor/openldap-release/libraries/libldap/ldap-int.h
   openldap/vendor/openldap-release/libraries/libldap/os-ip.c
   openldap/vendor/openldap-release/libraries/libldap/os-local.c
   openldap/vendor/openldap-release/libraries/libldap/result.c
   openldap/vendor/openldap-release/libraries/libldap/search.c
   openldap/vendor/openldap-release/libraries/libldap/tls2.c
   openldap/vendor/openldap-release/libraries/liblutil/meter.c
   openldap/vendor/openldap-release/servers/slapd/ad.c
   openldap/vendor/openldap-release/servers/slapd/back-bdb/init.c
   openldap/vendor/openldap-release/servers/slapd/back-ldap/search.c
   openldap/vendor/openldap-release/servers/slapd/back-meta/back-meta.h
   openldap/vendor/openldap-release/servers/slapd/back-meta/init.c
   openldap/vendor/openldap-release/servers/slapd/back-meta/map.c
   openldap/vendor/openldap-release/servers/slapd/back-meta/search.c
   openldap/vendor/openldap-release/servers/slapd/back-relay/init.c
   openldap/vendor/openldap-release/servers/slapd/back-sql/entry-id.c
   openldap/vendor/openldap-release/servers/slapd/back-sql/search.c
   openldap/vendor/openldap-release/servers/slapd/backover.c
   openldap/vendor/openldap-release/servers/slapd/ctxcsn.c
   openldap/vendor/openldap-release/servers/slapd/dn.c
   openldap/vendor/openldap-release/servers/slapd/init.c
   openldap/vendor/openldap-release/servers/slapd/mods.c
   openldap/vendor/openldap-release/servers/slapd/overlays/dynlist.c
   openldap/vendor/openldap-release/servers/slapd/overlays/pcache.c
   openldap/vendor/openldap-release/servers/slapd/overlays/rwm.c
   openldap/vendor/openldap-release/servers/slapd/overlays/rwmmap.c
   openldap/vendor/openldap-release/servers/slapd/overlays/syncprov.c
   openldap/vendor/openldap-release/servers/slapd/proto-slap.h
   openldap/vendor/openldap-release/servers/slapd/result.c
   openldap/vendor/openldap-release/servers/slapd/schema_check.c
   openldap/vendor/openldap-release/servers/slapd/schema_prep.c
   openldap/vendor/openldap-release/servers/slapd/syncrepl.c
   openldap/vendor/openldap-release/tests/data/manage.out
   openldap/vendor/openldap-release/tests/progs/Makefile.in
   openldap/vendor/openldap-release/tests/scripts/test037-manage
Log:
Load openldap_2.4.15.orig into openldap-release.

Modified: openldap/vendor/openldap-release/CHANGES
===================================================================
--- openldap/vendor/openldap-release/CHANGES	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/CHANGES	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,24 @@
 OpenLDAP 2.4 Change Log
 
+OpenLDAP 2.4.15 Release (2009/02/24)
+	Fixed libldap alias dereferencing in C API again (ITS#5916)
+	Fixed libldap GnuTLS compilation (ITS#5955)
+	Fixed slapd bconfig conversion again (ITS#5346)
+	Fixed slapd behavior with superior objectClasses again (ITS#5517)
+	Fixed slapd RFC4512 behavior with same attr in RDN (ITS#5968)
+	Fixed slapd corrupt contextCSN (ITS#5947)
+	Fixed slapd syncrepl order to match on add/delete (ITS#5954)
+	Fixed slapd adding rdn with other values (ITS#5965)
+	Fixed slapd-bdb/hdb behavior with unallocatable shm (ITS#5956)
+	Fixed slapd-ldap/meta with entries with invalid attrs (ITS#5959)
+	Fixed slapd-relay control initialization (ITS#5724)
+	Fixed slapo-pcache caching invalid entries (ITS#5927)
+	Fixed slapo-syncprov csn updates (ITS#5969)
+	Fixed slapo-rwm objectClass preservation (ITS#5760)
+	Fixed slapo-rwm rwm_bva_rewrite handling (ITS#5960)
+	Build Environment
+		Fixed tester library linking for windows (ITS#5740)
+
 OpenLDAP 2.4.14 Release (2009/02/14)
 	Added libldap option to disable SASL host canonicalization (ITS#5812)
 	Added libldap TLS_PROTOCOL_MIN (ITS#5655)
@@ -31,6 +50,7 @@
 	Fixed slapd logging on Windows (ITS#5392)
 	Fixed slapd listener comparison (ITS#5613)
 	Fixed slapd manageDSAit with glue entries (ITS#5921)
+	Fixed slapd relax behavior with structuralObjectClass (ITS#5792)
 	Fixed slapd syncrepl rename handling (ITS#5809)
 	Fixed slapd syncrepl MMR when adding new server (ITS#5850)
 	Fixed slapd syncrepl MMR with deleted entries (ITS#5843)

Modified: openldap/vendor/openldap-release/README
===================================================================
--- openldap/vendor/openldap-release/README	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/README	2009-02-24 07:04:10 UTC (rev 1208)
@@ -16,7 +16,7 @@
         Standard C compiler (required)
         Cyrus SASL 2.1.21+ (recommended)
         OpenSSL 0.9.7+ (recommended)
-        POSIX REGEX software (required)
+        Reentrant POSIX REGEX software (required)
 
     SLAPD:
         BDB and HDB backends require Oracle Berkeley DB 4.4, 4.5,
@@ -75,7 +75,7 @@
     <http://www.openldap.org/its/> to be considered.
 
 ---
-$OpenLDAP: pkg/ldap/README,v 1.40.2.10 2009/01/22 00:00:34 kurt Exp $
+$OpenLDAP: pkg/ldap/README,v 1.40.2.11 2009/02/18 00:54:29 hyc Exp $
 
 This work is part of OpenLDAP Software <http://www.openldap.org/>.
 

Modified: openldap/vendor/openldap-release/build/version.var
===================================================================
--- openldap/vendor/openldap-release/build/version.var	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/build/version.var	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# $OpenLDAP: pkg/ldap/build/version.var,v 1.9.2.47 2009/02/14 01:07:15 quanah Exp $
+# $OpenLDAP: pkg/ldap/build/version.var,v 1.9.2.50 2009/02/24 05:12:26 kurt Exp $
 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
 ##
 ## Copyright 1998-2009 The OpenLDAP Foundation.
@@ -15,9 +15,9 @@
 ol_package=OpenLDAP
 ol_major=2
 ol_minor=4
-ol_patch=14
-ol_api_inc=20414
+ol_patch=15
+ol_api_inc=20415
 ol_api_current=6
-ol_api_revision=0
+ol_api_revision=1
 ol_api_age=4
-ol_release_date="2009/02/14"
+ol_release_date="2009/02/24"

Modified: openldap/vendor/openldap-release/doc/guide/admin/guide.html
===================================================================
--- openldap/vendor/openldap-release/doc/guide/admin/guide.html	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/doc/guide/admin/guide.html	2009-02-24 07:04:10 UTC (rev 1208)
@@ -23,7 +23,7 @@
 <DIV CLASS="title">
 <H1 CLASS="doc-title">OpenLDAP Software 2.4 Administrator's Guide</H1>
 <ADDRESS CLASS="doc-author">The OpenLDAP Project &lt;<A HREF="http://www.openldap.org/">http://www.openldap.org/</A>&gt;</ADDRESS>
-<ADDRESS CLASS="doc-modified">13 February 2009</ADDRESS>
+<ADDRESS CLASS="doc-modified">23 February 2009</ADDRESS>
 <BR CLEAR="All">
 </DIV>
 <DIV CLASS="contents">

Modified: openldap/vendor/openldap-release/include/ldap.h
===================================================================
--- openldap/vendor/openldap-release/include/ldap.h	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/include/ldap.h	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,4 +1,4 @@
-/* $OpenLDAP: pkg/ldap/include/ldap.h,v 1.312.2.18 2009/01/26 23:29:53 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/include/ldap.h,v 1.312.2.19 2009/02/17 19:14:41 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  * 
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -1346,6 +1346,22 @@
 
 
 /*
+ * gssapi.c:
+ */
+LDAP_F( int )
+ldap_gssapi_bind LDAP_P((
+	LDAP *ld,
+	LDAP_CONST char *dn,
+	LDAP_CONST char *creds ));
+
+LDAP_F( int )
+ldap_gssapi_bind_s LDAP_P((
+	LDAP *ld,
+	LDAP_CONST char *dn,
+	LDAP_CONST char *creds ));
+
+
+/*
  * in modify.c:
  */
 LDAP_F( int )

Modified: openldap/vendor/openldap-release/include/ldap_pvt.h
===================================================================
--- openldap/vendor/openldap-release/include/ldap_pvt.h	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/include/ldap_pvt.h	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,4 +1,4 @@
-/* $OpenLDAP: pkg/ldap/include/ldap_pvt.h,v 1.91.2.9 2009/02/02 22:53:14 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/include/ldap_pvt.h,v 1.91.2.10 2009/02/17 19:14:41 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  * 
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -286,6 +286,11 @@
 LDAP_F (int) ldap_init_fd LDAP_P((
 	ber_socket_t fd, int proto, LDAP_CONST char *url, struct ldap **ldp ));
 
+/* sasl.c */
+LDAP_F (int) ldap_pvt_sasl_generic_install LDAP_P(( Sockbuf *sb,
+	struct sb_sasl_generic_install *install_arg ));
+LDAP_F (void) ldap_pvt_sasl_generic_remove LDAP_P(( Sockbuf *sb ));
+
 /* search.c */
 LDAP_F( int ) ldap_pvt_put_filter LDAP_P((
 	BerElement *ber,

Modified: openldap/vendor/openldap-release/libraries/libldap/abandon.c
===================================================================
--- openldap/vendor/openldap-release/libraries/libldap/abandon.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/libraries/libldap/abandon.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* abandon.c */
-/* $OpenLDAP: pkg/ldap/libraries/libldap/abandon.c,v 1.41.2.10 2009/01/22 00:00:54 kurt Exp $ */
+/* $OpenLDAP: pkg/ldap/libraries/libldap/abandon.c,v 1.41.2.11 2009/02/17 21:02:51 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -349,7 +349,6 @@
 			end,
 			rc = 0;
 
-	assert( n >= 0 );
 	assert( id >= 0 );
 
 	begin = 0;
@@ -410,7 +409,6 @@
 
 	assert( vp != NULL );
 	assert( np != NULL );
-	assert( *np >= 0 );
 	assert( idx >= 0 );
 	assert( (unsigned) idx <= *np );
 
@@ -451,7 +449,6 @@
 
 	assert( vp != NULL );
 	assert( np != NULL );
-	assert( *np >= 0 );
 	assert( idx >= 0 );
 	assert( (unsigned) idx < *np );
 

Modified: openldap/vendor/openldap-release/libraries/libldap/gssapi.c
===================================================================
--- openldap/vendor/openldap-release/libraries/libldap/gssapi.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/libraries/libldap/gssapi.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,4 +1,4 @@
-/* $OpenLDAP: pkg/ldap/libraries/libldap/gssapi.c,v 1.1.2.2 2009/01/22 00:00:54 kurt Exp $ */
+/* $OpenLDAP: pkg/ldap/libraries/libldap/gssapi.c,v 1.1.2.3 2009/02/17 21:02:51 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -351,8 +351,6 @@
 	int gss_rc,
 	OM_uint32 minor_status )
 {
-	OM_uint32 min2;
-	OM_uint32 msg_ctx = 0;
 	char msg[256];
 
 	Debug( LDAP_DEBUG_ANY, "%s\n",
@@ -561,7 +559,7 @@
 	}
 
 	ret = snprintf( svc_principal, svc_principal_size - 1, principal_fmt, str);
-	if (ret < 0 || ret >= svc_principal_size - 1) {
+	if (ret < 0 || (size_t)ret + 1 >= svc_principal_size) {
 		ld->ld_errno = LDAP_LOCAL_ERROR;
 		return ld->ld_errno;
 	}
@@ -996,7 +994,9 @@
 	LDAP *ld,
 	LDAP_CONST char *dn,
 	LDAP_CONST char *creds )
-{ return LDAP_NOT_SUPPORTED; }
+{
+	return LDAP_NOT_SUPPORTED;
+}
 
 int
 ldap_gssapi_bind_s(

Modified: openldap/vendor/openldap-release/libraries/libldap/ldap-int.h
===================================================================
--- openldap/vendor/openldap-release/libraries/libldap/ldap-int.h	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/libraries/libldap/ldap-int.h	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /*  ldap-int.h - defines & prototypes internal to the LDAP library */
-/* $OpenLDAP: pkg/ldap/libraries/libldap/ldap-int.h,v 1.168.2.13 2009/02/02 22:53:14 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/libraries/libldap/ldap-int.h,v 1.168.2.14 2009/02/17 21:02:51 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -694,6 +694,16 @@
 LDAP_F (char **) ldap_value_dup LDAP_P((
 	char *const *vals ));
 
+/*
+ *	in gssapi.c
+ */
+#ifdef HAVE_GSSAPI
+LDAP_F(int) ldap_int_gssapi_get_option LDAP_P(( LDAP *ld, int option, void *arg ));
+LDAP_F(int) ldap_int_gssapi_set_option LDAP_P(( LDAP *ld, int option, void *arg ));
+LDAP_F(int) ldap_int_gssapi_config LDAP_P(( struct ldapoptions *lo, int option, const char *arg ));
+LDAP_F(void) ldap_int_gssapi_close LDAP_P(( LDAP *ld, LDAPConn *lc ));
+#endif 
+
 LDAP_END_DECL
 
 #endif /* _LDAP_INT_H */

Modified: openldap/vendor/openldap-release/libraries/libldap/os-ip.c
===================================================================
--- openldap/vendor/openldap-release/libraries/libldap/os-ip.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/libraries/libldap/os-ip.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* os-ip.c -- platform-specific TCP & UDP related code */
-/* $OpenLDAP: pkg/ldap/libraries/libldap/os-ip.c,v 1.118.2.14 2009/02/10 23:42:16 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/libraries/libldap/os-ip.c,v 1.118.2.15 2009/02/17 21:02:51 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -207,7 +207,7 @@
 		== AC_SOCKET_ERROR )
 	{
 		/* XXX: needs to be replace with ber_stream_read() */
-		int rc = read(s, &ch, 1);
+		(void)read(s, &ch, 1);
 		TRACE;
 		return -1;
 	}

Modified: openldap/vendor/openldap-release/libraries/libldap/os-local.c
===================================================================
--- openldap/vendor/openldap-release/libraries/libldap/os-local.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/libraries/libldap/os-local.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* os-local.c -- platform-specific domain socket code */
-/* $OpenLDAP: pkg/ldap/libraries/libldap/os-local.c,v 1.44.2.7 2009/01/22 00:00:55 kurt Exp $ */
+/* $OpenLDAP: pkg/ldap/libraries/libldap/os-local.c,v 1.44.2.8 2009/02/17 21:02:51 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -149,7 +149,7 @@
 		== AC_SOCKET_ERROR )
 	{
 		/* XXX: needs to be replace with ber_stream_read() */
-		int rc = read(s, &ch, 1);
+		(void)read(s, &ch, 1);
 		TRACE;
 		return -1;
 	}

Modified: openldap/vendor/openldap-release/libraries/libldap/result.c
===================================================================
--- openldap/vendor/openldap-release/libraries/libldap/result.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/libraries/libldap/result.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* result.c - wait for an ldap result */
-/* $OpenLDAP: pkg/ldap/libraries/libldap/result.c,v 1.124.2.17 2009/02/10 23:42:16 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/libraries/libldap/result.c,v 1.124.2.18 2009/02/17 21:02:51 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -106,7 +106,6 @@
 	struct timeval *timeout,
 	LDAPMessage **result )
 {
-	LDAPMessage	*lm;
 	int		rc;
 
 	assert( ld != NULL );
@@ -1384,7 +1383,6 @@
 
 	assert( idxp != NULL );
 	assert( msgid >= 0 );
-	assert( ld->ld_nabandoned >= 0 );
 
 	return ldap_int_bisect_find( ld->ld_abandoned, ld->ld_nabandoned, msgid, idxp );
 }

Modified: openldap/vendor/openldap-release/libraries/libldap/search.c
===================================================================
--- openldap/vendor/openldap-release/libraries/libldap/search.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/libraries/libldap/search.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,4 +1,4 @@
-/* $OpenLDAP: pkg/ldap/libraries/libldap/search.c,v 1.76.2.8 2009/02/02 22:53:14 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/libraries/libldap/search.c,v 1.76.2.9 2009/02/20 00:28:32 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -315,7 +315,8 @@
 #endif
 	{
 	    err = ber_printf( ber, "{it{seeiib", *idp,
-		LDAP_REQ_SEARCH, base, (ber_int_t) scope, ld->ld_deref,
+		LDAP_REQ_SEARCH, base, (ber_int_t) scope,
+		(deref < 0) ? ld->ld_deref : deref,
 		(sizelimit < 0) ? ld->ld_sizelimit : sizelimit,
 		(timelimit < 0) ? ld->ld_timelimit : timelimit,
 		attrsonly );

Modified: openldap/vendor/openldap-release/libraries/libldap/tls2.c
===================================================================
--- openldap/vendor/openldap-release/libraries/libldap/tls2.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/libraries/libldap/tls2.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* tls.c - Handle tls/ssl. */
-/* $OpenLDAP: pkg/ldap/libraries/libldap/tls2.c,v 1.4.2.3 2009/02/08 06:06:04 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/libraries/libldap/tls2.c,v 1.4.2.6 2009/02/17 20:47:40 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -143,7 +143,6 @@
 ldap_pvt_tls_destroy( void )
 {
 	struct ldapoptions *lo = LDAP_INT_GLOBAL_OPT();   
-	int i;
 
 	ldap_int_tls_destroy( lo );
 
@@ -179,8 +178,6 @@
 int
 ldap_pvt_tls_init( void )
 {
-	struct ldapoptions *lo = LDAP_INT_GLOBAL_OPT();   
-
 	return tls_init( tls_imp );
 }
 
@@ -190,7 +187,7 @@
 static int
 ldap_int_tls_init_ctx( struct ldapoptions *lo, int is_server )
 {
-	int i, rc = 0;
+	int rc = 0;
 	tls_impl *ti = tls_imp;
 	struct ldaptls lts = lo->ldo_tls_info;
 
@@ -562,6 +559,7 @@
 		}
 		return ldap_pvt_tls_set_option( ld, option, &i );
 		}
+#ifdef HAVE_OPENSSL_CRL
 	case LDAP_OPT_X_TLS_CRLCHECK:	/* OpenSSL only */
 		i = -1;
 		if ( strcasecmp( arg, "none" ) == 0 ) {
@@ -575,6 +573,7 @@
 			return ldap_pvt_tls_set_option( ld, option, &i );
 		}
 		return -1;
+#endif
 	}
 	return -1;
 }
@@ -638,9 +637,11 @@
 	case LDAP_OPT_X_TLS_REQUIRE_CERT:
 		*(int *)arg = lo->ldo_tls_require_cert;
 		break;
+#ifdef HAVE_OPENSSL_CRL
 	case LDAP_OPT_X_TLS_CRLCHECK:	/* OpenSSL only */
 		*(int *)arg = lo->ldo_tls_crlcheck;
 		break;
+#endif
 	case LDAP_OPT_X_TLS_CIPHER_SUITE:
 		*(char **)arg = lo->ldo_tls_ciphersuite ?
 			LDAP_STRDUP( lo->ldo_tls_ciphersuite ) : NULL;
@@ -648,7 +649,7 @@
 	case LDAP_OPT_X_TLS_PROTOCOL_MIN:
 		*(int *)arg = lo->ldo_tls_protocol_min;
 		break;
-	case LDAP_OPT_X_TLS_RANDOM_FILE:	/* OpenSSL only */
+	case LDAP_OPT_X_TLS_RANDOM_FILE:
 		*(char **)arg = lo->ldo_tls_randfile ?
 			LDAP_STRDUP( lo->ldo_tls_randfile ) : NULL;
 		break;
@@ -764,6 +765,7 @@
 			return 0;
 		}
 		return -1;
+#ifdef HAVE_OPENSSL_CRL
 	case LDAP_OPT_X_TLS_CRLCHECK:	/* OpenSSL only */
 		if ( !arg ) return -1;
 		switch( *(int *) arg ) {
@@ -774,6 +776,7 @@
 			return 0;
 		}
 		return -1;
+#endif
 	case LDAP_OPT_X_TLS_CIPHER_SUITE:
 		if ( lo->ldo_tls_ciphersuite ) LDAP_FREE( lo->ldo_tls_ciphersuite );
 		lo->ldo_tls_ciphersuite = arg ? LDAP_STRDUP( (char *) arg ) : NULL;
@@ -783,14 +786,12 @@
 		if ( !arg ) return -1;
 		lo->ldo_tls_protocol_min = *(int *)arg;
 		return 0;
-
-	case LDAP_OPT_X_TLS_RANDOM_FILE:	/* OpenSSL only */
+	case LDAP_OPT_X_TLS_RANDOM_FILE:
 		if ( ld != NULL )
 			return -1;
 		if ( lo->ldo_tls_randfile ) LDAP_FREE (lo->ldo_tls_randfile );
 		lo->ldo_tls_randfile = arg ? LDAP_STRDUP( (char *) arg ) : NULL;
 		break;
-
 	case LDAP_OPT_X_TLS_NEWCTX:
 		if ( !arg ) return -1;
 		if ( lo->ldo_tls_ctx )

Modified: openldap/vendor/openldap-release/libraries/liblutil/meter.c
===================================================================
--- openldap/vendor/openldap-release/libraries/liblutil/meter.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/libraries/liblutil/meter.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* meter.c - lutil_meter meters */
-/* $OpenLDAP: pkg/ldap/libraries/liblutil/meter.c,v 1.2.2.1 2009/02/05 20:10:59 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/libraries/liblutil/meter.c,v 1.2.2.2 2009/02/17 21:02:52 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright (c) 2009 by Matthew Backes, Symas Corp.
@@ -141,7 +141,6 @@
 	int rc;
 
 	assert( meter != NULL );
-	assert( position >= 0 );
 
 	lutil_get_now( &now );
 

Modified: openldap/vendor/openldap-release/servers/slapd/ad.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/ad.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/ad.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* ad.c - routines for dealing with attribute descriptions */
-/* $OpenLDAP: pkg/ldap/servers/slapd/ad.c,v 1.95.2.7 2009/02/09 16:01:20 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/ad.c,v 1.95.2.8 2009/02/17 19:14:41 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -27,6 +27,10 @@
 #include "slap.h"
 #include "lutil.h"
 
+static struct berval bv_no_attrs = BER_BVC( LDAP_NO_ATTRS );
+static struct berval bv_all_user_attrs = BER_BVC( "*" );
+static struct berval bv_all_operational_attrs = BER_BVC( "+" );
+
 static AttributeName anlist_no_attrs[] = {
 	{ BER_BVC( LDAP_NO_ATTRS ), NULL, 0, NULL },
 	{ BER_BVNULL, NULL, 0, NULL }
@@ -53,6 +57,10 @@
 AttributeName *slap_anlist_all_operational_attributes = anlist_all_operational_attributes;
 AttributeName *slap_anlist_all_attributes = anlist_all_attributes;
 
+struct berval * slap_bv_no_attrs = &bv_no_attrs;
+struct berval * slap_bv_all_user_attrs = &bv_all_user_attrs;
+struct berval * slap_bv_all_operational_attrs = &bv_all_operational_attrs;
+
 typedef struct Attr_option {
 	struct berval name;	/* option name or prefix */
 	int           prefix;	/* NAME is a tag and range prefix */

Modified: openldap/vendor/openldap-release/servers/slapd/back-bdb/init.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/back-bdb/init.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/back-bdb/init.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* init.c - initialize bdb backend */
-/* $OpenLDAP: pkg/ldap/servers/slapd/back-bdb/init.c,v 1.247.2.17 2009/01/22 00:01:05 kurt Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/back-bdb/init.c,v 1.247.2.19 2009/02/19 22:19:15 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 2000-2009 The OpenLDAP Foundation.
@@ -111,6 +111,7 @@
 	Entry *e = NULL;
 	int do_recover = 0, do_alock_recover = 0;
 	int alockt, quick = 0;
+	int do_retry = 1;
 
 	if ( be->be_suffix == NULL ) {
 		Debug( LDAP_DEBUG_ANY,
@@ -332,7 +333,7 @@
 		/* Regular open failed, probably a missing shm environment.
 		 * Start over, do a recovery.
 		 */
-		if ( !do_recover && bdb->bi_shm_key ) {
+		if ( !do_recover && bdb->bi_shm_key && do_retry ) {
 			bdb->bi_dbenv->close( bdb->bi_dbenv, 0 );
 			rc = db_env_create( &bdb->bi_dbenv, 0 );
 			if( rc == 0 ) {
@@ -340,6 +341,7 @@
 					": database \"%s\": "
 					"shared memory env open failed, assuming stale env.\n",
 					be->be_suffix[0].bv_val, 0, 0 );
+				do_retry = 0;
 				goto shm_retry;
 			}
 		}

Modified: openldap/vendor/openldap-release/servers/slapd/back-ldap/search.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/back-ldap/search.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/back-ldap/search.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* search.c - ldap backend search function */
-/* $OpenLDAP: pkg/ldap/servers/slapd/back-ldap/search.c,v 1.201.2.18 2009/02/11 00:20:01 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/back-ldap/search.c,v 1.201.2.19 2009/02/20 01:15:05 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1999-2009 The OpenLDAP Foundation.
@@ -428,7 +428,7 @@
 			 * are passed without checks */
 			rc = ldap_parse_intermediate( lc->lc_ld,
 				res,
-				&rs->sr_rspoid,
+				(char **)&rs->sr_rspoid,
 				&rs->sr_rspdata,
 				&rs->sr_ctrls,
 				0 );
@@ -439,7 +439,7 @@
 			slap_send_ldap_intermediate( op, rs );
 
 			if ( rs->sr_rspoid != NULL ) {
-				ber_memfree( rs->sr_rspoid );
+				ber_memfree( (char *)rs->sr_rspoid );
 				rs->sr_rspoid = NULL;
 			}
 
@@ -729,7 +729,10 @@
 			goto next_attr;
 		}
 
-		for ( i = 0; !BER_BVISNULL( &attr->a_vals[i] ); i++ ) {
+		for ( i = 0; !BER_BVISNULL( &attr->a_vals[i] ); i++ ) ;
+		last = i;
+
+		for ( i = 0; i<last; i++ ) {
 			struct berval	pval;
 			int		rc;
 
@@ -752,18 +755,25 @@
 					ber_dupbv( &pval, &oc->soc_cname );
 
 				} else {
-					attr->a_nvals = NULL;
-					attr_free( attr );
-					goto next_attr;
+					LBER_FREE( attr->a_vals[i].bv_val );
+					if ( --last == i ) {
+						BER_BVZERO( &attr->a_vals[i] );
+						break;
+					}
+					attr->a_vals[i] = attr->a_vals[last];
+					BER_BVZERO( &attr->a_vals[last] );
 				}
-			}
-
-			if ( pretty ) {
+			} else if ( pretty ) {
 				LBER_FREE( attr->a_vals[i].bv_val );
 				attr->a_vals[i] = pval;
 			}
 		}
 		attr->a_numvals = last = i;
+		if ( last == 0 && attr->a_vals != &slap_dummy_bv ) {
+			attr->a_nvals = NULL;
+			attr_free( attr );
+			goto next_attr;
+		}
 
 		if ( last && attr->a_desc->ad_type->sat_equality &&
 				attr->a_desc->ad_type->sat_equality->smr_normalize )
@@ -784,16 +794,26 @@
 					NULL );
 
 				if ( rc != LDAP_SUCCESS ) {
-					BER_BVZERO( &attr->a_nvals[i] );
-					attr_free( attr );
-					goto next_attr;
+					LBER_FREE( attr->a_vals[i].bv_val );
+					if ( --last == i ) {
+						BER_BVZERO( &attr->a_vals[i] );
+						break;
+					}
+					attr->a_vals[i] = attr->a_vals[last];
+					BER_BVZERO( &attr->a_vals[last] );
 				}
 			}
 			BER_BVZERO( &attr->a_nvals[i] );
+			if ( last == 0 ) {
+				attr_free( attr );
+				goto next_attr;
+			}
 
 		} else {
 			attr->a_nvals = attr->a_vals;
 		}
+
+		attr->a_numvals = last;
 		*attrp = attr;
 		attrp = &attr->a_next;
 

Modified: openldap/vendor/openldap-release/servers/slapd/back-meta/back-meta.h
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/back-meta/back-meta.h	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/back-meta/back-meta.h	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,4 +1,4 @@
-/* $OpenLDAP: pkg/ldap/servers/slapd/back-meta/back-meta.h,v 1.64.2.12 2009/01/22 00:01:07 kurt Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/back-meta/back-meta.h,v 1.64.2.13 2009/02/17 19:14:41 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1999-2009 The OpenLDAP Foundation.
@@ -318,6 +318,8 @@
 #define	META_BACK_TGT_NOREFS(mt)		META_BACK_TGT_ISSET( (mt), LDAP_BACK_F_NOREFS )
 #define	META_BACK_TGT_NOUNDEFFILTER(mt)		META_BACK_TGT_ISSET( (mt), LDAP_BACK_F_NOUNDEFFILTER )
 
+	slap_mask_t		mt_rep_flags;
+
 	int			mt_version;
 	time_t			mt_network_timeout;
 	struct timeval		mt_bind_timeout;

Modified: openldap/vendor/openldap-release/servers/slapd/back-meta/init.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/back-meta/init.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/back-meta/init.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,4 +1,4 @@
-/* $OpenLDAP: pkg/ldap/servers/slapd/back-meta/init.c,v 1.58.2.12 2009/01/30 19:07:40 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/back-meta/init.c,v 1.58.2.13 2009/02/17 19:14:41 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1999-2009 The OpenLDAP Foundation.
@@ -170,6 +170,8 @@
 		slap_bindconf	sb = { BER_BVNULL };
 		metatarget_t	*mt = mi->mi_targets[ i ];
 
+		struct berval mapped;
+
 		ber_str2bv( mt->mt_uri, 0, 0, &sb.sb_uri );
 		sb.sb_version = mt->mt_version;
 		sb.sb_method = LDAP_AUTH_SIMPLE;
@@ -224,6 +226,22 @@
 				not_always_anon_non_prescriptive = 1;
 			}
 		}
+
+		BER_BVZERO( &mapped );
+		ldap_back_map( &mt->mt_rwmap.rwm_at, 
+			&slap_schema.si_ad_entryDN->ad_cname, &mapped,
+			BACKLDAP_REMAP );
+		if ( BER_BVISNULL( &mapped ) || mapped.bv_val[0] == '\0' ) {
+			mt->mt_rep_flags |= REP_NO_ENTRYDN;
+		}
+
+		BER_BVZERO( &mapped );
+		ldap_back_map( &mt->mt_rwmap.rwm_at, 
+			&slap_schema.si_ad_subschemaSubentry->ad_cname, &mapped,
+			BACKLDAP_REMAP );
+		if ( BER_BVISNULL( &mapped ) || mapped.bv_val[0] == '\0' ) {
+			mt->mt_rep_flags |= REP_NO_SUBSCHEMA;
+		}
 	}
 
 	if ( not_always == 0 ) {

Modified: openldap/vendor/openldap-release/servers/slapd/back-meta/map.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/back-meta/map.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/back-meta/map.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* map.c - ldap backend mapping routines */
-/* $OpenLDAP: pkg/ldap/servers/slapd/back-meta/map.c,v 1.15.2.11 2009/01/22 00:01:07 kurt Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/back-meta/map.c,v 1.15.2.12 2009/02/17 19:14:41 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -119,6 +119,15 @@
 
 	assert( m != NULL );
 
+	/* let special attrnames slip through (ITS#5760) */
+	if ( bvmatch( s, slap_bv_no_attrs )
+		|| bvmatch( s, slap_bv_all_user_attrs )
+		|| bvmatch( s, slap_bv_all_operational_attrs ) )
+	{
+		*m = NULL;
+		return 0;
+	}
+
 	if ( remap == BACKLDAP_REMAP ) {
 		tree = map->remap;
 
@@ -140,6 +149,7 @@
 	int remap )
 {
 	struct ldapmapping *mapping;
+	int drop_missing;
 
 	/* map->map may be NULL when mapping is configured,
 	 * but map->remap can't */
@@ -149,7 +159,7 @@
 	}
 
 	BER_BVZERO( bv );
-	( void )ldap_back_mapping( map, s, &mapping, remap );
+	drop_missing = ldap_back_mapping( map, s, &mapping, remap );
 	if ( mapping != NULL ) {
 		if ( !BER_BVISNULL( &mapping->dst ) ) {
 			*bv = mapping->dst;
@@ -157,7 +167,7 @@
 		return;
 	}
 
-	if ( !map->drop_missing ) {
+	if ( !drop_missing ) {
 		*bv = *s;
 	}
 }

Modified: openldap/vendor/openldap-release/servers/slapd/back-meta/search.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/back-meta/search.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/back-meta/search.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,4 +1,4 @@
-/* $OpenLDAP: pkg/ldap/servers/slapd/back-meta/search.c,v 1.146.2.18 2009/02/11 00:20:01 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/back-meta/search.c,v 1.146.2.21 2009/02/20 01:15:05 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1999-2009 The OpenLDAP Foundation.
@@ -1222,7 +1222,7 @@
 					 * are passed without checks */
 					rs->sr_err = ldap_parse_intermediate( msc->msc_ld,
 						msg,
-						&rs->sr_rspoid,
+						(char **)&rs->sr_rspoid,
 						&rs->sr_rspdata,
 						&rs->sr_ctrls,
 						0 );
@@ -1236,7 +1236,7 @@
 					slap_send_ldap_intermediate( op, rs );
 
 					if ( rs->sr_rspoid != NULL ) {
-						ber_memfree( rs->sr_rspoid );
+						ber_memfree( (char *)rs->sr_rspoid );
 						rs->sr_rspoid = NULL;
 					}
 
@@ -2080,19 +2080,34 @@
 
 			attr->a_nvals = ch_malloc( ( last + 1 ) * sizeof( struct berval ) );
 			for ( i = 0; i<last; i++ ) {
-				attr->a_desc->ad_type->sat_equality->smr_normalize(
+				/* if normalizer fails, drop this value */
+				if ( attr->a_desc->ad_type->sat_equality->smr_normalize(
 					SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX,
 					attr->a_desc->ad_type->sat_syntax,
 					attr->a_desc->ad_type->sat_equality,
 					&attr->a_vals[i], &attr->a_nvals[i],
-					NULL );
+					NULL )) {
+					LBER_FREE( attr->a_vals[i].bv_val );
+					if ( --last == i ) {
+						BER_BVZERO( &attr->a_vals[ i ] );
+						break;
+					}
+					attr->a_vals[i] = attr->a_vals[last];
+					BER_BVZERO( &attr->a_vals[last] );
+					i--;
+				}
 			}
 			BER_BVZERO( &attr->a_nvals[i] );
+			if ( last == 0 ) {
+				attr_free( attr );
+				goto next_attr;
+			}
 
 		} else {
 			attr->a_nvals = attr->a_vals;
 		}
 
+		attr->a_numvals = last;
 		*attrp = attr;
 		attrp = &attr->a_next;
 next_attr:;
@@ -2147,7 +2162,7 @@
 	rs->sr_entry = &ent;
 	rs->sr_attrs = op->ors_attrs;
 	rs->sr_operational_attrs = NULL;
-	rs->sr_flags = 0;
+	rs->sr_flags = mi->mi_targets[ target ]->mt_rep_flags;
 	rs->sr_err = LDAP_SUCCESS;
 	rc = send_search_entry( op, rs );
 	switch ( rc ) {

Modified: openldap/vendor/openldap-release/servers/slapd/back-relay/init.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/back-relay/init.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/back-relay/init.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* init.c - initialize relay backend */
-/* $OpenLDAP: pkg/ldap/servers/slapd/back-relay/init.c,v 1.19.2.6 2009/01/22 00:01:10 kurt Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/back-relay/init.c,v 1.19.2.7 2009/02/20 00:26:02 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 2004-2009 The OpenLDAP Foundation.
@@ -224,11 +224,11 @@
 		}
 
 		/* inherit controls */
-		AC_MEMCPY( be->be_ctrls, ri->ri_bd->be_ctrls, sizeof( be->be_ctrls ) );
+		AC_MEMCPY( be->bd_self->be_ctrls, ri->ri_bd->be_ctrls, sizeof( be->be_ctrls ) );
 
 	} else {
 		/* inherit all? */
-		AC_MEMCPY( be->be_ctrls, frontendDB->be_ctrls, sizeof( be->be_ctrls ) );
+		AC_MEMCPY( be->bd_self->be_ctrls, frontendDB->be_ctrls, sizeof( be->be_ctrls ) );
 	}
 
 	return 0;

Modified: openldap/vendor/openldap-release/servers/slapd/back-sql/entry-id.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/back-sql/entry-id.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/back-sql/entry-id.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,4 +1,4 @@
-/* $OpenLDAP: pkg/ldap/servers/slapd/back-sql/entry-id.c,v 1.67.2.7 2009/01/22 00:01:11 kurt Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/back-sql/entry-id.c,v 1.67.2.8 2009/02/17 19:14:41 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1999-2009 The OpenLDAP Foundation.
@@ -1042,7 +1042,7 @@
 	}
 
 	if ( ( bsi->bsi_flags & BSQL_SF_ALL_OPER )
-			|| an_find( bsi->bsi_attrs, &AllOper )
+			|| an_find( bsi->bsi_attrs, slap_bv_all_operational_attrs )
 			|| an_find( bsi->bsi_attrs, &slap_schema.si_ad_structuralObjectClass->ad_cname ) )
 	{
 		ObjectClass	*soc = NULL;

Modified: openldap/vendor/openldap-release/servers/slapd/back-sql/search.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/back-sql/search.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/back-sql/search.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,4 +1,4 @@
-/* $OpenLDAP: pkg/ldap/servers/slapd/back-sql/search.c,v 1.117.2.9 2009/01/22 00:01:11 kurt Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/back-sql/search.c,v 1.117.2.10 2009/02/17 19:14:41 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1999-2009 The OpenLDAP Foundation.
@@ -184,7 +184,7 @@
 			BER_BVZERO( &bsi->bsi_attrs[ 0 ].an_name );
 	
 			for ( p = attrs; !BER_BVISNULL( &p->an_name ); p++ ) {
-				if ( BACKSQL_NCMP( &p->an_name, &AllUser ) == 0 ) {
+				if ( BACKSQL_NCMP( &p->an_name, slap_bv_all_user_attrs ) == 0 ) {
 					/* handle "*" */
 					bsi->bsi_flags |= BSQL_SF_ALL_USER;
 
@@ -198,7 +198,7 @@
 					}
 					continue;
 
-				} else if ( BACKSQL_NCMP( &p->an_name, &AllOper ) == 0 ) {
+				} else if ( BACKSQL_NCMP( &p->an_name, slap_bv_all_operational_attrs ) == 0 ) {
 					/* handle "+" */
 					bsi->bsi_flags |= BSQL_SF_ALL_OPER;
 
@@ -212,7 +212,7 @@
 					}
 					continue;
 
-				} else if ( BACKSQL_NCMP( &p->an_name, &NoAttrs ) == 0 ) {
+				} else if ( BACKSQL_NCMP( &p->an_name, slap_bv_no_attrs ) == 0 ) {
 					/* ignore "1.1" */
 					continue;
 
@@ -237,7 +237,7 @@
 			
 			/* use hints if available */
 			for ( p = bi->sql_anlist; !BER_BVISNULL( &p->an_name ); p++ ) {
-				if ( BACKSQL_NCMP( &p->an_name, &AllUser ) == 0 ) {
+				if ( BACKSQL_NCMP( &p->an_name, slap_bv_all_user_attrs ) == 0 ) {
 					/* handle "*" */
 					bsi->bsi_flags |= BSQL_SF_ALL_USER;
 
@@ -251,7 +251,7 @@
 					}
 					continue;
 
-				} else if ( BACKSQL_NCMP( &p->an_name, &AllOper ) == 0 ) {
+				} else if ( BACKSQL_NCMP( &p->an_name, slap_bv_all_operational_attrs ) == 0 ) {
 					/* handle "+" */
 					bsi->bsi_flags |= BSQL_SF_ALL_OPER;
 

Modified: openldap/vendor/openldap-release/servers/slapd/backover.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/backover.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/backover.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* backover.c - backend overlay routines */
-/* $OpenLDAP: pkg/ldap/servers/slapd/backover.c,v 1.71.2.18 2009/02/13 03:16:59 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/backover.c,v 1.71.2.19 2009/02/20 00:26:01 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 2003-2009 The OpenLDAP Foundation.
@@ -140,25 +140,22 @@
 {
 	slap_overinfo *oi = be->bd_info->bi_private;
 	slap_overinst *on = oi->oi_list;
-	BackendInfo *bi_orig = be->bd_info;
+	BackendDB db = *be;
 	int rc = 0;
 
-	be->be_flags |= SLAP_DBFLAG_OVERLAY;
-	be->bd_info = oi->oi_orig;
-	if ( be->bd_info->bi_db_open ) {
-		rc = be->bd_info->bi_db_open( be, cr );
+	db.be_flags |= SLAP_DBFLAG_OVERLAY;
+	db.bd_info = oi->oi_orig;
+	if ( db.bd_info->bi_db_open ) {
+		rc = db.bd_info->bi_db_open( &db, cr );
 	}
 
 	for (; on && rc == 0; on=on->on_next) {
-		be->bd_info = &on->on_bi;
-		if ( be->bd_info->bi_db_open ) {
-			rc = be->bd_info->bi_db_open( be, cr );
+		db.bd_info = &on->on_bi;
+		if ( db.bd_info->bi_db_open ) {
+			rc = db.bd_info->bi_db_open( &db, cr );
 		}
 	}
 
-	be->bd_info = bi_orig;
-	be->be_flags ^= SLAP_DBFLAG_OVERLAY;
-
 	return rc;
 }
 

Modified: openldap/vendor/openldap-release/servers/slapd/ctxcsn.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/ctxcsn.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/ctxcsn.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* ctxcsn.c -- Context CSN Management Routines */
-/* $OpenLDAP: pkg/ldap/servers/slapd/ctxcsn.c,v 1.40.2.11 2009/01/22 00:01:01 kurt Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/ctxcsn.c,v 1.40.2.12 2009/02/17 00:06:01 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 2003-2009 The OpenLDAP Foundation.
@@ -30,6 +30,7 @@
 const struct berval slap_ldapsync_cn_bv = BER_BVC("cn=ldapsync");
 int slap_serverID;
 
+/* maxcsn->bv_val must point to a char buf[LDAP_LUTIL_CSNSTR_BUFSIZE] */
 void
 slap_get_commit_csn(
 	Operation *op,
@@ -41,7 +42,8 @@
 	BackendDB *be = op->o_bd->bd_self;
 
 	if ( maxcsn ) {
-		BER_BVZERO( maxcsn );
+		assert( maxcsn->bv_val != NULL );
+		assert( maxcsn->bv_len >= LDAP_LUTIL_CSNSTR_BUFSIZE );
 	}
 	if ( foundit ) {
 		*foundit = 0;
@@ -62,7 +64,17 @@
 		if ( csne->ce_state == SLAP_CSN_PENDING ) break;
 	}
 
-	if ( committed_csne && maxcsn ) *maxcsn = committed_csne->ce_csn;
+	if ( maxcsn ) {
+		if ( committed_csne ) {
+			if ( committed_csne->ce_csn.bv_len < maxcsn->bv_len )
+				maxcsn->bv_len = committed_csne->ce_csn.bv_len;
+			AC_MEMCPY( maxcsn->bv_val, committed_csne->ce_csn.bv_val,
+				maxcsn->bv_len+1 );
+		} else {
+			maxcsn->bv_len = 0;
+			maxcsn->bv_val[0] = 0;
+		}
+	}
 	ldap_pvt_thread_mutex_unlock( &be->be_pcl_mutex );
 }
 

Modified: openldap/vendor/openldap-release/servers/slapd/dn.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/dn.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/dn.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* dn.c - routines for dealing with distinguished names */
-/* $OpenLDAP: pkg/ldap/servers/slapd/dn.c,v 1.182.2.10 2009/01/22 00:01:01 kurt Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/dn.c,v 1.182.2.11 2009/02/23 02:12:09 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -250,21 +250,8 @@
 			ava_j = rdn[ j ];
 			a = strcmp( ava_i->la_attr.bv_val, ava_j->la_attr.bv_val );
 
-			if ( a == 0 ) {
-				int		d;
-
-				d = ava_i->la_value.bv_len - ava_j->la_value.bv_len;
-
-				a = memcmp( ava_i->la_value.bv_val, 
-						ava_j->la_value.bv_val,
-						d <= 0 ? ava_i->la_value.bv_len 
-							: ava_j->la_value.bv_len );
-
-				if ( a == 0 ) {
-					a = d;
-				}
-			}
-			/* Duplicates are not allowed */
+			/* RFC4512 does not allow multiple AVAs
+			 * with the same attribute type in RDN (ITS#5968) */
 			if ( a == 0 )
 				return LDAP_INVALID_DN_SYNTAX;
 

Modified: openldap/vendor/openldap-release/servers/slapd/init.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/init.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/init.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* init.c - initialize various things */
-/* $OpenLDAP: pkg/ldap/servers/slapd/init.c,v 1.97.2.10 2009/01/22 00:01:01 kurt Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/init.c,v 1.97.2.11 2009/02/17 19:14:41 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -55,10 +55,6 @@
 
 BerVarray default_referral = NULL;
 
-struct berval AllUser = BER_BVC( LDAP_ALL_USER_ATTRIBUTES );
-struct berval AllOper = BER_BVC( LDAP_ALL_OPERATIONAL_ATTRIBUTES );
-struct berval NoAttrs = BER_BVC( LDAP_NO_ATTRS );
-
 /*
  * global variables that need mutex protection
  */

Modified: openldap/vendor/openldap-release/servers/slapd/mods.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/mods.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/mods.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,4 +1,4 @@
-/* $OpenLDAP: pkg/ldap/servers/slapd/mods.c,v 1.59.2.8 2009/02/11 00:57:40 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/mods.c,v 1.59.2.9 2009/02/22 22:45:32 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -263,13 +263,18 @@
 		goto return_result;
 	}
 
+	if ( a->a_desc == slap_schema.si_ad_objectClass ) {
+		/* Needed by ITS#5517,ITS#5963 */
+		flags = SLAP_MR_EQUALITY | SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX;
+
+	} else {
+		flags = SLAP_MR_EQUALITY | SLAP_MR_VALUE_OF_ASSERTION_SYNTAX;
+	}
 	if ( mod->sm_nvalues ) {
-		flags = SLAP_MR_EQUALITY | SLAP_MR_VALUE_OF_ASSERTION_SYNTAX
-			| SLAP_MR_ASSERTED_VALUE_NORMALIZED_MATCH
+		flags |= SLAP_MR_ASSERTED_VALUE_NORMALIZED_MATCH
 			| SLAP_MR_ATTRIBUTE_VALUE_NORMALIZED_MATCH;
 		cvals = mod->sm_nvalues;
 	} else {
-		flags = SLAP_MR_EQUALITY | SLAP_MR_VALUE_OF_ASSERTION_SYNTAX;
 		cvals = mod->sm_values;
 	}
 

Modified: openldap/vendor/openldap-release/servers/slapd/overlays/dynlist.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/overlays/dynlist.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/overlays/dynlist.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* dynlist.c - dynamic list overlay */
-/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/dynlist.c,v 1.20.2.25 2009/01/30 19:10:13 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/dynlist.c,v 1.20.2.26 2009/02/17 19:14:41 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 2003-2009 The OpenLDAP Foundation.
@@ -266,8 +266,8 @@
 	}
 
 #ifndef SLAP_OPATTRS
-	opattrs = ( rs->sr_attrs == NULL ) ? 0 : an_find( rs->sr_attrs, &AllOper );
-	userattrs = ( rs->sr_attrs == NULL ) ? 1 : an_find( rs->sr_attrs, &AllUser );
+	opattrs = ( rs->sr_attrs == NULL ) ? 0 : an_find( rs->sr_attrs, slap_bv_operational_attrs );
+	userattrs = ( rs->sr_attrs == NULL ) ? 1 : an_find( rs->sr_attrs, slap_bv_user_attrs );
 #else /* SLAP_OPATTRS */
 	opattrs = SLAP_OPATTRS( rs->sr_attr_flags );
 	userattrs = SLAP_USERATTRS( rs->sr_attr_flags );
@@ -416,8 +416,8 @@
 	}
 
 #ifndef SLAP_OPATTRS
-	opattrs = ( rs->sr_attrs == NULL ) ? 0 : an_find( rs->sr_attrs, &AllOper );
-	userattrs = ( rs->sr_attrs == NULL ) ? 1 : an_find( rs->sr_attrs, &AllUser );
+	opattrs = ( rs->sr_attrs == NULL ) ? 0 : an_find( rs->sr_attrs, slap_bv_operational_attrs );
+	userattrs = ( rs->sr_attrs == NULL ) ? 1 : an_find( rs->sr_attrs, slap_bv_user_attrs );
 #else /* SLAP_OPATTRS */
 	opattrs = SLAP_OPATTRS( rs->sr_attr_flags );
 	userattrs = SLAP_USERATTRS( rs->sr_attr_flags );

Modified: openldap/vendor/openldap-release/servers/slapd/overlays/pcache.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/overlays/pcache.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/overlays/pcache.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,4 +1,4 @@
-/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/pcache.c,v 1.88.2.28 2009/01/26 21:50:09 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/pcache.c,v 1.88.2.32 2009/02/19 00:28:24 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 2003-2009 The OpenLDAP Foundation.
@@ -1976,7 +1976,7 @@
 		Entry *e;
 
 		/* don't return more entries than requested by the client */
-		if ( si->slimit && rs->sr_nentries >= si->slimit ) {
+		if ( si->slimit > 0 && rs->sr_nentries >= si->slimit ) {
 			si->slimit_exceeded = 1;
 		}
 
@@ -1993,6 +1993,19 @@
 				goto over;
 			}
 
+			/* check for malformed entries: attrs with no values */
+			{
+				Attribute *a = rs->sr_entry->e_attrs;
+				for (; a; a=a->a_next) {
+					if ( !a->a_numvals ) {
+						Debug( pcache_debug, "%s: query not cacheable because of attrs without values in DN \"%s\" (%s)\n",
+						op->o_log_prefix, rs->sr_entry->e_name.bv_val,
+						a->a_desc->ad_cname.bv_val );
+						goto over;
+					}
+				}
+			}
+
 			if ( si->count < si->max ) {
 				si->count++;
 				e = entry_dup( rs->sr_entry );
@@ -2168,8 +2181,8 @@
 		(*new_attrs)[i].an_desc = attrs->attrs[i].an_desc;
 	}
 	BER_BVZERO( &(*new_attrs)[i].an_name );
-	alluser = an_find(*new_attrs, &AllUser);
-	allop = an_find(*new_attrs, &AllOper);
+	alluser = an_find( *new_attrs, slap_bv_all_user_attrs );
+	allop = an_find( *new_attrs, slap_bv_all_operational_attrs );
 
 	j = i;
 	for ( i=0; i<fattr_cnt; i++ ) {
@@ -2447,7 +2460,7 @@
 		si->slimit = 0;
 		si->slimit_exceeded = 0;
 		si->caching_reason = PC_IGNORE;
-		if ( op->ors_slimit && op->ors_slimit < cm->num_entries_limit ) {
+		if ( op->ors_slimit > 0 && op->ors_slimit < cm->num_entries_limit ) {
 			si->slimit = op->ors_slimit;
 			op->ors_slimit = cm->num_entries_limit;
 		}

Modified: openldap/vendor/openldap-release/servers/slapd/overlays/rwm.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/overlays/rwm.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/overlays/rwm.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* rwm.c - rewrite/remap operations */
-/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/rwm.c,v 1.70.2.22 2009/02/13 03:16:59 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/rwm.c,v 1.70.2.24 2009/02/20 00:14:30 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 2003-2009 The OpenLDAP Foundation.
@@ -1197,76 +1197,70 @@
 		int			last = -1;
 		Attribute		*a;
 
-		if ( SLAP_OPATTRS( rs->sr_attr_flags ) && is_at_operational( (*ap)->a_desc->ad_type ) )
+		if ( op->ors_attrs != NULL && 
+				!SLAP_USERATTRS( rs->sr_attr_flags ) &&
+				!ad_inlist( (*ap)->a_desc, op->ors_attrs ) )
 		{
-			/* go on */ ;
-			
-		} else {
-			if ( op->ors_attrs != NULL && 
-					!SLAP_USERATTRS( rs->sr_attr_flags ) &&
-					!ad_inlist( (*ap)->a_desc, op->ors_attrs ) )
-			{
-				goto cleanup_attr;
-			}
+			goto cleanup_attr;
+		}
 
-			drop_missing = rwm_mapping( &rwmap->rwm_at,
-					&(*ap)->a_desc->ad_cname, &mapping, RWM_REMAP );
-			if ( drop_missing || ( mapping != NULL && BER_BVISEMPTY( &mapping->m_dst ) ) )
-			{
-				goto cleanup_attr;
-			}
-			if ( mapping != NULL ) {
-				assert( mapping->m_dst_ad != NULL );
+		drop_missing = rwm_mapping( &rwmap->rwm_at,
+				&(*ap)->a_desc->ad_cname, &mapping, RWM_REMAP );
+		if ( drop_missing || ( mapping != NULL && BER_BVISEMPTY( &mapping->m_dst ) ) )
+		{
+			goto cleanup_attr;
+		}
+		if ( mapping != NULL ) {
+			assert( mapping->m_dst_ad != NULL );
 
-				/* try to normalize mapped Attributes if the original 
-				 * AttributeType was not normalized */
-				if ( (!(*ap)->a_desc->ad_type->sat_equality || 
-					!(*ap)->a_desc->ad_type->sat_equality->smr_normalize) &&
-					mapping->m_dst_ad->ad_type->sat_equality &&
-					mapping->m_dst_ad->ad_type->sat_equality->smr_normalize )
+			/* try to normalize mapped Attributes if the original 
+			 * AttributeType was not normalized */
+			if ( (!(*ap)->a_desc->ad_type->sat_equality || 
+				!(*ap)->a_desc->ad_type->sat_equality->smr_normalize) &&
+				mapping->m_dst_ad->ad_type->sat_equality &&
+				mapping->m_dst_ad->ad_type->sat_equality->smr_normalize )
+			{
+				if ((rwmap->rwm_flags & RWM_F_NORMALIZE_MAPPED_ATTRS))
 				{
-					if ((rwmap->rwm_flags & RWM_F_NORMALIZE_MAPPED_ATTRS))
+					int i = 0;
+
+					last = (*ap)->a_numvals;
+					if ( last )
 					{
-						int i = 0;
+						(*ap)->a_nvals = ch_malloc( (last+1) * sizeof(struct berval) );
 
-						last = (*ap)->a_numvals;
-						if ( last )
-						{
-							(*ap)->a_nvals = ch_malloc( (last+1) * sizeof(struct berval) );
+						for ( i = 0; !BER_BVISNULL( &(*ap)->a_vals[i]); i++ ) {
+							int		rc;
+							/*
+							 * check that each value is valid per syntax
+							 * and pretty if appropriate
+							 */
+							rc = mapping->m_dst_ad->ad_type->sat_equality->smr_normalize(
+								SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX,
+								mapping->m_dst_ad->ad_type->sat_syntax,
+								mapping->m_dst_ad->ad_type->sat_equality,
+								&(*ap)->a_vals[i], &(*ap)->a_nvals[i],
+								NULL );
 
-							for ( i = 0; !BER_BVISNULL( &(*ap)->a_vals[i]); i++ ) {
-								int		rc;
-								/*
-								 * check that each value is valid per syntax
-								 * and pretty if appropriate
-								 */
-								rc = mapping->m_dst_ad->ad_type->sat_equality->smr_normalize(
-									SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX,
-									mapping->m_dst_ad->ad_type->sat_syntax,
-									mapping->m_dst_ad->ad_type->sat_equality,
-									&(*ap)->a_vals[i], &(*ap)->a_nvals[i],
-									NULL );
-
-								if ( rc != LDAP_SUCCESS ) {
-									BER_BVZERO( &(*ap)->a_nvals[i] );
-								}
+							if ( rc != LDAP_SUCCESS ) {
+								BER_BVZERO( &(*ap)->a_nvals[i] );
 							}
-							BER_BVZERO( &(*ap)->a_nvals[i] );
 						}
-
-					} else {
-						assert( (*ap)->a_nvals == (*ap)->a_vals );
-						(*ap)->a_nvals = NULL;
-						ber_bvarray_dup_x( &(*ap)->a_nvals, (*ap)->a_vals, NULL );
+						BER_BVZERO( &(*ap)->a_nvals[i] );
 					}
+
+				} else {
+					assert( (*ap)->a_nvals == (*ap)->a_vals );
+					(*ap)->a_nvals = NULL;
+					ber_bvarray_dup_x( &(*ap)->a_nvals, (*ap)->a_vals, NULL );
 				}
+			}
 
-				/* rewrite the attribute description */
-				(*ap)->a_desc = mapping->m_dst_ad;
+			/* rewrite the attribute description */
+			(*ap)->a_desc = mapping->m_dst_ad;
 
-				/* will need to check for duplicate attrs */
-				check_duplicate_attrs++;
-			}
+			/* will need to check for duplicate attrs */
+			check_duplicate_attrs++;
 		}
 
 		if ( (*ap)->a_desc == slap_schema.si_ad_entryDN ) {
@@ -1951,7 +1945,7 @@
 rwm_bva_rewrite_add(
 	struct ldaprwmap	*rwmap,
 	int			idx,
-	const char		*argv[] )
+	char			**argv )
 {
 	char		*line;
 	struct berval	bv;
@@ -2168,7 +2162,7 @@
 			ConfigArgs ca = { 0 };
 			int i, last;
 
-			for ( last = 0; !BER_BVISNULL( &rwmap->rwm_bva_rewrite[ last ] ); last++ )
+			for ( last = 0; rwmap->rwm_bva_rewrite && !BER_BVISNULL( &rwmap->rwm_bva_rewrite[ last ] ); last++ )
 				/* count'em */ ;
 
 			if ( c->valx > last ) {
@@ -2224,7 +2218,7 @@
 				return 1;
 			}
 
-			for ( i = c->valx; !BER_BVISNULL( &rwmap->rwm_bva_rewrite[ i ] ); i++ )
+			for ( i = c->valx; rwmap->rwm_bva_rewrite && !BER_BVISNULL( &rwmap->rwm_bva_rewrite[ i ] ); i++ )
 			{
 				ca.line = rwmap->rwm_bva_rewrite[ i ].bv_val;
 				ca.argc = 0;
@@ -2251,6 +2245,7 @@
 
 			rwmap->rwm_bva_rewrite = ch_realloc( rwmap->rwm_bva_rewrite,
 				( last + 2 )*sizeof( struct berval ) );
+			BER_BVZERO( &rwmap->rwm_bva_rewrite[last+1] );
 
 			for ( i = last - 1; i >= c->valx; i-- )
 			{
@@ -2375,7 +2370,8 @@
 
 		if ( rwmap->rwm_rw ) {
 			rewrite_info_delete( &rwmap->rwm_rw );
-			ber_bvarray_free( rwmap->rwm_bva_rewrite );
+			if ( rwmap->rwm_bva_rewrite )
+				ber_bvarray_free( rwmap->rwm_bva_rewrite );
 		}
 
 		avl_free( rwmap->rwm_oc.remap, rwm_mapping_dst_free );

Modified: openldap/vendor/openldap-release/servers/slapd/overlays/rwmmap.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/overlays/rwmmap.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/overlays/rwmmap.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* rwmmap.c - rewrite/mapping routines */
-/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/rwmmap.c,v 1.31.2.11 2009/02/05 19:42:04 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/rwmmap.c,v 1.31.2.12 2009/02/17 19:14:42 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1999-2009 The OpenLDAP Foundation.
@@ -121,6 +121,15 @@
 
 	assert( m != NULL );
 
+	/* let special attrnames slip through (ITS#5760) */
+	if ( bvmatch( s, slap_bv_no_attrs )
+		|| bvmatch( s, slap_bv_all_user_attrs )
+		|| bvmatch( s, slap_bv_all_operational_attrs ) )
+	{
+		*m = NULL;
+		return 0;
+	}
+
 	if ( remap == RWM_REMAP ) {
 		tree = map->remap;
 
@@ -312,7 +321,7 @@
 
 	if ( j == 0 && i != 0 ) {
 		memset( &(*anp)[0], 0, sizeof( AttributeName ) );
-		BER_BVSTR( &(*anp)[0].an_name, LDAP_NO_ATTRS );
+		(*anp)[0].an_name = *slap_bv_no_attrs;
 		j = 1;
 	}
 	memset( &(*anp)[j], 0, sizeof( AttributeName ) );

Modified: openldap/vendor/openldap-release/servers/slapd/overlays/syncprov.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/overlays/syncprov.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/overlays/syncprov.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,4 +1,4 @@
-/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.147.2.44 2009/01/30 18:49:57 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.147.2.46 2009/02/23 02:15:32 quanah Exp $ */
 /* syncprov.c - syncrepl provider */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
@@ -28,6 +28,10 @@
 #include "config.h"
 #include "ldap_rq.h"
 
+#ifdef LDAP_DEVEL
+#define	CHECK_CSN	1
+#endif
+
 /* A modify request on a particular entry */
 typedef struct modinst {
 	struct modinst *mi_next;
@@ -704,6 +708,10 @@
 	switch( mode ) {
 	case FIND_MAXCSN:
 		if ( ber_bvcmp( &si->si_ctxcsn[maxid], &maxcsn )) {
+#ifdef CHECK_CSN
+			Syntax *syn = slap_schema.si_ad_contextCSN->ad_type->sat_syntax;
+			assert( !syn->ssyn_validate( syn, &maxcsn ));
+#endif
 			ber_bvreplace( &si->si_ctxcsn[maxid], &maxcsn );
 			si->si_numops++;	/* ensure a checkpoint */
 		}
@@ -1339,7 +1347,14 @@
 	SlapReply rsm = { 0 };
 	slap_callback cb = {0};
 	BackendDB be;
+#ifdef CHECK_CSN
+	Syntax *syn = slap_schema.si_ad_contextCSN->ad_type->sat_syntax;
 
+	int i;
+	for ( i=0; i<si->si_numcsns; i++ ) {
+		assert( !syn->ssyn_validate( syn, si->si_ctxcsn+i ));
+	}
+#endif
 	mod.sml_numvals = si->si_numcsns;
 	mod.sml_values = si->si_ctxcsn;
 	mod.sml_nvalues = NULL;
@@ -1367,6 +1382,11 @@
 	if ( mod.sml_next != NULL ) {
 		slap_mods_free( mod.sml_next, 1 );
 	}
+#ifdef CHECK_CSN
+	for ( i=0; i<si->si_numcsns; i++ ) {
+		assert( !syn->ssyn_validate( syn, si->si_ctxcsn+i ));
+	}
+#endif
 }
 
 static void
@@ -1608,15 +1628,17 @@
 
 	if ( rs->sr_err == LDAP_SUCCESS )
 	{
-		struct berval maxcsn = BER_BVNULL;
+		struct berval maxcsn;
 		char cbuf[LDAP_LUTIL_CSNSTR_BUFSIZE];
-		int do_check = 0, have_psearches, foundit;
+		int do_check = 0, have_psearches, foundit, csn_changed = 0;
 
 		/* Update our context CSN */
 		cbuf[0] = '\0';
+		maxcsn.bv_val = cbuf;
+		maxcsn.bv_len = sizeof(cbuf);
 		ldap_pvt_thread_rdwr_wlock( &si->si_csn_rwlock );
 		slap_get_commit_csn( op, &maxcsn, &foundit );
-		if ( BER_BVISNULL( &maxcsn ) && SLAP_GLUE_SUBORDINATE( op->o_bd )) {
+		if ( BER_BVISEMPTY( &maxcsn ) && SLAP_GLUE_SUBORDINATE( op->o_bd )) {
 			/* syncrepl queues the CSN values in the db where
 			 * it is configured , not where the changes are made.
 			 * So look for a value in the glue db if we didn't
@@ -1624,17 +1646,23 @@
 			 */
 			BackendDB *be = op->o_bd;
 			op->o_bd = select_backend( &be->be_nsuffix[0], 1);
+			maxcsn.bv_val = cbuf;
+			maxcsn.bv_len = sizeof(cbuf);
 			slap_get_commit_csn( op, &maxcsn, &foundit );
 			op->o_bd = be;
 		}
-		if ( !BER_BVISNULL( &maxcsn ) ) {
+		if ( !BER_BVISEMPTY( &maxcsn ) ) {
 			int i, sid;
-			strcpy( cbuf, maxcsn.bv_val );
+#ifdef CHECK_CSN
+			Syntax *syn = slap_schema.si_ad_contextCSN->ad_type->sat_syntax;
+			assert( !syn->ssyn_validate( syn, &maxcsn ));
+#endif
 			sid = slap_parse_csn_sid( &maxcsn );
 			for ( i=0; i<si->si_numcsns; i++ ) {
 				if ( sid == si->si_sids[i] ) {
 					if ( ber_bvcmp( &maxcsn, &si->si_ctxcsn[i] ) > 0 ) {
 						ber_bvreplace( &si->si_ctxcsn[i], &maxcsn );
+						csn_changed = 1;
 					}
 					break;
 				}
@@ -1642,6 +1670,7 @@
 			/* It's a new SID for us */
 			if ( i == si->si_numcsns ) {
 				value_add_one( &si->si_ctxcsn, &maxcsn );
+				csn_changed = 1;
 				si->si_numcsns++;
 				si->si_sids = ch_realloc( si->si_sids, si->si_numcsns *
 					sizeof(int));
@@ -1683,10 +1712,9 @@
 			ldap_pvt_thread_rdwr_runlock( &si->si_csn_rwlock );
 		}
 
-		/* only update consumer ctx if this is the greatest csn */
-		if ( bvmatch( &maxcsn, &op->o_csn )) {
-			opc->sctxcsn.bv_len = maxcsn.bv_len;
-			opc->sctxcsn.bv_val = cbuf;
+		/* only update consumer ctx if this is a newer csn */
+		if ( csn_changed ) {
+			opc->sctxcsn = maxcsn;
 		}
 
 		/* Handle any persistent searches */
@@ -1750,6 +1778,7 @@
 
 		a.a_vals = si->si_ctxcsn;
 		a.a_nvals = a.a_vals;
+		a.a_numvals = si->si_numcsns;
 
 		rs->sr_err = access_allowed( op, &e, op->oq_compare.rs_ava->aa_desc,
 			&op->oq_compare.rs_ava->aa_value, ACL_COMPARE, NULL );

Modified: openldap/vendor/openldap-release/servers/slapd/proto-slap.h
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/proto-slap.h	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/proto-slap.h	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,4 +1,4 @@
-/* $OpenLDAP: pkg/ldap/servers/slapd/proto-slap.h,v 1.670.2.40 2009/02/06 01:03:12 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/proto-slap.h,v 1.670.2.41 2009/02/17 19:14:41 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -191,6 +191,15 @@
 LDAP_SLAPD_V( AttributeName * ) slap_anlist_all_operational_attributes;
 LDAP_SLAPD_V( AttributeName * ) slap_anlist_all_attributes;
 
+LDAP_SLAPD_V( struct berval * ) slap_bv_no_attrs;
+LDAP_SLAPD_V( struct berval * ) slap_bv_all_user_attrs;
+LDAP_SLAPD_V( struct berval * ) slap_bv_all_operational_attrs;
+
+/* deprecated; only defined for backward compatibility */
+#define NoAttrs		(*slap_bv_no_attrs)
+#define AllUser		(*slap_bv_all_user_attrs)
+#define AllOper		(*slap_bv_all_operational_attrs)
+
 /*
  * add.c
  */
@@ -1954,10 +1963,6 @@
 
 LDAP_SLAPD_V (int)		use_reverse_lookup;
 
-LDAP_SLAPD_V (struct berval)	AllUser;
-LDAP_SLAPD_V (struct berval)	AllOper;
-LDAP_SLAPD_V (struct berval)	NoAttrs;
-
 /*
  * operations
  */

Modified: openldap/vendor/openldap-release/servers/slapd/result.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/result.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/result.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* result.c - routines to send ldap results, errors, and referrals */
-/* $OpenLDAP: pkg/ldap/servers/slapd/result.c,v 1.289.2.21 2009/01/26 20:48:05 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/result.c,v 1.289.2.22 2009/02/17 19:14:41 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -1656,9 +1656,9 @@
 		flags |= ( SLAP_OPATTRS_NO | SLAP_USERATTRS_YES );
 
 	} else {
-		flags |= an_find( an, &AllOper )
+		flags |= an_find( an, slap_bv_all_operational_attrs )
 			? SLAP_OPATTRS_YES : SLAP_OPATTRS_NO;
-		flags |= an_find( an, &AllUser )
+		flags |= an_find( an, slap_bv_all_user_attrs )
 			? SLAP_USERATTRS_YES : SLAP_USERATTRS_NO;
 	}
 

Modified: openldap/vendor/openldap-release/servers/slapd/schema_check.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/schema_check.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/schema_check.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* schema_check.c - routines to enforce schema definitions */
-/* $OpenLDAP: pkg/ldap/servers/slapd/schema_check.c,v 1.103.2.9 2009/02/05 19:35:54 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/schema_check.c,v 1.103.2.10 2009/02/22 20:56:29 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -881,7 +881,7 @@
 				SLAP_MR_ATTRIBUTE_VALUE_NORMALIZED_MATCH,
 				&ava->la_value, NULL, NULL );
 
-			if( rc != 0 ) {
+			if ( rc != 0 ) {
 				switch( rc ) {
 				case LDAP_INAPPROPRIATE_MATCHING:
 					snprintf( textbuf, textlen, 
@@ -895,8 +895,16 @@
 					break;
 				case LDAP_NO_SUCH_ATTRIBUTE:
 					if ( add_naming ) {
-						add = 1;
-						rc = LDAP_SUCCESS;
+						if ( is_at_single_value( desc->ad_type ) ) {
+							snprintf( textbuf, textlen, 
+								"value of single-valued naming attribute '%s' conflicts with value present in entry",
+								ava->la_attr.bv_val );
+
+						} else {
+							add = 1;
+							rc = LDAP_SUCCESS;
+						}
+
 					} else {
 						snprintf( textbuf, textlen, 
 							"value of naming attribute '%s' is not present in entry",

Modified: openldap/vendor/openldap-release/servers/slapd/schema_prep.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/schema_prep.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/schema_prep.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* schema_prep.c - load builtin schema */
-/* $OpenLDAP: pkg/ldap/servers/slapd/schema_prep.c,v 1.169.2.11 2009/01/22 00:01:03 kurt Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/schema_prep.c,v 1.169.2.12 2009/02/22 05:51:52 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 1998-2009 The OpenLDAP Foundation.
@@ -449,7 +449,7 @@
 			"EQUALITY objectIdentifierMatch "
 			"SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 "
 			"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )",
-		NULL, SLAP_AT_MANAGEABLE,
+		NULL, 0,
 		oidValidate, objectClassPretty,
 		NULL, NULL, objectSubClassMatch,
 			objectSubClassIndexer, objectSubClassFilter,

Modified: openldap/vendor/openldap-release/servers/slapd/syncrepl.c
===================================================================
--- openldap/vendor/openldap-release/servers/slapd/syncrepl.c	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/servers/slapd/syncrepl.c	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 /* syncrepl.c -- Replication Engine which uses the LDAP Sync protocol */
-/* $OpenLDAP: pkg/ldap/servers/slapd/syncrepl.c,v 1.254.2.61 2009/02/10 16:43:11 quanah Exp $ */
+/* $OpenLDAP: pkg/ldap/servers/slapd/syncrepl.c,v 1.254.2.63 2009/02/17 21:17:20 quanah Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
  * Copyright 2003-2009 The OpenLDAP Foundation.
@@ -2876,6 +2876,9 @@
 	Backend *be = op->o_bd;
 	Modifications mod;
 	struct berval first = BER_BVNULL;
+#ifdef CHECK_CSN
+	Syntax *syn = slap_schema.si_ad_contextCSN->ad_type->sat_syntax;
+#endif
 
 	int rc, i, j;
 	ber_len_t len;
@@ -2892,6 +2895,15 @@
 
 	ldap_pvt_thread_mutex_lock( &si->si_cookieState->cs_mutex );
 
+#ifdef CHECK_CSN
+	for ( i=0; i<syncCookie->numcsns; i++ ) {
+		assert( !syn->ssyn_validate( syn, syncCookie->ctxcsn+i ));
+	}
+	for ( i=0; i<si->si_cookieState->cs_num; i++ ) {
+		assert( !syn->ssyn_validate( syn, si->si_cookieState->cs_vals+i ));
+	}
+#endif
+
 	/* clone the cookieState CSNs so we can Replace the whole thing */
 	mod.sml_numvals = si->si_cookieState->cs_num;
 	mod.sml_values = op->o_tmpalloc(( mod.sml_numvals+1 )*sizeof(struct berval), op->o_tmpmemctx );
@@ -2994,6 +3006,12 @@
 	if ( mod.sml_next ) slap_mods_free( mod.sml_next, 1 );
 	op->o_tmpfree( mod.sml_values, op->o_tmpmemctx );
 
+#ifdef CHECK_CSN
+	for ( i=0; i<si->si_cookieState->cs_num; i++ ) {
+		assert( !syn->ssyn_validate( syn, si->si_cookieState->cs_vals+i ));
+	}
+#endif
+
 	return rc;
 }
 
@@ -4307,13 +4325,22 @@
 			BER_BVISNULL( &si->si_bindconf.sb_uri ) ?
 			"(null)" : si->si_bindconf.sb_uri.bv_val, 0, 0 );
 		if ( c->be->be_syncinfo ) {
+			syncinfo_t *sip;
+
 			si->si_cookieState = c->be->be_syncinfo->si_cookieState;
+
+			// add new syncrepl to end of list (same order as when deleting)
+			for ( sip = c->be->be_syncinfo; sip->si_next; sip = sip->si_next );
+			sip->si_next = si;
 		} else {
 			si->si_cookieState = ch_calloc( 1, sizeof( cookie_state ));
 			ldap_pvt_thread_mutex_init( &si->si_cookieState->cs_mutex );
+
+			c->be->be_syncinfo = si;
 		}
-		si->si_next = c->be->be_syncinfo;
-		c->be->be_syncinfo = si;
+
+		si->si_next = NULL;
+
 		return 0;
 	}
 }

Modified: openldap/vendor/openldap-release/tests/data/manage.out
===================================================================
--- openldap/vendor/openldap-release/tests/data/manage.out	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/tests/data/manage.out	2009-02-24 07:04:10 UTC (rev 1208)
@@ -51,8 +51,6 @@
 
 dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,dc=example,
  dc=com
-objectClass: OpenLDAPperson
-objectClass: obsoletePerson
 cn: Barbara Jensen
 cn: Babs Jensen
 sn:: IEplbnNlbiA=
@@ -72,11 +70,12 @@
 telephoneNumber: +1 313 555 9022
 creatorsName: cn=Manager,dc=example,dc=com
 testObsolete: TRUE
+objectClass: obsoletePerson
+objectClass: testPerson
 modifiersName: cn=Manager,dc=example,dc=com
 
 dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc
  =com
-objectClass: OpenLDAPperson
 cn: Bjorn Jensen
 cn: Biiff Jensen
 sn: Jensen
@@ -94,6 +93,7 @@
 facsimileTelephoneNumber: +1 313 555 2177
 telephoneNumber: +1 313 555 0355
 creatorsName: cn=Manager,dc=example,dc=com
+objectClass: testPerson
 modifiersName: cn=Manager,dc=example,dc=com
 
 dn: cn=Dorothy Stevens,ou=Alumni Association,ou=People,dc=example,dc=com
@@ -303,6 +303,7 @@
 
 dn: cn=James A Jones 1,ou=Alumni Association,ou=People,dc=example,dc=com
 objectClass: OpenLDAPperson
+objectClass: testPerson
 cn: James A Jones 1
 cn: James Jones
 cn: Jim Jones

Modified: openldap/vendor/openldap-release/tests/progs/Makefile.in
===================================================================
--- openldap/vendor/openldap-release/tests/progs/Makefile.in	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/tests/progs/Makefile.in	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 ## Makefile.in for test programs
-# $OpenLDAP: pkg/ldap/tests/progs/Makefile.in,v 1.22.2.4 2009/01/22 00:01:17 kurt Exp $
+# $OpenLDAP: pkg/ldap/tests/progs/Makefile.in,v 1.22.2.5 2009/02/17 23:47:04 quanah Exp $
 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
 ##
 ## Copyright 1998-2009 The OpenLDAP Foundation.
@@ -23,7 +23,7 @@
 LDAP_INCDIR= ../../include
 LDAP_LIBDIR= ../../libraries
 
-XLIBS    = $(LDAP_LIBLDAP_LA) $(LDAP_LIBLBER_LA) $(LDAP_LIBLUTIL_A)
+XLIBS    = $(LDAP_LIBLDAP_LA) $(LDAP_LIBLUTIL_A) $(LDAP_LIBLBER_LA)
 XXLIBS	 = $(SECURITY_LIBS) $(LUTIL_LIBS)
 
 OBJS     = slapd-common.o

Modified: openldap/vendor/openldap-release/tests/scripts/test037-manage
===================================================================
--- openldap/vendor/openldap-release/tests/scripts/test037-manage	2009-02-17 20:31:55 UTC (rev 1207)
+++ openldap/vendor/openldap-release/tests/scripts/test037-manage	2009-02-24 07:04:10 UTC (rev 1208)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# $OpenLDAP: pkg/ldap/tests/scripts/test037-manage,v 1.12.2.7 2009/01/22 00:01:20 kurt Exp $
+# $OpenLDAP: pkg/ldap/tests/scripts/test037-manage,v 1.12.2.8 2009/02/22 05:50:54 quanah Exp $
 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
 ##
 ## Copyright 1998-2009 The OpenLDAP Foundation.
@@ -130,22 +130,9 @@
 modifiersName: cn=Someone Else
 modifyTimestamp: 19700101000000Z
 entryUUID: badbadef-dbad-1029-92f7-badbadbadbad
-EOMODS
 
-RC=$?
-if test $RC != 0 ; then
-	echo "ldapmodify failed ($RC)!"
-	test $KILLSERVERS != no && kill -HUP $KILLPIDS
-	exit $RC
-fi
-
-echo "Testing modify, add, and delete..."
-$LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD \
-	-e \!relax > \
-	$TESTOUT 2>&1 << EOMODS
-version: 1
 #
-# Non-working tests
+# Tests that did not work until ITS#5792
 #
 
 dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,dc=example,
@@ -154,9 +141,8 @@
 changetype: modify
 replace: objectClass
 objectClass: obsoletePerson
+objectClass: testPerson
 -
-replace: structuralObjectClass
-structuralObjectClass: testPerson
 
 dn: cn=James A Jones 1,ou=Alumni Association,ou=People,dc=example,dc=com
 # update structural object class of entry via objectClass add
@@ -164,8 +150,6 @@
 add: objectClass
 objectClass: testPerson
 -
-replace: structuralObjectClass
-structuralObjectClass: testPerson
 
 dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com
 # update structural object class of entry via objectClass delete/add
@@ -176,17 +160,13 @@
 add: objectClass
 objectClass: testPerson
 -
-delete: structuralObjectClass
--
-add: structuralObjectClass
-structuralObjectClass: testPerson
 EOMODS
 
 RC=$?
 if test $RC != 0 ; then
-	echo "ldapmodify failed ($RC)!  IGNORED"
-#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
-#	exit $RC
+	echo "ldapmodify failed ($RC)!"
+	test $KILLSERVERS != no && kill -HUP $KILLPIDS
+	exit $RC
 fi
 
 echo "Using ldapsearch to retrieve all the entries..."




More information about the Pkg-openldap-devel mailing list