summaryrefslogtreecommitdiffstats
path: root/arp.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2008-09-09 20:52:21 +0000
committerRoy Marples <roy@marples.name>2008-09-09 20:52:21 +0000
commit3270bfbf689cf8e7111b21c0b22b4951bb9b9175 (patch)
treeee5d0b35342317c51df0386e485fc334147057ef /arp.c
parent59795183289d077902f64a815c31126499a12ca2 (diff)
downloaddhcpcd-3270bfbf689cf8e7111b21c0b22b4951bb9b9175.tar.xz
Fix memory errors.
Diffstat (limited to 'arp.c')
-rw-r--r--arp.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arp.c b/arp.c
index f21bac0d..c5acdc75 100644
--- a/arp.c
+++ b/arp.c
@@ -57,8 +57,8 @@ send_arp(const struct interface *iface, int op, in_addr_t sip, in_addr_t tip)
ar.ar_hln = iface->hwlen;
ar.ar_pln = sizeof(sip);
ar.ar_op = htons(op);
- p = arp_buffer;
- p += sizeof(ar);
+ memcpy(arp_buffer, &ar, sizeof(ar));
+ p = arp_buffer + sizeof(ar);
memcpy(p, iface->hwaddr, iface->hwlen);
p += iface->hwlen;
memcpy(p, &sip, sizeof(sip));
@@ -69,7 +69,7 @@ send_arp(const struct interface *iface, int op, in_addr_t sip, in_addr_t tip)
*p++ = '\0';
memcpy(p, &tip, sizeof(tip));
p += sizeof(tip);
- len = sizeof(ar) + 2 * iface->hwlen + 2 * sizeof(sip);
+ len = p - arp_buffer;
retval = send_raw_packet(iface, ETHERTYPE_ARP, arp_buffer, len);
return retval;
}