svn commit: r234173 - head/contrib/openpam/lib
Dag-Erling Smorgrav
des at FreeBSD.org
Thu Apr 12 11:23:25 UTC 2012
Author: des
Date: Thu Apr 12 11:23:24 2012
New Revision: 234173
URL: http://svn.freebsd.org/changeset/base/234173
Log:
Keep a copy of the original pointer returned by openpam_readline() so
we can free it later, instead of trying to free a pointer that points
to the end of the buffer.
Committed to head because this code no longer exists upstream.
Submitted by: jasone@
Modified:
head/contrib/openpam/lib/openpam_configure.c
Modified: head/contrib/openpam/lib/openpam_configure.c
==============================================================================
--- head/contrib/openpam/lib/openpam_configure.c Thu Apr 12 10:48:43 2012 (r234172)
+++ head/contrib/openpam/lib/openpam_configure.c Thu Apr 12 11:23:24 2012 (r234173)
@@ -360,7 +360,7 @@ openpam_parse_chain(pam_handle_t *pamh,
pam_chain_t *this, **next;
pam_facility_t fclt;
pam_control_t ctlf;
- char *line, *str, *name;
+ char *line0, *line, *str, *name;
char *option, **optv;
int len, lineno, ret;
FILE *f;
@@ -377,18 +377,18 @@ openpam_parse_chain(pam_handle_t *pamh,
this = NULL;
name = NULL;
lineno = 0;
- while ((line = openpam_readline(f, &lineno, NULL)) != NULL) {
+ while ((line0 = line = openpam_readline(f, &lineno, NULL)) != NULL) {
/* get service name if necessary */
if (style == pam_conf_style) {
if ((len = parse_service_name(&line, &str)) == 0) {
openpam_log(PAM_LOG_NOTICE,
"%s(%d): invalid service name (ignored)",
filename, lineno);
- FREE(line);
+ FREE(line0);
continue;
}
if (strlcmp(service, str, len) != 0) {
- FREE(line);
+ FREE(line0);
continue;
}
}
@@ -401,7 +401,7 @@ openpam_parse_chain(pam_handle_t *pamh,
goto fail;
}
if (facility != fclt && facility != PAM_FACILITY_ANY) {
- FREE(line);
+ FREE(line0);
continue;
}
@@ -425,7 +425,7 @@ openpam_parse_chain(pam_handle_t *pamh,
FREE(name);
if (ret != PAM_SUCCESS)
goto fail;
- FREE(line);
+ FREE(line0);
continue;
}
@@ -486,7 +486,7 @@ openpam_parse_chain(pam_handle_t *pamh,
this = NULL;
/* next please... */
- FREE(line);
+ FREE(line0);
}
if (!feof(f))
goto syserr;
More information about the svn-src-all
mailing list