You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.1 KiB
62 lines
2.1 KiB
autofs-5.0.7 - fix master map bogus keywork match |
|
|
|
From: Ian Kent <raven@themaw.net> |
|
|
|
If we have a map name in the master map that ends with a keyword |
|
of one of the map types or "multi" we mistakenly match the trailing |
|
white space and include that in the map name. This has to be wrong |
|
since we can't handle quoting in the master map and embedded white |
|
space must be escaped. It would be good if we handled quoted strings |
|
but that has proven a bit of a nightmare so far for the current |
|
tokenizer. |
|
--- |
|
CHANGELOG | 1 + |
|
lib/master_tok.l | 16 ++++++++++++++++ |
|
2 files changed, 17 insertions(+) |
|
|
|
diff --git a/CHANGELOG b/CHANGELOG |
|
index 00eaff2..e15aa1f 100644 |
|
--- a/CHANGELOG |
|
+++ b/CHANGELOG |
|
@@ -46,6 +46,7 @@ |
|
- fix interface address null check. |
|
- dont probe rdma mounts. |
|
- fix master map mount options matching. |
|
+- fix master map bogus keywork match. |
|
|
|
25/07/2012 autofs-5.0.7 |
|
======================= |
|
diff --git a/lib/master_tok.l b/lib/master_tok.l |
|
index 8d1f1a2..a55cc76 100644 |
|
--- a/lib/master_tok.l |
|
+++ b/lib/master_tok.l |
|
@@ -202,6 +202,14 @@ OPTNTOUT (-n{OPTWS}|-n{OPTWS}={OPTWS}|--negative-timeout{OPTWS}|--negative-timeo |
|
{MULTI} { |
|
tlen = master_leng - 1; |
|
if (bptr != buff && isblank(master_text[tlen])) { |
|
+ /* |
|
+ * We can't handle unescaped white space in map names |
|
+ * so just eat the white space. We always have the |
|
+ * "multi" at the beginning of the string so the while |
|
+ * will not fall off the end. |
|
+ */ |
|
+ while (isblank(master_text[tlen - 1])) |
|
+ tlen--; |
|
strncat(buff, master_text, tlen); |
|
bptr += tlen; |
|
yyless(tlen); |
|
@@ -216,6 +224,14 @@ OPTNTOUT (-n{OPTWS}|-n{OPTWS}={OPTWS}|--negative-timeout{OPTWS}|--negative-timeo |
|
{MTYPE}/{DNATTRSTR}= { |
|
tlen = master_leng - 1; |
|
if (bptr != buff && isblank(master_text[tlen])) { |
|
+ /* |
|
+ * We can't handle unescaped white space in map names |
|
+ * so just eat the white space. We always have the |
|
+ * maptype keyword at the beginning of the string so |
|
+ * the while will not fall off the end. |
|
+ */ |
|
+ while (isblank(master_text[tlen - 1])) |
|
+ tlen--; |
|
strncat(buff, master_text, tlen); |
|
bptr += tlen; |
|
yyless(tlen);
|
|
|