56 lines
1.9 KiB
Diff
56 lines
1.9 KiB
Diff
From 545f49b72cdf8453fb0b85c9d87e7d4711da57da Mon Sep 17 00:00:00 2001
|
|
From: Lukas Slebodnik <lslebodn@redhat.com>
|
|
Date: Wed, 14 Aug 2013 13:21:31 +0200
|
|
Subject: [PATCH] proxy: Alocate auth tokens in struct authtok_conv
|
|
|
|
Struct sss_auth_token became opaque in commit
|
|
9acfb09f7969a69f58bd45c856b01700541853ca.
|
|
All ocasions of "struct sss_auth_token" was replaced with pointer to this
|
|
struct, but proper initialization of auth_tokens was missing
|
|
in struct authtok_conv.
|
|
|
|
Resolves:
|
|
https://fedorahosted.org/sssd/ticket/2046
|
|
|
|
diff --git a/src/providers/proxy/proxy_child.c b/src/providers/proxy/proxy_child.c
|
|
index efdf9120a8ec529283aa3f2c6cacd98d659a6ef7..6f95ede6af78f0286933fc4259dd258ef69f2d37 100644
|
|
--- a/src/providers/proxy/proxy_child.c
|
|
+++ b/src/providers/proxy/proxy_child.c
|
|
@@ -201,6 +201,23 @@ static errno_t call_pam_stack(const char *pam_target, struct pam_data *pd)
|
|
conv.conv=proxy_internal_conv;
|
|
}
|
|
auth_data = talloc_zero(pd, struct authtok_conv);
|
|
+ if (auth_data == NULL) {
|
|
+ DEBUG(SSSDBG_CRIT_FAILURE, ("talloc_zero failed.\n"));
|
|
+ return ENOMEM;
|
|
+ }
|
|
+ auth_data->authtok = sss_authtok_new(auth_data);
|
|
+ if (auth_data->authtok == NULL) {
|
|
+ DEBUG(SSSDBG_CRIT_FAILURE, ("sss_authtok_new failed.\n"));
|
|
+ ret = ENOMEM;
|
|
+ goto fail;
|
|
+ }
|
|
+ auth_data->newauthtok = sss_authtok_new(auth_data);
|
|
+ if (auth_data->newauthtok == NULL) {
|
|
+ DEBUG(SSSDBG_CRIT_FAILURE, ("sss_authtok_new failed.\n"));
|
|
+ ret = ENOMEM;
|
|
+ goto fail;
|
|
+ }
|
|
+
|
|
conv.appdata_ptr=auth_data;
|
|
|
|
ret = pam_start(pam_target, pd->user, &conv, &pamh);
|
|
@@ -279,6 +296,9 @@ static errno_t call_pam_stack(const char *pam_target, struct pam_data *pd)
|
|
pd->pam_status = pam_status;
|
|
|
|
return EOK;
|
|
+fail:
|
|
+ talloc_free(auth_data);
|
|
+ return ret;
|
|
}
|
|
|
|
static int pc_pam_handler(DBusMessage *message, struct sbus_connection *conn)
|
|
--
|
|
1.8.3.1
|
|
|