Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 3 Apr 2013 12:17:36 +0000 (UTC)
From:      Dag-Erling Smørgrav <des@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r249050 - in stable/9/contrib/openpam: doc/man lib
Message-ID:  <201304031217.r33CHaDm020319@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: des
Date: Wed Apr  3 12:17:35 2013
New Revision: 249050
URL: http://svnweb.freebsd.org/changeset/base/249050

Log:
  MFH (r247810): correctly parse mixed quoted / unquoted text.

Modified:
  stable/9/contrib/openpam/doc/man/openpam_straddch.3
  stable/9/contrib/openpam/lib/openpam_readline.c
  stable/9/contrib/openpam/lib/openpam_readword.c
Directory Properties:
  stable/9/contrib/openpam/   (props changed)

Modified: stable/9/contrib/openpam/doc/man/openpam_straddch.3
==============================================================================
--- stable/9/contrib/openpam/doc/man/openpam_straddch.3	Wed Apr  3 11:51:11 2013	(r249049)
+++ stable/9/contrib/openpam/doc/man/openpam_straddch.3	Wed Apr  3 12:17:35 2013	(r249050)
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd May 26, 2012
+.Dd March 3, 2013
 .Dt OPENPAM_STRADDCH 3
 .Os
 .Sh NAME
@@ -73,6 +73,21 @@ and
 argument point to variables used to hold the size
 of the buffer and the length of the string it contains, respectively.
 .Pp
+The final argument,
+.Fa ch ,
+is the character that should be appended to
+the string.  If
+.Fa ch
+is 0, nothing is appended, but a new buffer is
+still allocated if
+.Fa str
+is NULL.  This can be used to
+.Do
+bootstrap
+.Dc
+the
+string.
+.Pp
 If a new buffer is allocated or an existing buffer is reallocated to
 make room for the additional character,
 .Fa str
@@ -91,7 +106,9 @@ If the
 function is successful, it increments the
 integer variable pointed to by
 .Fa len
-and returns 0.
+(unless
+.Fa ch
+was 0) and returns 0.
 Otherwise, it leaves the variables pointed to by
 .Fa str ,
 .Fa size

Modified: stable/9/contrib/openpam/lib/openpam_readline.c
==============================================================================
--- stable/9/contrib/openpam/lib/openpam_readline.c	Wed Apr  3 11:51:11 2013	(r249049)
+++ stable/9/contrib/openpam/lib/openpam_readline.c	Wed Apr  3 12:17:35 2013	(r249050)
@@ -62,11 +62,9 @@ openpam_readline(FILE *f, int *lineno, s
 	size_t len, size;
 	int ch;
 
-	if ((line = malloc(size = MIN_LINE_LENGTH)) == NULL) {
-		openpam_log(PAM_LOG_ERROR, "malloc(): %m");
+	line = NULL;
+	if (openpam_straddch(&line, &size, &len, 0) != 0)
 		return (NULL);
-	}
-	len = 0;
 	for (;;) {
 		ch = fgetc(f);
 		/* strip comment */

Modified: stable/9/contrib/openpam/lib/openpam_readword.c
==============================================================================
--- stable/9/contrib/openpam/lib/openpam_readword.c	Wed Apr  3 11:51:11 2013	(r249049)
+++ stable/9/contrib/openpam/lib/openpam_readword.c	Wed Apr  3 12:17:35 2013	(r249050)
@@ -86,13 +86,8 @@ openpam_readword(FILE *f, int *lineno, s
 			/* begin quote */
 			quote = ch;
 			/* edge case: empty quoted string */
-			if (word == NULL && (word = malloc(1)) == NULL) {
-				openpam_log(PAM_LOG_ERROR, "malloc(): %m");
-				errno = ENOMEM;
+			if (openpam_straddch(&word, &size, &len, 0) != 0)
 				return (NULL);
-			}
-			*word = '\0';
-			size = 1;
 		} else if (ch == quote && !escape) {
 			/* end quote */
 			quote = 0;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201304031217.r33CHaDm020319>