sctp: sctp_sendmsg: Don't initialize default_sinfo
authorJoe Perches <joe@perches.com>
Thu, 12 May 2011 11:27:20 +0000 (11:27 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 12 May 2011 21:30:49 +0000 (17:30 -0400)
This variable only needs initialization when cmsgs.info
is NULL.

Use memset to ensure padding is also zeroed so
kernel doesn't leak any data.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/socket.c

index 33d9ee629b4e0611e3ae84528dba084f6719c423..d4b8db177e27fd304ed81f00ab79c55792202c6b 100644 (file)
@@ -1496,7 +1496,7 @@ SCTP_STATIC int sctp_sendmsg(struct kiocb *iocb, struct sock *sk,
        struct sctp_chunk *chunk;
        union sctp_addr to;
        struct sockaddr *msg_name = NULL;
-       struct sctp_sndrcvinfo default_sinfo = { 0 };
+       struct sctp_sndrcvinfo default_sinfo;
        struct sctp_sndrcvinfo *sinfo;
        struct sctp_initmsg *sinit;
        sctp_assoc_t associd = 0;
@@ -1760,6 +1760,7 @@ SCTP_STATIC int sctp_sendmsg(struct kiocb *iocb, struct sock *sk,
                /* If the user didn't specify SNDRCVINFO, make up one with
                 * some defaults.
                 */
+               memset(&default_sinfo, 0, sizeof(default_sinfo));
                default_sinfo.sinfo_stream = asoc->default_stream;
                default_sinfo.sinfo_flags = asoc->default_flags;
                default_sinfo.sinfo_ppid = asoc->default_ppid;