diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-11-28 12:41:18 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-11-28 12:41:18 +0100 |
commit | 099da8cb824ee60bf3f55e9e69380660f167b216 (patch) | |
tree | f46a1157c7e69db7bed7a054922e7dfc1b54b67c | |
parent | 22b28520cd431c2f68acd66b877122379d704914 (diff) |
devip: fix arpread, dont return partial entries
-rw-r--r-- | sys/src/9/ip/arp.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/sys/src/9/ip/arp.c b/sys/src/9/ip/arp.c index c924f6cb2..f71b0bad6 100644 --- a/sys/src/9/ip/arp.c +++ b/sys/src/9/ip/arp.c @@ -460,16 +460,17 @@ arpread(Arp *arp, char *s, ulong offset, int len) qunlock(arp); runlock(ifc); - n = snprint(p, len, "%-6.6s %-4.4s %-40.40I %-16.16s %I\n", + n = snprint(up->genbuf, sizeof up->genbuf, + "%-6.6s %-4.4s %-40.40I %-16.16s %I\n", mname, state, ip, mac, ia); - if(o < 0) { - if(n > -o) - memmove(p, p-o, n+o); - o += n; - } else { - len -= n; - p += n; - } + o += n; + if(o <= 0) + continue; + if(n > len) + break; + memmove(p, up->genbuf, n); + len -= n; + p += n; } return p - s; |