Here is a revised version that doesn't break initial queries, and puts the check in the correct place I think.
ok? Index: client.c =================================================================== RCS file: /cvs/src/usr.sbin/ntpd/client.c,v retrieving revision 1.96 diff -u -p -u -p -r1.96 client.c --- client.c 9 Jan 2015 07:35:37 -0000 1.96 +++ client.c 9 Jan 2015 21:59:37 -0000 @@ -112,7 +112,7 @@ client_nextaddr(struct ntp_peer *p) return (-1); } - if ((p->addr = p->addr->next) == NULL) + if (p->addr == NULL || (p->addr = p->addr->next) == NULL) p->addr = p->addr_head.a; p->shift = 0;