1 diff -up ntp-4.2.4p2/libisc/ifiter_sysctl.c.noif ntp-4.2.4p2/libisc/ifiter_sysctl.c
2 --- ntp-4.2.4p2/libisc/ifiter_sysctl.c.noif 2006-06-06 22:16:23.000000000 +0200
3 +++ ntp-4.2.4p2/libisc/ifiter_sysctl.c 2007-09-24 16:08:55.000000000 +0200
4 @@ -309,7 +309,10 @@ internal_destroy(isc_interfaceiter_t *it
9 -void internal_first(isc_interfaceiter_t *iter) {
11 +internal_first(isc_interfaceiter_t *iter) {
13 + if (iter->pos >= iter->bufused)
14 + return (ISC_R_NOMORE);
15 + return (ISC_R_SUCCESS);
17 diff -up ntp-4.2.4p2/libisc/ifiter_ioctl.c.noif ntp-4.2.4p2/libisc/ifiter_ioctl.c
18 --- ntp-4.2.4p2/libisc/ifiter_ioctl.c.noif 2007-09-24 16:08:55.000000000 +0200
19 +++ ntp-4.2.4p2/libisc/ifiter_ioctl.c 2007-09-24 16:08:55.000000000 +0200
20 @@ -1098,8 +1098,8 @@ internal_destroy(isc_interfaceiter_t *it
25 -void internal_first(isc_interfaceiter_t *iter) {
27 +internal_first(isc_interfaceiter_t *iter) {
28 #ifdef HAVE_TRUCLUSTER
31 @@ -1118,5 +1118,10 @@ void internal_first(isc_interfaceiter_t
34 linux_if_inet6_first(iter);
35 + if (iter->valid == ISC_R_SUCCESS)
36 + return (iter->valid);
38 + if (iter->pos >= (unsigned int) iter->ifc.ifc_len)
39 + return (ISC_R_NOMORE);
40 + return (ISC_R_SUCCESS);
42 diff -up ntp-4.2.4p2/libisc/interfaceiter.c.noif ntp-4.2.4p2/libisc/interfaceiter.c
43 --- ntp-4.2.4p2/libisc/interfaceiter.c.noif 2006-06-06 22:16:24.000000000 +0200
44 +++ ntp-4.2.4p2/libisc/interfaceiter.c 2007-09-24 16:08:55.000000000 +0200
45 @@ -170,14 +170,11 @@ isc_interfaceiter_first(isc_interfaceite
47 REQUIRE(VALID_IFITER(iter));
49 - internal_first(iter);
51 + for (result = internal_first(iter); result == ISC_R_SUCCESS;
52 + result = internal_next(iter)) {
53 result = internal_current(iter);
54 if (result != ISC_R_IGNORE)
56 - result = internal_next(iter);
57 - if (result != ISC_R_SUCCESS)
60 iter->result = result;
62 diff -up ntp-4.2.4p2/libisc/ifiter_getifaddrs.c.noif ntp-4.2.4p2/libisc/ifiter_getifaddrs.c
63 --- ntp-4.2.4p2/libisc/ifiter_getifaddrs.c.noif 2006-06-06 22:16:22.000000000 +0200
64 +++ ntp-4.2.4p2/libisc/ifiter_getifaddrs.c 2007-09-24 16:08:55.000000000 +0200
65 @@ -185,7 +185,10 @@ internal_destroy(isc_interfaceiter_t *it
70 -void internal_first(isc_interfaceiter_t *iter) {
72 +internal_first(isc_interfaceiter_t *iter) {
73 iter->pos = iter->ifaddrs;
74 + if (iter->pos == NULL)
75 + return (ISC_R_NOMORE);
76 + return (ISC_R_SUCCESS);