Blob Blame History Raw
autofs-5.0.4 - reset flex scanner when setting buffer

From: Ian Kent <raven@themaw.net>

We still have problems resetting the flex scan buffer after an error
is detected. This appears to fix the problem.
---

 CHANGELOG        |    1 +
 lib/master_tok.l |    9 ++++++++-
 2 files changed, 9 insertions(+), 1 deletions(-)


diff --git a/CHANGELOG b/CHANGELOG
index c8b88e4..5f1cf7f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -38,6 +38,7 @@
 - fix lsb init script header.
 - fix memory leak reading master map.
 - fix st_remove_tasks() locking.
+- reset flex scanner when setting buffer.
 
 4/11/2008 autofs-5.0.4
 -----------------------
diff --git a/lib/master_tok.l b/lib/master_tok.l
index b6cc8be..373248b 100644
--- a/lib/master_tok.l
+++ b/lib/master_tok.l
@@ -130,7 +130,6 @@ OPTNTOUT	(-n{OPTWS}|-n{OPTWS}={OPTWS}|--negative-timeout{OPTWS}|--negative-timeo
 	\x00 {
 		if (optr != buff) {
 			*optr = '\0';
-			optr = buff;
 			strcpy(master_lval.strtype, buff);
 			return NILL;
 		}
@@ -139,6 +138,11 @@ OPTNTOUT	(-n{OPTWS}|-n{OPTWS}={OPTWS}|--negative-timeout{OPTWS}|--negative-timeo
 	#.*  { return COMMENT; }
 
 	"/" {
+		if (optr != buff) {
+			*optr = '\0';
+			strcpy(master_lval.strtype, buff);
+			return NILL;
+		}
 		BEGIN(PATHSTR);
 		bptr = buff;
 		yyless(0);
@@ -410,6 +414,9 @@ static void master_echo(void)
 
 void master_set_scan_buffer(const char *buffer)
 {
+	master_lex_destroy();
+	optr = buff;
+
 	line = buffer;
 	line_pos = &line[0];
 	/*