aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changelog3
-rw-r--r--patches-applied/061_pam_issue_double_free75
2 files changed, 9 insertions, 69 deletions
diff --git a/changelog b/changelog
index 64164b15..ec2e5695 100644
--- a/changelog
+++ b/changelog
@@ -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;