[arch-commits] Commit in openldap/trunk (PKGBUILD mutex-end-of-struct-sigsegv.patch)
Dan McGee
dan at archlinux.org
Wed Jan 25 00:02:30 UTC 2012
Date: Tuesday, January 24, 2012 @ 19:02:29
Author: dan
Revision: 147238
Revised fix for upstream SIGSEGV issues
Modified:
openldap/trunk/PKGBUILD
openldap/trunk/mutex-end-of-struct-sigsegv.patch
-----------------------------------+
PKGBUILD | 2
mutex-end-of-struct-sigsegv.patch | 312 ++++++++++++++++++++++++++++++------
2 files changed, 261 insertions(+), 53 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2012-01-24 23:42:32 UTC (rev 147237)
+++ PKGBUILD 2012-01-25 00:02:29 UTC (rev 147238)
@@ -17,7 +17,7 @@
'bd1ea19256d3d467f1f803e0f4046ef50f17628f'
'd89b8a533045123f1ab46c9c430cf132d58a20a4'
'e4afd9f1c810ef4c4cd8fe1101dfe5887f2b7eef'
- '7ca90dbe53c4207a2dee976359b8c6663e582d00')
+ '694269dad78c7a806649c2d7f57bb7e503df3af1')
build() {
cd "${srcdir}"/${pkgbase}-${pkgver}
Modified: mutex-end-of-struct-sigsegv.patch
===================================================================
--- mutex-end-of-struct-sigsegv.patch 2012-01-24 23:42:32 UTC (rev 147237)
+++ mutex-end-of-struct-sigsegv.patch 2012-01-25 00:02:29 UTC (rev 147238)
@@ -1,18 +1,31 @@
-From 270ef33acf18dc13bfd07f8a8e66b446f80e7d27 Mon Sep 17 00:00:00 2001
-From: Howard Chu <hyc at openldap.org>
-Date: Tue, 24 Jan 2012 13:32:52 -0800
-Subject: [PATCH 1/1] ITS#7118, #7133 tentative fix
+ libraries/libldap/init.c | 8 ++-
+ libraries/libldap/ldap-int.h | 198 ++++++++++++++++++++++--------------------
+ 2 files changed, 110 insertions(+), 96 deletions(-)
-Move mutexes to end of structs, so libldap can ignore them
----
- libraries/libldap/ldap-int.h | 40 ++++++++++++++++++++--------------------
- 1 files changed, 20 insertions(+), 20 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..6b33bcd 100644
+index f8e6126..ac6c9e5 100644
--- a/libraries/libldap/ldap-int.h
+++ b/libraries/libldap/ldap-int.h
-@@ -185,13 +185,6 @@ struct ldapoptions {
+@@ -185,29 +185,59 @@ struct ldapoptions {
#define LDAP_TRASHED_SESSION 0xFF
int ldo_debug;
@@ -22,15 +35,136 @@
-#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* */
-@@ -281,6 +274,13 @@ struct ldapoptions {
- ldaplist *ldo_conn_cbs;
+ char* ldo_cldapdn;
+ int ldo_is_udp;
++#define LDAP_LDO_CONNECTIONLESS_NULLARG ,0,0,0
++#else
++#define LDAP_LDO_CONNECTIONLESS_NULLARG
+ #endif
- LDAP_BOOLEANS ldo_booleans; /* boolean options */
-+
+- /* 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
@@ -40,46 +174,120 @@
};
-@@ -422,19 +422,6 @@ struct ldap_common {
- #define ld_requests ldc->ldc_requests
- #define ld_responses ldc->ldc_responses
+@@ -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
-- 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_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
+-#define ld_ldopts_mutex ld_options.ldo_mutex
-#endif
-
- /* protected by abandon_mutex */
- ber_len_t ldc_nabandoned;
- ber_int_t *ldc_abandoned; /* array of abandoned requests */
-@@ -463,6 +450,19 @@ struct ldap_common {
- /* protected by ldc_mutex */
- unsigned int ldc_refcnt;
- #define ld_ldcrefcnt ldc->ldc_refcnt
-+
-+#ifdef LDAP_R_COMPILE
-+ 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_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
+- 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 {
---
-1.7.4.2
-
More information about the arch-commits
mailing list