]> git.meshlink.io Git - catta/commitdiff
socket: ignore packet if FIONREAD returns zero
authorLudwig Nussel <ludwig.nussel@suse.de>
Wed, 19 May 2010 13:43:44 +0000 (15:43 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 25 Jun 2010 00:36:10 +0000 (02:36 +0200)
zero size is reported for corrupt packets. recvmsg() later could
nevertheless get data from a good packet that followed the bad one.
So get out early to avoid hitting an assertion.

avahi-core/socket.c

index 4146d5ad593e5d3d05dc8265192a147c539f390f..f9b90a2adcad72a276bce4072d2604e6fcec4f03 100644 (file)
@@ -652,6 +652,10 @@ AvahiDnsPacket *avahi_recv_dns_packet_ipv4(
         goto fail;
     }
 
+    /* For corrupt packets FIONREAD returns zero size (See rhbz #607297) */
+    if (!ms)
+        goto fail;
+
     p = avahi_dns_packet_new(ms + AVAHI_DNS_PACKET_EXTRA_SIZE);
 
     io.iov_base = AVAHI_DNS_PACKET_DATA(p);
@@ -805,6 +809,10 @@ AvahiDnsPacket *avahi_recv_dns_packet_ipv6(
         goto fail;
     }
 
+    /* For corrupt packets FIONREAD returns zero size (See rhbz #607297) */
+    if (!ms)
+        goto fail;
+
     p = avahi_dns_packet_new(ms + AVAHI_DNS_PACKET_EXTRA_SIZE);
 
     io.iov_base = AVAHI_DNS_PACKET_DATA(p);