DF-0050 / fix.diff
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: |