]> git.ipfire.org Git - thirdparty/chrony.git/commitdiff
ntp: check for missing source address after recvmsg()
authorMiroslav Lichvar <mlichvar@redhat.com>
Mon, 26 Sep 2016 10:21:07 +0000 (12:21 +0200)
committerMiroslav Lichvar <mlichvar@redhat.com>
Mon, 26 Sep 2016 10:40:44 +0000 (12:40 +0200)
ntp_io.c

index af5158fd43552218a510db447246878103904869..5705340ebf8b3b51984a38b3f86202077cb71616 100644 (file)
--- a/ntp_io.c
+++ b/ntp_io.c
@@ -565,8 +565,13 @@ process_receive(struct msghdr *hdr, int length, int sock_fd)
     return;
   }
 
-  UTI_SockaddrToIPAndPort((struct sockaddr *)hdr->msg_name,
-                          &remote_addr.ip_addr, &remote_addr.port);
+  if (hdr->msg_namelen >= sizeof (((struct sockaddr *)hdr->msg_name)->sa_family)) {
+    UTI_SockaddrToIPAndPort((struct sockaddr *)hdr->msg_name,
+                            &remote_addr.ip_addr, &remote_addr.port);
+  } else {
+    remote_addr.ip_addr.family = IPADDR_UNSPEC;
+    remote_addr.port = 0;
+  }
 
   local_addr.ip_addr.family = IPADDR_UNSPEC;
   local_addr.sock_fd = sock_fd;