diff options
author | Arthur de Jong <arthur@arthurdejong.org> | 2012-03-05 21:53:54 +0000 |
---|---|---|
committer | Arthur de Jong <arthur@arthurdejong.org> | 2012-03-05 21:53:54 +0000 |
commit | 9f4b84b5a3504bab40d192f97be5915fdcdaeefb (patch) | |
tree | 1426493b3b05e4d481ff62b719667c6e877ab319 | |
parent | b38f1d04a4543a6c2a85583d70e6e443db1d9917 (diff) |
provide more detailed logging information for ldap_start_tls_s() failures (based on a patch by Mel Flynn)
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-pam-ldapd@1626 ef36b2f9-881f-0410-afb5-c4e39611909c
-rw-r--r-- | compat/ldap_compat.h | 8 | ||||
-rw-r--r-- | nslcd/myldap.c | 14 |
2 files changed, 19 insertions, 3 deletions
diff --git a/compat/ldap_compat.h b/compat/ldap_compat.h index 322e232..039932c 100644 --- a/compat/ldap_compat.h +++ b/compat/ldap_compat.h @@ -62,4 +62,12 @@ int ldap_passwd_s(LDAP *ld,struct berval *user,struct berval *oldpw, #define LDAP_SASL_QUIET 2U #endif /* not LDAP_SASL_QUIET */ +/* on some systems LDAP_OPT_DIAGNOSTIC_MESSAGE isn't there but + LDAP_OPT_ERROR_STRING is */ +#ifndef LDAP_OPT_DIAGNOSTIC_MESSAGE +#ifdef LDAP_OPT_ERROR_STRING +#define LDAP_OPT_DIAGNOSTIC_MESSAGE LDAP_OPT_ERROR_STRING +#endif /* LDAP_OPT_ERROR_STRING */ +#endif /* not LDAP_OPT_DIAGNOSTIC_MESSAGE */ + #endif /* COMPAT__LDAP_COMPAT_H */ diff --git a/nslcd/myldap.c b/nslcd/myldap.c index 70d5c0b..6232c03 100644 --- a/nslcd/myldap.c +++ b/nslcd/myldap.c @@ -378,6 +378,7 @@ static int do_sasl_interact(LDAP UNUSED(*ld),unsigned UNUSED(flags),void *defaul static int do_bind(LDAP *ld,const char *binddn,const char *bindpw,const char *uri) { int rc; + char *msg=NULL; #ifdef HAVE_LDAP_SASL_INTERACTIVE_BIND_S #ifndef HAVE_SASL_INTERACT_T struct berval cred; @@ -392,9 +393,16 @@ static int do_bind(LDAP *ld,const char *binddn,const char *bindpw,const char *ur rc=ldap_start_tls_s(ld,NULL,NULL); if (rc!=LDAP_SUCCESS) { - log_log(LOG_WARNING,"ldap_start_tls_s() failed: %s%s%s (uri=\"%s\")", - ldap_err2string(rc),(errno==0)?"":": ", - (errno==0)?"":strerror(errno),uri); +#ifdef LDAP_OPT_DIAGNOSTIC_MESSAGE + ldap_get_option(ld,LDAP_OPT_DIAGNOSTIC_MESSAGE,&msg); +#endif /* LDAP_OPT_DIAGNOSTIC_MESSAGE */ + log_log(LOG_WARNING,"ldap_start_tls_s() failed: %s%s%s%s%s (uri=\"%s\")", + ldap_err2string(rc), + (msg==NULL)?"":": ",(msg==NULL)?"":msg, + (errno==0)?"":": ",(errno==0)?"":strerror(errno), + uri); + if (msg) + ldap_memfree(msg); return rc; } } |