Blob Blame History Raw
autofs-5.1.6 - fix trailing dollar sun entry expansion

From: Ian Kent <raven@themaw.net>

In modules/parse_sun.c:expandsunent() if we see "$ " or "$<NULL>" in
the entry it can't be a macro, and the value can't be quoted since '\'
and '"' cases are handled seperately in the swicth, so treat the
character as a valid entry character.

Signed-off-by: Ian Kent <raven@themaw.net>
---
 CHANGELOG           |    1 +
 modules/parse_sun.c |   12 ++++++++++++
 2 files changed, 13 insertions(+)

diff --git a/CHANGELOG b/CHANGELOG
index fa5992aa..07a85cde 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -7,6 +7,7 @@ xx/xx/2020 autofs-5.1.7
 - correct fsf address.
 - samples: fix Makefile targets' directory dependencies
 - remove intr hosts map mount option.
+- fix trailing dollar sun entry expansion.
 
 07/10/2019 autofs-5.1.6
 - support strictexpire mount option.
diff --git a/modules/parse_sun.c b/modules/parse_sun.c
index 71867ef1..f6c22d15 100644
--- a/modules/parse_sun.c
+++ b/modules/parse_sun.c
@@ -161,6 +161,18 @@ int expandsunent(const char *src, char *dst, const char *key,
 				}
 				src = p + 1;
 			} else {
+				/* If the '$' is folloed by a space or NULL it
+				 * can't be a macro, and the value can't be
+				 * quoted since '\' and '"' cases are handled
+				 * in other cases, so treat the $ as a valid
+				 * map entry character.
+				 */
+				if (isblank(*src) || !*src) {
+					if (dst)
+						*dst++ = ch;
+					len++;
+					break;
+				}
 				p = src;
 				while (isalnum(*p) || *p == '_')
 					p++;