summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathias Krause <minipli@googlemail.com>2012-08-15 11:31:55 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-10-02 10:29:37 -0700
commit59039dc90bb7879bd4c8c959109d27131f0ce40f (patch)
tree63a3e774f903b4f560702083debf6749c33fd9ef
parent00ed5b8f397447a944a3305274b74049bfcd633f (diff)
downloadlinux-3.10-59039dc90bb7879bd4c8c959109d27131f0ce40f.tar.gz
linux-3.10-59039dc90bb7879bd4c8c959109d27131f0ce40f.tar.bz2
linux-3.10-59039dc90bb7879bd4c8c959109d27131f0ce40f.zip
dccp: fix info leak via getsockopt(DCCP_SOCKOPT_CCID_TX_INFO)
[ Upstream commit 7b07f8eb75aa3097cdfd4f6eac3da49db787381d ] The CCID3 code fails to initialize the trailing padding bytes of struct tfrc_tx_info added for alignment on 64 bit architectures. It that for potentially leaks four bytes kernel stack via the getsockopt() syscall. Add an explicit memset(0) before filling the structure to avoid the info leak. Signed-off-by: Mathias Krause <minipli@googlemail.com> Cc: Gerrit Renker <gerrit@erg.abdn.ac.uk> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--net/dccp/ccids/ccid3.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/dccp/ccids/ccid3.c b/net/dccp/ccids/ccid3.c
index 70bfaf2d196..b658f3b8a23 100644
--- a/net/dccp/ccids/ccid3.c
+++ b/net/dccp/ccids/ccid3.c
@@ -531,6 +531,7 @@ static int ccid3_hc_tx_getsockopt(struct sock *sk, const int optname, int len,
case DCCP_SOCKOPT_CCID_TX_INFO:
if (len < sizeof(tfrc))
return -EINVAL;
+ memset(&tfrc, 0, sizeof(tfrc));
tfrc.tfrctx_x = hc->tx_x;
tfrc.tfrctx_x_recv = hc->tx_x_recv;
tfrc.tfrctx_x_calc = hc->tx_x_calc;