[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 <<A HREF="http://www.openldap.org/">http://www.openldap.org/</A>></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