diff options
-rw-r--r-- | changelog | 3 | ||||
-rw-r--r-- | patches-applied/061_pam_issue_double_free | 75 |
2 files changed, 9 insertions, 69 deletions
@@ -27,8 +27,9 @@ pam (0.99.7.1-2) UNRELEASED; urgency=low pam_cracklib.c instead to use the default dictpath already available from crack.h. * Patch 038: partially merged/superseded upstream + * Patch 061: partially merged upstream - -- Steve Langasek <vorlon@debian.org> Sun, 19 Aug 2007 05:14:38 -0700 + -- Steve Langasek <vorlon@debian.org> Sun, 19 Aug 2007 15:30:12 -0700 pam (0.79-4) unstable; urgency=medium diff --git a/patches-applied/061_pam_issue_double_free b/patches-applied/061_pam_issue_double_free index 6acabd35..d6443164 100644 --- a/patches-applied/061_pam_issue_double_free +++ b/patches-applied/061_pam_issue_double_free @@ -2,75 +2,14 @@ Index: Linux-PAM/modules/pam_issue/pam_issue.c =================================================================== --- Linux-PAM/modules/pam_issue/pam_issue.c.orig +++ Linux-PAM/modules/pam_issue/pam_issue.c -@@ -64,11 +64,11 @@ - +@@ -65,6 +65,10 @@ for ( ; argc-- > 0 ; ++argv ) { if (!strncmp(*argv,"issue=",6)) { -- issue_file = (char *) strdup(6+*argv); -- if (issue_file != NULL) { -+ issue_file = 6+*argv; -+ if (*issue_file != '\0') { - D(("set issue_file to: %s", issue_file)); - } else { -- D(("failed to strdup issue_file - ignored")); + issue_file = 6 + *argv; ++ if (*issue_file == '\0') { + D(("empty issue= value - ignored")); - return PAM_IGNORE; - } ++ return PAM_IGNORE; ++ } + D(("set issue_file to: %s", issue_file)); } else if (!strcmp(*argv,"noesc")) { -@@ -79,15 +79,13 @@ - } - - if (issue_file == NULL) -- issue_file = strdup("/etc/issue"); -+ issue_file = "/etc/issue"; - - if ((fd = fopen(issue_file, "r")) != NULL) { - int tot_size = 0; - - if (fstat(fileno(fd), &st) < 0) { - fclose(fd); -- if (issue_file) -- free(issue_file); - return PAM_IGNORE; - } - -@@ -95,8 +93,6 @@ - (const void **) &cur_prompt); - if (retval != PAM_SUCCESS) { - fclose(fd); -- if (issue_file) -- free(issue_file); - return PAM_IGNORE; - } - if (cur_prompt == NULL) { -@@ -109,8 +105,6 @@ - prompt_tmp = do_prompt(fd); - if (prompt_tmp == NULL) { - fclose(fd); -- if (issue_file) -- free(issue_file); - return PAM_IGNORE; - } - } else { -@@ -119,8 +113,6 @@ - prompt_tmp = malloc(st.st_size + 1); - if (prompt_tmp == NULL) { - fclose(fd); -- if (issue_file) -- free(issue_file); - return PAM_IGNORE; - } - memset (prompt_tmp, '\0', st.st_size + 1); -@@ -160,12 +152,10 @@ - (const char *) prompt_tmp); - - cleanup: -- free(issue_file); - free(prompt_tmp); - - } else { - D(("could not open issue_file: %s", issue_file)); -- free(issue_file); - return PAM_IGNORE; - } - + parse_esc = 0; |