⬢ DragonFlyBSD Kernel Audit
DF-5808 / fix.diff
← back to finding ↓ download raw
--- a/sys/vfs/hammer/hammer_vnops.c
+++ b/sys/vfs/hammer/hammer_vnops.c
@@ -2577,7 +2577,7 @@
 						    &error);
 		}
 
-		*ap->a_res += usedbytes;
+		*ap->a_res = usedbytes;
 		break;
 	default:
 		error = vop_stdmountctl(ap);
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -1331,6 +1331,8 @@
 			      buf, uap->buflen, &sysmsg->sysmsg_result);
 	if (fp)
 		dropfp(td, uap->fd, fp);
+	if (sysmsg->sysmsg_result > uap->buflen)	/* DF-5808 */
+		sysmsg->sysmsg_result = uap->buflen;
 	if (error == 0 && sysmsg->sysmsg_result > 0)
 		error = copyout(buf, uap->buf, sysmsg->sysmsg_result);
 done: