Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 799ef90c authored by Mathias Krause's avatar Mathias Krause Committed by Steffen Klassert
Browse files

xfrm: Fix esn sequence number diff calculation in xfrm_replay_notify_esn()



Commit 0017c0b5 "xfrm: Fix replay notification for esn." is off by one
for the sequence number wrapped case as UINT_MAX is 0xffffffff, not
0x100000000. ;)

Just calculate the diff like done everywhere else in the file.

Signed-off-by: default avatarMathias Krause <minipli@googlemail.com>
Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
parent 0017c0b5
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -359,14 +359,12 @@ static void xfrm_replay_notify_esn(struct xfrm_state *x, int event)
		if (replay_esn->seq_hi == preplay_esn->seq_hi)
			seq_diff = replay_esn->seq - preplay_esn->seq;
		else
			seq_diff = UINT_MAX - preplay_esn->seq
				   + replay_esn->seq;
			seq_diff = ~preplay_esn->seq + replay_esn->seq + 1;

		if (replay_esn->oseq_hi == preplay_esn->oseq_hi)
			oseq_diff = replay_esn->oseq - preplay_esn->oseq;
		else
			oseq_diff = UINT_MAX - preplay_esn->oseq
				    + replay_esn->oseq;
			oseq_diff = ~preplay_esn->oseq + replay_esn->oseq + 1;

		if (seq_diff < x->replay_maxdiff &&
		    oseq_diff < x->replay_maxdiff) {