File avahi-null-packet-infinite-loop.patch of Package avahi
Index: avahi-0.6.25/avahi-core/socket.c
===================================================================
--- avahi-0.6.25.orig/avahi-core/socket.c
+++ avahi-0.6.25/avahi-core/socket.c
@@ -652,10 +652,6 @@ AvahiDnsPacket *avahi_recv_dns_packet_ip
goto fail;
}
- /* corrupt packets have zero size */
- if (!ms)
- goto fail;
-
p = avahi_dns_packet_new(ms + AVAHI_DNS_PACKET_EXTRA_SIZE);
io.iov_base = AVAHI_DNS_PACKET_DATA(p);
@@ -682,6 +678,10 @@ AvahiDnsPacket *avahi_recv_dns_packet_ip
goto fail;
}
+ /* corrupt packets have zero size */
+ if (!ms)
+ goto fail;
+
if (sa.sin_addr.s_addr == INADDR_ANY) {
/* Linux 2.4 behaves very strangely sometimes! */
goto fail;
@@ -809,10 +809,6 @@ AvahiDnsPacket *avahi_recv_dns_packet_ip
goto fail;
}
- /* corrupt packets have zero size */
- if (!ms)
- goto fail;
-
p = avahi_dns_packet_new(ms + AVAHI_DNS_PACKET_EXTRA_SIZE);
io.iov_base = AVAHI_DNS_PACKET_DATA(p);
@@ -840,6 +836,10 @@ AvahiDnsPacket *avahi_recv_dns_packet_ip
goto fail;
}
+ /* corrupt packets have zero size */
+ if (!ms)
+ goto fail;
+
assert(!(msg.msg_flags & MSG_CTRUNC));
assert(!(msg.msg_flags & MSG_TRUNC));