svn commit: r329392 - stable/11/usr.sbin/mountd

Brad Davis brd at FreeBSD.org
Fri Feb 16 18:49:51 UTC 2018


Author: brd (doc,ports committer)
Date: Fri Feb 16 18:49:50 2018
New Revision: 329392
URL: https://svnweb.freebsd.org/changeset/base/329392

Log:
  MFC r329009
  
  mountd(8): Produce vaguely meaningful error messages
  
  Approved by:	cem, will

Modified:
  stable/11/usr.sbin/mountd/mountd.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/usr.sbin/mountd/mountd.c
==============================================================================
--- stable/11/usr.sbin/mountd/mountd.c	Fri Feb 16 18:23:27 2018	(r329391)
+++ stable/11/usr.sbin/mountd/mountd.c	Fri Feb 16 18:49:50 2018	(r329392)
@@ -199,7 +199,7 @@ static struct hostlist *get_ht(void);
 static int	get_line(void);
 static void	get_mountlist(void);
 static int	get_net(char *, struct netmsk *, int);
-static void	getexp_err(struct exportlist *, struct grouplist *);
+static void	getexp_err(struct exportlist *, struct grouplist *, const char *);
 static struct grouplist	*get_grp(void);
 static void	hang_dirp(struct dirlist *, struct grouplist *,
 				struct exportlist *, int);
@@ -1448,12 +1448,13 @@ get_exportlist_one(void)
 		tgrp = grp = get_grp();
 		while (len > 0) {
 			if (len > MNTNAMLEN) {
-			    getexp_err(ep, tgrp);
+			    getexp_err(ep, tgrp, "mountpoint too long");
 			    goto nextline;
 			}
 			if (*cp == '-') {
 			    if (ep == (struct exportlist *)NULL) {
-				getexp_err(ep, tgrp);
+				getexp_err(ep, tgrp,
+				    "flag before export path definition");
 				goto nextline;
 			    }
 			    if (debug)
@@ -1461,7 +1462,7 @@ get_exportlist_one(void)
 			    got_nondir = 1;
 			    if (do_opt(&cp, &endcp, ep, grp, &has_host,
 				&exflags, &anon)) {
-				getexp_err(ep, tgrp);
+				getexp_err(ep, tgrp, NULL);
 				goto nextline;
 			    }
 			} else if (*cp == '/') {
@@ -1469,8 +1470,7 @@ get_exportlist_one(void)
 			    *endcp = '\0';
 			    if (v4root_phase > 1) {
 				    if (dirp != NULL) {
-					syslog(LOG_ERR, "Multiple V4 dirs");
-					getexp_err(ep, tgrp);
+					getexp_err(ep, tgrp, "Multiple V4 dirs");
 					goto nextline;
 				    }
 			    }
@@ -1480,14 +1480,12 @@ get_exportlist_one(void)
 				    syslog(LOG_ERR, "Warning: exporting of "
 					"automounted fs %s not supported", cp);
 				if (got_nondir) {
-				    syslog(LOG_ERR, "dirs must be first");
-				    getexp_err(ep, tgrp);
+				    getexp_err(ep, tgrp, "dirs must be first");
 				    goto nextline;
 				}
 				if (v4root_phase == 1) {
 				    if (dirp != NULL) {
-					syslog(LOG_ERR, "Multiple V4 dirs");
-					getexp_err(ep, tgrp);
+					getexp_err(ep, tgrp, "Multiple V4 dirs");
 					goto nextline;
 				    }
 				    if (strlen(v4root_dirpath) == 0) {
@@ -1497,7 +1495,7 @@ get_exportlist_one(void)
 					!= 0) {
 					syslog(LOG_ERR,
 					    "different V4 dirpath %s", cp);
-					getexp_err(ep, tgrp);
+					getexp_err(ep, tgrp, NULL);
 					goto nextline;
 				    }
 				    dirp = cp;
@@ -1510,7 +1508,8 @@ get_exportlist_one(void)
 					    fsb.f_fsid.val[0] ||
 					    ep->ex_fs.val[1] !=
 					    fsb.f_fsid.val[1]) {
-						getexp_err(ep, tgrp);
+						getexp_err(ep, tgrp,
+						    "fsid mismatch");
 						goto nextline;
 					}
 				    } else {
@@ -1543,7 +1542,8 @@ get_exportlist_one(void)
 				    dirplen = len;
 				}
 			    } else {
-				getexp_err(ep, tgrp);
+				getexp_err(ep, tgrp,
+				    "symbolic link in export path or statfs failed");
 				goto nextline;
 			    }
 			    *endcp = savedc;
@@ -1552,7 +1552,8 @@ get_exportlist_one(void)
 			    *endcp = '\0';
 			    got_nondir = 1;
 			    if (ep == (struct exportlist *)NULL) {
-				getexp_err(ep, tgrp);
+				getexp_err(ep, tgrp,
+				    "host(s) before export path definition");
 				goto nextline;
 			    }
 
@@ -1590,7 +1591,7 @@ get_exportlist_one(void)
 			len = endcp - cp;
 		}
 		if (check_options(dirhead)) {
-			getexp_err(ep, tgrp);
+			getexp_err(ep, tgrp, NULL);
 			goto nextline;
 		}
 		if (!has_host) {
@@ -1603,8 +1604,7 @@ get_exportlist_one(void)
 		 * host(s) on the same line.
 		 */
 		} else if ((opt_flags & OP_NET) && tgrp->gr_next) {
-			syslog(LOG_ERR, "network/host conflict");
-			getexp_err(ep, tgrp);
+			getexp_err(ep, tgrp, "network/host conflict");
 			goto nextline;
 
 		/*
@@ -1616,14 +1616,13 @@ get_exportlist_one(void)
 			while (grp && grp->gr_type == GT_IGNORE)
 				grp = grp->gr_next;
 			if (! grp) {
-			    getexp_err(ep, tgrp);
+			    getexp_err(ep, tgrp, "no valid entries");
 			    goto nextline;
 			}
 		}
 
 		if (v4root_phase == 1) {
-			syslog(LOG_ERR, "V4:root, no dirp, ignored");
-			getexp_err(ep, tgrp);
+			getexp_err(ep, tgrp, "V4:root, no dirp, ignored");
 			goto nextline;
 		}
 
@@ -1636,7 +1635,7 @@ get_exportlist_one(void)
 		do {
 			if (do_mount(ep, grp, exflags, &anon, dirp, dirplen,
 			    &fsb)) {
-				getexp_err(ep, tgrp);
+				getexp_err(ep, tgrp, NULL);
 				goto nextline;
 			}
 		} while (grp->gr_next && (grp = grp->gr_next));
@@ -1878,12 +1877,17 @@ get_grp(void)
  * Clean up upon an error in get_exportlist().
  */
 static void
-getexp_err(struct exportlist *ep, struct grouplist *grp)
+getexp_err(struct exportlist *ep, struct grouplist *grp, const char *reason)
 {
 	struct grouplist *tgrp;
 
-	if (!(opt_flags & OP_QUIET))
-		syslog(LOG_ERR, "bad exports list line %s", line);
+	if (!(opt_flags & OP_QUIET)) {
+		if (reason != NULL)
+			syslog(LOG_ERR, "bad exports list line '%s': %s", line,
+			    reason);
+		else
+			syslog(LOG_ERR, "bad exports list line '%s'", line);
+	}
 	if (ep && (ep->ex_flag & EX_LINKED) == 0)
 		free_exp(ep);
 	while (grp) {


More information about the svn-src-all mailing list