diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2012-08-02 02:02:10 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2012-08-02 02:02:10 +0200 |
commit | 1159f1e54f376cbd8db7ea9387818c2c10f79627 (patch) | |
tree | 3fd9619f578f82b6b1585599b8ebf0866bf00435 /sys/src/9/ip | |
parent | 49714325777f203a5632a378e0386c234985cc57 (diff) |
ip: fix assert panic on fragmented icmp echo request (see eriks icmp-frag patch)
Diffstat (limited to 'sys/src/9/ip')
-rw-r--r-- | sys/src/9/ip/icmp.c | 2 | ||||
-rw-r--r-- | sys/src/9/ip/icmp6.c | 2 | ||||
-rw-r--r-- | sys/src/9/ip/ip.c | 1 |
3 files changed, 2 insertions, 3 deletions
diff --git a/sys/src/9/ip/icmp.c b/sys/src/9/ip/icmp.c index 9dd5c9414..3f5a80e21 100644 --- a/sys/src/9/ip/icmp.c +++ b/sys/src/9/ip/icmp.c @@ -366,7 +366,7 @@ icmpiput(Proto *icmp, Ipifc*, Block *bp) case EchoRequest: if (iplen < n) bp = trimblock(bp, 0, iplen); - r = mkechoreply(bp); + r = mkechoreply(concatblock(bp)); ipriv->out[EchoReply]++; ipoput4(icmp->f, r, 0, MAXTTL, DFLTTOS, nil); break; diff --git a/sys/src/9/ip/icmp6.c b/sys/src/9/ip/icmp6.c index 458280b27..7335a3c5e 100644 --- a/sys/src/9/ip/icmp6.c +++ b/sys/src/9/ip/icmp6.c @@ -734,7 +734,7 @@ icmpiput6(Proto *icmp, Ipifc *ipifc, Block *bp) switch(p->type) { case EchoRequestV6: - r = mkechoreply6(bp, ipifc); + r = mkechoreply6(concatblock(bp), ipifc); if(r == nil) goto raise; ipriv->out[EchoReply]++; diff --git a/sys/src/9/ip/ip.c b/sys/src/9/ip/ip.c index 19aef70a4..40fc9380e 100644 --- a/sys/src/9/ip/ip.c +++ b/sys/src/9/ip/ip.c @@ -208,7 +208,6 @@ ipoput4(Fs *f, Block *bp, int gating, int ttl, int tos, Conv *c) eh->cksum[0] = 0; eh->cksum[1] = 0; hnputs(eh->cksum, ipcsum(&eh->vihl)); - assert(bp->next == nil); ifc->m->bwrite(ifc, bp, V4, gate); runlock(ifc); poperror(); |