diff options
author | root <root@rshg054.dnsready.net> | 2012-03-19 00:01:09 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2012-03-19 00:01:09 +0000 |
commit | de5b6982e42f4a1e8b0537cfbc1b676e2a81f195 (patch) | |
tree | 54a8758af5dc5a08f95d12f7fe04cec1d51024a6 /testing | |
parent | d14a25fc4f65ae3d6e62f4668e9cb88d74834255 (diff) |
Mon Mar 19 00:01:09 UTC 2012
Diffstat (limited to 'testing')
-rw-r--r-- | testing/libdrm/COPYING | 48 | ||||
-rw-r--r-- | testing/libdrm/PKGBUILD | 51 | ||||
-rw-r--r-- | testing/libdrm/git_fixes.diff | 13 | ||||
-rw-r--r-- | testing/libdrm/no-pthread-stubs.patch | 66 | ||||
-rw-r--r-- | testing/openldap/PKGBUILD | 102 | ||||
-rw-r--r-- | testing/openldap/mutex-end-of-struct-sigsegv.patch | 293 | ||||
-rw-r--r-- | testing/openldap/ntlm.patch | 230 | ||||
-rw-r--r-- | testing/openldap/openldap.install | 20 | ||||
-rwxr-xr-x | testing/openldap/slapd | 49 | ||||
-rw-r--r-- | testing/openldap/slapd.default | 6 |
10 files changed, 878 insertions, 0 deletions
diff --git a/testing/libdrm/COPYING b/testing/libdrm/COPYING new file mode 100644 index 000000000..6e74c337c --- /dev/null +++ b/testing/libdrm/COPYING @@ -0,0 +1,48 @@ + Copyright 2005 Adam Jackson. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation on the rights to use, copy, modify, merge, + publish, distribute, sub license, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial + portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NON-INFRINGEMENT. IN NO EVENT SHALL ADAM JACKSON BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +------------------------------------------------------------------------ + + Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. + Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. + All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial + portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS + SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. diff --git a/testing/libdrm/PKGBUILD b/testing/libdrm/PKGBUILD new file mode 100644 index 000000000..bfd29c1ca --- /dev/null +++ b/testing/libdrm/PKGBUILD @@ -0,0 +1,51 @@ +# $Id: PKGBUILD 153651 2012-03-17 08:41:21Z andyrtr $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgname=libdrm +pkgver=2.4.32 +pkgrel=1 +pkgdesc="Userspace interface to kernel DRM services" +arch=(i686 x86_64) +license=('custom') +depends=('glibc' 'libpciaccess') +makedepends=('cairo' 'valgrind') +options=('!libtool') +url="http://dri.freedesktop.org/" +source=(http://dri.freedesktop.org/${pkgname}/${pkgname}-${pkgver}.tar.bz2 + no-pthread-stubs.patch + COPYING +# git_fixes.diff +) +sha1sums=('4aab6cc1c0d2a4822ffd83bd3da0e7a5479bf842' + '825ff5e0c4238b31bdea52f104bfec8949270e25' + 'ba3dcd636997ee0d30df14b03dae05c24ae5d094') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/no-pthread-stubs.patch" + + # git fixes - currently none +# patch -Np1 -i ${srcdir}/git_fixes.diff + + #libtoolize --force + autoreconf --force --install + ./configure --prefix=/usr \ + --enable-udev \ + --enable-intel \ + --enable-radeon \ + --enable-vmwgfx-experimental-api \ + --enable-nouveau-experimental-api + make +} + +check() { + cd "${srcdir}/${pkgname}-${pkgver}" + make -k check +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 "${srcdir}/COPYING" "${pkgdir}/usr/share/licenses/${pkgname}/" +} diff --git a/testing/libdrm/git_fixes.diff b/testing/libdrm/git_fixes.diff new file mode 100644 index 000000000..dc80155f2 --- /dev/null +++ b/testing/libdrm/git_fixes.diff @@ -0,0 +1,13 @@ +diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c +index 19441f3..eb9dd32 100644 +--- a/intel/intel_bufmgr_gem.c ++++ b/intel/intel_bufmgr_gem.c +@@ -958,7 +958,7 @@ static void drm_intel_gem_bo_purge_vma_cache(drm_intel_bufmgr_gem *bufmgr_gem) + bufmgr_gem->vma_cache.next, + vma_list); + assert(bo_gem->map_count == 0); +- DRMLISTDEL(&bo_gem->vma_list); ++ DRMLISTDELINIT(&bo_gem->vma_list); + + if (bo_gem->mem_virtual) { + munmap(bo_gem->mem_virtual, bo_gem->bo.size); diff --git a/testing/libdrm/no-pthread-stubs.patch b/testing/libdrm/no-pthread-stubs.patch new file mode 100644 index 000000000..5430244f9 --- /dev/null +++ b/testing/libdrm/no-pthread-stubs.patch @@ -0,0 +1,66 @@ +diff -ru libdrm-2.4.0/configure.ac libdrm-2.4.0-nostubs/configure.ac +--- libdrm-2.4.0/configure.ac 2008-10-09 21:57:09.000000000 +0200 ++++ libdrm-2.4.0-nostubs/configure.ac 2008-10-21 10:48:24.000000000 +0200 +@@ -47,10 +47,6 @@ + LT_INIT([disable-static]) + + +-PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs) +-AC_SUBST(PTHREADSTUBS_CFLAGS) +-AC_SUBST(PTHREADSTUBS_LIBS) +- + pkgconfigdir=${libdir}/pkgconfig + AC_SUBST(pkgconfigdir) + AC_ARG_ENABLE([udev], +--- libdrm-2.4.16/intel/Makefile.am 2009-11-20 23:54:36.000000000 +0000 ++++ libdrm-2.4.16/intel/Makefile.am.new 2009-12-07 08:11:32.235748069 +0000 +@@ -26,7 +26,6 @@ + $(WARN_CFLAGS) \ + -I$(top_srcdir) \ + -I$(top_srcdir)/intel \ +- $(PTHREADSTUBS_CFLAGS) \ + $(PCIACCESS_CFLAGS) \ + -I$(top_srcdir)/include/drm + +@@ -34,7 +33,6 @@ + libdrm_intel_ladir = $(libdir) + libdrm_intel_la_LDFLAGS = -version-number 1:0:0 -no-undefined + libdrm_intel_la_LIBADD = ../libdrm.la \ +- @PTHREADSTUBS_LIBS@ \ + @PCIACCESS_LIBS@ \ + @CLOCK_LIB@ + +--- libdrm-2.4.16/radeon/Makefile.am 2009-11-20 23:54:36.000000000 +0000 ++++ libdrm-2.4.16/radeon/Makefile.am.new 2009-12-07 08:12:31.889075388 +0000 +@@ -26,13 +26,12 @@ + $(WARN_CFLAGS) \ + -I$(top_srcdir) \ + -I$(top_srcdir)/radeon \ +- $(PTHREADSTUBS_CFLAGS) \ + -I$(top_srcdir)/include/drm + + libdrm_radeon_la_LTLIBRARIES = libdrm_radeon.la + libdrm_radeon_ladir = $(libdir) + libdrm_radeon_la_LDFLAGS = -version-number 1:0:0 -no-undefined +-libdrm_radeon_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ ++libdrm_radeon_la_LIBADD = ../libdrm.la + + libdrm_radeon_la_SOURCES = \ + radeon_bo_gem.c \ +--- libdrm-2.4.16/nouveau/Makefile.am 2009-11-20 23:54:36.000000000 +0000 ++++ libdrm-2.4.16/nouveau/Makefile.am.new 2009-12-07 08:13:01.489072320 +0000 +@@ -2,13 +2,12 @@ + $(WARN_CFLAGS) \ + -I$(top_srcdir) \ + -I$(top_srcdir)/nouveau \ +- $(PTHREADSTUBS_CFLAGS) \ + -I$(top_srcdir)/include/drm + + libdrm_nouveau_la_LTLIBRARIES = libdrm_nouveau.la + libdrm_nouveau_ladir = $(libdir) + libdrm_nouveau_la_LDFLAGS = -version-number 1:0:0 -no-undefined +-libdrm_nouveau_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ ++libdrm_nouveau_la_LIBADD = ../libdrm.la + + libdrm_nouveau_la_SOURCES = \ + nouveau_device.c \ diff --git a/testing/openldap/PKGBUILD b/testing/openldap/PKGBUILD new file mode 100644 index 000000000..4b9f1ca54 --- /dev/null +++ b/testing/openldap/PKGBUILD @@ -0,0 +1,102 @@ +# $Id: PKGBUILD 153670 2012-03-17 18:34:49Z eric $ +# Maintainer: + +pkgbase=openldap +pkgname=('libldap' 'openldap') +pkgver=2.4.30 +pkgrel=1 +arch=('i686' 'x86_64') +url="http://www.openldap.org/" +license=('custom') +makedepends=('libltdl' 'libsasl' 'e2fsprogs' 'util-linux') +source=(ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/${pkgbase}-${pkgver}.tgz + slapd slapd.default + ntlm.patch + mutex-end-of-struct-sigsegv.patch) +sha1sums=('7447e89b9a5199f9bb2231bda42c308a1b6513d9' + 'bd1ea19256d3d467f1f803e0f4046ef50f17628f' + 'd89b8a533045123f1ab46c9c430cf132d58a20a4' + '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 + sed -i 's|-$(MKDIR) $(DESTDIR)$(localstatedir)/run|-$(MKDIR) $(DESTDIR)/run/openldap|' servers/slapd/Makefile.in + + LDFLAGS="$LDFLAGS -L\"${pkgdir}\"/libldap/usr/lib" + ./configure --prefix=/usr --mandir=/usr/share/man --libexecdir=/usr/lib \ + --sysconfdir=/etc --localstatedir=/var/lib/openldap \ + --enable-ipv6 --enable-syslog --enable-local \ + --enable-bdb --enable-hdb \ + --enable-crypt --enable-dynamic \ + --with-threads --disable-wrappers \ + --without-fetch \ + --enable-spasswd --with-cyrus-sasl \ + --enable-overlays=mod --enable-modules=yes + make +} + +check() { + cd "${srcdir}"/${pkgbase}-${pkgver} + make test +} + +package_libldap() { + pkgdesc="Lightweight Directory Access Protocol (LDAP) client libraries" + depends=('libsasl' 'e2fsprogs') + backup=('etc/openldap/ldap.conf') + options=('!libtool') + + cd "${srcdir}"/${pkgbase}-${pkgver} + for dir in include libraries doc/man/man3 ; do + pushd ${dir} + make DESTDIR="${pkgdir}" install + popd + done + install -Dm644 doc/man/man5/ldap.conf.5.tmp "${pkgdir}"/usr/share/man/man5/ldap.conf.5 + +# get rid of duplicate default conf files + rm "${pkgdir}"/etc/openldap/*.default + + ln -sf liblber.so "${pkgdir}"/usr/lib/liblber.so.2 + ln -sf libldap.so "${pkgdir}"/usr/lib/libldap.so.2 + + install -Dm644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE +} + +package_openldap() { + pkgdesc="Lightweight Directory Access Protocol (LDAP) client and server" + depends=("libldap>=${pkgver}" 'libltdl' 'util-linux') + backup=('etc/openldap/slapd.conf' 'etc/conf.d/slapd') + options=('!libtool' 'emptydirs') + install=openldap.install + + cd "${srcdir}"/${pkgbase}-${pkgver} + for dir in clients servers doc/man/man{1,5,8} ; do + pushd ${dir} + make DESTDIR="${pkgdir}" install + popd + done + rm "${pkgdir}"/usr/share/man/man5/ldap.conf.5 + rm -r "${pkgdir}"/run + +# get rid of duplicate default conf files + rm "${pkgdir}"/etc/openldap/*.default + + ln -s ../lib/slapd "${pkgdir}"/usr/sbin/slapd + + chown root:439 "${pkgdir}"/etc/openldap/{slapd.conf,DB_CONFIG.example} + chmod 640 "${pkgdir}"/etc/openldap/{slapd.conf,DB_CONFIG.example} + + install -dm700 -o 439 -g 439 "${pkgdir}"/var/lib/openldap + install -dm700 -o 439 -g 439 "${pkgdir}"/etc/openldap/slapd.d + install -Dm755 "${srcdir}"/slapd "${pkgdir}"/etc/rc.d/slapd + install -Dm644 "${srcdir}"/slapd.default "${pkgdir}"/etc/conf.d/slapd + install -Dm644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE +} diff --git a/testing/openldap/mutex-end-of-struct-sigsegv.patch b/testing/openldap/mutex-end-of-struct-sigsegv.patch new file mode 100644 index 000000000..e8996386a --- /dev/null +++ b/testing/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 { diff --git a/testing/openldap/ntlm.patch b/testing/openldap/ntlm.patch new file mode 100644 index 000000000..6804b610d --- /dev/null +++ b/testing/openldap/ntlm.patch @@ -0,0 +1,230 @@ +Patch from evolution-exchange (2.10.3). The ldap_ntlm_bind function is +actually called by evolution-data-server, checked at version 1.12.2. +Without this patch, the Exchange addressbook integration uses simple binds +with cleartext passwords. + +Russ checked with openldap-software for upstream's opinion on this patch +on 2007-12-21. Upstream had never received it as a patch submission and +given that it's apparently only for older Exchange servers that can't do +SASL and DIGEST-MD5, it's not very appealing. + +Bug#457374 filed against evolution-data-server asking if this support is +still required on 2007-12-21. + +Index: trunk/include/ldap.h +=================================================================== +--- trunk.orig/include/ldap.h ++++ trunk/include/ldap.h +@@ -2461,5 +2461,25 @@ + LDAPControl **ctrls, + LDAPDerefRes **drp )); + ++/* ++ * hacks for NTLM ++ */ ++#define LDAP_AUTH_NTLM_REQUEST ((ber_tag_t) 0x8aU) ++#define LDAP_AUTH_NTLM_RESPONSE ((ber_tag_t) 0x8bU) ++LDAP_F( int ) ++ldap_ntlm_bind LDAP_P(( ++ LDAP *ld, ++ LDAP_CONST char *dn, ++ ber_tag_t tag, ++ struct berval *cred, ++ LDAPControl **sctrls, ++ LDAPControl **cctrls, ++ int *msgidp )); ++LDAP_F( int ) ++ldap_parse_ntlm_bind_result LDAP_P(( ++ LDAP *ld, ++ LDAPMessage *res, ++ struct berval *challenge)); ++ + LDAP_END_DECL + #endif /* _LDAP_H */ +Index: trunk/libraries/libldap/ntlm.c +=================================================================== +--- /dev/null ++++ trunk/libraries/libldap/ntlm.c +@@ -0,0 +1,138 @@ ++/* $OpenLDAP: pkg/ldap/libraries/libldap/ntlm.c,v 1.1.4.10 2002/01/04 20:38:21 kurt Exp $ */ ++/* ++ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. ++ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file ++ */ ++ ++/* Mostly copied from sasl.c */ ++ ++#include "portable.h" ++ ++#include <stdlib.h> ++#include <stdio.h> ++ ++#include <ac/socket.h> ++#include <ac/string.h> ++#include <ac/time.h> ++#include <ac/errno.h> ++ ++#include "ldap-int.h" ++ ++int ++ldap_ntlm_bind( ++ LDAP *ld, ++ LDAP_CONST char *dn, ++ ber_tag_t tag, ++ struct berval *cred, ++ LDAPControl **sctrls, ++ LDAPControl **cctrls, ++ int *msgidp ) ++{ ++ BerElement *ber; ++ int rc; ++ ber_int_t id; ++ ++ Debug( LDAP_DEBUG_TRACE, "ldap_ntlm_bind\n", 0, 0, 0 ); ++ ++ assert( ld != NULL ); ++ assert( LDAP_VALID( ld ) ); ++ assert( msgidp != NULL ); ++ ++ if( msgidp == NULL ) { ++ ld->ld_errno = LDAP_PARAM_ERROR; ++ return ld->ld_errno; ++ } ++ ++ /* create a message to send */ ++ if ( (ber = ldap_alloc_ber_with_options( ld )) == NULL ) { ++ ld->ld_errno = LDAP_NO_MEMORY; ++ return ld->ld_errno; ++ } ++ ++ assert( LBER_VALID( ber ) ); ++ ++ LDAP_NEXT_MSGID( ld, id ); ++ rc = ber_printf( ber, "{it{istON}" /*}*/, ++ id, LDAP_REQ_BIND, ++ ld->ld_version, dn, tag, ++ cred ); ++ ++ /* Put Server Controls */ ++ if( ldap_int_put_controls( ld, sctrls, ber ) != LDAP_SUCCESS ) { ++ ber_free( ber, 1 ); ++ return ld->ld_errno; ++ } ++ ++ if ( ber_printf( ber, /*{*/ "N}" ) == -1 ) { ++ ld->ld_errno = LDAP_ENCODING_ERROR; ++ ber_free( ber, 1 ); ++ return ld->ld_errno; ++ } ++ ++ /* send the message */ ++ *msgidp = ldap_send_initial_request( ld, LDAP_REQ_BIND, dn, ber, id ); ++ ++ if(*msgidp < 0) ++ return ld->ld_errno; ++ ++ return LDAP_SUCCESS; ++} ++ ++int ++ldap_parse_ntlm_bind_result( ++ LDAP *ld, ++ LDAPMessage *res, ++ struct berval *challenge) ++{ ++ ber_int_t errcode; ++ ber_tag_t tag; ++ BerElement *ber; ++ ber_len_t len; ++ ++ Debug( LDAP_DEBUG_TRACE, "ldap_parse_ntlm_bind_result\n", 0, 0, 0 ); ++ ++ assert( ld != NULL ); ++ assert( LDAP_VALID( ld ) ); ++ assert( res != NULL ); ++ ++ if ( ld == NULL || res == NULL ) { ++ return LDAP_PARAM_ERROR; ++ } ++ ++ if( res->lm_msgtype != LDAP_RES_BIND ) { ++ ld->ld_errno = LDAP_PARAM_ERROR; ++ return ld->ld_errno; ++ } ++ ++ if ( ld->ld_error ) { ++ LDAP_FREE( ld->ld_error ); ++ ld->ld_error = NULL; ++ } ++ if ( ld->ld_matched ) { ++ LDAP_FREE( ld->ld_matched ); ++ ld->ld_matched = NULL; ++ } ++ ++ /* parse results */ ++ ++ ber = ber_dup( res->lm_ber ); ++ ++ if( ber == NULL ) { ++ ld->ld_errno = LDAP_NO_MEMORY; ++ return ld->ld_errno; ++ } ++ ++ tag = ber_scanf( ber, "{ioa" /*}*/, ++ &errcode, challenge, &ld->ld_error ); ++ ber_free( ber, 0 ); ++ ++ if( tag == LBER_ERROR ) { ++ ld->ld_errno = LDAP_DECODING_ERROR; ++ return ld->ld_errno; ++ } ++ ++ ld->ld_errno = errcode; ++ ++ return( ld->ld_errno ); ++} ++ +Index: trunk/libraries/libldap/Makefile.in +=================================================================== +--- trunk.orig/libraries/libldap/Makefile.in ++++ trunk/libraries/libldap/Makefile.in +@@ -27,7 +27,7 @@ + init.c options.c print.c string.c util-int.c schema.c \ + charray.c os-local.c dnssrv.c utf-8.c utf-8-conv.c \ + tls2.c tls_o.c tls_g.c tls_m.c \ +- turn.c ppolicy.c dds.c txn.c ldap_sync.c stctrl.c \ ++ turn.c ppolicy.c dds.c txn.c ldap_sync.c stctrl.c ntlm.c \ + assertion.c deref.c ldif.c fetch.c + + OBJS = bind.lo open.lo result.lo error.lo compare.lo search.lo \ +@@ -40,7 +40,7 @@ + init.lo options.lo print.lo string.lo util-int.lo schema.lo \ + charray.lo os-local.lo dnssrv.lo utf-8.lo utf-8-conv.lo \ + tls2.lo tls_o.lo tls_g.lo tls_m.lo \ +- turn.lo ppolicy.lo dds.lo txn.lo ldap_sync.lo stctrl.lo \ ++ turn.lo ppolicy.lo dds.lo txn.lo ldap_sync.lo stctrl.lo ntlm.lo \ + assertion.lo deref.lo ldif.lo fetch.lo + + LDAP_INCDIR= ../../include +Index: trunk/libraries/libldap_r/Makefile.in +=================================================================== +--- trunk.orig/libraries/libldap_r/Makefile.in ++++ trunk/libraries/libldap_r/Makefile.in +@@ -29,7 +29,7 @@ + init.c options.c print.c string.c util-int.c schema.c \ + charray.c os-local.c dnssrv.c utf-8.c utf-8-conv.c \ + tls2.c tls_o.c tls_g.c tls_m.c \ +- turn.c ppolicy.c dds.c txn.c ldap_sync.c stctrl.c \ ++ turn.c ppolicy.c dds.c txn.c ldap_sync.c stctrl.c ntlm.c \ + assertion.c deref.c ldif.c fetch.c + SRCS = threads.c rdwr.c rmutex.c tpool.c rq.c \ + thr_posix.c thr_cthreads.c thr_thr.c thr_lwp.c thr_nt.c \ +@@ -47,7 +47,7 @@ + init.lo options.lo print.lo string.lo util-int.lo schema.lo \ + charray.lo os-local.lo dnssrv.lo utf-8.lo utf-8-conv.lo \ + tls2.lo tls_o.lo tls_g.lo tls_m.lo \ +- turn.lo ppolicy.lo dds.lo txn.lo ldap_sync.lo stctrl.lo \ ++ turn.lo ppolicy.lo dds.lo txn.lo ldap_sync.lo stctrl.lo ntlm.lo \ + assertion.lo deref.lo ldif.lo fetch.lo + + LDAP_INCDIR= ../../include diff --git a/testing/openldap/openldap.install b/testing/openldap/openldap.install new file mode 100644 index 000000000..cf3cb9f25 --- /dev/null +++ b/testing/openldap/openldap.install @@ -0,0 +1,20 @@ +post_install(){ + groupadd -g 439 ldap &>/dev/null + useradd -u 439 -g ldap -d /var/lib/openldap -s /bin/false ldap &>/dev/null + chown -R ldap:ldap var/lib/openldap &>/dev/null +} + +post_upgrade(){ + getent group ldap >/dev/null 2>&1 || groupadd -g 439 ldap &>/dev/null + getent passwd ldap >/dev/null 2>&1 || useradd -u 439 -g ldap -d /var/lib/openldap -s /bin/false ldap &>/dev/null + chown -R ldap:ldap var/lib/openldap &>/dev/null +} + +post_remove(){ + if getent passwd ldap >/dev/null 2>&1; then + userdel ldap + fi + if getent group ldap >/dev/null 2>&1; then + groupdel ldap + fi +} diff --git a/testing/openldap/slapd b/testing/openldap/slapd new file mode 100755 index 000000000..4f212da66 --- /dev/null +++ b/testing/openldap/slapd @@ -0,0 +1,49 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +[ -f "/etc/conf.d/slapd" ] && . /etc/conf.d/slapd + +PID=`pidof -o %PPID /usr/sbin/slapd` +case "$1" in + start) + stat_busy "Starting OpenLDAP" + [ ! -d /run/openldap ] && install -d -m755 -o ldap -g ldap /run/openldap + if [ -z "$PID" ]; then + if [ -z "$SLAPD_SERVICES" ]; then + /usr/sbin/slapd -u ldap -g ldap $SLAPD_OPTIONS + else + /usr/sbin/slapd -u ldap -g ldap -h "$SLAPD_SERVICES" $SLAPD_OPTIONS + fi + if [ $? -gt 0 ]; then + stat_fail + else + stat_done + fi + add_daemon slapd + else + stat_fail + fi + ;; + stop) + stat_busy "Stopping OpenLDAP" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm -f /run/openldap/slapd.pid + rm -f /run/openldap/slapd.args + rm_daemon slapd + stat_done + fi + ;; + restart) + $0 stop + sleep 3 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/testing/openldap/slapd.default b/testing/openldap/slapd.default new file mode 100644 index 000000000..72ae2a6a7 --- /dev/null +++ b/testing/openldap/slapd.default @@ -0,0 +1,6 @@ +# slapd normally serves ldap only on all TCP-ports 389. slapd can also +# service requests on TCP-port 636 (ldaps) and requests via unix +# sockets. +# Example usage: +#SLAPD_SERVICES="ldap://127.0.0.1:389/ ldaps:/// ldapi:///" +SLAPD_OPTIONS="" |