From: Günther Deschner Date: Thu, 3 Apr 2008 11:23:34 +0000 (+0200) Subject: Add _pam_winbind_init/free_context. X-Git-Tag: samba-3.3.0pre1~2919 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d62676cf886d910334b3d6f7ce0147b75ef53aec;p=thirdparty%2Fsamba.git Add _pam_winbind_init/free_context. Guenther --- diff --git a/source/nsswitch/pam_winbind.c b/source/nsswitch/pam_winbind.c index 688462c5e5a..7c3c2b1666b 100644 --- a/source/nsswitch/pam_winbind.c +++ b/source/nsswitch/pam_winbind.c @@ -346,6 +346,45 @@ config_from_pam: return ctrl; }; +static void _pam_winbind_free_context(struct pwb_context *ctx) +{ + if (ctx->dict) { + iniparser_freedict(ctx->dict); + } + + SAFE_FREE(ctx); +} + +static int _pam_winbind_init_context(const pam_handle_t *pamh, + int flags, + int argc, + const char **argv, + struct pwb_context **ctx_p) +{ + struct pwb_context *r = NULL; + + r = (struct pwb_context *)malloc(sizeof(struct pwb_context)); + if (!r) { + return PAM_BUF_ERR; + } + + ZERO_STRUCTP(r); + + r->pamh = pamh; + r->flags = flags; + r->argc = argc; + r->argv = argv; + r->ctrl = _pam_parse(pamh, flags, argc, argv, &r->dict); + if (r->ctrl == -1) { + _pam_winbind_free_context(r); + return PAM_SYSTEM_ERR; + } + + *ctx_p = r; + + return PAM_SUCCESS; +} + static void _pam_winbind_cleanup_func(pam_handle_t *pamh, void *data, int error_status)