DragonFlyBSD Kernel Audit
DF-0050 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/kern/sysv_msg.c b/sys/kern/sysv_msg.c
--- a/sys/kern/sysv_msg.c
+++ b/sys/kern/sysv_msg.c
@@ -321,7 +321,16 @@
 			eval = EINVAL;
 			break;
 		}
-		eval = copyout(msqptr, user_msqptr, sizeof(struct msqid_ds));
+		{
+		struct msqid_ds msqout = *msqptr;
+		msqout.msg_first = NULL;
+		msqout.msg_last = NULL;
+		msqout.msg_pad1 = 0;
+		msqout.msg_pad2 = 0;
+		msqout.msg_pad3 = 0;
+		bzero(msqout.msg_pad4, sizeof(msqout.msg_pad4));
+		eval = copyout(&msqout, user_msqptr, sizeof(msqout));
+	}
 		break;
 
 	default: