summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Gallagher <sgallagh@redhat.com>2010-11-19 14:16:10 -0500
committerStephen Gallagher <sgallagh@redhat.com>2010-11-24 10:09:16 -0500
commit4b0309363dbfb9a1409e082b3a84f17b53a751c1 (patch)
tree5eaa9c86090f9edcece17c836d65789baef0cb91
parentfa6c70fabb8dc2fab580a014cdcf1b0dd3e99554 (diff)
downloadsssd-4b0309363dbfb9a1409e082b3a84f17b53a751c1.tar.gz
sssd-4b0309363dbfb9a1409e082b3a84f17b53a751c1.tar.xz
sssd-4b0309363dbfb9a1409e082b3a84f17b53a751c1.zip
Print correct error messages for dp_err_to_string()
All errnum values passed into this function throughout the code are PAM error codes, but we were passing them through strerror() to print them, which is only meaningful for ERRNO error codes. This patch changes dp_err_to_string() to use pam_strerror() and renames it to dp_pam_err_to_string() for clarity. https://fedorahosted.org/sssd/ticket/636
-rw-r--r--Makefile.am3
-rw-r--r--src/providers/data_provider_be.c12
2 files changed, 8 insertions, 7 deletions
diff --git a/Makefile.am b/Makefile.am
index 102149a8c..6d91cf695 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -403,7 +403,8 @@ sssd_be_SOURCES = \
sssd_be_LDADD = $(SSSD_LIBS) $(CARES_LIBS)
sssd_be_LDFLAGS = \
-Wl,--version-script,$(srcdir)/src/providers/sssd_be.exports \
- -export-dynamic
+ -export-dynamic \
+ $(PAM_LIBS)
if BUILD_PYTHON_BINDINGS
sss_obfuscate_pythondir = $(sbindir)
diff --git a/src/providers/data_provider_be.c b/src/providers/data_provider_be.c
index 764635a73..e094c65b0 100644
--- a/src/providers/data_provider_be.c
+++ b/src/providers/data_provider_be.c
@@ -228,7 +228,7 @@ static int be_check_online(DBusMessage *message, struct sbus_connection *conn)
return EOK;
}
-static char *dp_err_to_string(TALLOC_CTX *memctx, int dp_err_type, int errnum)
+static char *dp_pam_err_to_string(TALLOC_CTX *memctx, int dp_err_type, int errnum)
{
switch (dp_err_type) {
case DP_ERR_OK:
@@ -238,20 +238,20 @@ static char *dp_err_to_string(TALLOC_CTX *memctx, int dp_err_type, int errnum)
case DP_ERR_OFFLINE:
return talloc_asprintf(memctx,
"Provider is Offline (%s)",
- strerror(errnum));
+ pam_strerror(NULL, errnum));
break;
case DP_ERR_TIMEOUT:
return talloc_asprintf(memctx,
"Request timed out (%s)",
- strerror(errnum));
+ pam_strerror(NULL, errnum));
break;
case DP_ERR_FATAL:
default:
return talloc_asprintf(memctx,
"Internal Error (%s)",
- strerror(errnum));
+ pam_strerror(NULL, errnum));
break;
}
@@ -284,7 +284,7 @@ static void acctinfo_callback(struct be_req *req,
if (errstr) {
err_msg = errstr;
} else {
- err_msg = dp_err_to_string(req, dp_err_type, errnum);
+ err_msg = dp_pam_err_to_string(req, dp_err_type, errnum);
}
if (!err_msg) {
DEBUG(1, ("Failed to set err_msg, Out of memory?\n"));
@@ -492,7 +492,7 @@ static void be_pam_handler_callback(struct be_req *req,
DEBUG(4, ("Backend returned: (%d, %d, %s) [%s]\n",
dp_err_type, errnum, errstr?errstr:"<NULL>",
- dp_err_to_string(req, dp_err_type, errnum)));
+ dp_pam_err_to_string(req, dp_err_type, errnum)));
pd = talloc_get_type(req->req_data, struct pam_data);