1
0
mirror of https://github.com/Yubico/yubico-pam.git synced 2025-02-22 00:54:30 +01:00

fixup urllist feature (hopefully)

This commit is contained in:
Klas Lindfors 2014-03-26 10:52:46 +01:00
parent 602905c51d
commit 8f6717b13e

View File

@ -808,6 +808,8 @@ pam_sm_authenticate (pam_handle_t * pamh,
ykclient_t *ykc = NULL; ykclient_t *ykc = NULL;
struct cfg cfg_st; struct cfg cfg_st;
struct cfg *cfg = &cfg_st; /* for DBG macro */ struct cfg *cfg = &cfg_st; /* for DBG macro */
size_t templates = 0;
char *urls[10];
parse_cfg (flags, argc, argv, cfg); parse_cfg (flags, argc, argv, cfg);
@ -894,11 +896,8 @@ pam_sm_authenticate (pam_handle_t * pamh,
{ {
char *saveptr = NULL; char *saveptr = NULL;
char *part = NULL; char *part = NULL;
size_t templates = 0;
size_t len = strlen(cfg->urllist);
char urls[10][strlen(cfg->urllist)];
while(part = strtok_r(cfg->urllist, ";", &saveptr)) while ((part = strtok_r(cfg->urllist, ";", &saveptr)))
{ {
if(templates == 10) if(templates == 10)
{ {
@ -906,10 +905,10 @@ pam_sm_authenticate (pam_handle_t * pamh,
retval = PAM_AUTHINFO_UNAVAIL; retval = PAM_AUTHINFO_UNAVAIL;
goto done; goto done;
} }
strcpy(urls[templates], part); urls[templates] = strdup(part);
templates++; templates++;
} }
rc = ykclient_set_url_bases (ykc, templates, urls); rc = ykclient_set_url_bases (ykc, templates, (const char **)urls);
if (rc != YKCLIENT_OK) if (rc != YKCLIENT_OK)
{ {
DBG (("ykclient_set_url_bases() failed (%d): %s", DBG (("ykclient_set_url_bases() failed (%d): %s",
@ -1070,6 +1069,14 @@ pam_sm_authenticate (pam_handle_t * pamh,
} }
done: done:
if (templates > 0)
{
size_t i;
for(i = 0; i < templates; i++)
{
free(urls[templates]);
}
}
if (ykc) if (ykc)
ykclient_done (&ykc); ykclient_done (&ykc);
if (cfg->alwaysok && retval != PAM_SUCCESS) if (cfg->alwaysok && retval != PAM_SUCCESS)