Hi,

seems be bug on eglibc side, the sendto() does not work for sa equal NULL,
the sigsegv can be avoided by workaround bellow.

Axel, please could you test, whether workarounded openntpd
is otherwise functional ?

Cheers
        Petr


--- ntp_msg.c
+++ ntp_msg.c
@@ -90,7 +90,8 @@
                salen = SA_LEN(sa);
        else
                salen = 0;
-
+        if (sa)
+        {
        if (sendto(fd, &buf, len, 0, sa, salen) != len) {
                if (errno == ENOBUFS || errno == EHOSTUNREACH ||
                    errno == ENETDOWN || errno == EHOSTDOWN) {
@@ -102,6 +103,22 @@
                        return (-2);
                return (-1);
        }
+       }
+       else
+       {
+       if (send(fd, &buf, len, 0) != len) {
+               if (errno == ENOBUFS || errno == EHOSTUNREACH ||
+                   errno == ENETDOWN || errno == EHOSTDOWN) {
+                       /* logging is futile */
+                       return (-1);
+               }
+               log_warn("sendto");
+               if (errno == EINVAL)
+                       return (-2);
+               return (-1);
+       }
+
+       }

        return (0);
 }




--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to