From 36a59724c003c18ebd710c249b9f88ee3aec4c59 Mon Sep 17 00:00:00 2001 From: Sumit Bose Date: Fri, 8 Jan 2016 16:10:33 +0100 Subject: [PATCH] sudo fixes --- src/providers/ipa/ipa_sudo_async.c | 27 +++++++++++++++------------ src/providers/ipa/ipa_sudo_conversion.c | 8 +++++++- src/providers/ldap/sdap_async_sudo.c | 1 + 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/providers/ipa/ipa_sudo_async.c b/src/providers/ipa/ipa_sudo_async.c index c8cee5bb9dd584deaaf821d3df473cad2c043d6e..271ab765b53588ed7b980effdd101217a0be12f2 100644 --- a/src/providers/ipa/ipa_sudo_async.c +++ b/src/providers/ipa/ipa_sudo_async.c @@ -520,19 +520,22 @@ ipa_sudo_fetch_addtl_cmdgroups_done(struct tevent_req *subreq) DEBUG(SSSDBG_IMPORTANT_INFO, "Received %zu additional command groups\n", num_attrs); - ret = ipa_sudo_filter_rules_bycmdgroups(state, state->domain, attrs, - num_attrs, state->map_rule, - &filter); - if (ret != EOK) { - DEBUG(SSSDBG_CRIT_FAILURE, "Unable to construct rules filter " - "[%d]: %s\n", ret, sss_strerror(ret)); - goto done; - } + if (num_attrs != 0) { + ret = ipa_sudo_filter_rules_bycmdgroups(state, state->domain, attrs, + num_attrs, state->map_rule, + &filter); + if (ret != EOK) { + DEBUG(SSSDBG_CRIT_FAILURE, "Unable to construct rules filter " + "[%d]: %s\n", ret, sss_strerror(ret)); + goto done; + } - state->search_filter = sdap_or_filters(state, state->search_filter, filter); - if (state->search_filter == NULL) { - ret = ENOMEM; - goto done; + state->search_filter = sdap_or_filters(state, state->search_filter, + filter); + if (state->search_filter == NULL) { + ret = ENOMEM; + goto done; + } } ret = ipa_sudo_fetch_rules(req); diff --git a/src/providers/ipa/ipa_sudo_conversion.c b/src/providers/ipa/ipa_sudo_conversion.c index cb3499a05d0d34bab878ae7deaeecfc09b5cff26..1a880d2ec4058a3d33dc89279b30d2793bc6efed 100644 --- a/src/providers/ipa/ipa_sudo_conversion.c +++ b/src/providers/ipa/ipa_sudo_conversion.c @@ -1018,6 +1018,7 @@ rules_iterator(hash_entry_t *item, if (ctx == NULL) { DEBUG(SSSDBG_CRIT_FAILURE, "Bug: ctx is NULL\n"); + ctx->ret = ERR_INTERNAL; return false; } @@ -1065,6 +1066,7 @@ cmdgroups_iterator(hash_entry_t *item, if (ctx == NULL) { DEBUG(SSSDBG_CRIT_FAILURE, "Bug: ctx is NULL\n"); + ctx->ret = ERR_INTERNAL; return false; } @@ -1108,6 +1110,10 @@ ipa_sudo_conv_result(TALLOC_CTX *mem_ctx, ctx.conv = conv; ctx.rules = NULL; ctx.num_rules = 0; + /* if there are no cmdgroups the iterator is not called and ctx.ret is + * uninitialized. Since it is ok that there are no cmdgroups initializing + * ctx.ret to EOK. */ + ctx.ret = EOK; /* Expand commands in command groups. */ hret = hash_iterate(conv->cmdgroups, cmdgroups_iterator, &ctx); @@ -1118,7 +1124,7 @@ ipa_sudo_conv_result(TALLOC_CTX *mem_ctx, } if (ctx.ret != EOK) { - DEBUG(SSSDBG_CRIT_FAILURE, "Unable to expand command grousp " + DEBUG(SSSDBG_CRIT_FAILURE, "Unable to expand command groups " "[%d]: %s\n", ctx.ret, sss_strerror(ctx.ret)); return ctx.ret; } diff --git a/src/providers/ldap/sdap_async_sudo.c b/src/providers/ldap/sdap_async_sudo.c index f24e1d7ac7c0fc07dcde5c635408d3746f8b6c6a..f7ced351b5841fa256095491321e3453ad05b7c7 100644 --- a/src/providers/ldap/sdap_async_sudo.c +++ b/src/providers/ldap/sdap_async_sudo.c @@ -82,6 +82,7 @@ sdap_sudo_load_sudoers_send(TALLOC_CTX *mem_ctx, } tevent_req_set_callback(subreq, sdap_sudo_load_sudoers_done, req); + ret = EOK; immediately: if (ret != EOK) { -- 2.1.0