From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EF304C43381 for ; Fri, 15 Mar 2019 20:11:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 96939218A1 for ; Fri, 15 Mar 2019 20:11:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ericsson.com header.i=@ericsson.com header.b="CwfMRO+j" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726465AbfCOULF (ORCPT ); Fri, 15 Mar 2019 16:11:05 -0400 Received: from sessmg22.ericsson.net ([193.180.251.58]:47242 "EHLO sessmg22.ericsson.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726292AbfCOULF (ORCPT ); Fri, 15 Mar 2019 16:11:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; d=ericsson.com; s=mailgw201801; c=relaxed/relaxed; q=dns/txt; i=@ericsson.com; t=1552680662; x=1555272662; h=From:Sender:Reply-To:Subject:Date:Message-ID:To:CC:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=J45QHlYK7Jgp6zB52M1ZMvvAn4T0tJk7L0XUe63WFrs=; b=CwfMRO+jbtwypQT2KvPEbrNRr2XIpprA9fQCtPQzdUHWKIV64g9Owu0pXQjQ8wvw vYHNbDh66CCo8PI4qfU2thNP+M/WhydxpWxkWkBusFiyo4FPir0AKsA8iMyleULE MfJa2/J0ie7GSqmzE5fZAaSQrQ0SdwRzbgfokqr/v3g=; X-AuditID: c1b4fb3a-5c9c29e00000672c-4c-5c8c06d64abe Received: from ESESBMB501.ericsson.se (Unknown_Domain [153.88.183.114]) by sessmg22.ericsson.net (Symantec Mail Security) with SMTP id BA.55.26412.6D60C8C5; Fri, 15 Mar 2019 21:11:02 +0100 (CET) Received: from ESESSMB505.ericsson.se (153.88.183.166) by ESESBMB501.ericsson.se (153.88.183.168) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1466.3; Fri, 15 Mar 2019 21:11:00 +0100 Received: from tipsy.lab.linux.ericsson.se (153.88.183.153) by smtp.internal.ericsson.com (153.88.183.193) with Microsoft SMTP Server id 15.1.1466.3 via Frontend Transport; Fri, 15 Mar 2019 21:11:00 +0100 From: Jon Maloy To: , CC: , , , , , , Subject: [net 1/1] tipc: allow service ranges to be connect()'ed on RDM/DGRAM Date: Fri, 15 Mar 2019 21:11:00 +0100 Message-ID: <1552680660-9459-1-git-send-email-jon.maloy@ericsson.com> X-Mailer: git-send-email 2.1.4 MIME-Version: 1.0 Content-Type: text/plain X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrDLMWRmVeSWpSXmKPExsUyM2J7ke41tp4Yg84XUhY3GnqYLeacb2Gx WLF7EqvF21ez2C2OLRCz2HI+y+JK+1l2i8fXrzM7cHhsWXmTyePdFTaP3Qs+M3l83iTnsX7L VqYA1igum5TUnMyy1CJ9uwSujHUdTawF5/gqfj74zdbA+JG7i5GTQ0LAROL3pAusXYxcHEIC RxglJk57zQzhfGOUuH1uHSOEc4FRYu/sD6wgLWwCGhIvp3UwgtgiAsYSr1Z2MoEUMQs8ZpT4 cn8VG0hCWMBPYs3T00wgNouAqsSMKfPZQWxeAVeJ37PeMEHslpM4f/wnM4gtJKAsMffDNCaI GkGJkzOfsIDYzAISEgdfvGCewMg3C0lqFpLUAkamVYyixanFxbnpRkZ6qUWZycXF+Xl6eakl mxiBYXpwy2+rHYwHnzseYhTgYFTi4VX61h0jxJpYVlyZe4hRgoNZSYT3sT5QiDclsbIqtSg/ vqg0J7X4EKM0B4uSOO8fIcEYIYH0xJLU7NTUgtQimCwTB6dUA2OB2BbFlbkFex9HhZTJruFt WP/nhdxkb4Z/rA+fLQxX7t11YZa/i+Cywy6frcP+vmLm+v3LqyOE0/jl0zdN11Z80W1qOnMq /+JqQy7/OVUbKnw1BQUYWwufrPx36jL/MuZme1vGpKbOB2rPrX6yKR9w+hqzpeN2jo1SZrd6 I7vUh13Xapenr1JiKc5INNRiLipOBADMLoOjTwIAAA== Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Erik Hugne We move the check that prevents connecting service ranges to after the RDM/DGRAM check, and separate address sanity control to a separate function that also validates the service range. Fixes: 23998835be98 ("tipc: improve address sanity check in tipc_connect()") Signed-off-by: Erik Hugne Signed-off-by: Jon Maloy --- net/tipc/socket.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/net/tipc/socket.c b/net/tipc/socket.c index 3274ef6..1950781 100644 --- a/net/tipc/socket.c +++ b/net/tipc/socket.c @@ -2349,6 +2349,16 @@ static int tipc_wait_for_connect(struct socket *sock, long *timeo_p) return 0; } +static int tipc_sockaddr_is_sane(struct sockaddr_tipc *addr) +{ + if (addr->family != AF_TIPC) + return 0; + if (addr->addrtype == TIPC_SERVICE_RANGE) + return (addr->addr.nameseq.lower <= addr->addr.nameseq.upper); + return (addr->addrtype == TIPC_SERVICE_ADDR || + addr->addrtype == TIPC_SOCKET_ADDR); +} + /** * tipc_connect - establish a connection to another TIPC port * @sock: socket structure @@ -2384,18 +2394,18 @@ static int tipc_connect(struct socket *sock, struct sockaddr *dest, if (!tipc_sk_type_connectionless(sk)) res = -EINVAL; goto exit; - } else if (dst->family != AF_TIPC) { - res = -EINVAL; } - if (dst->addrtype != TIPC_ADDR_ID && dst->addrtype != TIPC_ADDR_NAME) + if (!tipc_sockaddr_is_sane(dst)) { res = -EINVAL; - if (res) goto exit; - + } /* DGRAM/RDM connect(), just save the destaddr */ if (tipc_sk_type_connectionless(sk)) { memcpy(&tsk->peer, dest, destlen); goto exit; + } else if (dst->addrtype == TIPC_SERVICE_RANGE) { + res = -EINVAL; + goto exit; } previous = sk->sk_state; -- 2.1.4