diff options
author | Alexander Bokovoy <abokovoy@redhat.com> | 2013-07-31 13:28:58 +0300 |
---|---|---|
committer | Nalin Dahyabhai <nalin@dahyabhai.net> | 2013-08-07 11:33:11 -0400 |
commit | a2af37c552477de78297322ef3bef099a0ac0717 (patch) | |
tree | 3729e8b18eb63c23f0cf66d782fa9ccefaac8e08 /src | |
parent | d80b74380919d955a29069e74b65d3a36dec0e0b (diff) | |
download | slapi-nis-a2af37c552477de78297322ef3bef099a0ac0717.tar.gz slapi-nis-a2af37c552477de78297322ef3bef099a0ac0717.tar.xz slapi-nis-a2af37c552477de78297322ef3bef099a0ac0717.zip |
schema-compat: introduce a lock to protect PAM authentication
PAM stack requires exclusive access, therefore we need to use a write
lock.
Required for authenticating synthetically created records coming outside
of LDAP store.
Diffstat (limited to 'src')
-rw-r--r-- | src/plug-sch.c | 3 | ||||
-rw-r--r-- | src/plugin.h | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/src/plug-sch.c b/src/plug-sch.c index 5440e00..5d74beb 100644 --- a/src/plug-sch.c +++ b/src/plug-sch.c @@ -108,6 +108,7 @@ plugin_startup(Slapi_PBlock *pb) state->plugin_base ? "\"" : ""); /* Populate the tree of fake entries. */ backend_startup(pb, state); + state->pam_lock = wrap_new_rwlock(); /* Note that the plugin is ready to go. */ slapi_log_error(SLAPI_LOG_PLUGIN, plugin_description.spd_id, "plugin startup completed\n"); @@ -120,6 +121,8 @@ plugin_shutdown(Slapi_PBlock *pb) struct plugin_state *state; slapi_pblock_get(pb, SLAPI_PLUGIN_PRIVATE, &state); map_done(state); + wrap_free_rwlock(state->pam_lock); + state->pam_lock = NULL; state->plugin_base = NULL; slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id, "plugin shutdown completed\n"); diff --git a/src/plugin.h b/src/plugin.h index b54e2ad..3967fb0 100644 --- a/src/plugin.h +++ b/src/plugin.h @@ -44,6 +44,8 @@ struct plugin_state { struct { int fd, port, pf, type; } listener[4]; + /* Schema compat-specific data. */ + struct wrapped_rwlock *pam_lock; }; #endif |