Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Minor overlapping changes, nothing serious. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -232,7 +232,7 @@ slhc_compress(struct slcompress *comp, unsigned char *icp, int isize,
|
||||
struct cstate *cs = lcs->next;
|
||||
unsigned long deltaS, deltaA;
|
||||
short changes = 0;
|
||||
int hlen;
|
||||
int nlen, hlen;
|
||||
unsigned char new_seq[16];
|
||||
unsigned char *cp = new_seq;
|
||||
struct iphdr *ip;
|
||||
@@ -248,6 +248,8 @@ slhc_compress(struct slcompress *comp, unsigned char *icp, int isize,
|
||||
return isize;
|
||||
|
||||
ip = (struct iphdr *) icp;
|
||||
if (ip->version != 4 || ip->ihl < 5)
|
||||
return isize;
|
||||
|
||||
/* Bail if this packet isn't TCP, or is an IP fragment */
|
||||
if (ip->protocol != IPPROTO_TCP || (ntohs(ip->frag_off) & 0x3fff)) {
|
||||
@@ -258,10 +260,14 @@ slhc_compress(struct slcompress *comp, unsigned char *icp, int isize,
|
||||
comp->sls_o_tcp++;
|
||||
return isize;
|
||||
}
|
||||
/* Extract TCP header */
|
||||
nlen = ip->ihl * 4;
|
||||
if (isize < nlen + sizeof(*th))
|
||||
return isize;
|
||||
|
||||
th = (struct tcphdr *)(((unsigned char *)ip) + ip->ihl*4);
|
||||
hlen = ip->ihl*4 + th->doff*4;
|
||||
th = (struct tcphdr *)(icp + nlen);
|
||||
if (th->doff < sizeof(struct tcphdr) / 4)
|
||||
return isize;
|
||||
hlen = nlen + th->doff * 4;
|
||||
|
||||
/* Bail if the TCP packet isn't `compressible' (i.e., ACK isn't set or
|
||||
* some other control bit is set). Also uncompressible if
|
||||
|
مرجع در شماره جدید
Block a user