Arthur de Jong

Open Source / Free Software developer

summaryrefslogtreecommitdiffstats
path: root/nslcd/cfg.c
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2012-05-04 15:36:45 +0200
committerArthur de Jong <arthur@arthurdejong.org>2012-05-04 15:36:45 +0200
commitdcb2c6be4101985dd7f9d519635227e9f81ac2a7 (patch)
tree636c6577afc2c42fb1ea3319dadd16d7436d2773 /nslcd/cfg.c
parentd02bfa44cfda8b7d5b95817305e30f77cfbee079 (diff)
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
Diffstat (limited to 'nslcd/cfg.c')
-rw-r--r--nslcd/cfg.c15
1 files changed, 12 insertions, 3 deletions
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;i<NSS_LDAP_CONFIG_MAX_AUTHZ_SEARCHES;i++)
+ cfg->ldc_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;(i<NSS_LDAP_CONFIG_MAX_AUTHZ_SEARCHES)&&(cfg->ldc_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++)
{