diff options
author | Michal Zidek <mzidek@redhat.com> | 2015-02-10 17:30:00 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2016-01-13 11:28:45 +0100 |
commit | 23674dfef4225b90d45c27b88fe72dc37b22e32d (patch) | |
tree | f3f2814e564511fef79db03b909cc86d10208999 /src/responder/pam/pam_LOCAL_domain.c | |
parent | 867c5d7d51327464a21f48fd6dc2a6f4f107bd36 (diff) | |
download | sssd-23674dfef4225b90d45c27b88fe72dc37b22e32d.tar.gz sssd-23674dfef4225b90d45c27b88fe72dc37b22e32d.tar.xz sssd-23674dfef4225b90d45c27b88fe72dc37b22e32d.zip |
sysdb: Unify name format for groups and users
This is WIP patch to unify format of
usernames and groupnames in sssd internals.
In current form it breaks just about everything.
The sysdb update function is just placeholder
and it's contents are irelevant.
Currently I am working on fqname attribute
removal because it seems to just add confusion.
If you decide to look into the code, please use
sunglasses or other other protective gear and play
some calm music in your backgroun to prevent
eye or brain injury.
Diffstat (limited to 'src/responder/pam/pam_LOCAL_domain.c')
-rw-r--r-- | src/responder/pam/pam_LOCAL_domain.c | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/src/responder/pam/pam_LOCAL_domain.c b/src/responder/pam/pam_LOCAL_domain.c index 4b076146c..0966bcb0c 100644 --- a/src/responder/pam/pam_LOCAL_domain.c +++ b/src/responder/pam/pam_LOCAL_domain.c @@ -73,6 +73,12 @@ static void prepare_reply(struct LOCAL_request *lreq) static void do_successful_login(struct LOCAL_request *lreq) { int ret; + char *name; + TALLOC_CTX *tmpctx; + + tmpctx = talloc_new(NULL); + NULL_CHECK_OR_JUMP(tmpctx, ("talloc_new failed.\n"), + lreq->error, ENOMEM, done); lreq->mod_attrs = sysdb_new_attrs(lreq); NULL_CHECK_OR_JUMP(lreq->mod_attrs, ("sysdb_new_attrs failed.\n"), @@ -87,13 +93,16 @@ static void do_successful_login(struct LOCAL_request *lreq) NEQ_CHECK_OR_JUMP(ret, EOK, ("sysdb_attrs_add_long failed.\n"), lreq->error, ret, done); - ret = sysdb_set_user_attr(lreq->domain, - lreq->preq->pd->user, + name = sss_ioname2internal(tmpctx, lreq->domain, lreq->preq->pd->user); + NULL_CHECK_OR_JUMP(name, ("sss_ioname2internal failed.\n"), + lreq->error, ENOMEM, done); + ret = sysdb_set_user_attr(lreq->domain, name, lreq->mod_attrs, SYSDB_MOD_REP); NEQ_CHECK_OR_JUMP(ret, EOK, ("sysdb_set_user_attr failed.\n"), lreq->error, ret, done); done: + talloc_free(tmpctx); return; } @@ -102,6 +111,12 @@ static void do_failed_login(struct LOCAL_request *lreq) int ret; int failedLoginAttempts; struct pam_data *pd; + char *name; + TALLOC_CTX *tmpctx; + + tmpctx = talloc_new(NULL); + NULL_CHECK_OR_JUMP(tmpctx, ("talloc_new failed.\n"), + lreq->error, ENOMEM, done); pd = lreq->preq->pd; pd->pam_status = PAM_AUTH_ERR; @@ -128,13 +143,16 @@ static void do_failed_login(struct LOCAL_request *lreq) NEQ_CHECK_OR_JUMP(ret, EOK, ("sysdb_attrs_add_long failed.\n"), lreq->error, ret, done); - ret = sysdb_set_user_attr(lreq->domain, - lreq->preq->pd->user, + name = sss_ioname2internal(tmpctx, lreq->domain, lreq->preq->pd->user); + NULL_CHECK_OR_JUMP(name, ("sss_ioname2internal failed.\n"), + lreq->error, ENOMEM, done); + ret = sysdb_set_user_attr(lreq->domain, name, lreq->mod_attrs, SYSDB_MOD_REP); NEQ_CHECK_OR_JUMP(ret, EOK, ("sysdb_set_user_attr failed.\n"), lreq->error, ret, done); done: + talloc_free(tmpctx); return; } @@ -161,9 +179,15 @@ static void do_pam_chauthtok(struct LOCAL_request *lreq) char *salt; char *new_hash; struct pam_data *pd; + char *name; + TALLOC_CTX *tmpctx; pd = lreq->preq->pd; + tmpctx = talloc_new(NULL); + NULL_CHECK_OR_JUMP(tmpctx, ("talloc_new failed.\n"), + lreq->error, ENOMEM, done); + ret = sss_authtok_get_password(pd->newauthtok, &password, NULL); if (ret) { /* TODO: should we allow null passwords via a config option ? */ @@ -197,13 +221,16 @@ static void do_pam_chauthtok(struct LOCAL_request *lreq) NEQ_CHECK_OR_JUMP(ret, EOK, ("sysdb_attrs_add_long failed.\n"), lreq->error, ret, done); - ret = sysdb_set_user_attr(lreq->domain, - lreq->preq->pd->user, + name = sss_ioname2internal(tmpctx, lreq->domain, lreq->preq->pd->user); + NULL_CHECK_OR_JUMP(name, ("sss_ioname2internal failed.\n"), + lreq->error, ENOMEM, done); + ret = sysdb_set_user_attr(lreq->domain, name, lreq->mod_attrs, SYSDB_MOD_REP); NEQ_CHECK_OR_JUMP(ret, EOK, ("sysdb_set_user_attr failed.\n"), lreq->error, ret, done); done: + talloc_free(tmpctx); sss_authtok_set_empty(pd->newauthtok); } |