Skip to content

Commit

Permalink
[CCID2]: Fix sequence number arithmetic/comparisons
Browse files Browse the repository at this point in the history
This replaces use of normal subtraction with modulo-48 subtraction.

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Acked-by: Ian McDonald <ian.mcdonald@jandi.co.nz>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Gerrit Renker authored and David S. Miller committed Jan 28, 2008
1 parent 3de5489 commit cfbbeab
Showing 1 changed file with 2 additions and 7 deletions.
9 changes: 2 additions & 7 deletions net/dccp/ccids/ccid2.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,6 @@

/*
* This implementation should follow RFC 4341
*
* BUGS:
* - sequence number wrapping
*/

#include "../ccid.h"
Expand Down Expand Up @@ -619,9 +616,8 @@ static void ccid2_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)
/* go through this ack vector */
while (veclen--) {
const u8 rl = *vector & DCCP_ACKVEC_LEN_MASK;
u64 ackno_end_rl;
u64 ackno_end_rl = SUB48(ackno, rl);

dccp_set_seqno(&ackno_end_rl, ackno - rl);
ccid2_pr_debug("ackvec start:%llu end:%llu\n",
(unsigned long long)ackno,
(unsigned long long)ackno_end_rl);
Expand Down Expand Up @@ -671,8 +667,7 @@ static void ccid2_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)
if (done)
break;


dccp_set_seqno(&ackno, ackno_end_rl - 1);
ackno = SUB48(ackno_end_rl, 1);
vector++;
}
if (done)
Expand Down

0 comments on commit cfbbeab

Please sign in to comment.