summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2006-07-13 16:31:26 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:19:20 -0500
commit803748b15dec1787ab5be9df3b039f59a34f8ee6 (patch)
treee5b98514ece538f6103501fa5c5eef23d23b8bb2
parentf8004328f41db5eec4332b2d6fc54ff91dd3a0c1 (diff)
downloadsamba-803748b15dec1787ab5be9df3b039f59a34f8ee6.tar.gz
samba-803748b15dec1787ab5be9df3b039f59a34f8ee6.tar.bz2
samba-803748b15dec1787ab5be9df3b039f59a34f8ee6.zip
r17017: BUG 3916: fix pam config file parsing in pam_winbind.
Patch from Dietrich Streifert <dietrich.streifert@visionet.de> (This used to be commit 8d6218825827a54ca69e462c00a3dc9e25ef3ddf)
-rw-r--r--source3/nsswitch/pam_winbind.c32
1 files changed, 17 insertions, 15 deletions
diff --git a/source3/nsswitch/pam_winbind.c b/source3/nsswitch/pam_winbind.c
index 118ba358e1..393dc29245 100644
--- a/source3/nsswitch/pam_winbind.c
+++ b/source3/nsswitch/pam_winbind.c
@@ -47,15 +47,17 @@ static int _pam_parse(int argc, const char **argv, dictionary **d)
{
int ctrl = 0;
const char *config_file = NULL;
+ int i;
+ const char **v;
if (d == NULL) {
goto config_from_pam;
}
- for (; argc-- > 0; ++argv) {
- if (!strncasecmp(*argv, "config", strlen("config"))) {
+ for (i=argc,v=argv; i-- > 0; ++v) {
+ if (!strncasecmp(*v, "config", strlen("config"))) {
ctrl |= WINBIND_CONFIG_FILE;
- config_file = argv[argc];
+ config_file = v[i];
break;
}
}
@@ -92,31 +94,31 @@ static int _pam_parse(int argc, const char **argv, dictionary **d)
config_from_pam:
/* step through arguments */
- for (; argc-- > 0; ++argv) {
+ for (i=argc,v=argv; i-- > 0; ++v) {
/* generic options */
- if (!strcmp(*argv,"debug"))
+ if (!strcmp(*v,"debug"))
ctrl |= WINBIND_DEBUG_ARG;
- else if (!strcasecmp(*argv, "use_authtok"))
+ else if (!strcasecmp(*v, "use_authtok"))
ctrl |= WINBIND_USE_AUTHTOK_ARG;
- else if (!strcasecmp(*argv, "use_first_pass"))
+ else if (!strcasecmp(*v, "use_first_pass"))
ctrl |= WINBIND_USE_FIRST_PASS_ARG;
- else if (!strcasecmp(*argv, "try_first_pass"))
+ else if (!strcasecmp(*v, "try_first_pass"))
ctrl |= WINBIND_TRY_FIRST_PASS_ARG;
- else if (!strcasecmp(*argv, "unknown_ok"))
+ else if (!strcasecmp(*v, "unknown_ok"))
ctrl |= WINBIND_UNKNOWN_OK_ARG;
- else if (!strncasecmp(*argv, "require_membership_of", strlen("require_membership_of")))
+ else if (!strncasecmp(*v, "require_membership_of", strlen("require_membership_of")))
ctrl |= WINBIND_REQUIRED_MEMBERSHIP;
- else if (!strncasecmp(*argv, "require-membership-of", strlen("require-membership-of")))
+ else if (!strncasecmp(*v, "require-membership-of", strlen("require-membership-of")))
ctrl |= WINBIND_REQUIRED_MEMBERSHIP;
- else if (!strcasecmp(*argv, "krb5_auth"))
+ else if (!strcasecmp(*v, "krb5_auth"))
ctrl |= WINBIND_KRB5_AUTH;
- else if (!strncasecmp(*argv, "krb5_ccache_type", strlen("krb5_ccache_type")))
+ else if (!strncasecmp(*v, "krb5_ccache_type", strlen("krb5_ccache_type")))
ctrl |= WINBIND_KRB5_CCACHE_TYPE;
- else if (!strcasecmp(*argv, "cached_login"))
+ else if (!strcasecmp(*v, "cached_login"))
ctrl |= WINBIND_CACHED_LOGIN;
else {
- _pam_log(LOG_ERR, "pam_parse: unknown option; %s", *argv);
+ _pam_log(LOG_ERR, "pam_parse: unknown option; %s", *v);
}
}