diff options
author | tuexen <tuexen@FreeBSD.org> | 2010-06-26 19:26:20 +0000 |
---|---|---|
committer | tuexen <tuexen@FreeBSD.org> | 2010-06-26 19:26:20 +0000 |
commit | d27c0f60a0f8185fdbbbe9315f6356b7129c99ed (patch) | |
tree | 401040b2029f72377fa0e09b7581643796d52143 | |
parent | b6b773b1d65ea5fb2acc2fe4f596c78630d50542 (diff) | |
download | FreeBSD-src-d27c0f60a0f8185fdbbbe9315f6356b7129c99ed.zip FreeBSD-src-d27c0f60a0f8185fdbbbe9315f6356b7129c99ed.tar.gz |
* Do not dereference a NULL pointer when calling an SCTP send syscall
not providing a destination address and using ktrace.
* Do not copy out kernel memory when providing sinfo for sctp_recvmsg().
Both bug where reported by Valentin Nechayev.
The first bug results in a kernel panic.
MFC after: 3 days.
-rw-r--r-- | sys/kern/uipc_syscalls.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c index e987cd9..6585e83 100644 --- a/sys/kern/uipc_syscalls.c +++ b/sys/kern/uipc_syscalls.c @@ -2409,7 +2409,7 @@ sctp_generic_sendmsg (td, uap) if (error) goto sctp_bad; #ifdef KTRACE - if (KTRPOINT(td, KTR_STRUCT)) + if (to && (KTRPOINT(td, KTR_STRUCT))) ktrsockaddr(to); #endif @@ -2523,7 +2523,7 @@ sctp_generic_sendmsg_iov(td, uap) if (error) goto sctp_bad1; #ifdef KTRACE - if (KTRPOINT(td, KTR_STRUCT)) + if (to && (KTRPOINT(td, KTR_STRUCT))) ktrsockaddr(to); #endif @@ -2677,6 +2677,7 @@ sctp_generic_recvmsg(td, uap) if (KTRPOINT(td, KTR_GENIO)) ktruio = cloneuio(&auio); #endif /* KTRACE */ + memset(&sinfo, 0, sizeof(struct sctp_sndrcvinfo)); CURVNET_SET(so->so_vnet); error = sctp_sorecvmsg(so, &auio, (struct mbuf **)NULL, fromsa, fromlen, &msg_flags, |