Arthur de Jong

Open Source / Free Software developer

summaryrefslogtreecommitdiffstats
path: root/pam/pam.c
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2011-04-30 23:01:51 +0200
committerArthur de Jong <arthur@arthurdejong.org>2011-04-30 23:01:51 +0200
commit6d3228178006d5e9ca06df6acb1fcb26c633006d (patch)
treea3d58e405fea9b426e2458ff194ddbc69ac3cd1b /pam/pam.c
parente6fd9b6c1fd31b89606e403e638d77f0343c6eae (diff)
split setting up of configuration into separate function
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-pam-ldapd@1448 ef36b2f9-881f-0410-afb5-c4e39611909c
Diffstat (limited to 'pam/pam.c')
-rw-r--r--pam/pam.c36
1 files changed, 22 insertions, 14 deletions
diff --git a/pam/pam.c b/pam/pam.c
index 2fe6023..1cbc73f 100644
--- a/pam/pam.c
+++ b/pam/pam.c
@@ -146,13 +146,10 @@ struct pld_cfg {
uid_t minimum_uid;
};
-static int init(pam_handle_t *pamh,int flags,int argc,const char **argv,
- struct pld_cfg *cfg,struct pld_ctx **ctx,const char **username,
- const char **service)
+static void cfg_init(pam_handle_t *pamh,int flags,int argc,const char **argv,
+ struct pld_cfg *cfg)
{
int i;
- int rc;
- struct passwd *pwent;
/* initialise config with defaults */
cfg->nullok=0;
cfg->no_warn=0;
@@ -187,6 +184,13 @@ static int init(pam_handle_t *pamh,int flags,int argc,const char **argv,
/* check flags */
if (flags&PAM_SILENT)
cfg->no_warn=1;
+}
+
+static int init(pam_handle_t *pamh,struct pld_cfg *cfg,struct pld_ctx **ctx,
+ const char **username,const char **service)
+{
+ int rc;
+ struct passwd *pwent;
/* get user name */
rc=pam_get_user(pamh,username,NULL);
if (rc!=PAM_SUCCESS)
@@ -258,7 +262,7 @@ static int nslcd_request_exists(pam_handle_t *pamh,struct pld_ctx *ctx,struct pl
gid_t dummy_gid;
PAM_REQUEST(NSLCD_ACTION_PASSWD_BYNAME,
/* log debug message */
- pam_syslog(pamh,LOG_DEBUG,"nslcd authentication; user=%s",username),
+ pam_syslog(pamh,LOG_DEBUG,"nslcd account check; user=%s",username),
/* write the request parameters */
WRITE_STRING(fp,username),
/* read the result entry */
@@ -378,9 +382,10 @@ int pam_sm_authenticate(pam_handle_t *pamh,int flags,int argc,const char **argv)
const char *username,*service;
char *passwd=NULL;
/* set up configuration */
- rc=init(pamh,flags,argc,argv,&cfg,&ctx,&username,&service);
+ cfg_init(pamh,flags,argc,argv,&cfg);
+ rc=init(pamh,&cfg,&ctx,&username,&service);
if (rc!=PAM_SUCCESS)
- return rc;
+ return remap_pam_rc(rc,&cfg);
/* get the password */
rc=pam_get_authtok(pamh,PAM_AUTHTOK,(const char **)&passwd,NULL);
if (rc!=PAM_SUCCESS)
@@ -441,9 +446,10 @@ int pam_sm_acct_mgmt(pam_handle_t *pamh,int flags,int argc,const char **argv)
const char *username,*service;
const char *ruser=NULL,*rhost=NULL,*tty=NULL;
/* set up configuration */
- rc=init(pamh,flags,argc,argv,&cfg,&ctx,&username,&service);
+ cfg_init(pamh,flags,argc,argv,&cfg);
+ rc=init(pamh,&cfg,&ctx,&username,&service);
if (rc!=PAM_SUCCESS)
- return rc;
+ return remap_pam_rc(rc,&cfg);
/* get more PAM information */
pam_get_item(pamh,PAM_RUSER,(const void **)&ruser);
pam_get_item(pamh,PAM_RHOST,(const void **)&rhost);
@@ -499,9 +505,10 @@ static int pam_sm_session(pam_handle_t *pamh,int flags,int argc,
const char *username,*service;
const char *tty=NULL,*rhost=NULL,*ruser=NULL;
/* set up configuration */
- rc=init(pamh,flags,argc,argv,&cfg,&ctx,&username,&service);
+ cfg_init(pamh,flags,argc,argv,&cfg);
+ rc=init(pamh,&cfg,&ctx,&username,&service);
if (rc!=PAM_SUCCESS)
- return rc;
+ return remap_pam_rc(rc,&cfg);
/* get more PAM information */
pam_get_item(pamh,PAM_TTY,(const void **)&tty);
pam_get_item(pamh,PAM_RHOST,(const void **)&rhost);
@@ -546,9 +553,10 @@ int pam_sm_chauthtok(pam_handle_t *pamh,int flags,int argc,const char **argv)
struct passwd *pwent;
uid_t myuid;
/* set up configuration */
- rc=init(pamh,flags,argc,argv,&cfg,&ctx,&username,&service);
+ cfg_init(pamh,flags,argc,argv,&cfg);
+ rc=init(pamh,&cfg,&ctx,&username,&service);
if (rc!=PAM_SUCCESS)
- return rc;
+ return remap_pam_rc(rc,&cfg);
/* see if we are dealing with an LDAP user first */
if (ctx->dn==NULL)
{