Thu Jul 30 18:48:39 2020 UTC ()
Pullup ticket #6282 - requested by oster
mail/opendmarc: bugfix

Revisions pulled up:
- mail/opendmarc/Makefile                                       1.19
- mail/opendmarc/distinfo                                       1.7
- mail/opendmarc/patches/patch-build-config.h.in                1.1
- mail/opendmarc/patches/patch-configure                        1.2
- mail/opendmarc/patches/patch-configure.ac                     1.2
- mail/opendmarc/patches/patch-libopendmarc_opendmarc__dns.c    1.1
- mail/opendmarc/patches/patch-libopendmarc_opendmarc__spf__dns.c 1.1

---
   Module Name:    pkgsrc
   Committed By:   oster
   Date:           Mon Jul 27 20:41:10 UTC 2020

   Modified Files:
           pkgsrc/mail/opendmarc: distinfo
           pkgsrc/mail/opendmarc/patches: patch-configure patch-configure.ac
   Added Files:
           pkgsrc/mail/opendmarc/patches: patch-build-config.h.in
               patch-libopendmarc_opendmarc__dns.c
               patch-libopendmarc_opendmarc__spf__dns.c

   Log Message:
   Fix resource leakage observed when using opendmarc on NetBSD.

   Use res_ndestroy() instead of res_nclose() to properly cleanup resources
   on NetBSD (and others that use __res_ndestroy() or res_ndestroy() instead
   of res_nclose()).  Original patch by Roy Marples.

---
   Module Name:    pkgsrc
   Committed By:   oster
   Date:           Mon Jul 27 22:28:47 UTC 2020

   Modified Files:
           pkgsrc/mail/opendmarc: Makefile

   Log Message:
   Bump pkgrevision.  Thanks, Joerg.


(bsiegert)
diff -r1.18 -r1.18.4.1 pkgsrc/mail/opendmarc/Makefile
diff -r1.6 -r1.6.36.1 pkgsrc/mail/opendmarc/distinfo
diff -r0 -r1.1.2.2 pkgsrc/mail/opendmarc/patches/patch-build-config.h.in
diff -r0 -r1.1.2.2 pkgsrc/mail/opendmarc/patches/patch-libopendmarc_opendmarc__dns.c
diff -r0 -r1.1.2.2 pkgsrc/mail/opendmarc/patches/patch-libopendmarc_opendmarc__spf__dns.c
diff -r1.1 -r1.1.44.1 pkgsrc/mail/opendmarc/patches/patch-configure
diff -r1.1 -r1.1.44.1 pkgsrc/mail/opendmarc/patches/patch-configure.ac

cvs diff -r1.18 -r1.18.4.1 pkgsrc/mail/opendmarc/Makefile (expand / switch to unified diff)

--- pkgsrc/mail/opendmarc/Makefile 2020/01/25 10:45:11 1.18
+++ pkgsrc/mail/opendmarc/Makefile 2020/07/30 18:48:38 1.18.4.1
@@ -1,17 +1,17 @@ @@ -1,17 +1,17 @@
1# $NetBSD: Makefile,v 1.18 2020/01/25 10:45:11 jperkin Exp $ 1# $NetBSD: Makefile,v 1.18.4.1 2020/07/30 18:48:38 bsiegert Exp $
2 2
3DISTNAME= opendmarc-1.3.1 3DISTNAME= opendmarc-1.3.1
4PKGREVISION= 6 4PKGREVISION= 7
5CATEGORIES= mail 5CATEGORIES= mail
6MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=opendmarc/} 6MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=opendmarc/}
7 7
8MAINTAINER= pettai@NetBSD.org 8MAINTAINER= pettai@NetBSD.org
9HOMEPAGE= http://www.trusteddomain.org/opendmarc/ 9HOMEPAGE= http://www.trusteddomain.org/opendmarc/
10COMMENT= Open source DMARC library, MTA filter implementation and tools 10COMMENT= Open source DMARC library, MTA filter implementation and tools
11LICENSE= modified-bsd 11LICENSE= modified-bsd
12 12
13DEPENDS+= p5-DBI-[0-9]*:../../databases/p5-DBI 13DEPENDS+= p5-DBI-[0-9]*:../../databases/p5-DBI
14DEPENDS+= p5-DBD-mysql-[0-9]*:../../databases/p5-DBD-mysql 14DEPENDS+= p5-DBD-mysql-[0-9]*:../../databases/p5-DBD-mysql
15#DEPENDS+= {perl>=5.6.1,p5-File-Temp-[0-9]*}:../../devel/p5-File-Temp 15#DEPENDS+= {perl>=5.6.1,p5-File-Temp-[0-9]*}:../../devel/p5-File-Temp
16DEPENDS+= p5-Switch-[0-9]*:../../lang/p5-Switch 16DEPENDS+= p5-Switch-[0-9]*:../../lang/p5-Switch
17 17

cvs diff -r1.6 -r1.6.36.1 pkgsrc/mail/opendmarc/distinfo (expand / switch to unified diff)

--- pkgsrc/mail/opendmarc/distinfo 2015/11/03 23:27:11 1.6
+++ pkgsrc/mail/opendmarc/distinfo 2020/07/30 18:48:38 1.6.36.1
@@ -1,8 +1,11 @@ @@ -1,8 +1,11 @@
1$NetBSD: distinfo,v 1.6 2015/11/03 23:27:11 agc Exp $ 1$NetBSD: distinfo,v 1.6.36.1 2020/07/30 18:48:38 bsiegert Exp $
2 2
3SHA1 (opendmarc-1.3.1.tar.gz) = bdd12713888c16e77334281238f88990df225929 3SHA1 (opendmarc-1.3.1.tar.gz) = bdd12713888c16e77334281238f88990df225929
4RMD160 (opendmarc-1.3.1.tar.gz) = 623b51544f428ade14f0a5d6204f8bf41af8375a 4RMD160 (opendmarc-1.3.1.tar.gz) = 623b51544f428ade14f0a5d6204f8bf41af8375a
5SHA512 (opendmarc-1.3.1.tar.gz) = 0be11540bc26bd3b3e6cc9817bc379a5d290b63ef16c5d3559bf96b241ad6628bea7a9daeb468afac855bc16be16676f722b3c1d468ea82c8d8364e8a8137226 5SHA512 (opendmarc-1.3.1.tar.gz) = 0be11540bc26bd3b3e6cc9817bc379a5d290b63ef16c5d3559bf96b241ad6628bea7a9daeb468afac855bc16be16676f722b3c1d468ea82c8d8364e8a8137226
6Size (opendmarc-1.3.1.tar.gz) = 640151 bytes 6Size (opendmarc-1.3.1.tar.gz) = 640151 bytes
7SHA1 (patch-configure) = 15abea1f890249c46eb0b969133fc809507feb6a 7SHA1 (patch-build-config.h.in) = 14723ab0a578978117be7dcc1d60fe5af955b610
8SHA1 (patch-configure.ac) = b7ee9ae49e04fceaf2872dac7e2f60a15d3c9aa0 8SHA1 (patch-configure) = 1af3b346ac6db51d1701af8ba4e123e0e6a6b973
 9SHA1 (patch-configure.ac) = bfd2c16d22e25b564d33220b5e7ceadedc5ee016
 10SHA1 (patch-libopendmarc_opendmarc__dns.c) = 7c75d464bcdba6baf963cb002e7ba94a60593ecc
 11SHA1 (patch-libopendmarc_opendmarc__spf__dns.c) = 82f22fd2e224ddef1cd3c6788518e629fdea125f

File Added: pkgsrc/mail/opendmarc/patches/Attic/patch-build-config.h.in
$NetBSD: patch-build-config.h.in,v 1.1.2.2 2020/07/30 18:48:39 bsiegert Exp $

We need to use res_ndestroy() to cleanup after res_init().

--- build-config.h.in.orig	2015-02-23 20:32:27.000000000 +0000
+++ build-config.h.in
@@ -104,6 +104,9 @@
 /* Define to 1 if you have the `res_ninit()' function. */
 #undef HAVE_RES_NINIT
 
+/* Define to 1 if you have the 'res_ndestroy()' function. */
+#undef HAVE_RES_NDESTROY
+
 /* Define to 1 if you have the <signal.h> header file. */
 #undef HAVE_SIGNAL_H
 

File Added: pkgsrc/mail/opendmarc/patches/patch-libopendmarc_opendmarc__dns.c
$NetBSD: patch-libopendmarc_opendmarc__dns.c,v 1.1.2.2 2020/07/30 18:48:39 bsiegert Exp $

Patch from Roy Marples: if we have res_ndestroy(), use that in place of just res_nclose().

--- libopendmarc/opendmarc_dns.c.orig	2015-02-23 20:31:51.000000000 +0000
+++ libopendmarc/opendmarc_dns.c
@@ -211,7 +211,11 @@ dmarc_dns_get_record(char *domain, int *
 	(void) opendmarc_policy_library_dns_hook(&resp.nscount,
                                                  &resp.nsaddr_list);
 	answer_len = res_nquery(&resp, bp, C_IN, T_TXT, answer_buf, sizeof answer_buf);
+#ifdef HAVE_RES_NDESTROY
+	res_ndestroy(&resp);
+#else
 	res_nclose(&resp);
+#endif
 #else /* HAVE_RES_NINIT */
 #if defined RES_USE_DNSSEC
 	_res.options |= RES_USE_DNSSEC;

File Added: pkgsrc/mail/opendmarc/patches/Attic/patch-libopendmarc_opendmarc__spf__dns.c
$NetBSD: patch-libopendmarc_opendmarc__spf__dns.c,v 1.1.2.2 2020/07/30 18:48:39 bsiegert Exp $

Patch from Roy Marples: if we have res_ndestroy(), use that in place of just res_nclose().

--- libopendmarc/opendmarc_spf_dns.c.orig	2015-02-23 20:31:51.000000000 +0000
+++ libopendmarc/opendmarc_spf_dns.c
@@ -108,7 +108,11 @@ opendmarc_spf_dns_lookup_a_actual(char *
 
 #ifdef HAVE_RES_NINIT
 	k = res_nquery(&resp, bp, C_IN, sought, a_buf, sizeof a_buf);
+#ifdef HAVE_RES_NDESTROY
+	res_ndestroy(&resp);
+#else
 	res_nclose(&resp);
+#endif
 #else /* HAVE_RES_NINIT */
 	k = res_query(bp, C_IN, sought, a_buf, sizeof a_buf);
 #endif /* HAVE_RES_NINIT */
@@ -253,7 +257,11 @@ opendmarc_spf_dns_lookup_mx(char *domain
         memset(&resp, '\0', sizeof resp);
 	res_ninit(&resp);
 	k = res_nquery(&resp, domain, C_IN, T_MX, (u_char *) &q, sizeof(q));
+#ifdef HAVE_RES_NDESTROY
+	res_ndestroy(&resp);
+#else
 	res_nclose(&resp);
+#endif
 #else /* HAVE_RES_NINIT */
 	k = res_query(domain, C_IN, T_MX, (u_char *) &q, sizeof(q));
 #endif /* HAVE_RES_NINIT */
@@ -366,7 +374,11 @@ opendmarc_spf_dns_lookup_ptr(char *ip, c
         memset(&resp, '\0', sizeof resp);
 	res_ninit(&resp);
 	k = res_nquery(&resp, (char *)buf, C_IN, T_PTR, (u_char *) &q, sizeof(q));
+#ifdef HAVE_RES_NDESTROY
+	res_ndestroy(&resp);
+#else
 	res_nclose(&resp);
+#endif
 #else /* HAVE_RES_NINIT */
 	k = res_query((char *)buf, C_IN, T_PTR, (u_char *) &q, sizeof(q));
 #endif /* HAVE_RES_NINIT */
@@ -461,7 +473,11 @@ opendmarc_spf_dns_does_domain_exist(char
         (void) res_nquery(&resp, domain, C_IN, T_AAAA, aaaa_q, sizeof aaaa_q);  
 #endif /* T_AAAA */
         (void) res_nquery(&resp, domain, C_IN, T_MX, mx_q, sizeof mx_q);  
+#ifdef HAVE_RES_NDESTROY
+	res_ndestroy(&resp);
+#else
 	res_nclose(&resp);
+#endif
 #else /* HAVE_RES_NINIT */
         (void) res_query(domain, C_IN, T_A, a_q, sizeof a_q);  
 #ifdef T_AAAA
@@ -603,13 +619,21 @@ opendmarc_spf_dns_get_record(char *domai
 		}
 		*rp = h_errno;
 #ifdef HAVE_RES_NINIT 
+#ifdef HAVE_RES_NDESTROY
+		res_ndestroy(&resp);
+#else
 		res_nclose(&resp);
+#endif
 #endif /* HAVE_RES_NINIT */
 		return NULL;
 	}
 got_spf_record:
 #ifdef HAVE_RES_NINIT 
+#ifdef HAVE_RES_NDESTROY
+	res_ndestroy(&resp);
+#else
 	res_nclose(&resp);
+#endif
 #endif /* HAVE_RES_NINIT */
 
 	if (k > (int)(sizeof txt_buf))

cvs diff -r1.1 -r1.1.44.1 pkgsrc/mail/opendmarc/patches/Attic/patch-configure (expand / switch to unified diff)

--- pkgsrc/mail/opendmarc/patches/Attic/patch-configure 2014/12/05 16:00:23 1.1
+++ pkgsrc/mail/opendmarc/patches/Attic/patch-configure 2020/07/30 18:48:39 1.1.44.1
@@ -1,22 +1,83 @@ @@ -1,22 +1,83 @@
1$NetBSD: patch-configure,v 1.1 2014/12/05 16:00:23 christos Exp $ 1$NetBSD: patch-configure,v 1.1.44.1 2020/07/30 18:48:39 bsiegert Exp $
2Search also for __res_ninit on NetBSD because of namespace protection 
3 2
4--- configure.orig 2014-12-05 10:53:31.000000000 -0500 3Check for res_ndestroy(), __res_init(), and __res_ndestroy().
5+++ configure 2014-12-05 10:54:50.000000000 -0500 4
6@@ -12969,6 +12969,64 @@ 5--- configure.orig 2015-02-23 20:32:13.000000000 +0000
 6+++ configure
 7@@ -12971,6 +12971,184 @@ $as_echo "#define HAVE_RES_NINIT 1" >>co
7  8
8 fi 9 fi
9  10
 11+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_ndestroy" >&5
 12+$as_echo_n "checking for library containing res_ndestroy... " >&6; }
 13+if ${ac_cv_search_res_ndestroy+:} false; then :
 14+ $as_echo_n "(cached) " >&6
 15+else
 16+ ac_func_search_save_LIBS=$LIBS
 17+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 18+/* end confdefs.h. */
 19+
 20+/* Override any GCC internal prototype to avoid an error.
 21+ Use char because int might match the return type of a GCC
 22+ builtin and then its argument prototype would still apply. */
 23+#ifdef __cplusplus
 24+extern "C"
 25+#endif
 26+char res_ndestroy ();
 27+int
 28+main ()
 29+{
 30+return res_ndestroy ();
 31+ ;
 32+ return 0;
 33+}
 34+_ACEOF
 35+for ac_lib in '' resolv; do
 36+ if test -z "$ac_lib"; then
 37+ ac_res="none required"
 38+ else
 39+ ac_res=-l$ac_lib
 40+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
 41+ fi
 42+ if ac_fn_c_try_link "$LINENO"; then :
 43+ ac_cv_search_res_ndestroy=$ac_res
 44+fi
 45+rm -f core conftest.err conftest.$ac_objext \
 46+ conftest$ac_exeext
 47+ if ${ac_cv_search_res_ndestroy+:} false; then :
 48+ break
 49+fi
 50+done
 51+if ${ac_cv_search_res_ndestroy+:} false; then :
 52+
 53+else
 54+ ac_cv_search_res_ndestroy=no
 55+fi
 56+rm conftest.$ac_ext
 57+LIBS=$ac_func_search_save_LIBS
 58+fi
 59+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_res_ndestroy" >&5
 60+$as_echo "$ac_cv_search_res_ndestroy" >&6; }
 61+ac_res=$ac_cv_search_res_ndestroy
 62+if test "$ac_res" != no; then :
 63+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 64+
 65+$as_echo "#define HAVE_RES_NDESTROY 1" >>confdefs.h
 66+
 67+fi
 68+
 69+
 70+
10+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing __res_ninit" >&5 71+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing __res_ninit" >&5
11+$as_echo_n "checking for library containing __res_ninit... " >&6; } 72+$as_echo_n "checking for library containing __res_ninit... " >&6; }
12+if ${ac_cv_search___res_ninit+:} false; then : 73+if ${ac_cv_search___res_ninit+:} false; then :
13+ $as_echo_n "(cached) " >&6 74+ $as_echo_n "(cached) " >&6
14+else 75+else
15+ ac_func_search_save_LIBS=$LIBS 76+ ac_func_search_save_LIBS=$LIBS
16+cat confdefs.h - <<_ACEOF >conftest.$ac_ext 77+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
17+/* end confdefs.h. */ 78+/* end confdefs.h. */
18+ 79+
19+/* Override any GCC internal prototype to avoid an error. 80+/* Override any GCC internal prototype to avoid an error.
20+ Use char because int might match the return type of a GCC 81+ Use char because int might match the return type of a GCC
21+ builtin and then its argument prototype would still apply. */ 82+ builtin and then its argument prototype would still apply. */
22+#ifdef __cplusplus 83+#ifdef __cplusplus
@@ -55,16 +116,76 @@ Search also for __res_ninit on NetBSD be @@ -55,16 +116,76 @@ Search also for __res_ninit on NetBSD be
55+rm conftest.$ac_ext 116+rm conftest.$ac_ext
56+LIBS=$ac_func_search_save_LIBS 117+LIBS=$ac_func_search_save_LIBS
57+fi 118+fi
58+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search___res_ninit" >&5 119+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search___res_ninit" >&5
59+$as_echo "$ac_cv_search___res_ninit" >&6; } 120+$as_echo "$ac_cv_search___res_ninit" >&6; }
60+ac_res=$ac_cv_search___res_ninit 121+ac_res=$ac_cv_search___res_ninit
61+if test "$ac_res" != no; then : 122+if test "$ac_res" != no; then :
62+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" 123+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
63+ 124+
64+$as_echo "#define HAVE_RES_NINIT 1" >>confdefs.h 125+$as_echo "#define HAVE_RES_NINIT 1" >>confdefs.h
65+ 126+
66+fi 127+fi
67+ 128+
 129+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing __res_ndestroy" >&5
 130+$as_echo_n "checking for library containing __res_ndestroy... " >&6; }
 131+if ${ac_cv_search___res_ndestroy+:} false; then :
 132+ $as_echo_n "(cached) " >&6
 133+else
 134+ ac_func_search_save_LIBS=$LIBS
 135+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 136+/* end confdefs.h. */
 137+
 138+/* Override any GCC internal prototype to avoid an error.
 139+ Use char because int might match the return type of a GCC
 140+ builtin and then its argument prototype would still apply. */
 141+#ifdef __cplusplus
 142+extern "C"
 143+#endif
 144+char __res_ndestroy ();
 145+int
 146+main ()
 147+{
 148+return __res_ndestroy ();
 149+ ;
 150+ return 0;
 151+}
 152+_ACEOF
 153+for ac_lib in '' resolv; do
 154+ if test -z "$ac_lib"; then
 155+ ac_res="none required"
 156+ else
 157+ ac_res=-l$ac_lib
 158+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
 159+ fi
 160+ if ac_fn_c_try_link "$LINENO"; then :
 161+ ac_cv_search___res_ndestroy=$ac_res
 162+fi
 163+rm -f core conftest.err conftest.$ac_objext \
 164+ conftest$ac_exeext
 165+ if ${ac_cv_search___res_ndestroy+:} false; then :
 166+ break
 167+fi
 168+done
 169+if ${ac_cv_search___res_ndestroy+:} false; then :
 170+
 171+else
 172+ ac_cv_search___res_ndestroy=no
 173+fi
 174+rm conftest.$ac_ext
 175+LIBS=$ac_func_search_save_LIBS
 176+fi
 177+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search___res_ndestroy" >&5
 178+$as_echo "$ac_cv_search___res_ndestroy" >&6; }
 179+ac_res=$ac_cv_search___res_ndestroy
 180+if test "$ac_res" != no; then :
 181+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 182+
 183+$as_echo "#define HAVE_RES_NDESTROY 1" >>confdefs.h
 184+
 185+fi
 186+
 187+
 188+
68 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for idn_free in -lidn" >&5 189 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for idn_free in -lidn" >&5
69 $as_echo_n "checking for idn_free in -lidn... " >&6; } 190 $as_echo_n "checking for idn_free in -lidn... " >&6; }
70 if ${ac_cv_lib_idn_idn_free+:} false; then : 191 if ${ac_cv_lib_idn_idn_free+:} false; then :

cvs diff -r1.1 -r1.1.44.1 pkgsrc/mail/opendmarc/patches/Attic/patch-configure.ac (expand / switch to unified diff)

--- pkgsrc/mail/opendmarc/patches/Attic/patch-configure.ac 2014/12/05 16:00:23 1.1
+++ pkgsrc/mail/opendmarc/patches/Attic/patch-configure.ac 2020/07/30 18:48:39 1.1.44.1
@@ -1,15 +1,24 @@ @@ -1,15 +1,24 @@
1$NetBSD: patch-configure.ac,v 1.1 2014/12/05 16:00:23 christos Exp $ 1$NetBSD: patch-configure.ac,v 1.1.44.1 2020/07/30 18:48:39 bsiegert Exp $
2Search also for __res_ninit on NetBSD because of namespace protection 
3 2
4--- configure.ac.orig 2014-12-05 10:53:36.000000000 -0500 3Add appropriate flags if res_ndestroy(), __res_ninit(), or
5+++ configure.ac 2014-12-05 10:53:51.000000000 -0500 4__res_ndestroy() are found.
6@@ -126,6 +126,9 @@ 5
 6--- configure.ac.orig 2015-02-23 20:31:50.000000000 +0000
 7+++ configure.ac
 8@@ -126,6 +126,16 @@ AC_CHECK_LIB(resolv, inet_aton, , , [-ln
7 AC_SEARCH_LIBS(res_ninit, resolv, 9 AC_SEARCH_LIBS(res_ninit, resolv,
8 AC_DEFINE(HAVE_RES_NINIT, 1, 10 AC_DEFINE(HAVE_RES_NINIT, 1,
9 [Define to 1 if you have the `res_ninit()' function.])) 11 [Define to 1 if you have the `res_ninit()' function.]))
 12+AC_SEARCH_LIBS(res_ndestroy, resolv,
 13+ AC_DEFINE(HAVE_RES_NDESTROY, 1,
 14+ [Define to 1 if you have the `res_ndestroy()' function.]))
10+AC_SEARCH_LIBS(__res_ninit, resolv, 15+AC_SEARCH_LIBS(__res_ninit, resolv,
11+ AC_DEFINE(HAVE_RES_NINIT, 1, 16+ AC_DEFINE(HAVE_RES_NINIT, 1,
12+ [Define to 1 if you have the `res_ninit()' function.])) 17+ [Define to 1 if you have the `__res_ninit()' function.]))
 18+AC_SEARCH_LIBS(__res_ndestroy, resolv,
 19+ AC_DEFINE(HAVE_RES_NDESTROY, 1,
 20+ [Define to 1 if you have the `__res_ndestroy()' function.]))
 21+
13 AC_CHECK_LIB(idn, idn_free) 22 AC_CHECK_LIB(idn, idn_free)
14 AC_CHECK_LIB(rt, nanosleep) 23 AC_CHECK_LIB(rt, nanosleep)
15 AC_SEARCH_LIBS(inet_addr, nsl) 24 AC_SEARCH_LIBS(inet_addr, nsl)