From 208bf72198fb3580bc67993b6de373bea0f06836 Mon Sep 17 00:00:00 2001 From: Pavel Březina Date: Oct 24 2012 15:28:26 +0000 Subject: sudo refresh: handle errors properly We should test both ret and (dp_error, errno) pair. --- diff --git a/src/providers/ldap/sdap_sudo.c b/src/providers/ldap/sdap_sudo.c index f81fa67..ebbc95d 100644 --- a/src/providers/ldap/sdap_sudo.c +++ b/src/providers/ldap/sdap_sudo.c @@ -949,10 +949,16 @@ static void sdap_sudo_periodical_first_refresh_done(struct tevent_req *req) } ret = sdap_sudo_full_refresh_recv(subreq, &dp_error, &error); + if (ret != EOK) { + DEBUG(SSSDBG_OP_FAILURE, ("Periodical full refresh of sudo rules " + "failed [%d]: %s)\n", ret, strerror(ret))); + goto schedule; + } + if (dp_error != DP_ERR_OK || error != EOK) { DEBUG(SSSDBG_OP_FAILURE, ("Periodical full refresh of sudo rules " - "failed [dp_error: %d] ([%d]: %s)\n", - dp_error, error, strerror(error))); + "failed [dp_error: %d] ([%d]: %s)\n", + dp_error, error, strerror(error))); goto schedule; } @@ -996,8 +1002,8 @@ static void sdap_sudo_periodical_full_refresh_done(struct tevent_req *req) struct tevent_req *subreq = NULL; /* req from sdap_sudo_full_refresh_send() */ struct sdap_sudo_ctx *sudo_ctx = NULL; time_t delay; - int dp_error = DP_ERR_OK; - int error = EOK; + int dp_error; + int error; int ret; ret = sdap_sudo_timer_recv(req, req, &subreq); @@ -1008,10 +1014,16 @@ static void sdap_sudo_periodical_full_refresh_done(struct tevent_req *req) } ret = sdap_sudo_full_refresh_recv(subreq, &dp_error, &error); + if (ret != EOK) { + DEBUG(SSSDBG_OP_FAILURE, ("Periodical full refresh of sudo rules " + "failed [%d]: %s)\n", ret, strerror(ret))); + goto schedule; + } + if (dp_error != DP_ERR_OK || error != EOK) { DEBUG(SSSDBG_OP_FAILURE, ("Periodical full refresh of sudo rules " - "failed [dp_error: %d] ([%d]: %s)\n", - dp_error, error, strerror(error))); + "failed [dp_error: %d] ([%d]: %s)\n", + dp_error, error, strerror(error))); goto schedule; } @@ -1051,10 +1063,15 @@ static void sdap_sudo_periodical_smart_refresh_done(struct tevent_req *req) } ret = sdap_sudo_smart_refresh_recv(subreq, &dp_error, &error); + if (ret != EOK) { + DEBUG(SSSDBG_OP_FAILURE, ("Periodical smart refresh of sudo rules " + "failed [%d]: %s\n", ret, strerror(ret))); + } + if (dp_error != DP_ERR_OK || error != EOK) { DEBUG(SSSDBG_OP_FAILURE, ("Periodical smart refresh of sudo rules " - "failed [dp_error: %d] ([%d]: %s)\n", - dp_error, error, strerror(error))); + "failed [dp_error: %d] ([%d]: %s)\n", + dp_error, error, strerror(error))); goto schedule; }