git: ad055467bec3 - main - Fix for getmntpoint(3) when checking for NFS mount points.

From: Kirk McKusick <mckusick_at_FreeBSD.org>
Date: Sun, 29 Jan 2023 23:14:54 UTC
The branch main has been updated by mckusick:

URL: https://cgit.FreeBSD.org/src/commit/?id=ad055467bec35885dc3eff2f4dd765f5b2f53259

commit ad055467bec35885dc3eff2f4dd765f5b2f53259
Author:     Kirk McKusick <mckusick@FreeBSD.org>
AuthorDate: 2023-01-29 23:12:48 +0000
Commit:     Kirk McKusick <mckusick@FreeBSD.org>
CommitDate: 2023-01-29 23:14:43 +0000

    Fix for getmntpoint(3) when checking for NFS mount points.
    
    Only attempt to add /dev/ to f_mntfromname names that result in a
    valid character device.
    
    MFC after:    1 week
    Reported by:  Bjoern A. Zeeb
    Sponsored by: The FreeBSD Foundation
    Differential Revision: https://reviews.freebsd.org/D37907
---
 sbin/mount/getmntopts.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/sbin/mount/getmntopts.c b/sbin/mount/getmntopts.c
index 7702da903749..3a5cac0d9bac 100644
--- a/sbin/mount/getmntopts.c
+++ b/sbin/mount/getmntopts.c
@@ -177,6 +177,11 @@ getmntpoint(const char *name)
 	mntsize = getmntinfo(&mntbuf, MNT_NOWAIT);
 	for (i = 0; i < mntsize; i++) {
 		statfsp = &mntbuf[i];
+		if (isdev == 0) {
+			if (strcmp(name, statfsp->f_mntonname))
+				continue;
+			return (statfsp);
+		}
 		ddevname = statfsp->f_mntfromname;
 		if (*ddevname != '/') {
 			if ((len = strlen(_PATH_DEV) + strlen(ddevname) + 1) >
@@ -185,12 +190,8 @@ getmntpoint(const char *name)
 				continue;
 			strncpy(device, _PATH_DEV, len);
 			strncat(device, ddevname, len);
-			strncpy(statfsp->f_mntfromname, device, len);
-		}
-		if (isdev == 0) {
-			if (strcmp(name, statfsp->f_mntonname))
-				continue;
-			return (statfsp);
+			if (stat(device, &mntdevstat) == 0)
+				strncpy(statfsp->f_mntfromname, device, len);
 		}
 		if (stat(ddevname, &mntdevstat) == 0 &&
 		    mntdevstat.st_rdev == devstat.st_rdev)