From dcb2c6be4101985dd7f9d519635227e9f81ac2a7 Mon Sep 17 00:00:00 2001 From: Arthur de Jong Date: Fri, 4 May 2012 13:36:45 +0000 Subject: allow the pam_authz_search option to be specified multiple times git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-pam-ldapd@1679 ef36b2f9-881f-0410-afb5-c4e39611909c --- nslcd/cfg.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'nslcd/cfg.c') diff --git a/nslcd/cfg.c b/nslcd/cfg.c index 73199bb..0811954 100644 --- a/nslcd/cfg.c +++ b/nslcd/cfg.c @@ -126,7 +126,8 @@ static void cfg_defaults(struct ldap_config *cfg) cfg->ldc_restart=1; cfg->ldc_pagesize=0; cfg->ldc_nss_initgroups_ignoreusers=NULL; - cfg->ldc_pam_authz_search=NULL; + for (i=0;ildc_pam_authz_search[i]=NULL; cfg->ldc_nss_min_uid=0; parse_validnames_statement(__FILE__,__LINE__,"", "/^[a-z0-9._@$][a-z0-9._@$ \\~-]*[a-z0-9._@$~-]$/i",cfg); @@ -782,9 +783,17 @@ static void parse_pam_authz_search_statement( const char **list; int i; check_argumentcount(filename,lnr,keyword,(line!=NULL)&&(*line!='\0')); - cfg->ldc_pam_authz_search=xstrdup(line); + /* find free spot for search filter */ + for (i=0;(ildc_pam_authz_search[i]!=NULL);i++); + if (i>=NSS_LDAP_CONFIG_MAX_AUTHZ_SEARCHES) + { + log_log(LOG_ERR,"%s:%d: maximum number of pam_authz_search options (%d) exceeded", + filename,lnr,NSS_LDAP_CONFIG_MAX_AUTHZ_SEARCHES); + exit(EXIT_FAILURE); + } + cfg->ldc_pam_authz_search[i]=xstrdup(line); /* check the variables used in the expression */ - set=expr_vars(cfg->ldc_pam_authz_search,NULL); + set=expr_vars(cfg->ldc_pam_authz_search[i],NULL); list=set_tolist(set); for (i=0;list[i]!=NULL;i++) { -- cgit v1.2.3