summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Březina <pbrezina@redhat.com>2017-04-03 12:09:44 +0200
committerLukas Slebodnik <lslebodn@redhat.com>2017-04-03 16:07:45 +0200
commitb07bcd8b99590bd404733fa7ff1add37c55126bc (patch)
tree4f83fea377aaa276c8186ea5b6f8edc5b457ea51
parent05c2c3047912fca1c1a35ab1c8d3157b05383495 (diff)
downloadsssd-b07bcd8b99590bd404733fa7ff1add37c55126bc.tar.gz
sssd-b07bcd8b99590bd404733fa7ff1add37c55126bc.tar.xz
sssd-b07bcd8b99590bd404733fa7ff1add37c55126bc.zip
ipa_s2n_get_acct_info_send: provide correct req_input name
To avoid crash. Resolves: https://pagure.io/SSSD/sssd/issue/3358 Reviewed-by: Sumit Bose <sbose@redhat.com> Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
-rw-r--r--src/providers/ipa/ipa_s2n_exop.c40
1 files changed, 36 insertions, 4 deletions
diff --git a/src/providers/ipa/ipa_s2n_exop.c b/src/providers/ipa/ipa_s2n_exop.c
index 8a3391b40..2173db357 100644
--- a/src/providers/ipa/ipa_s2n_exop.c
+++ b/src/providers/ipa/ipa_s2n_exop.c
@@ -1054,6 +1054,33 @@ static const char *ipa_s2n_reqtype2str(enum request_types request_type)
return "Unknown request type";
}
+static const char *ipa_s2n_reqinp2str(TALLOC_CTX *mem_ctx,
+ struct req_input *req_input)
+{
+ const char *str = NULL;
+
+ switch (req_input->type) {
+ case REQ_INP_NAME:
+ str = talloc_strdup(mem_ctx, req_input->inp.name);
+ break;
+ case REQ_INP_SECID:
+ str = talloc_strdup(mem_ctx, req_input->inp.secid);
+ break;
+ case REQ_INP_CERT:
+ str = talloc_strdup(mem_ctx, req_input->inp.cert);
+ break;
+ case REQ_INP_ID:
+ str = talloc_asprintf(mem_ctx, "%u", req_input->inp.id);
+ break;
+ }
+
+ if (str == NULL) {
+ DEBUG(SSSDBG_CRIT_FAILURE, "Out of memory!\n");
+ }
+
+ return str;
+}
+
struct ipa_s2n_get_list_state {
struct tevent_context *ev;
struct ipa_id_ctx *ipa_ctx;
@@ -1410,6 +1437,7 @@ struct tevent_req *ipa_s2n_get_acct_info_send(TALLOC_CTX *mem_ctx,
struct tevent_req *req;
struct tevent_req *subreq;
struct berval *bv_req = NULL;
+ const char *input;
int ret = EFAULT;
bool is_v1 = false;
@@ -1454,10 +1482,14 @@ struct tevent_req *ipa_s2n_get_acct_info_send(TALLOC_CTX *mem_ctx,
goto fail;
}
- DEBUG(SSSDBG_TRACE_FUNC, "Sending request_type: [%s] for trust user [%s] "
- "to IPA server\n",
- ipa_s2n_reqtype2str(state->request_type),
- req_input->inp.name);
+ if (DEBUG_IS_SET(SSSDBG_TRACE_FUNC)) {
+ input = ipa_s2n_reqinp2str(state, req_input);
+ DEBUG(SSSDBG_TRACE_FUNC,
+ "Sending request_type: [%s] for trust user [%s] to IPA server\n",
+ ipa_s2n_reqtype2str(state->request_type),
+ input);
+ talloc_zfree(input);
+ }
subreq = ipa_s2n_exop_send(state, state->ev, state->sh, is_v1,
state->exop_timeout, bv_req);