From 54989c3f3f96b8fa7b4c98723362657ed96223de Mon Sep 17 00:00:00 2001 From: Klas Lindfors Date: Tue, 29 Jul 2014 09:23:10 +0200 Subject: [PATCH] fixup so urllist data is kept within it's own memory before strtok fixes #41 --- pam_yubico.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pam_yubico.c b/pam_yubico.c index a9a419a..2577bd2 100644 --- a/pam_yubico.c +++ b/pam_yubico.c @@ -810,6 +810,7 @@ pam_sm_authenticate (pam_handle_t * pamh, struct cfg *cfg = &cfg_st; /* for DBG macro */ size_t templates = 0; char *urls[10]; + char *tmpurl = NULL; parse_cfg (flags, argc, argv, cfg); @@ -896,11 +897,10 @@ pam_sm_authenticate (pam_handle_t * pamh, { char *saveptr = NULL; char *part = NULL; - char *tmpurl = cfg->urllist; + tmpurl = strdup(cfg->urllist); - while ((part = strtok_r(tmpurl, ";", &saveptr))) + while ((part = strtok_r(templates == 0 ? tmpurl : NULL, ";", &saveptr))) { - tmpurl = NULL; if(templates == 10) { DBG (("maximum 10 urls supported in list.")); @@ -1079,6 +1079,8 @@ done: free(urls[i]); } } + if (tmpurl) + free(tmpurl); if (ykc) ykclient_done (&ykc); if (cfg->alwaysok && retval != PAM_SUCCESS)