| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
- From: Mohamed Ghannam <[email protected]>
- Date: Fri, 8 Dec 2017 15:39:50 +0100
- Subject: [PATCH] dccp: CVE-2017-8824: use-after-free in DCCP code
- MIME-Version: 1.0
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- Whenever the sock object is in DCCP_CLOSED state,
- dccp_disconnect() must free dccps_hc_tx_ccid and
- dccps_hc_rx_ccid and set to NULL.
- Signed-off-by: Mohamed Ghannam <[email protected]>
- Reviewed-by: Eric Dumazet <[email protected]>
- Signed-off-by: David S. Miller <[email protected]>
- CVE-2017-8824
- (cherry picked from commit 69c64866ce072dea1d1e59a0d61e0f66c0dffb76 linux-next)
- Signed-off-by: Kleber Sacilotto de Souza <[email protected]>
- Acked-by: Seth Forshee <[email protected]>
- Acked-by: Colin Ian King <[email protected]>
- Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
- Signed-off-by: Fabian Grünbichler <[email protected]>
- ---
- net/dccp/proto.c | 5 +++++
- 1 file changed, 5 insertions(+)
- diff --git a/net/dccp/proto.c b/net/dccp/proto.c
- index b68168fcc06a..9d43c1f40274 100644
- --- a/net/dccp/proto.c
- +++ b/net/dccp/proto.c
- @@ -259,6 +259,7 @@ int dccp_disconnect(struct sock *sk, int flags)
- {
- struct inet_connection_sock *icsk = inet_csk(sk);
- struct inet_sock *inet = inet_sk(sk);
- + struct dccp_sock *dp = dccp_sk(sk);
- int err = 0;
- const int old_state = sk->sk_state;
-
- @@ -278,6 +279,10 @@ int dccp_disconnect(struct sock *sk, int flags)
- sk->sk_err = ECONNRESET;
-
- dccp_clear_xmit_timers(sk);
- + ccid_hc_rx_delete(dp->dccps_hc_rx_ccid, sk);
- + ccid_hc_tx_delete(dp->dccps_hc_tx_ccid, sk);
- + dp->dccps_hc_rx_ccid = NULL;
- + dp->dccps_hc_tx_ccid = NULL;
-
- __skb_queue_purge(&sk->sk_receive_queue);
- __skb_queue_purge(&sk->sk_write_queue);
- --
- 2.14.2
|