Received: by 2002:a25:86ce:0:0:0:0:0 with SMTP id y14csp1093837ybm; Tue, 21 May 2019 08:32:33 -0700 (PDT) X-Google-Smtp-Source: APXvYqxoEo2lmroFr0HvfN4H9iLQ8CMcJLFpsjCN8KzN40zLreVbYPVZ1DdK1pbei8feoi5X4Fmj X-Received: by 2002:a62:5f42:: with SMTP id t63mr45757585pfb.83.1558452753151; Tue, 21 May 2019 08:32:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558452753; cv=none; d=google.com; s=arc-20160816; b=QFiSajfxdyl6hMvZLwD6YjcW1kp86whKyXYgumhMDqzifJ6izWvYI5+iZF6wNom7VR o804Rq6iPnJaRGNYtnVekiOOIMZhnQ62ff86V4MX+jPWxQ0a6RbC5KCfOppyTzuhvwaE Zy/ApzxXqROZMZxUSv9RygCeMG3Wh1lwxJJ6BkKyZDb4ovS3qQIuyNuw6HHE6cN81wA1 DY0im8baHmkp24dGhmZ8ZPGda/tABqEvMRbEEjQuswFupjaFAiMN0uy7C/2DTHZKmeIZ lZWMBuKCs+6ajkrjd0+F51AmlyWCu4GzVn9afKU2UVX3xdkIFAzJu6eZUPkuH/qXQsSk 1yPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=KWOHZODUUyunDgNs5B1B0Qzkf/SDTn0BMnr1ZqAsBvs=; b=a1Abt9JoXDm9hsJu80kU6pZHHS+5+xicYVVpCYD3INqHqG+KK+YhlBS6AkVfdXZfCf bT259XL4firOVD/0lytlXGXYhL68QmHjL9JtY62x57niQJihMqMQxru9MG4WHWWZ6UPi S2dkKoyKqTUHl4ghVm18bY+YJCsiM9Ed2OUxO1ZOI9TfmTYeEmjPsI9HGjK7lSROmSWB lPLkSCYDc7XXXEK/k8Ven4ln25aTmCjmPh2gVYIpjqfe3tDvgWTksY5bMCPS2DqAcuGY oBlWeRzVGs2lKdsm66rjguxA0lqv1V8ZE5Ha0uz14hMKFvFBVzWmCxtyPbQpsG07gfIY 6qEw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=c4qL9fxK; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j91si21311153pld.267.2019.05.21.08.32.17; Tue, 21 May 2019 08:32:33 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=c4qL9fxK; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728571AbfEUPay (ORCPT + 99 others); Tue, 21 May 2019 11:30:54 -0400 Received: from mail-pf1-f193.google.com ([209.85.210.193]:40148 "EHLO mail-pf1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728298AbfEUPay (ORCPT ); Tue, 21 May 2019 11:30:54 -0400 Received: by mail-pf1-f193.google.com with SMTP id u17so9255766pfn.7; Tue, 21 May 2019 08:30:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=KWOHZODUUyunDgNs5B1B0Qzkf/SDTn0BMnr1ZqAsBvs=; b=c4qL9fxKUhzVGcf7gk/+Tr6l41IYLs4L+0yu4O0LYsMXgzld3/DyDvBEdZfFdHFY+k OfINvcBKVUzsHFL2i0oBVfHX7cwjY5QrbttT9gmZKW20FoTQwCmIOnQ+4JJHfohuKGgT ypWtvcIxZN+5gZrjtbpAxwF31iGqB8fF3mXxgst1m/J6Q1CrPGYYtvYkdYJ3fBP8HneD EsvC75dHreCPr3S/8tLO63oHYp9LHPk50eDwmDAwNNzmHpMZylIRfdIvPk5ahH3FUaYJ obDfXL97SpBtUsP/WUPmkHeeKKAtzmydI3HLF8RJOpoOTmErO4nSbrwYAwVk5ONuxFDk u+NQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=KWOHZODUUyunDgNs5B1B0Qzkf/SDTn0BMnr1ZqAsBvs=; b=f3npvPhpyPCYdKlKxvFPTd8ND2ff+M+KkA5u8DzakSjHHk0zikO/9DxYjPmqcIUxw8 MWXlJPftZeAxYZCb7AqZBk4OBi8M94iPI7nz6D7lyDveONou1b6UvKNfRU8Xahuez0aW vIaftV7SArhsRf/vv10nxxPKh6XjnG8SgX/AV4cNT9gQZ+y+tej33tah4CA+rOSx48g6 qJL8AdCE92anntKC/4AifEf7hu10oYMSkNg9J5MIx/Uv1al1+6AMrEWSjMrXhTnO1V2x XQxaSK5wgFHXZTSs1fI+vntDdGvGCA65I2T9pgxU7G1sEmnocPFxO017BvvciElwwSWc 5afQ== X-Gm-Message-State: APjAAAWjIDFf4Mbt4/YUmdSBOBhzNpGbJ6Ni3v765CykG9esoQRlsKbA CsKcEvpHpWViUAlq0glfZKiAqXrkodQ= X-Received: by 2002:a63:d150:: with SMTP id c16mr82709090pgj.439.1558452653182; Tue, 21 May 2019 08:30:53 -0700 (PDT) Received: from localhost.localdomain ([27.61.167.91]) by smtp.googlemail.com with ESMTPSA id e62sm25543035pfa.50.2019.05.21.08.30.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 May 2019 08:30:52 -0700 (PDT) From: Anirudh Gupta X-Google-Original-From: Anirudh Gupta To: Steffen Klassert Cc: Anirudh Gupta , Herbert Xu , "David S. Miller" , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net] xfrm: Fix xfrm sel prefix length validation Date: Tue, 21 May 2019 20:59:47 +0530 Message-Id: <20190521152947.75014-1-anirudh.gupta@sophos.com> X-Mailer: git-send-email 2.19.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Family of src/dst can be different from family of selector src/dst. Use xfrm selector family to validate address prefix length, while verifying new sa from userspace. Validated patch with this command: ip xfrm state add src 1.1.6.1 dst 1.1.6.2 proto esp spi 4260196 \ reqid 20004 mode tunnel aead "rfc4106(gcm(aes))" \ 0x1111016400000000000000000000000044440001 128 \ sel src 1011:1:4::2/128 sel dst 1021:1:4::2/128 dev Port5 Fixes: 07bf7908950a ("xfrm: Validate address prefix lengths in the xfrm selector.") Signed-off-by: Anirudh Gupta --- net/xfrm/xfrm_user.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c index eb8d14389601..74a3d1e0ff63 100644 --- a/net/xfrm/xfrm_user.c +++ b/net/xfrm/xfrm_user.c @@ -150,6 +150,22 @@ static int verify_newsa_info(struct xfrm_usersa_info *p, err = -EINVAL; switch (p->family) { + case AF_INET: + break; + + case AF_INET6: +#if IS_ENABLED(CONFIG_IPV6) + break; +#else + err = -EAFNOSUPPORT; + goto out; +#endif + + default: + goto out; + } + + switch (p->sel.family) { case AF_INET: if (p->sel.prefixlen_d > 32 || p->sel.prefixlen_s > 32) goto out; -- 2.19.0