diff options
author | Stephen Gallagher <sgallagh@redhat.com> | 2010-06-17 09:50:01 -0400 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2010-06-17 15:40:13 -0400 |
commit | 6d65f4d78567cdcab9b0ab52e1f08ad054278cc7 (patch) | |
tree | 624e2e230b9db7891d7062cd7451573856d7b718 /src/responder/pam/pamsrv.c | |
parent | a56cdc811fec8d2c0e69fce3970a1032d1e3d2a8 (diff) | |
download | sssd-6d65f4d78567cdcab9b0ab52e1f08ad054278cc7.tar.gz sssd-6d65f4d78567cdcab9b0ab52e1f08ad054278cc7.tar.xz sssd-6d65f4d78567cdcab9b0ab52e1f08ad054278cc7.zip |
Honor filter_users in PAM
Diffstat (limited to 'src/responder/pam/pamsrv.c')
-rw-r--r-- | src/responder/pam/pamsrv.c | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/src/responder/pam/pamsrv.c b/src/responder/pam/pamsrv.c index c82f0fab1..61e7ce7a3 100644 --- a/src/responder/pam/pamsrv.c +++ b/src/responder/pam/pamsrv.c @@ -42,6 +42,7 @@ #include "monitor/monitor_interfaces.h" #include "sbus/sbus_client.h" #include "responder/pam/pamsrv.h" +#include "responder/common/negcache.h" #define SSS_PAM_SBUS_SERVICE_VERSION 0x0001 #define SSS_PAM_SBUS_SERVICE_NAME "pam" @@ -125,7 +126,7 @@ static int pam_process_init(TALLOC_CTX *mem_ctx, "PAM", &pam_dp_interface, &pctx->rctx); if (ret != EOK) { - return ret; + goto done; } pctx->rctx->pvt_ctx = pctx; @@ -138,7 +139,7 @@ static int pam_process_init(TALLOC_CTX *mem_ctx, CONFDB_SERVICE_RECON_RETRIES, 3, &max_retries); if (ret != EOK) { DEBUG(0, ("Failed to set up automatic reconnection\n")); - return ret; + goto done; } for (iter = pctx->rctx->be_conns; iter; iter = iter->next) { @@ -146,7 +147,31 @@ static int pam_process_init(TALLOC_CTX *mem_ctx, pam_dp_reconnect_init, iter); } - return EOK; + /* Set up the negative cache */ + ret = confdb_get_int(cdb, pctx, CONFDB_NSS_CONF_ENTRY, + CONFDB_NSS_ENTRY_NEG_TIMEOUT, 15, + &pctx->neg_timeout); + if (ret != EOK) goto done; + + ret = sss_ncache_init(pctx, &pctx->ncache); + if (ret != EOK) { + DEBUG(0, ("fatal error initializing negative cache\n")); + goto done; + } + + ret = sss_ncache_prepopulate(pctx->ncache, cdb, pctx->rctx->names, + pctx->rctx->domains); + if (ret != EOK) { + goto done; + } + + ret = EOK; + +done: + if (ret != EOK) { + talloc_free(pctx); + } + return ret; } int main(int argc, const char *argv[]) |