From e5d5edc3ff0dbf1f0ef2f8076ca64f54eabcd116 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 10 Dec 2020 12:46:23 +0100 Subject: [PATCH] nss-mymachines: initialize logging No logging is done directly by nss-mymachines.c code, but we call into sd-bus, which will log. --- src/nss-mymachines/nss-mymachines.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/nss-mymachines/nss-mymachines.c b/src/nss-mymachines/nss-mymachines.c index 53f0492116..44715bb3e5 100644 --- a/src/nss-mymachines/nss-mymachines.c +++ b/src/nss-mymachines/nss-mymachines.c @@ -2,6 +2,7 @@ #include #include +#include #include "sd-bus.h" #include "sd-login.h" @@ -14,12 +15,27 @@ #include "format-util.h" #include "hostname-util.h" #include "in-addr-util.h" +#include "log.h" #include "macro.h" #include "memory-util.h" #include "nss-util.h" #include "signal-util.h" #include "string-util.h" +static void setup_logging(void) { + /* We need a dummy function because log_parse_environment is a macro. */ + log_parse_environment(); +} + +static void setup_logging_once(void) { + static pthread_once_t once = PTHREAD_ONCE_INIT; + assert_se(pthread_once(&once, setup_logging) == 0); +} + +#define NSS_ENTRYPOINT_BEGIN \ + BLOCK_SIGNALS(NSS_SIGNALS_BLOCK); \ + setup_logging_once() + NSS_GETHOSTBYNAME_PROTOTYPES(mymachines); NSS_GETPW_PROTOTYPES(mymachines); NSS_GETGR_PROTOTYPES(mymachines); @@ -94,7 +110,7 @@ enum nss_status _nss_mymachines_gethostbyname4_r( int n_ifindices, r; PROTECT_ERRNO; - BLOCK_SIGNALS(NSS_SIGNALS_BLOCK); + NSS_ENTRYPOINT_BEGIN; assert(name); assert(pat); @@ -244,7 +260,7 @@ enum nss_status _nss_mymachines_gethostbyname3_r( int r; PROTECT_ERRNO; - BLOCK_SIGNALS(NSS_SIGNALS_BLOCK); + NSS_ENTRYPOINT_BEGIN; assert(name); assert(result);