|
|
a2a7378 |
From 52ead0d37dcbce59338dcb765527712c9ee656e1 Mon Sep 17 00:00:00 2001
|
|
|
a2a7378 |
From: Jan Kara <jack@suse.cz>
|
|
|
a2a7378 |
Date: Thu, 12 Sep 2019 10:06:38 +0200
|
|
|
a2a7378 |
Subject: [PATCH] warnquota: Print also additional error info for LDAP errors
|
|
|
a2a7378 |
MIME-Version: 1.0
|
|
|
a2a7378 |
Content-Type: text/plain; charset=UTF-8
|
|
|
a2a7378 |
Content-Transfer-Encoding: 8bit
|
|
|
a2a7378 |
|
|
|
a2a7378 |
LDAP library provides additional error information in some cases. Print
|
|
|
a2a7378 |
it make debugging LDAP setup easier.
|
|
|
a2a7378 |
|
|
|
a2a7378 |
Signed-off-by: Jan Kara <jack@suse.cz>
|
|
|
a2a7378 |
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
|
|
a2a7378 |
---
|
|
|
a2a7378 |
warnquota.c | 26 +++++++++++++++++++++-----
|
|
|
a2a7378 |
1 file changed, 21 insertions(+), 5 deletions(-)
|
|
|
a2a7378 |
|
|
|
a2a7378 |
diff --git a/warnquota.c b/warnquota.c
|
|
|
a2a7378 |
index 24d7410..d54b4c1 100644
|
|
|
a2a7378 |
--- a/warnquota.c
|
|
|
a2a7378 |
+++ b/warnquota.c
|
|
|
a2a7378 |
@@ -178,6 +178,22 @@ static void wc_exit(int ex_stat)
|
|
|
a2a7378 |
}
|
|
|
a2a7378 |
|
|
|
a2a7378 |
#ifdef USE_LDAP_MAIL_LOOKUP
|
|
|
a2a7378 |
+
|
|
|
a2a7378 |
+#define LDAP_ERR_BUF_SIZE 1024
|
|
|
a2a7378 |
+
|
|
|
a2a7378 |
+static void print_ldap_error(int err, char *prefix)
|
|
|
a2a7378 |
+{
|
|
|
a2a7378 |
+ char *msg = NULL;
|
|
|
a2a7378 |
+ char outbuf[LDAP_ERR_BUF_SIZE];
|
|
|
a2a7378 |
+
|
|
|
a2a7378 |
+ sstrncpy(outbuf, prefix, LDAP_ERR_BUF_SIZE);
|
|
|
a2a7378 |
+ sstrncat(outbuf, ": %s\n", LDAP_ERR_BUF_SIZE);
|
|
|
a2a7378 |
+ errstr(outbuf, ldap_err2string(err));
|
|
|
a2a7378 |
+ ldap_get_option(ldapconn, LDAP_OPT_DIAGNOSTIC_MESSAGE, (void *)&msg;;
|
|
|
a2a7378 |
+ if (msg && strcmp(msg, ""))
|
|
|
a2a7378 |
+ errstr(_("Additional error info: %s\n"), msg);
|
|
|
a2a7378 |
+}
|
|
|
a2a7378 |
+
|
|
|
a2a7378 |
static int setup_ldap(struct configparams *config)
|
|
|
a2a7378 |
{
|
|
|
a2a7378 |
int ret;
|
|
|
a2a7378 |
@@ -187,7 +203,7 @@ static int setup_ldap(struct configparams *config)
|
|
|
a2a7378 |
ret = ldap_initialize(&ldapconn, config->ldap_uri);
|
|
|
a2a7378 |
|
|
|
a2a7378 |
if (ret != LDAP_SUCCESS) {
|
|
|
a2a7378 |
- errstr(_("ldap_initialize() failed: %s\n"), ldap_err2string(ret));
|
|
|
a2a7378 |
+ print_ldap_error(ret, _("ldap_initialize() failed"));
|
|
|
a2a7378 |
return -1;
|
|
|
a2a7378 |
}
|
|
|
a2a7378 |
|
|
|
a2a7378 |
@@ -196,13 +212,13 @@ static int setup_ldap(struct configparams *config)
|
|
|
a2a7378 |
ldap_set_option(ldapconn, LDAP_OPT_X_TLS_REQUIRE_CERT, &(config->ldap_tls));
|
|
|
a2a7378 |
ret = ldap_start_tls_s(ldapconn, NULL, NULL);
|
|
|
a2a7378 |
if (ret != LDAP_SUCCESS) {
|
|
|
a2a7378 |
- errstr(_("ldap_start_tls_s() failed: %s\n"), ldap_err2string(ret));
|
|
|
a2a7378 |
- return -1;
|
|
|
a2a7378 |
+ print_ldap_error(ret, _("ldap_start_tls_s() failed"));
|
|
|
a2a7378 |
+ return -1;
|
|
|
a2a7378 |
}
|
|
|
a2a7378 |
}
|
|
|
a2a7378 |
ret = ldap_sasl_bind_s(ldapconn, config->ldap_binddn, LDAP_SASL_SIMPLE, &cred, NULL, NULL, NULL);
|
|
|
a2a7378 |
if (ret != LDAP_SUCCESS) {
|
|
|
a2a7378 |
- errstr(_("ldap_sasl_bind_s() failed: %s\n"), ldap_err2string(ret));
|
|
|
a2a7378 |
+ print_ldap_error(ret, _("ldap_sasl_bind_s() failed"));
|
|
|
a2a7378 |
return -1;
|
|
|
a2a7378 |
}
|
|
|
a2a7378 |
return 0;
|
|
|
a2a7378 |
@@ -428,7 +444,7 @@ static char *lookup_user(struct configparams *config, char *user)
|
|
|
a2a7378 |
|
|
|
a2a7378 |
if (ret != LDAP_SUCCESS) {
|
|
|
a2a7378 |
errstr(_("Error with %s.\n"), user);
|
|
|
a2a7378 |
- errstr(_("ldap_search_ext_s() failed: %s\n"), ldap_err2string(ret));
|
|
|
a2a7378 |
+ print_ldap_error(ret, _("ldap_search_ext_s() failed"));
|
|
|
a2a7378 |
return NULL;
|
|
|
a2a7378 |
}
|
|
|
a2a7378 |
|
|
|
a2a7378 |
--
|
|
|
a2a7378 |
2.21.0
|
|
|
a2a7378 |
|