mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH net] xfrm: Fix xfrm sel prefix length validation
@ 2019-05-21 15:29 Anirudh Gupta
  2019-05-22  3:17 ` Herbert Xu
  0 siblings, 1 reply; 9+ messages in thread
From: Anirudh Gupta @ 2019-05-21 15:29 UTC (permalink / raw)
  To: Steffen Klassert
  Cc: Anirudh Gupta, Herbert Xu, David S. Miller, netdev, linux-kernel

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 <anirudh.gupta@sophos.com>
---
 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


^ permalink raw reply	[flat|nested] 9+ messages in thread
* [PATCH net] xfrm: Fix xfrm sel prefix length validation
@ 2019-05-21  8:22 Anirudh Gupta
  2019-05-21 12:22 ` Herbert Xu
  0 siblings, 1 reply; 9+ messages in thread
From: Anirudh Gupta @ 2019-05-21  8:22 UTC (permalink / raw)
  To: Steffen Klassert
  Cc: Anirudh Gupta, Herbert Xu, David S. Miller, netdev, linux-kernel

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 <anirudh.gupta@sophos.com>
---
 net/xfrm/xfrm_user.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
index eb8d14389601..1d1fe2208ab5 100644
--- a/net/xfrm/xfrm_user.c
+++ b/net/xfrm/xfrm_user.c
@@ -150,6 +150,23 @@ 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;
+	}
+
+	err = -EINVAL;
+	switch (p->sel.family) {
 	case AF_INET:
 		if (p->sel.prefixlen_d > 32 || p->sel.prefixlen_s > 32)
 			goto out;
-- 
2.19.0


^ permalink raw reply	[flat|nested] 9+ messages in thread
* [PATCH net] xfrm: Fix xfrm sel prefix length validation
@ 2019-05-20  9:31 Anirudh Gupta
  2019-05-20 15:32 ` Herbert Xu
  0 siblings, 1 reply; 9+ messages in thread
From: Anirudh Gupta @ 2019-05-20  9:31 UTC (permalink / raw)
  To: Steffen Klassert
  Cc: Anirudh Gupta, Herbert Xu, David S. Miller, netdev, linux-kernel

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 <anirudh.gupta@sophos.com>
---
 net/xfrm/xfrm_user.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
index eb8d14389601..fc2a8c08091b 100644
--- a/net/xfrm/xfrm_user.c
+++ b/net/xfrm/xfrm_user.c
@@ -149,7 +149,7 @@ static int verify_newsa_info(struct xfrm_usersa_info *p,
 	int err;
 
 	err = -EINVAL;
-	switch (p->family) {
+	switch (p->sel.family) {
 	case AF_INET:
 		if (p->sel.prefixlen_d > 32 || p->sel.prefixlen_s > 32)
 			goto out;
-- 
2.19.0


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2019-05-28  7:44 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-21 15:29 [PATCH net] xfrm: Fix xfrm sel prefix length validation Anirudh Gupta
2019-05-22  3:17 ` Herbert Xu
2019-05-28  7:44   ` Steffen Klassert
  -- strict thread matches above, loose matches on Subject: below --
2019-05-21  8:22 Anirudh Gupta
2019-05-21 12:22 ` Herbert Xu
2019-05-20  9:31 Anirudh Gupta
2019-05-20 15:32 ` Herbert Xu
2019-05-20 17:05   ` Anirudh Gupta
     [not found]   ` <CAN2cbVe3WNj8cR1dLysCP46-LwiHZYMWRpowA+bzNpyZRexSaA@mail.gmail.com>
2019-05-21  2:49     ` Herbert Xu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®