Message ID | 36514f25843ca070b2820c650a5510cb158bbd41.1738779970.git.leon@kernel.org (mailing list archive) |
---|---|
State | Awaiting Upstream |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [ipsec-next] xfrm: prevent high SEQ input in non-ESN mode | expand |
On Wed, Feb 05, 2025 at 08:27:49PM +0200, Leon Romanovsky wrote: > From: Leon Romanovsky <leonro@nvidia.com> > > In non-ESN mode, the SEQ numbers are limited to 32 bits and seq_hi/oseq_hi > are not used. So make sure that user gets proper error message, in case > such assignment occurred. > > Signed-off-by: Leon Romanovsky <leonro@nvidia.com> Applied, thanks a lot!
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c index d1d422f68978..784a2d124749 100644 --- a/net/xfrm/xfrm_user.c +++ b/net/xfrm/xfrm_user.c @@ -178,6 +178,12 @@ static inline int verify_replay(struct xfrm_usersa_info *p, "Replay seq and seq_hi should be 0 for output SA"); return -EINVAL; } + if (rs->oseq_hi && !(p->flags & XFRM_STATE_ESN)) { + NL_SET_ERR_MSG( + extack, + "Replay oseq_hi should be 0 in non-ESN mode for output SA"); + return -EINVAL; + } if (rs->bmp_len) { NL_SET_ERR_MSG(extack, "Replay bmp_len should 0 for output SA"); return -EINVAL; @@ -190,6 +196,12 @@ static inline int verify_replay(struct xfrm_usersa_info *p, "Replay oseq and oseq_hi should be 0 for input SA"); return -EINVAL; } + if (rs->seq_hi && !(p->flags & XFRM_STATE_ESN)) { + NL_SET_ERR_MSG( + extack, + "Replay seq_hi should be 0 in non-ESN mode for input SA"); + return -EINVAL; + } } return 0;