From: Daniel Salzman Date: Wed, 29 Aug 2018 07:23:12 +0000 (+0200) Subject: configure: link libcap-ng with knotd only X-Git-Tag: v2.8.0~258 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a937fabdfbc5710f0b2b2bd6909f609c31fe3afc;p=thirdparty%2Fknot-dns.git configure: link libcap-ng with knotd only --- diff --git a/configure.ac b/configure.ac index 387b0ee3a0..fe18305bcf 100644 --- a/configure.ac +++ b/configure.ac @@ -537,15 +537,36 @@ AS_IF([test "$enable_utilities" = "yes"], [ ]) ]) # Knot DNS utilities dependencies +AS_IF([test "$enable_daemon" = "yes"], [ + PKG_CHECK_MODULES([cap_ng], [cap-ng], [enable_cap_ng=yes], [ + enable_cap_ng=no + AC_CHECK_HEADER([cap-ng.h], [ + save_LIBS="$LIBS" + AC_SEARCH_LIBS([capng_apply], [cap-ng], [ + enable_cap_ng=yes + cap_ng_LIBS="$ac_cv_search_capng_apply" + AC_SUBST([cap_ng_LIBS]) + ]) + LIBS="$save_LIBS" + ]) + ]) +], [ + enable_cap_ng=no + cap_ng_LIBS= +]) + +AS_IF([test "$enable_cap_ng" = yes], + [AC_DEFINE([ENABLE_CAP_NG], [1], [POSIX capabilities available])] +) + AC_SEARCH_LIBS([pow], [m]) AC_SEARCH_LIBS([pthread_create], [pthread], [], [AC_MSG_ERROR([pthreads not found])]) AC_SEARCH_LIBS([dlopen], [dl]) AC_SEARCH_LIBS([clock_gettime], [rt]) -AC_SEARCH_LIBS([capng_apply], [cap-ng]) # Checks for header files. AC_HEADER_RESOLV -AC_CHECK_HEADERS_ONCE([cap-ng.h pthread_np.h sys/uio.h]) +AC_CHECK_HEADERS_ONCE([pthread_np.h sys/uio.h]) # Checks for optional library functions. AC_CHECK_FUNCS([accept4 clock_gettime fgetln getline initgroups malloc_trim \ @@ -633,6 +654,7 @@ result_msg_base=" Knot DNS $VERSION Utilities with Dnstap: ${enable_dnstap} MaxMind DB support: ${enable_maxminddb} Systemd integration: ${enable_systemd} + POSIX capabilities ${enable_cap_ng} PKCS #11 support: ${enable_pkcs11} Ed25519 support: ${enable_ed25519} Code coverage: ${enable_code_coverage} diff --git a/src/utils/Makefile.inc b/src/utils/Makefile.inc index daf4ff14d9..bc28961334 100644 --- a/src/utils/Makefile.inc +++ b/src/utils/Makefile.inc @@ -105,7 +105,8 @@ knotc_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAG_VISIBILITY) $(libedit_CFLAGS) knotc_LDADD = libcontrib.la libknotd.la libknotus.la $(libedit_LIBS) knotc_LDFLAGS = $(AM_LDFLAGS) -rdynamic knotd_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAG_VISIBILITY) $(liburcu_CFLAGS) -knotd_LDADD = $(malloc_LIBS) libcontrib.la libknotd.la $(liburcu_LIBS) +knotd_LDADD = $(malloc_LIBS) libcontrib.la libknotd.la $(liburcu_LIBS) \ + $(cap_ng_LIBS) knotd_LDFLAGS = $(AM_LDFLAGS) -rdynamic if HAVE_UTILS diff --git a/src/utils/knotd/main.c b/src/utils/knotd/main.c index 76289939dd..b2bcc8356e 100644 --- a/src/utils/knotd/main.c +++ b/src/utils/knotd/main.c @@ -25,9 +25,9 @@ #include #include -#ifdef HAVE_CAP_NG_H +#ifdef ENABLE_CAP_NG #include -#endif /* HAVE_CAP_NG_H */ +#endif #ifdef ENABLE_SYSTEMD #include @@ -186,7 +186,7 @@ static void enable_signals(void) /*! \brief Drop POSIX 1003.1e capabilities. */ static void drop_capabilities(void) { -#ifdef HAVE_CAP_NG_H +#ifdef ENABLE_CAP_NG /* Drop all capabilities. */ if (capng_have_capability(CAPNG_EFFECTIVE, CAP_SETPCAP)) { capng_clear(CAPNG_SELECT_BOTH); @@ -199,7 +199,7 @@ static void drop_capabilities(void) } else { log_info("process not allowed to set capabilities, skipping"); } -#endif /* HAVE_CAP_NG_H */ +#endif /* ENABLE_CAP_NG */ } /*! \brief Event loop listening for signals and remote commands. */ diff --git a/tests-fuzz/Makefile.am b/tests-fuzz/Makefile.am index f4066ae2fe..38de37eac5 100644 --- a/tests-fuzz/Makefile.am +++ b/tests-fuzz/Makefile.am @@ -28,7 +28,7 @@ knotd_stdio_SOURCES = \ knotd_stdio_CPPFLAGS = $(AM_CPPFLAGS) $(liburcu_CFLAGS) knotd_stdio_LDADD = $(top_builddir)/src/libknotd.la $(top_builddir)/src/libcontrib.la \ - $(liburcu_LIBS) + $(liburcu_LIBS) $(cap_ng_LIBS) BUILT_SOURCES = knotd_wrap/main.c CLEANFILES = knotd_wrap/main.c