DragonFlyBSD Kernel Audit
DF-2863 / fix.diff
← back to finding ↓ download raw
--- a/sys/kern/vfs_conf.c
+++ b/sys/kern/vfs_conf.c
@@ -399,6 +399,7 @@
 	char		patt[32];
 	const char	*cp, *ep;
 	char		*mf;
+	size_t		seglen;
 	struct proc	*p;
 	struct vnode	*vp;
 
@@ -424,7 +425,10 @@
 		bzero(vfsname, MFSNAMELEN);
 		bzero(devname, MNAMELEN);
 		bzero(mf, MFSNAMELEN+MNAMELEN);
-		strncpy(mf, cp, MFSNAMELEN+MNAMELEN);
+		seglen = (size_t)(ep - cp);
+		if (seglen >= MFSNAMELEN+MNAMELEN)
+			seglen = MFSNAMELEN+MNAMELEN - 1;
+		bcopy(cp, mf, seglen);
 
 		vfsname[0] = devname[0] = 0;
 		ksprintf(patt, "%%%d[a-z0-9]:%%%ds", MFSNAMELEN, MNAMELEN);