diff options
Diffstat (limited to 'net/xfrm/xfrm_replay.c')
| -rw-r--r-- | net/xfrm/xfrm_replay.c | 5 | 
1 files changed, 4 insertions, 1 deletions
diff --git a/net/xfrm/xfrm_replay.c b/net/xfrm/xfrm_replay.c index f218385950ca..47f1b8638df9 100644 --- a/net/xfrm/xfrm_replay.c +++ b/net/xfrm/xfrm_replay.c @@ -532,9 +532,12 @@ int xfrm_init_replay(struct xfrm_state *x)  	if (replay_esn) {  		if (replay_esn->replay_window > -		    replay_esn->bmp_len * sizeof(__u32)) +		    replay_esn->bmp_len * sizeof(__u32) * 8)  			return -EINVAL; +	if ((x->props.flags & XFRM_STATE_ESN) && replay_esn->replay_window == 0) +		return -EINVAL; +  	if ((x->props.flags & XFRM_STATE_ESN) && x->replay_esn)  		x->repl = &xfrm_replay_esn;  	else  |