[PATCH] dccp: Reponsed with Reset when packet is received with invalid option

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



RFC4340 said that if a packet is received with invalid option(such as Mandatory
Option as the last byte of the option list), endpoint should reponsed with
Reset. In LISTIN state and RESPOND state, the endpoint reponsed with reset
correctly, but in REQUEST state and OPEN state, the endpoint just ignored
the packet. The packet sequence is as the following:

Case 1:

 Endpoint A                           Endpoint B
 (CLOSED)                             (CLOSED)

              <----------------       REQUEST

 RESPONSE     ----------------->      (*1)
 (with invalid option)
              <----------------       RESET
                                      (with Reset Code 5, "Option Error")

 (*1) it just be ignored currently, no reset is sent

Case 2:

 Endpoint A                           Endpoint B
 (OPEN)                               (OPEN)

 DATA-ACK     ----------------->      (*2)
 (with invalid option)
              <----------------       RESET
                                      (with Reset Code 5, "Option Error")

 (*2) it just be ignored currently, no reset is sent

This patch fixed the problem by reponsed with Reset instead of ignore packet.

Signed-off-by: Wei Yongjun <yjwei@xxxxxxxxxxxxxx>
---
net/dccp/input.c |    4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/dccp/input.c b/net/dccp/input.c
index dab4cc9..df0e671 100644
--- a/net/dccp/input.c
+++ b/net/dccp/input.c
@@ -370,7 +370,7 @@ int dccp_rcv_established(struct sock *sk, struct sk_buff *skb,
		goto discard;

	if (dccp_parse_options(sk, NULL, skb))
-		goto discard;
+		return 1;

	dccp_handle_ackvec_processing(sk, skb);
	dccp_deliver_input_to_ccids(sk, skb);
@@ -631,7 +631,7 @@ int dccp_rcv_state_process(struct sock *sk, struct sk_buff *skb,

	/*  Step 8: Process options */
	if (dccp_parse_options(sk, NULL, skb))
-		goto discard;
+		return 1;

	/*
	 *  Step 9: Process Reset
--
1.5.3.8



--
To unsubscribe from this list: send the line "unsubscribe dccp" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [IETF DCCP]     [Linux Networking]     [Git]     [Security]     [Linux Assembly]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux