From 2428beec9189bb93e6e1fdd5bdde35acf5279a03 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Sun, 20 May 2012 15:42:56 +0200 Subject: [PATCH] Bug 50145 - make netgroup support optional https://bugs.freedesktop.org/show_bug.cgi?id=50145 netgroups are not defined in POSIX and are not be available on all systems. We check for getnetgrent in configure script. Signed-off-by: Natanael Copa --- configure.ac | 2 +- src/polkitbackend/polkitbackendlocalauthority.c | 8 ++++++-- src/polkitbackend/polkitbackendlocalauthorizationstore.c | 3 ++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index f325922..711aa7c 100644 --- a/configure.ac +++ b/configure.ac @@ -141,7 +141,7 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXPAT_LIBS="-lexpat"], [AC_MSG_ERROR([Can't find expat library. Please install expat.])]) AC_SUBST(EXPAT_LIBS) -AC_CHECK_FUNCS(clearenv) +AC_CHECK_FUNCS(clearenv getnetgrent) if test "x$GCC" = "xyes"; then LDFLAGS="-Wl,--as-needed $LDFLAGS" diff --git a/src/polkitbackend/polkitbackendlocalauthority.c b/src/polkitbackend/polkitbackendlocalauthority.c index b53eda3..f14e924 100644 --- a/src/polkitbackend/polkitbackendlocalauthority.c +++ b/src/polkitbackend/polkitbackendlocalauthority.c @@ -52,9 +52,10 @@ static GList *get_users_in_group (PolkitIdentity *group, gboolean include_root); - +#if defined HAVE_GETNETGRENT static GList *get_users_in_net_group (PolkitIdentity *group, gboolean include_root); +#endif static GList *get_groups_for_user (PolkitIdentity *user); @@ -511,10 +512,12 @@ polkit_backend_local_authority_get_admin_auth_identities (PolkitBackendInteracti { ret = g_list_concat (ret, get_users_in_group (identity, FALSE)); } +#if defined HAVE_GETNETGRENT else if (POLKIT_IS_UNIX_NETGROUP (identity)) { ret = g_list_concat (ret, get_users_in_net_group (identity, FALSE)); } +#endif else { g_warning ("Unsupported identity %s", admin_identities[n]); @@ -690,6 +693,7 @@ get_users_in_group (PolkitIdentity *group, return ret; } +#if defined HAVE_GETNETGRENT static GList * get_users_in_net_group (PolkitIdentity *group, gboolean include_root) @@ -741,7 +745,7 @@ get_users_in_net_group (PolkitIdentity *group, endnetgrent (); return ret; } - +#endif static GList * get_groups_for_user (PolkitIdentity *user) diff --git a/src/polkitbackend/polkitbackendlocalauthorizationstore.c b/src/polkitbackend/polkitbackendlocalauthorizationstore.c index 2ddfe75..02553c4 100644 --- a/src/polkitbackend/polkitbackendlocalauthorizationstore.c +++ b/src/polkitbackend/polkitbackendlocalauthorizationstore.c @@ -725,6 +725,7 @@ polkit_backend_local_authorization_store_lookup (PolkitBackendLocalAuthorization break; } +#if defined HAVE_GETNETGRENT /* if no identity specs matched and identity is a user, match against netgroups */ if (ll == NULL && POLKIT_IS_UNIX_USER (identity)) { @@ -732,13 +733,13 @@ polkit_backend_local_authorization_store_lookup (PolkitBackendLocalAuthorization const gchar *user_name = polkit_unix_user_get_name (user_identity); if (!user_name) continue; - for (ll = authorization->netgroup_identities; ll != NULL; ll = ll->next) { if (innetgr ((const gchar *) ll->data, NULL, user_name, NULL)) break; } } +#endif if (ll == NULL) continue; -- 1.7.10.2