nss: Reconcile conditional declaration and use of `is_nscd'

Message ID 20230511150930.2026524-1-arjun@redhat.com
State Committed
Commit bea1a4a77305cef90dac47b873bd9f01a6409c22
Headers
Series nss: Reconcile conditional declaration and use of `is_nscd' |

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent
dj/TryBot-32bit success Build for i686

Commit Message

Arjun Shankar May 11, 2023, 3:09 p.m. UTC
  This change harmonizes the declaration and use of `is_nscd' and fixes a
build failure with the "--enable-static-nss --enable-nscd"
configuration options due to `is_nscd' being used undeclared.

The purpose of `is_nscd' is to avoid (nss <-> nscd) recursion in
dynamically linked libc (SHARED) that is nscd-aware (USE_NSCD), and so
its declaration and use should be guarded by the definition of those
macros.
---
 nss/nss_module.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
  

Comments

Carlos O'Donell May 15, 2023, 2:09 p.m. UTC | #1
On 5/11/23 11:09, Arjun Shankar via Libc-alpha wrote:
> This change harmonizes the declaration and use of `is_nscd' and fixes a
> build failure with the "--enable-static-nss --enable-nscd"
> configuration options due to `is_nscd' being used undeclared.
> 
> The purpose of `is_nscd' is to avoid (nss <-> nscd) recursion in
> dynamically linked libc (SHARED) that is nscd-aware (USE_NSCD), and so
> its declaration and use should be guarded by the definition of those
> macros.

LGTM.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>

> ---
>  nss/nss_module.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/nss/nss_module.c b/nss/nss_module.c
> index 487e513def..0104f88974 100644
> --- a/nss/nss_module.c
> +++ b/nss/nss_module.c
> @@ -53,7 +53,7 @@ static struct nss_module *nss_module_list;
>     modules.  */
>  __libc_lock_define (static, nss_module_list_lock);
>  
> -#if defined USE_NSCD && (!defined DO_STATIC_NSS || defined SHARED)
> +#if defined SHARED && defined USE_NSCD
>  /* Nonzero if this is the nscd process.  */
>  static bool is_nscd;

OK. The is_nscd is only available for shared (in addition to using NSCD). This has
nothing to do with DO_STATIC_NSS today.

>  /* The callback passed to the init functions when nscd is used.  */
> @@ -147,7 +147,7 @@ module_load_builtin (struct nss_module *module,
>  static bool
>  module_load_nss_files (struct nss_module *module)
>  {
> -#ifdef USE_NSCD
> +#if defined SHARED && defined USE_NSCD

OK.

>    if (is_nscd)
>      {
>        void (*cb) (size_t, struct traced_file *) = nscd_init_cb;
> @@ -238,7 +238,7 @@ module_load (struct nss_module *module)
>        PTR_MANGLE (pointers[idx]);
>      }
>  
> -# ifdef USE_NSCD
> +# if defined SHARED && defined USE_NSCD

OK.

>    if (is_nscd)
>      {
>        /* Call the init function when nscd is used.  */
  

Patch

diff --git a/nss/nss_module.c b/nss/nss_module.c
index 487e513def..0104f88974 100644
--- a/nss/nss_module.c
+++ b/nss/nss_module.c
@@ -53,7 +53,7 @@  static struct nss_module *nss_module_list;
    modules.  */
 __libc_lock_define (static, nss_module_list_lock);
 
-#if defined USE_NSCD && (!defined DO_STATIC_NSS || defined SHARED)
+#if defined SHARED && defined USE_NSCD
 /* Nonzero if this is the nscd process.  */
 static bool is_nscd;
 /* The callback passed to the init functions when nscd is used.  */
@@ -147,7 +147,7 @@  module_load_builtin (struct nss_module *module,
 static bool
 module_load_nss_files (struct nss_module *module)
 {
-#ifdef USE_NSCD
+#if defined SHARED && defined USE_NSCD
   if (is_nscd)
     {
       void (*cb) (size_t, struct traced_file *) = nscd_init_cb;
@@ -238,7 +238,7 @@  module_load (struct nss_module *module)
       PTR_MANGLE (pointers[idx]);
     }
 
-# ifdef USE_NSCD
+# if defined SHARED && defined USE_NSCD
   if (is_nscd)
     {
       /* Call the init function when nscd is used.  */