Page MenuHomeFreeBSD

D51662.id159522.diff
No OneTemporary

D51662.id159522.diff

diff --git a/stand/libsa/ip.c b/stand/libsa/ip.c
--- a/stand/libsa/ip.c
+++ b/stand/libsa/ip.c
@@ -181,6 +181,7 @@
ssize_t n;
size_t hlen;
struct ether_header *eh;
+ void *buf;
struct ip *ip;
struct udphdr *uh;
uint16_t etype; /* host order */
@@ -195,7 +196,7 @@
ip = NULL;
ptr = NULL;
- n = readether(d, (void **)&ptr, (void **)&ip, tleft, &etype);
+ n = readether(d, (void **)&ptr, (void **)&buf, tleft, &etype);
if (n == -1 || n < sizeof(*ip) + sizeof(*uh)) {
free(ptr);
return (-1);
@@ -205,7 +206,7 @@
/* Need to respond to ARP requests. */
if (etype == ETHERTYPE_ARP) {
- struct arphdr *ah = (void *)ip;
+ struct arphdr *ah = buf;
if (ah->ar_op == htons(ARPOP_REQUEST)) {
/* Send ARP reply */
arp_reply(d, ah);
@@ -224,6 +225,7 @@
return (-1);
}
+ ip = buf;
/* Check ip header */
if (ip->ip_v != IPVERSION || /* half char */
ip->ip_p != proto) {

File Metadata

Mime Type
text/plain
Expires
Sat, May 16, 4:20 AM (15 h, 13 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33098064
Default Alt Text
D51662.id159522.diff (917 B)

Event Timeline