summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteffen Klassert <steffen.klassert@secunet.com>2011-04-25 19:41:21 +0000
committerDavid S. Miller <davem@davemloft.net>2011-04-26 12:46:04 -0700
commit7833aa05b8db63484b43b4b4c389cd4533140afb (patch)
tree7540e5cef5c96e0a0bcef2baf5360511885ce3b2
parentc0a56e64aec331f33ead29ba493ee184d9bdc840 (diff)
downloadlinux-7833aa05b8db63484b43b4b4c389cd4533140afb.tar.gz
linux-7833aa05b8db63484b43b4b4c389cd4533140afb.tar.bz2
linux-7833aa05b8db63484b43b4b4c389cd4533140afb.zip
xfrm: Check for the new replay implementation if an esn state is inserted
IPsec extended sequence numbers can be used only with the new anti-replay window implementation. So check if the new implementation is used if an esn state is inserted and return an error if it is not. Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com> Acked-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/xfrm/xfrm_user.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
index 5d1d60d3ca83..c658cb3bc7c3 100644
--- a/net/xfrm/xfrm_user.c
+++ b/net/xfrm/xfrm_user.c
@@ -124,6 +124,9 @@ static inline int verify_replay(struct xfrm_usersa_info *p,
{
struct nlattr *rt = attrs[XFRMA_REPLAY_ESN_VAL];
+ if ((p->flags & XFRM_STATE_ESN) && !rt)
+ return -EINVAL;
+
if (!rt)
return 0;