From 44ded298ebb49500d321ac79b7d0d8bb4d5058ec Mon Sep 17 00:00:00 2001 From: root Date: Thu, 29 Mar 2012 00:01:17 +0000 Subject: Thu Mar 29 00:01:17 UTC 2012 --- core/openldap/PKGBUILD | 24 +- core/openldap/mutex-end-of-struct-sigsegv.patch | 293 ++++++++++++++++++++++++ 2 files changed, 308 insertions(+), 9 deletions(-) create mode 100644 core/openldap/mutex-end-of-struct-sigsegv.patch (limited to 'core/openldap') diff --git a/core/openldap/PKGBUILD b/core/openldap/PKGBUILD index 8351587b4..665a82a85 100644 --- a/core/openldap/PKGBUILD +++ b/core/openldap/PKGBUILD @@ -1,24 +1,29 @@ -# $Id: PKGBUILD 146451 2012-01-11 15:21:08Z stephane $ +# $Id: PKGBUILD 154404 2012-03-27 21:06:23Z eric $ # Maintainer: pkgbase=openldap pkgname=('libldap' 'openldap') -pkgver=2.4.28 -pkgrel=2 +pkgver=2.4.30 +pkgrel=1 arch=('i686' 'x86_64') url="http://www.openldap.org/" license=('custom') -makedepends=('libfetch' 'libltdl' 'libsasl' 'e2fsprogs' 'util-linux') +makedepends=('libltdl' 'libsasl' 'e2fsprogs' 'util-linux') source=(ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/${pkgbase}-${pkgver}.tgz - slapd slapd.default ntlm.patch) -sha1sums=('d888beae1723002a5a2ff5509d3040df40885774' + slapd slapd.default + ntlm.patch + mutex-end-of-struct-sigsegv.patch) +sha1sums=('7447e89b9a5199f9bb2231bda42c308a1b6513d9' 'bd1ea19256d3d467f1f803e0f4046ef50f17628f' 'd89b8a533045123f1ab46c9c430cf132d58a20a4' - 'e4afd9f1c810ef4c4cd8fe1101dfe5887f2b7eef') + 'e4afd9f1c810ef4c4cd8fe1101dfe5887f2b7eef' + '694269dad78c7a806649c2d7f57bb7e503df3af1') build() { cd "${srcdir}"/${pkgbase}-${pkgver} patch -Np1 -i "${srcdir}"/ntlm.patch + patch -Np1 -i "${srcdir}"/mutex-end-of-struct-sigsegv.patch + sed -i 's|-m 644 $(LIBRARY)|-m 755 $(LIBRARY)|' libraries/{liblber,libldap,libldap_r}/Makefile.in sed -i 's|#define LDAPI_SOCK LDAP_RUNDIR LDAP_DIRSEP "run" LDAP_DIRSEP "ldapi"|#define LDAPI_SOCK LDAP_DIRSEP "run" LDAP_DIRSEP "openldap" LDAP_DIRSEP "ldapi"|' include/ldap_defaults.h sed -i 's|%LOCALSTATEDIR%/run|/run/openldap|' servers/slapd/slapd.conf @@ -30,7 +35,8 @@ build() { --enable-ipv6 --enable-syslog --enable-local \ --enable-bdb --enable-hdb \ --enable-crypt --enable-dynamic \ - --with-threads --disable-wrappers \ + --with-threads --disable-wrappers \ + --without-fetch \ --enable-spasswd --with-cyrus-sasl \ --enable-overlays=mod --enable-modules=yes make @@ -43,7 +49,7 @@ check() { package_libldap() { pkgdesc="Lightweight Directory Access Protocol (LDAP) client libraries" - depends=('libsasl' 'libfetch' 'e2fsprogs') + depends=('libsasl' 'e2fsprogs') backup=('etc/openldap/ldap.conf') options=('!libtool') diff --git a/core/openldap/mutex-end-of-struct-sigsegv.patch b/core/openldap/mutex-end-of-struct-sigsegv.patch new file mode 100644 index 000000000..e8996386a --- /dev/null +++ b/core/openldap/mutex-end-of-struct-sigsegv.patch @@ -0,0 +1,293 @@ + libraries/libldap/init.c | 8 ++- + libraries/libldap/ldap-int.h | 198 ++++++++++++++++++++++-------------------- + 2 files changed, 110 insertions(+), 96 deletions(-) + +diff --git a/libraries/libldap/init.c b/libraries/libldap/init.c +index 39292d2..9d37e64 100644 +--- a/libraries/libldap/init.c ++++ b/libraries/libldap/init.c +@@ -36,7 +36,13 @@ + #include "lutil.h" + + struct ldapoptions ldap_int_global_options = +- { LDAP_UNINITIALIZED, LDAP_DEBUG_NONE LDAP_LDO_MUTEX_NULLARG }; ++ { LDAP_UNINITIALIZED, LDAP_DEBUG_NONE ++ LDAP_LDO_NULLARG ++ LDAP_LDO_CONNECTIONLESS_NULLARG ++ LDAP_LDO_TLS_NULLARG ++ LDAP_LDO_SASL_NULLARG ++ LDAP_LDO_GSSAPI_NULLARG ++ LDAP_LDO_MUTEX_NULLARG }; + + #define ATTR_NONE 0 + #define ATTR_BOOL 1 +diff --git a/libraries/libldap/ldap-int.h b/libraries/libldap/ldap-int.h +index f8e6126..ac6c9e5 100644 +--- a/libraries/libldap/ldap-int.h ++++ b/libraries/libldap/ldap-int.h +@@ -185,29 +185,59 @@ struct ldapoptions { + #define LDAP_TRASHED_SESSION 0xFF + int ldo_debug; + +-#ifdef LDAP_R_COMPILE +- ldap_pvt_thread_mutex_t ldo_mutex; +-#define LDAP_LDO_MUTEX_NULLARG , LDAP_PVT_MUTEX_NULL +-#else +-#define LDAP_LDO_MUTEX_NULLARG +-#endif ++ ber_int_t ldo_version; ++ ber_int_t ldo_deref; ++ ber_int_t ldo_timelimit; ++ ber_int_t ldo_sizelimit; ++ ++ /* per API call timeout */ ++ struct timeval ldo_tm_api; ++ struct timeval ldo_tm_net; ++ ++ LDAPURLDesc *ldo_defludp; ++ int ldo_defport; ++ char* ldo_defbase; ++ char* ldo_defbinddn; /* bind dn */ ++ ++ /* ++ * Per connection tcp-keepalive settings (Linux only, ++ * ignored where unsupported) ++ */ ++ ber_int_t ldo_keepalive_idle; ++ ber_int_t ldo_keepalive_probes; ++ ber_int_t ldo_keepalive_interval; ++ ++ int ldo_refhoplimit; /* limit on referral nesting */ ++ ++ /* LDAPv3 server and client controls */ ++ LDAPControl **ldo_sctrls; ++ LDAPControl **ldo_cctrls; ++ ++ /* LDAP rebind callback function */ ++ LDAP_REBIND_PROC *ldo_rebind_proc; ++ void *ldo_rebind_params; ++ LDAP_NEXTREF_PROC *ldo_nextref_proc; ++ void *ldo_nextref_params; ++ LDAP_URLLIST_PROC *ldo_urllist_proc; ++ void *ldo_urllist_params; ++ ++ /* LDAP connection callback stack */ ++ ldaplist *ldo_conn_cbs; ++ ++ LDAP_BOOLEANS ldo_booleans; /* boolean options */ ++ ++#define LDAP_LDO_NULLARG ,0,0,0,0 ,{0},{0} ,0,0,0,0, 0,0,0,0, 0,0, 0,0,0,0,0,0, 0, 0 + + #ifdef LDAP_CONNECTIONLESS + #define LDAP_IS_UDP(ld) ((ld)->ld_options.ldo_is_udp) + void* ldo_peer; /* struct sockaddr* */ + char* ldo_cldapdn; + int ldo_is_udp; ++#define LDAP_LDO_CONNECTIONLESS_NULLARG ,0,0,0 ++#else ++#define LDAP_LDO_CONNECTIONLESS_NULLARG + #endif + +- /* per API call timeout */ +- struct timeval ldo_tm_api; +- struct timeval ldo_tm_net; +- +- ber_int_t ldo_version; +- ber_int_t ldo_deref; +- ber_int_t ldo_timelimit; +- ber_int_t ldo_sizelimit; +- + #ifdef HAVE_TLS + /* tls context */ + void *ldo_tls_ctx; +@@ -226,16 +256,12 @@ struct ldapoptions { + int ldo_tls_mode; + int ldo_tls_require_cert; + int ldo_tls_impl; +-#ifdef HAVE_OPENSSL_CRL + int ldo_tls_crlcheck; +-#endif ++#define LDAP_LDO_TLS_NULLARG ,0,0,0,{0,0,0,0,0,0,0,0,0},0,0,0,0 ++#else ++#define LDAP_LDO_TLS_NULLARG + #endif + +- LDAPURLDesc *ldo_defludp; +- int ldo_defport; +- char* ldo_defbase; +- char* ldo_defbinddn; /* bind dn */ +- + #ifdef HAVE_CYRUS_SASL + char* ldo_def_sasl_mech; /* SASL Mechanism(s) */ + char* ldo_def_sasl_realm; /* SASL realm */ +@@ -244,6 +270,9 @@ struct ldapoptions { + + /* SASL Security Properties */ + struct sasl_security_properties ldo_sasl_secprops; ++#define LDAP_LDO_SASL_NULLARG ,0,0,0,0,{0} ++#else ++#define LDAP_LDO_SASL_NULLARG + #endif + + #ifdef HAVE_GSSAPI +@@ -253,34 +282,17 @@ struct ldapoptions { + #define LDAP_GSSAPI_OPT_DO_NOT_FREE_GSS_CONTEXT 0x0001 + #define LDAP_GSSAPI_OPT_ALLOW_REMOTE_PRINCIPAL 0x0002 + unsigned ldo_gssapi_options; ++#define LDAP_LDO_GSSAPI_NULLARG ,0,0 ++#else ++#define LDAP_LDO_GSSAPI_NULLARG + #endif + +- /* +- * Per connection tcp-keepalive settings (Linux only, +- * ignored where unsupported) +- */ +- ber_int_t ldo_keepalive_idle; +- ber_int_t ldo_keepalive_probes; +- ber_int_t ldo_keepalive_interval; +- +- int ldo_refhoplimit; /* limit on referral nesting */ +- +- /* LDAPv3 server and client controls */ +- LDAPControl **ldo_sctrls; +- LDAPControl **ldo_cctrls; +- +- /* LDAP rebind callback function */ +- LDAP_REBIND_PROC *ldo_rebind_proc; +- void *ldo_rebind_params; +- LDAP_NEXTREF_PROC *ldo_nextref_proc; +- void *ldo_nextref_params; +- LDAP_URLLIST_PROC *ldo_urllist_proc; +- void *ldo_urllist_params; +- +- /* LDAP connection callback stack */ +- ldaplist *ldo_conn_cbs; +- +- LDAP_BOOLEANS ldo_booleans; /* boolean options */ ++#ifdef LDAP_R_COMPILE ++ ldap_pvt_thread_mutex_t ldo_mutex; ++#define LDAP_LDO_MUTEX_NULLARG , LDAP_PVT_MUTEX_NULL ++#else ++#define LDAP_LDO_MUTEX_NULLARG ++#endif + }; + + +@@ -375,6 +387,46 @@ struct ldap_common { + Sockbuf *ldc_sb; /* socket descriptor & buffer */ + #define ld_sb ldc->ldc_sb + ++ unsigned short ldc_lberoptions; ++#define ld_lberoptions ldc->ldc_lberoptions ++ ++ /* protected by msgid_mutex */ ++ ber_len_t ldc_msgid; ++#define ld_msgid ldc->ldc_msgid ++ ++ /* do not mess with these */ ++ /* protected by req_mutex */ ++ LDAPRequest *ldc_requests; /* list of outstanding requests */ ++ /* protected by res_mutex */ ++ LDAPMessage *ldc_responses; /* list of outstanding responses */ ++#define ld_requests ldc->ldc_requests ++#define ld_responses ldc->ldc_responses ++ ++ /* protected by abandon_mutex */ ++ ber_len_t ldc_nabandoned; ++ ber_int_t *ldc_abandoned; /* array of abandoned requests */ ++#define ld_nabandoned ldc->ldc_nabandoned ++#define ld_abandoned ldc->ldc_abandoned ++ ++ /* unused by libldap */ ++ LDAPCache *ldc_cache; /* non-null if cache is initialized */ ++#define ld_cache ldc->ldc_cache ++ ++ /* do not mess with the rest though */ ++ ++ /* protected by conn_mutex */ ++ LDAPConn *ldc_defconn; /* default connection */ ++#define ld_defconn ldc->ldc_defconn ++ LDAPConn *ldc_conns; /* list of server connections */ ++#define ld_conns ldc->ldc_conns ++ void *ldc_selectinfo;/* platform specifics for select */ ++#define ld_selectinfo ldc->ldc_selectinfo ++ ++ /* ldap_common refcnt - free only if 0 */ ++ /* protected by ldc_mutex */ ++ unsigned int ldc_refcnt; ++#define ld_ldcrefcnt ldc->ldc_refcnt ++ + /* protected by ldo_mutex */ + struct ldapoptions ldc_options; + #define ld_options ldc->ldc_options +@@ -403,66 +455,22 @@ struct ldap_common { + #define ld_urllist_params ld_options.ldo_urllist_params + + #define ld_version ld_options.ldo_version +-#ifdef LDAP_R_COMPILE +-#define ld_ldopts_mutex ld_options.ldo_mutex +-#endif +- +- unsigned short ldc_lberoptions; +-#define ld_lberoptions ldc->ldc_lberoptions +- +- /* protected by msgid_mutex */ +- ber_len_t ldc_msgid; +-#define ld_msgid ldc->ldc_msgid +- +- /* do not mess with these */ +- /* protected by req_mutex */ +- LDAPRequest *ldc_requests; /* list of outstanding requests */ +- /* protected by res_mutex */ +- LDAPMessage *ldc_responses; /* list of outstanding responses */ +-#define ld_requests ldc->ldc_requests +-#define ld_responses ldc->ldc_responses + + #ifdef LDAP_R_COMPILE ++ ldap_pvt_thread_mutex_t ldc_mutex; + ldap_pvt_thread_mutex_t ldc_msgid_mutex; + ldap_pvt_thread_mutex_t ldc_conn_mutex; + ldap_pvt_thread_mutex_t ldc_req_mutex; + ldap_pvt_thread_mutex_t ldc_res_mutex; + ldap_pvt_thread_mutex_t ldc_abandon_mutex; ++#define ld_ldopts_mutex ld_options.ldo_mutex ++#define ld_ldcmutex ldc->ldc_mutex + #define ld_msgid_mutex ldc->ldc_msgid_mutex + #define ld_conn_mutex ldc->ldc_conn_mutex + #define ld_req_mutex ldc->ldc_req_mutex + #define ld_res_mutex ldc->ldc_res_mutex + #define ld_abandon_mutex ldc->ldc_abandon_mutex + #endif +- +- /* protected by abandon_mutex */ +- ber_len_t ldc_nabandoned; +- ber_int_t *ldc_abandoned; /* array of abandoned requests */ +-#define ld_nabandoned ldc->ldc_nabandoned +-#define ld_abandoned ldc->ldc_abandoned +- +- /* unused by libldap */ +- LDAPCache *ldc_cache; /* non-null if cache is initialized */ +-#define ld_cache ldc->ldc_cache +- +- /* do not mess with the rest though */ +- +- /* protected by conn_mutex */ +- LDAPConn *ldc_defconn; /* default connection */ +-#define ld_defconn ldc->ldc_defconn +- LDAPConn *ldc_conns; /* list of server connections */ +-#define ld_conns ldc->ldc_conns +- void *ldc_selectinfo;/* platform specifics for select */ +-#define ld_selectinfo ldc->ldc_selectinfo +- +- /* ldap_common refcnt - free only if 0 */ +-#ifdef LDAP_R_COMPILE +- ldap_pvt_thread_mutex_t ldc_mutex; +-#define ld_ldcmutex ldc->ldc_mutex +-#endif +- /* protected by ldc_mutex */ +- unsigned int ldc_refcnt; +-#define ld_ldcrefcnt ldc->ldc_refcnt + }; + + struct ldap { -- cgit v1.2.3-54-g00ecf