]> git.meshlink.io Git - catta/blobdiff - avahi-core/socket.c
l10n: Updated Italian (it) translation to 99%
[catta] / avahi-core / socket.c
index 4146d5ad593e5d3d05dc8265192a147c539f390f..be62105dba8788975d83b9f2a196f3a761b83bdd 100644 (file)
@@ -1,5 +1,3 @@
-/* $Id$ */
-
 /***
   This file is part of avahi.
 
@@ -450,6 +448,9 @@ static int sendmsg_loop(int fd, struct msghdr *msg, int flags) {
         if (sendmsg(fd, msg, flags) >= 0)
             break;
 
+        if (errno == EINTR)
+            continue;
+
         if (errno != EAGAIN) {
             char where[64];
             struct sockaddr_in *sin = msg->msg_name;
@@ -652,6 +653,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 +810,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);