rxrpc: Fix undefined packet handling
authorDavid Howells <dhowells@redhat.com>
Mon, 2 Apr 2018 22:51:39 +0000 (23:51 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 4 Apr 2018 15:04:08 +0000 (11:04 -0400)
By analogy with other Rx implementations, RxRPC packet types 9, 10 and 11
should just be discarded rather than being aborted like other undefined
packet types.

Reported-by: Jeffrey Altman <jaltman@auristor.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/rxrpc/input.c
net/rxrpc/protocol.h

index 21800e6f5019dbc3b22fdaca2f40ce8710137caa..0410d2277ca28bcf0259df897581b947f707fac1 100644 (file)
@@ -1200,6 +1200,12 @@ void rxrpc_data_ready(struct sock *udp_sk)
                    !rxrpc_validate_jumbo(skb))
                        goto bad_message;
                break;
+
+               /* Packet types 9-11 should just be ignored. */
+       case RXRPC_PACKET_TYPE_PARAMS:
+       case RXRPC_PACKET_TYPE_10:
+       case RXRPC_PACKET_TYPE_11:
+               goto discard;
        }
 
        rcu_read_lock();
index 4bddcf3face3342b69d9aa6402da638b0687d37c..93da73bf709857bbd48b2859092175bf43df8dfd 100644 (file)
@@ -46,6 +46,9 @@ struct rxrpc_wire_header {
 #define RXRPC_PACKET_TYPE_CHALLENGE    6       /* connection security challenge (SRVR->CLNT) */
 #define RXRPC_PACKET_TYPE_RESPONSE     7       /* connection secutity response (CLNT->SRVR) */
 #define RXRPC_PACKET_TYPE_DEBUG                8       /* debug info request */
+#define RXRPC_PACKET_TYPE_PARAMS       9       /* Parameter negotiation (unspec'd, ignore) */
+#define RXRPC_PACKET_TYPE_10           10      /* Ignored */
+#define RXRPC_PACKET_TYPE_11           11      /* Ignored */
 #define RXRPC_PACKET_TYPE_VERSION      13      /* version string request */
 #define RXRPC_N_PACKET_TYPES           14      /* number of packet types (incl type 0) */
 
@@ -78,6 +81,9 @@ struct rxrpc_wire_header {
                (1 << RXRPC_PACKET_TYPE_CHALLENGE) |    \
                (1 << RXRPC_PACKET_TYPE_RESPONSE) |     \
                /*(1 << RXRPC_PACKET_TYPE_DEBUG) | */   \
+               (1 << RXRPC_PACKET_TYPE_PARAMS) |       \
+               (1 << RXRPC_PACKET_TYPE_10) |           \
+               (1 << RXRPC_PACKET_TYPE_11) |           \
                (1 << RXRPC_PACKET_TYPE_VERSION))
 
 /*****************************************************************************/