DragonFlyBSD Kernel Audit
DF-0808 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/vfs/dirfs/dirfs_vnops.c b/sys/vfs/dirfs/dirfs_vnops.c

--- a/sys/vfs/dirfs/dirfs_vnops.c
+++ b/sys/vfs/dirfs/dirfs_vnops.c
@@ -978,9 +978,13 @@
 					      tncp->nc_name, &tpathfree);
 	fpath = dirfs_node_absolute_path_plus(dmp, fdnp,
 					      fncp->nc_name, &fpathfree);
-	error = rename(fpath, tpath);
-	if (error < 0)
-		error = errno;
+	if (fpath == NULL || tpath == NULL) {
+		error = ENAMETOOLONG;
+	} else {
+		error = rename(fpath, tpath);
+		if (error < 0)
+			error = errno;
+	}
 	if (error == 0) {
 		vp = fncp->nc_vp;	/* file being renamed */
 		dnp = VP_TO_NODE(vp);