From 959e41473f2179850578482052fb73b913bc4e42 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Wed, 14 May 2014 03:13:09 +0200 Subject: slirp/arp: do not special-case bogus IP addresses Do not special-case addresses with zero host part, as we do not necessarily know how big it is, and the guest can fake them anyway. Silently avoid having 0.0.0.0 as a destination, however. Signed-off-by: Samuel Thibault [Edgar: Minor change to subject] Reviewed-by: Edgar E. Iglesias Signed-off-by: Edgar E. Iglesias --- slirp/slirp.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'slirp/slirp.c') diff --git a/slirp/slirp.c b/slirp/slirp.c index 3fb48a4921..60280361e6 100644 --- a/slirp/slirp.c +++ b/slirp/slirp.c @@ -778,6 +778,11 @@ int if_encap(Slirp *slirp, struct mbuf *ifm) return 1; } + if (iph->ip_dst.s_addr == 0) { + /* 0.0.0.0 can not be a destination address, something went wrong, + * avoid making it worse */ + return 1; + } if (!arp_table_search(slirp, iph->ip_dst.s_addr, ethaddr)) { uint8_t arp_req[ETH_HLEN + sizeof(struct arphdr)]; struct ethhdr *reh = (struct ethhdr *)arp_req; -- cgit v1.2.1