diff options
author | Pavel Březina <pbrezina@redhat.com> | 2013-06-26 10:31:18 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2013-06-27 13:50:48 +0200 |
commit | 895ba2c346beb7e55d43be3d0c7f54fd287faa74 (patch) | |
tree | 0de7b0a9a3bec972180f7d0f8f62e7a5f04f738a | |
parent | ba95f1c434b430f0db7fddbd865af10488ecab17 (diff) | |
download | sssd-895ba2c346beb7e55d43be3d0c7f54fd287faa74.tar.gz sssd-895ba2c346beb7e55d43be3d0c7f54fd287faa74.tar.bz2 sssd-895ba2c346beb7e55d43be3d0c7f54fd287faa74.zip |
sudo responder: use different callback for oob refresh
https://fedorahosted.org/sssd/ticket/1693
Since we don't care about returned values from out of band refresh,
we do not need to set callback data. However, this caused talloc
to abort as it considers it as type mismatch when called from
tevent_req_callback_data().
-rw-r--r-- | src/responder/sudo/sudosrv_get_sudorules.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/responder/sudo/sudosrv_get_sudorules.c b/src/responder/sudo/sudosrv_get_sudorules.c index e84631e3..4a121feb 100644 --- a/src/responder/sudo/sudosrv_get_sudorules.c +++ b/src/responder/sudo/sudosrv_get_sudorules.c @@ -450,11 +450,6 @@ sudosrv_dp_req_done(struct tevent_req *req) dbus_uint32_t err_min; char *err_msg; - if (cb_ctx == NULL) { - /* we are not interested in returned values */ - talloc_free(req); - return; - } cli_ctx = talloc_get_type(cb_ctx->cctx, struct cli_ctx); ret = sss_dp_get_sudoers_recv(cb_ctx->mem_ctx, req, @@ -471,6 +466,13 @@ sudosrv_dp_req_done(struct tevent_req *req) } static void +sudosrv_dp_oob_req_done(struct tevent_req *req) +{ + DEBUG(SSSDBG_TRACE_FUNC, ("Out of band refresh finished\n")); + talloc_free(req); +} + +static void sudosrv_get_sudorules_dp_callback(uint16_t err_maj, uint32_t err_min, const char *err_msg, void *ptr) { @@ -512,7 +514,7 @@ sudosrv_get_sudorules_dp_callback(uint16_t err_maj, uint32_t err_min, DEBUG(SSSDBG_CRIT_FAILURE, ("Cannot issue DP request.\n")); } else { - tevent_req_set_callback(dpreq, sudosrv_dp_req_done, NULL); + tevent_req_set_callback(dpreq, sudosrv_dp_oob_req_done, NULL); } } |