freebsd-ports/security/cyrus-sasl/files/patch-lib::checkpw.c
David W. Chapman Jr. cfa957e244 Fix OpenLDAP v1 errors
Allow PAM aware pwcheck daemon
Add JavaSASL

PR:		34068
Submitted by:	maintainer
2002-01-20 19:23:25 +00:00

102 lines
2.9 KiB
C

--- lib/checkpw.c.orig Fri Jan 18 21:56:29 2002
+++ lib/checkpw.c Fri Jan 18 22:14:58 2002
@@ -1491,6 +1491,9 @@
# define FALSE 0
#endif
+#ifndef LDAP_NO_ATTRS
+#define LDAP_NO_ATTRS "1.1"
+#endif
static int ldap_isdigits(char *value)
{
char *ptr;
@@ -1504,6 +1507,16 @@
return num;
}
+#ifdef LDAP_VENDOR_VERSION
+#define SASL_ldap_search_ext_s(ld, base, scope, filter, attrs, attrsonly, serverctrls, clientctrls, timeout, sizelimit, res) \
+ ldap_search_ext_s(ld, base, scope, filter, attrs, attrsonly, serverctrls, clientctrls, timeout, sizelimit, res)
+#define SASL_ldap_memfree(dn) ldap_memfree(dn)
+#else
+#define SASL_ldap_search_ext_s(ld, base, scope, filter, attrs, attrsonly, serverctrls, clientctrls, timeout, sizelimit, res) \
+ ldap_search_st(ld, base, scope, filter, attrs, attrsonly, timeout, res)
+#define SASL_ldap_memfree(dn) free(dn)
+#endif
+
static int ldap_verify_password(sasl_conn_t *conn,
const char *userid,
const char *password,
@@ -1522,18 +1535,18 @@
*ldap_filter="",
*ldap_bind_dn="",
*ldap_bind_pw="",
- *ldap_ssl="",
*ldap_filter_mode="",
*port_num="";
int malloc_size; /* safety net */
int ldap_filter_flag = 0;
- int ldap_ssl_flag = 0;
int ldap_port = LDAP_PORT;
sasl_getopt_t *getopt;
void *context;
LDAPMessage *result, *e;
char *attrs[]={LDAP_NO_ATTRS, NULL};
#ifdef LDAP_OPT_X_TLS
+ char *ldap_ssl="";
+ int ldap_ssl_flag = 0;
int tls_option;
#endif
@@ -1625,9 +1638,11 @@
return SASL_FAIL;
}
/* set ssl mode if needed */
+#ifdef LDAP_OPT_X_TLS
if ( ldap_ssl_flag ) {
ldap_set_option(ld, LDAP_OPT_X_TLS, (void *)&tls_option);
}
+#endif
/* either run the filter or just bind as them ? */
@@ -1657,7 +1672,7 @@
snprintf(filter,malloc_size-1,"(&(%s=%s)%s)", ldap_uidattr, userid, ldap_filter);
/* Now do the search */
- if (ldap_search_ext_s(ld, ldap_basedn, LDAP_SCOPE_SUBTREE, filter,
+ if (SASL_ldap_search_ext_s(ld, ldap_basedn, LDAP_SCOPE_SUBTREE, filter,
attrs, 0, NULL, NULL, LDAP_NO_LIMIT, 1, &result) !=
LDAP_SUCCESS) {
free(filter);
@@ -1680,17 +1695,17 @@
ldap_unbind(ld);
return SASL_BADAUTH;
}
- if (ldap_simple_bind_s(ld,dn,password) != LDAP_SUCCESS) {
+ if (ldap_simple_bind_s(ld,dn,(char *)password) != LDAP_SUCCESS) {
e = NULL;
free(filter);
- ldap_memfree(dn);
+ SASL_ldap_memfree(dn);
ldap_msgfree(result);
ldap_unbind(ld);
return SASL_BADAUTH;
}
e = NULL;
free(filter);
- ldap_memfree(dn);
+ SASL_ldap_memfree(dn);
ldap_msgfree(result);
} else {
@@ -1710,7 +1725,7 @@
* If this is not so I have a version or that too
* Simon@surf.org.uk
*/
- if (ldap_simple_bind_s(ld,dn,password) != LDAP_SUCCESS) {
+ if (ldap_simple_bind_s(ld,dn,(char *)password) != LDAP_SUCCESS) {
free(dn);
ldap_unbind(ld);
return SASL_BADAUTH;