From d36c522453076f2966f492d0c71b5bda2a77c5c8 Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Mon, 26 Sep 2016 12:21:07 +0200 Subject: [PATCH] ntp: check for missing source address after recvmsg() --- ntp_io.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ntp_io.c b/ntp_io.c index af5158f..5705340 100644 --- 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;