⬢ DragonFlyBSD Kernel Audit
DF-3162 / fix.diff
← back to finding ↓ download raw
fix for DF-3162: revoke(2) on a FIFO silently did nothing (DTYPE_FIFO mismatch)

Verified on the audit QEMU guest (see VERDICT.md in this directory).

@@ -1448,7 +1457,10 @@
 	 * fp goes away (if not still open by e.g. the kernel).
 	 */
 	if (vp->v_type != VCHR) {
-		error = fdrevoke(vp, DTYPE_VNODE, cred);
+		if (vp->v_type == VFIFO)
+			error = fdrevoke(vp, DTYPE_FIFO, cred);
+		else
+			error = fdrevoke(vp, DTYPE_VNODE, cred);
 		return (error);
 	}
 	if ((dev = vp->v_rdev) == NULL) {