changeset 963:e0f544fd8ad0 draft

Fix memory errors.
author Roy Marples <roy@marples.name>
date Tue, 09 Sep 2008 20:52:21 +0000
parents 8cb8068f0275
children 56f30c15188b
files arp.c
diffstat 1 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/arp.c	Tue Sep 09 19:07:37 2008 +0000
+++ b/arp.c	Tue Sep 09 20:52:21 2008 +0000
@@ -57,8 +57,8 @@
 	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 @@
 		*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;
 }