Skip to content

Commit

Permalink
xfrm: Fix esn sequence number diff calculation in xfrm_replay_notify_…
Browse files Browse the repository at this point in the history
…esn()

Commit 0017c0b "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: Mathias Krause <[email protected]>
Signed-off-by: Steffen Klassert <[email protected]>
  • Loading branch information
minipli authored and klassert committed Mar 25, 2013
1 parent 0017c0b commit 799ef90
Showing 1 changed file with 2 additions and 4 deletions.
6 changes: 2 additions & 4 deletions net/xfrm/xfrm_replay.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit 799ef90

Please sign in to comment.