108 lines
3.6 KiB
Diff
108 lines
3.6 KiB
Diff
From 7d5e205aa58a10e7b1ccc2fa75b443508a5c3e18 Mon Sep 17 00:00:00 2001
|
|
From: Khem Raj <raj.khem@gmail.com>
|
|
Date: Wed, 20 Jan 2016 04:31:59 +0000
|
|
Subject: [PATCH] make netgroup support configurable
|
|
|
|
Disable using innetgr and *netigrent function if not available
|
|
|
|
These functions are not available on all libc implementations e.g. musl
|
|
doesnt have them.
|
|
|
|
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
|
---
|
|
Upstream-Status: Pending
|
|
|
|
configure.ac | 2 +-
|
|
src/polkitbackend/polkitbackendinteractiveauthority.c | 6 +++++-
|
|
src/polkitbackend/polkitbackendjsauthority.c | 5 ++---
|
|
3 files changed, 8 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/configure.ac b/configure.ac
|
|
index 07982d1..21590b2 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -158,7 +158,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 fdatasync)
|
|
+AC_CHECK_FUNCS(clearenv fdatasync getnetgrent innetgr)
|
|
|
|
if test "x$GCC" = "xyes"; then
|
|
LDFLAGS="-Wl,--as-needed $LDFLAGS"
|
|
diff --git a/src/polkitbackend/polkitbackendinteractiveauthority.c b/src/polkitbackend/polkitbackendinteractiveauthority.c
|
|
index 7019356..cf39d77 100644
|
|
--- a/src/polkitbackend/polkitbackendinteractiveauthority.c
|
|
+++ b/src/polkitbackend/polkitbackendinteractiveauthority.c
|
|
@@ -2213,7 +2213,7 @@ get_users_in_group (PolkitIdentity *group,
|
|
out:
|
|
return ret;
|
|
}
|
|
-
|
|
+#if defined HAVE_GETNETGRENT
|
|
static GList *
|
|
get_users_in_net_group (PolkitIdentity *group,
|
|
gboolean include_root)
|
|
@@ -2270,6 +2270,8 @@ get_users_in_net_group (PolkitIdentity *group,
|
|
return ret;
|
|
}
|
|
|
|
+#endif
|
|
+
|
|
/* ---------------------------------------------------------------------------------------------------- */
|
|
|
|
static void
|
|
@@ -2355,10 +2357,12 @@ authentication_agent_initiate_challenge (AuthenticationAgent *agent,
|
|
{
|
|
user_identities = g_list_concat (user_identities, get_users_in_group (identity, FALSE));
|
|
}
|
|
+#if defined HAVE_GETNETGRENT
|
|
else if (POLKIT_IS_UNIX_NETGROUP (identity))
|
|
{
|
|
user_identities = g_list_concat (user_identities, get_users_in_net_group (identity, FALSE));
|
|
}
|
|
+#endif
|
|
else
|
|
{
|
|
g_warning ("Unsupported identity");
|
|
diff --git a/src/polkitbackend/polkitbackendjsauthority.c b/src/polkitbackend/polkitbackendjsauthority.c
|
|
index 097dcc5..e59b3f7 100644
|
|
--- a/src/polkitbackend/polkitbackendjsauthority.c
|
|
+++ b/src/polkitbackend/polkitbackendjsauthority.c
|
|
@@ -1498,7 +1498,6 @@ js_polkit_spawn (JSContext *cx,
|
|
|
|
/* ---------------------------------------------------------------------------------------------------- */
|
|
|
|
-
|
|
static JSBool
|
|
js_polkit_user_is_in_netgroup (JSContext *cx,
|
|
unsigned argc,
|
|
@@ -1518,6 +1517,7 @@ js_polkit_user_is_in_netgroup (JSContext *cx,
|
|
user = JS_EncodeString (cx, user_str);
|
|
netgroup = JS_EncodeString (cx, netgroup_str);
|
|
|
|
+#if defined HAVE_INNETGR
|
|
if (innetgr (netgroup,
|
|
NULL, /* host */
|
|
user,
|
|
@@ -1525,6 +1525,7 @@ js_polkit_user_is_in_netgroup (JSContext *cx,
|
|
{
|
|
is_in_netgroup = JS_TRUE;
|
|
}
|
|
+#endif
|
|
|
|
JS_free (cx, netgroup);
|
|
JS_free (cx, user);
|
|
@@ -1536,8 +1537,6 @@ js_polkit_user_is_in_netgroup (JSContext *cx,
|
|
return ret;
|
|
}
|
|
|
|
-
|
|
-
|
|
/* ---------------------------------------------------------------------------------------------------- */
|
|
|
|
typedef struct
|
|
--
|
|
2.7.0
|
|
|