package/polkit: bump to version 121
https://gitlab.freedesktop.org/polkit/polkit/-/blob/121/NEWS.md Highlights: - new versioning - duktape added as backend JS engine - autotools build system removed - new translations Signed-off-by: Daniel Lang <d.lang@abatec.at> [Peter: drop CVE-2021-4034 reference] Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
parent
c2f6422563
commit
e78bcf27d4
260
package/polkit/0001-make-netgroup-support-optional-meson.patch
Normal file
260
package/polkit/0001-make-netgroup-support-optional-meson.patch
Normal file
@ -0,0 +1,260 @@
|
||||
From b57deee8178190a7ecc75290fa13cf7daabc2c66 Mon Sep 17 00:00:00 2001
|
||||
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
|
||||
Date: Sun, 15 May 2022 05:04:10 +0000
|
||||
Subject: [PATCH] Make netgroup support optional
|
||||
|
||||
On at least Linux/musl and Linux/uclibc, netgroup support is not
|
||||
available. PolKit fails to compile on these systems for that reason.
|
||||
|
||||
This change makes netgroup support conditional on the presence of the
|
||||
setnetgrent(3) function which is required for the support to work. If
|
||||
that function is not available on the system, an error will be returned
|
||||
to the administrator if unix-netgroup: is specified in configuration.
|
||||
|
||||
(sam: rebased for Meson and Duktape.)
|
||||
|
||||
Closes: https://gitlab.freedesktop.org/polkit/polkit/-/issues/14
|
||||
Closes: https://gitlab.freedesktop.org/polkit/polkit/-/issues/163
|
||||
Closes: https://gitlab.freedesktop.org/polkit/polkit/-/merge_requests/52
|
||||
Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com>
|
||||
Signed-off-by: Daniel Lang <d.lang@abatec.at>
|
||||
|
||||
---
|
||||
meson.build | 1 +
|
||||
src/polkit/polkitidentity.c | 17 +++++++++++++++++
|
||||
src/polkit/polkitunixnetgroup.c | 3 +++
|
||||
.../polkitbackendduktapeauthority.c | 4 ++--
|
||||
.../polkitbackendinteractiveauthority.c | 14 ++++++++------
|
||||
src/polkitbackend/polkitbackendjsauthority.cpp | 2 ++
|
||||
test/polkit/polkitidentitytest.c | 8 +++++++-
|
||||
test/polkit/polkitunixnetgrouptest.c | 2 ++
|
||||
.../test-polkitbackendjsauthority.c | 2 ++
|
||||
9 files changed, 44 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/meson.build b/meson.build
|
||||
index 908f0aa..66c4e9b 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -89,6 +89,7 @@ config_h.set('_GNU_SOURCE', true)
|
||||
check_functions = [
|
||||
'clearenv',
|
||||
'fdatasync',
|
||||
+ 'setnetgrent',
|
||||
]
|
||||
|
||||
foreach func: check_functions
|
||||
diff --git a/src/polkit/polkitidentity.c b/src/polkit/polkitidentity.c
|
||||
index 3aa1f7f..793f17d 100644
|
||||
--- a/src/polkit/polkitidentity.c
|
||||
+++ b/src/polkit/polkitidentity.c
|
||||
@@ -182,7 +182,15 @@ polkit_identity_from_string (const gchar *str,
|
||||
}
|
||||
else if (g_str_has_prefix (str, "unix-netgroup:"))
|
||||
{
|
||||
+#ifndef HAVE_SETNETGRENT
|
||||
+ g_set_error (error,
|
||||
+ POLKIT_ERROR,
|
||||
+ POLKIT_ERROR_FAILED,
|
||||
+ "Netgroups are not available on this machine ('%s')",
|
||||
+ str);
|
||||
+#else
|
||||
identity = polkit_unix_netgroup_new (str + sizeof "unix-netgroup:" - 1);
|
||||
+#endif
|
||||
}
|
||||
|
||||
if (identity == NULL && (error != NULL && *error == NULL))
|
||||
@@ -344,6 +352,14 @@ polkit_identity_new_for_gvariant (GVariant *variant,
|
||||
GVariant *v;
|
||||
const char *name;
|
||||
|
||||
+#ifndef HAVE_SETNETGRENT
|
||||
+ g_set_error (error,
|
||||
+ POLKIT_ERROR,
|
||||
+ POLKIT_ERROR_FAILED,
|
||||
+ "Netgroups are not available on this machine");
|
||||
+ goto out;
|
||||
+#else
|
||||
+
|
||||
v = lookup_asv (details_gvariant, "name", G_VARIANT_TYPE_STRING, error);
|
||||
if (v == NULL)
|
||||
{
|
||||
@@ -353,6 +369,7 @@ polkit_identity_new_for_gvariant (GVariant *variant,
|
||||
name = g_variant_get_string (v, NULL);
|
||||
ret = polkit_unix_netgroup_new (name);
|
||||
g_variant_unref (v);
|
||||
+#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
diff --git a/src/polkit/polkitunixnetgroup.c b/src/polkit/polkitunixnetgroup.c
|
||||
index 8a2b369..83f8d4a 100644
|
||||
--- a/src/polkit/polkitunixnetgroup.c
|
||||
+++ b/src/polkit/polkitunixnetgroup.c
|
||||
@@ -194,6 +194,9 @@ polkit_unix_netgroup_set_name (PolkitUnixNetgroup *group,
|
||||
PolkitIdentity *
|
||||
polkit_unix_netgroup_new (const gchar *name)
|
||||
{
|
||||
+#ifndef HAVE_SETNETGRENT
|
||||
+ g_assert_not_reached();
|
||||
+#endif
|
||||
g_return_val_if_fail (name != NULL, NULL);
|
||||
return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_NETGROUP,
|
||||
"name", name,
|
||||
diff --git a/src/polkitbackend/polkitbackendduktapeauthority.c b/src/polkitbackend/polkitbackendduktapeauthority.c
|
||||
index c89dbcf..f4b4304 100644
|
||||
--- a/src/polkitbackend/polkitbackendduktapeauthority.c
|
||||
+++ b/src/polkitbackend/polkitbackendduktapeauthority.c
|
||||
@@ -1035,7 +1035,7 @@ js_polkit_user_is_in_netgroup (duk_context *cx)
|
||||
|
||||
user = duk_require_string (cx, 0);
|
||||
netgroup = duk_require_string (cx, 1);
|
||||
-
|
||||
+#ifdef HAVE_SETNETGRENT
|
||||
if (innetgr (netgroup,
|
||||
NULL, /* host */
|
||||
user,
|
||||
@@ -1043,7 +1043,7 @@ js_polkit_user_is_in_netgroup (duk_context *cx)
|
||||
{
|
||||
is_in_netgroup = TRUE;
|
||||
}
|
||||
-
|
||||
+#endif
|
||||
duk_push_boolean (cx, is_in_netgroup);
|
||||
return 1;
|
||||
}
|
||||
diff --git a/src/polkitbackend/polkitbackendinteractiveauthority.c b/src/polkitbackend/polkitbackendinteractiveauthority.c
|
||||
index d935a7a..1cfc88e 100644
|
||||
--- a/src/polkitbackend/polkitbackendinteractiveauthority.c
|
||||
+++ b/src/polkitbackend/polkitbackendinteractiveauthority.c
|
||||
@@ -2248,25 +2248,26 @@ get_users_in_net_group (PolkitIdentity *group,
|
||||
GList *ret;
|
||||
|
||||
ret = NULL;
|
||||
+#ifdef HAVE_SETNETGRENT
|
||||
name = polkit_unix_netgroup_get_name (POLKIT_UNIX_NETGROUP (group));
|
||||
|
||||
-#ifdef HAVE_SETNETGRENT_RETURN
|
||||
+# ifdef HAVE_SETNETGRENT_RETURN
|
||||
if (setnetgrent (name) == 0)
|
||||
{
|
||||
g_warning ("Error looking up net group with name %s: %s", name, g_strerror (errno));
|
||||
goto out;
|
||||
}
|
||||
-#else
|
||||
+# else
|
||||
setnetgrent (name);
|
||||
-#endif
|
||||
+# endif /* HAVE_SETNETGRENT_RETURN */
|
||||
|
||||
for (;;)
|
||||
{
|
||||
-#if defined(HAVE_NETBSD) || defined(HAVE_OPENBSD)
|
||||
+# if defined(HAVE_NETBSD) || defined(HAVE_OPENBSD)
|
||||
const char *hostname, *username, *domainname;
|
||||
-#else
|
||||
+# else
|
||||
char *hostname, *username, *domainname;
|
||||
-#endif
|
||||
+# endif /* defined(HAVE_NETBSD) || defined(HAVE_OPENBSD) */
|
||||
PolkitIdentity *user;
|
||||
GError *error = NULL;
|
||||
|
||||
@@ -2297,6 +2298,7 @@ get_users_in_net_group (PolkitIdentity *group,
|
||||
|
||||
out:
|
||||
endnetgrent ();
|
||||
+#endif /* HAVE_SETNETGRENT */
|
||||
return ret;
|
||||
}
|
||||
|
||||
diff --git a/src/polkitbackend/polkitbackendjsauthority.cpp b/src/polkitbackend/polkitbackendjsauthority.cpp
|
||||
index 2568e8e..999269b 100644
|
||||
--- a/src/polkitbackend/polkitbackendjsauthority.cpp
|
||||
+++ b/src/polkitbackend/polkitbackendjsauthority.cpp
|
||||
@@ -1271,6 +1271,7 @@ js_polkit_user_is_in_netgroup (JSContext *cx,
|
||||
|
||||
JS::CallArgs args = JS::CallArgsFromVp (argc, vp);
|
||||
|
||||
+#ifdef HAVE_SETNETGRENT
|
||||
JS::RootedString usrstr (authority->priv->cx);
|
||||
usrstr = args[0].toString();
|
||||
user = JS_EncodeStringToUTF8 (cx, usrstr);
|
||||
@@ -1285,6 +1286,7 @@ js_polkit_user_is_in_netgroup (JSContext *cx,
|
||||
{
|
||||
is_in_netgroup = true;
|
||||
}
|
||||
+#endif
|
||||
|
||||
ret = true;
|
||||
|
||||
diff --git a/test/polkit/polkitidentitytest.c b/test/polkit/polkitidentitytest.c
|
||||
index e91967b..2635c4c 100644
|
||||
--- a/test/polkit/polkitidentitytest.c
|
||||
+++ b/test/polkit/polkitidentitytest.c
|
||||
@@ -145,11 +145,15 @@ struct ComparisonTestData comparison_test_data [] = {
|
||||
{"unix-group:root", "unix-group:jane", FALSE},
|
||||
{"unix-group:jane", "unix-group:jane", TRUE},
|
||||
|
||||
+#ifdef HAVE_SETNETGRENT
|
||||
{"unix-netgroup:foo", "unix-netgroup:foo", TRUE},
|
||||
{"unix-netgroup:foo", "unix-netgroup:bar", FALSE},
|
||||
+#endif
|
||||
|
||||
{"unix-user:root", "unix-group:root", FALSE},
|
||||
+#ifdef HAVE_SETNETGRENT
|
||||
{"unix-user:jane", "unix-netgroup:foo", FALSE},
|
||||
+#endif
|
||||
|
||||
{NULL},
|
||||
};
|
||||
@@ -181,11 +185,13 @@ main (int argc, char *argv[])
|
||||
g_test_add_data_func ("/PolkitIdentity/group_string_2", "unix-group:jane", test_string);
|
||||
g_test_add_data_func ("/PolkitIdentity/group_string_3", "unix-group:users", test_string);
|
||||
|
||||
+#ifdef HAVE_SETNETGRENT
|
||||
g_test_add_data_func ("/PolkitIdentity/netgroup_string", "unix-netgroup:foo", test_string);
|
||||
+ g_test_add_data_func ("/PolkitIdentity/netgroup_gvariant", "unix-netgroup:foo", test_gvariant);
|
||||
+#endif
|
||||
|
||||
g_test_add_data_func ("/PolkitIdentity/user_gvariant", "unix-user:root", test_gvariant);
|
||||
g_test_add_data_func ("/PolkitIdentity/group_gvariant", "unix-group:root", test_gvariant);
|
||||
- g_test_add_data_func ("/PolkitIdentity/netgroup_gvariant", "unix-netgroup:foo", test_gvariant);
|
||||
|
||||
add_comparison_tests ();
|
||||
|
||||
diff --git a/test/polkit/polkitunixnetgrouptest.c b/test/polkit/polkitunixnetgrouptest.c
|
||||
index 3701ba1..e1d211e 100644
|
||||
--- a/test/polkit/polkitunixnetgrouptest.c
|
||||
+++ b/test/polkit/polkitunixnetgrouptest.c
|
||||
@@ -69,7 +69,9 @@ int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
g_test_init (&argc, &argv, NULL);
|
||||
+#ifdef HAVE_SETNETGRENT
|
||||
g_test_add_func ("/PolkitUnixNetgroup/new", test_new);
|
||||
g_test_add_func ("/PolkitUnixNetgroup/set_name", test_set_name);
|
||||
+#endif
|
||||
return g_test_run ();
|
||||
}
|
||||
diff --git a/test/polkitbackend/test-polkitbackendjsauthority.c b/test/polkitbackend/test-polkitbackendjsauthority.c
|
||||
index 2103b17..b187a2f 100644
|
||||
--- a/test/polkitbackend/test-polkitbackendjsauthority.c
|
||||
+++ b/test/polkitbackend/test-polkitbackendjsauthority.c
|
||||
@@ -137,12 +137,14 @@ test_get_admin_identities (void)
|
||||
"unix-group:users"
|
||||
}
|
||||
},
|
||||
+#ifdef HAVE_SETNETGRENT
|
||||
{
|
||||
"net.company.action3",
|
||||
{
|
||||
"unix-netgroup:foo"
|
||||
}
|
||||
},
|
||||
+#endif
|
||||
};
|
||||
guint n;
|
||||
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,426 +0,0 @@
|
||||
From 1b854ef4bb15032091a33fed587e5ba6f3e582eb Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 22 May 2019 13:18:55 -0700
|
||||
Subject: [PATCH] make netgroup support optional
|
||||
|
||||
On at least Linux/musl and Linux/uclibc, netgroup
|
||||
support is not available. PolKit fails to compile on these systems
|
||||
for that reason.
|
||||
|
||||
This change makes netgroup support conditional on the presence of the
|
||||
setnetgrent(3) function which is required for the support to work. If
|
||||
that function is not available on the system, an error will be returned
|
||||
to the administrator if unix-netgroup: is specified in configuration.
|
||||
|
||||
Fixes bug 50145.
|
||||
|
||||
Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
[Adam: Extend patch to work with duktape integration.]
|
||||
Signed-off-by: Adam Duskett <aduskett@gmail.com>
|
||||
[Thomas: add introspection.m4.]
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||
---
|
||||
buildutil/introspection.m4 | 142 ++++++++++++++++++
|
||||
configure.ac | 2 +-
|
||||
src/polkit/polkitidentity.c | 16 ++
|
||||
src/polkit/polkitunixnetgroup.c | 3 +
|
||||
.../polkitbackendduktapeauthority.c | 2 +
|
||||
.../polkitbackendinteractiveauthority.c | 14 +-
|
||||
.../polkitbackendjsauthority.cpp | 3 +-
|
||||
test/polkit/polkitidentitytest.c | 9 +-
|
||||
test/polkit/polkitunixnetgrouptest.c | 3 +
|
||||
.../test-polkitbackendjsauthority.c | 2 +
|
||||
10 files changed, 187 insertions(+), 9 deletions(-)
|
||||
create mode 100644 buildutil/introspection.m4
|
||||
|
||||
diff --git a/buildutil/introspection.m4 b/buildutil/introspection.m4
|
||||
new file mode 100644
|
||||
index 0000000..b0ccd68
|
||||
--- /dev/null
|
||||
+++ b/buildutil/introspection.m4
|
||||
@@ -0,0 +1,142 @@
|
||||
+dnl -*- mode: autoconf -*-
|
||||
+dnl Copyright 2009 Johan Dahlin
|
||||
+dnl
|
||||
+dnl This file is free software; the author(s) gives unlimited
|
||||
+dnl permission to copy and/or distribute it, with or without
|
||||
+dnl modifications, as long as this notice is preserved.
|
||||
+dnl
|
||||
+
|
||||
+# serial 1
|
||||
+
|
||||
+dnl This is a copy of AS_AC_EXPAND
|
||||
+dnl
|
||||
+dnl (C) 2003, 2004, 2005 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
+dnl Copying and distribution of this file, with or without modification,
|
||||
+dnl are permitted in any medium without royalty provided the copyright
|
||||
+dnl notice and this notice are preserved.
|
||||
+m4_define([_GOBJECT_INTROSPECTION_AS_AC_EXPAND],
|
||||
+[
|
||||
+ EXP_VAR=[$1]
|
||||
+ FROM_VAR=[$2]
|
||||
+
|
||||
+ dnl first expand prefix and exec_prefix if necessary
|
||||
+ prefix_save=$prefix
|
||||
+ exec_prefix_save=$exec_prefix
|
||||
+
|
||||
+ dnl if no prefix given, then use /usr/local, the default prefix
|
||||
+ if test "x$prefix" = "xNONE"; then
|
||||
+ prefix="$ac_default_prefix"
|
||||
+ fi
|
||||
+ dnl if no exec_prefix given, then use prefix
|
||||
+ if test "x$exec_prefix" = "xNONE"; then
|
||||
+ exec_prefix=$prefix
|
||||
+ fi
|
||||
+
|
||||
+ full_var="$FROM_VAR"
|
||||
+ dnl loop until it doesn't change anymore
|
||||
+ while true; do
|
||||
+ new_full_var="`eval echo $full_var`"
|
||||
+ if test "x$new_full_var" = "x$full_var"; then break; fi
|
||||
+ full_var=$new_full_var
|
||||
+ done
|
||||
+
|
||||
+ dnl clean up
|
||||
+ full_var=$new_full_var
|
||||
+ AC_SUBST([$1], "$full_var")
|
||||
+
|
||||
+ dnl restore prefix and exec_prefix
|
||||
+ prefix=$prefix_save
|
||||
+ exec_prefix=$exec_prefix_save
|
||||
+])
|
||||
+
|
||||
+m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
|
||||
+[
|
||||
+ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
|
||||
+ AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
|
||||
+ AC_BEFORE([LT_INIT],[$0])dnl setup libtool first
|
||||
+
|
||||
+ dnl enable/disable introspection
|
||||
+ m4_if([$2], [require],
|
||||
+ [dnl
|
||||
+ enable_introspection=yes
|
||||
+ ],[dnl
|
||||
+ AC_ARG_ENABLE(introspection,
|
||||
+ AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]],
|
||||
+ [Enable introspection for this build]),,
|
||||
+ [enable_introspection=auto])
|
||||
+ ])dnl
|
||||
+
|
||||
+ AC_MSG_CHECKING([for gobject-introspection])
|
||||
+
|
||||
+ dnl presence/version checking
|
||||
+ AS_CASE([$enable_introspection],
|
||||
+ [no], [dnl
|
||||
+ found_introspection="no (disabled, use --enable-introspection to enable)"
|
||||
+ ],dnl
|
||||
+ [yes],[dnl
|
||||
+ PKG_CHECK_EXISTS([gobject-introspection-1.0],,
|
||||
+ AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))
|
||||
+ PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1],
|
||||
+ found_introspection=yes,
|
||||
+ AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))
|
||||
+ ],dnl
|
||||
+ [auto],[dnl
|
||||
+ PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no)
|
||||
+ dnl Canonicalize enable_introspection
|
||||
+ enable_introspection=$found_introspection
|
||||
+ ],dnl
|
||||
+ [dnl
|
||||
+ AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
|
||||
+ ])dnl
|
||||
+
|
||||
+ AC_MSG_RESULT([$found_introspection])
|
||||
+
|
||||
+ dnl expand datadir/libdir so we can pass them to pkg-config
|
||||
+ dnl and get paths relative to our target directories
|
||||
+ _GOBJECT_INTROSPECTION_AS_AC_EXPAND(_GI_EXP_DATADIR, "$datadir")
|
||||
+ _GOBJECT_INTROSPECTION_AS_AC_EXPAND(_GI_EXP_LIBDIR, "$libdir")
|
||||
+
|
||||
+ INTROSPECTION_SCANNER=
|
||||
+ INTROSPECTION_COMPILER=
|
||||
+ INTROSPECTION_GENERATE=
|
||||
+ INTROSPECTION_GIRDIR=
|
||||
+ INTROSPECTION_TYPELIBDIR=
|
||||
+ if test "x$found_introspection" = "xyes"; then
|
||||
+ INTROSPECTION_SCANNER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
|
||||
+ INTROSPECTION_COMPILER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
|
||||
+ INTROSPECTION_GENERATE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
|
||||
+ INTROSPECTION_GIRDIR=`$PKG_CONFIG --define-variable=datadir="${_GI_EXP_DATADIR}" --variable=girdir gobject-introspection-1.0`
|
||||
+ INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --define-variable=libdir="${_GI_EXP_LIBDIR}" --variable=typelibdir gobject-introspection-1.0)"
|
||||
+ INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
|
||||
+ INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
|
||||
+ INTROSPECTION_MAKEFILE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
|
||||
+ fi
|
||||
+ AC_SUBST(INTROSPECTION_SCANNER)
|
||||
+ AC_SUBST(INTROSPECTION_COMPILER)
|
||||
+ AC_SUBST(INTROSPECTION_GENERATE)
|
||||
+ AC_SUBST(INTROSPECTION_GIRDIR)
|
||||
+ AC_SUBST(INTROSPECTION_TYPELIBDIR)
|
||||
+ AC_SUBST(INTROSPECTION_CFLAGS)
|
||||
+ AC_SUBST(INTROSPECTION_LIBS)
|
||||
+ AC_SUBST(INTROSPECTION_MAKEFILE)
|
||||
+
|
||||
+ AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
|
||||
+])
|
||||
+
|
||||
+
|
||||
+dnl Usage:
|
||||
+dnl GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version])
|
||||
+
|
||||
+AC_DEFUN([GOBJECT_INTROSPECTION_CHECK],
|
||||
+[
|
||||
+ _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1])
|
||||
+])
|
||||
+
|
||||
+dnl Usage:
|
||||
+dnl GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version])
|
||||
+
|
||||
+
|
||||
+AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE],
|
||||
+[
|
||||
+ _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require])
|
||||
+])
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 5cedb4e..87aa0ad 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -111,7 +111,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 setnetgrent)
|
||||
|
||||
if test "x$GCC" = "xyes"; then
|
||||
LDFLAGS="-Wl,--as-needed $LDFLAGS"
|
||||
diff --git a/src/polkit/polkitidentity.c b/src/polkit/polkitidentity.c
|
||||
index 3aa1f7f..10e9c17 100644
|
||||
--- a/src/polkit/polkitidentity.c
|
||||
+++ b/src/polkit/polkitidentity.c
|
||||
@@ -182,7 +182,15 @@ polkit_identity_from_string (const gchar *str,
|
||||
}
|
||||
else if (g_str_has_prefix (str, "unix-netgroup:"))
|
||||
{
|
||||
+#ifndef HAVE_SETNETGRENT
|
||||
+ g_set_error (error,
|
||||
+ POLKIT_ERROR,
|
||||
+ POLKIT_ERROR_FAILED,
|
||||
+ "Netgroups are not available on this machine ('%s')",
|
||||
+ str);
|
||||
+#else
|
||||
identity = polkit_unix_netgroup_new (str + sizeof "unix-netgroup:" - 1);
|
||||
+#endif
|
||||
}
|
||||
|
||||
if (identity == NULL && (error != NULL && *error == NULL))
|
||||
@@ -344,6 +352,13 @@ polkit_identity_new_for_gvariant (GVariant *variant,
|
||||
GVariant *v;
|
||||
const char *name;
|
||||
|
||||
+#ifndef HAVE_SETNETGRENT
|
||||
+ g_set_error (error,
|
||||
+ POLKIT_ERROR,
|
||||
+ POLKIT_ERROR_FAILED,
|
||||
+ "Netgroups are not available on this machine");
|
||||
+ goto out;
|
||||
+#else
|
||||
v = lookup_asv (details_gvariant, "name", G_VARIANT_TYPE_STRING, error);
|
||||
if (v == NULL)
|
||||
{
|
||||
@@ -353,6 +368,7 @@ polkit_identity_new_for_gvariant (GVariant *variant,
|
||||
name = g_variant_get_string (v, NULL);
|
||||
ret = polkit_unix_netgroup_new (name);
|
||||
g_variant_unref (v);
|
||||
+#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
diff --git a/src/polkit/polkitunixnetgroup.c b/src/polkit/polkitunixnetgroup.c
|
||||
index 8a2b369..83f8d4a 100644
|
||||
--- a/src/polkit/polkitunixnetgroup.c
|
||||
+++ b/src/polkit/polkitunixnetgroup.c
|
||||
@@ -194,6 +194,9 @@ polkit_unix_netgroup_set_name (PolkitUnixNetgroup *group,
|
||||
PolkitIdentity *
|
||||
polkit_unix_netgroup_new (const gchar *name)
|
||||
{
|
||||
+#ifndef HAVE_SETNETGRENT
|
||||
+ g_assert_not_reached();
|
||||
+#endif
|
||||
g_return_val_if_fail (name != NULL, NULL);
|
||||
return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_NETGROUP,
|
||||
"name", name,
|
||||
diff --git a/src/polkitbackend/polkitbackendduktapeauthority.c b/src/polkitbackend/polkitbackendduktapeauthority.c
|
||||
index 4b4f8fd..e19b009 100644
|
||||
--- a/src/polkitbackend/polkitbackendduktapeauthority.c
|
||||
+++ b/src/polkitbackend/polkitbackendduktapeauthority.c
|
||||
@@ -1036,6 +1036,7 @@ js_polkit_user_is_in_netgroup (duk_context *cx)
|
||||
const char *netgroup;
|
||||
gboolean is_in_netgroup = FALSE;
|
||||
|
||||
+#ifdef HAVE_SETNETGRENT
|
||||
user = duk_require_string (cx, 0);
|
||||
netgroup = duk_require_string (cx, 1);
|
||||
|
||||
@@ -1046,6 +1047,7 @@ js_polkit_user_is_in_netgroup (duk_context *cx)
|
||||
{
|
||||
is_in_netgroup = TRUE;
|
||||
}
|
||||
+#endif
|
||||
|
||||
duk_push_boolean (cx, is_in_netgroup);
|
||||
return 1;
|
||||
diff --git a/src/polkitbackend/polkitbackendinteractiveauthority.c b/src/polkitbackend/polkitbackendinteractiveauthority.c
|
||||
index 056d9a8..36c2f3d 100644
|
||||
--- a/src/polkitbackend/polkitbackendinteractiveauthority.c
|
||||
+++ b/src/polkitbackend/polkitbackendinteractiveauthority.c
|
||||
@@ -2233,25 +2233,26 @@ get_users_in_net_group (PolkitIdentity *group,
|
||||
GList *ret;
|
||||
|
||||
ret = NULL;
|
||||
+#ifdef HAVE_SETNETGRENT
|
||||
name = polkit_unix_netgroup_get_name (POLKIT_UNIX_NETGROUP (group));
|
||||
|
||||
-#ifdef HAVE_SETNETGRENT_RETURN
|
||||
+# ifdef HAVE_SETNETGRENT_RETURN
|
||||
if (setnetgrent (name) == 0)
|
||||
{
|
||||
g_warning ("Error looking up net group with name %s: %s", name, g_strerror (errno));
|
||||
goto out;
|
||||
}
|
||||
-#else
|
||||
+# else
|
||||
setnetgrent (name);
|
||||
-#endif
|
||||
+# endif /* HAVE_SETNETGRENT_RETURN */
|
||||
|
||||
for (;;)
|
||||
{
|
||||
-#if defined(HAVE_NETBSD) || defined(HAVE_OPENBSD)
|
||||
+# if defined(HAVE_NETBSD) || defined(HAVE_OPENBSD)
|
||||
const char *hostname, *username, *domainname;
|
||||
-#else
|
||||
+# else
|
||||
char *hostname, *username, *domainname;
|
||||
-#endif
|
||||
+# endif /* defined(HAVE_NETBSD) || defined(HAVE_OPENBSD) */
|
||||
PolkitIdentity *user;
|
||||
GError *error = NULL;
|
||||
|
||||
@@ -2282,6 +2283,7 @@ get_users_in_net_group (PolkitIdentity *group,
|
||||
|
||||
out:
|
||||
endnetgrent ();
|
||||
+#endif /* HAVE_SETNETGRENT */
|
||||
return ret;
|
||||
}
|
||||
|
||||
diff --git a/src/polkitbackend/polkitbackendjsauthority.cpp b/src/polkitbackend/polkitbackendjsauthority.cpp
|
||||
index 9b752d1..09b2878 100644
|
||||
--- a/src/polkitbackend/polkitbackendjsauthority.cpp
|
||||
+++ b/src/polkitbackend/polkitbackendjsauthority.cpp
|
||||
@@ -1520,6 +1520,7 @@ js_polkit_user_is_in_netgroup (JSContext *cx,
|
||||
|
||||
JS::CallArgs args = JS::CallArgsFromVp (argc, vp);
|
||||
|
||||
+#ifdef HAVE_SETNETGRENT
|
||||
JS::RootedString usrstr (authority->priv->cx);
|
||||
usrstr = args[0].toString();
|
||||
user = JS_EncodeStringToUTF8 (cx, usrstr);
|
||||
@@ -1534,7 +1535,7 @@ js_polkit_user_is_in_netgroup (JSContext *cx,
|
||||
{
|
||||
is_in_netgroup = true;
|
||||
}
|
||||
-
|
||||
+#endif
|
||||
ret = true;
|
||||
|
||||
args.rval ().setBoolean (is_in_netgroup);
|
||||
diff --git a/test/polkit/polkitidentitytest.c b/test/polkit/polkitidentitytest.c
|
||||
index e91967b..e829aaa 100644
|
||||
--- a/test/polkit/polkitidentitytest.c
|
||||
+++ b/test/polkit/polkitidentitytest.c
|
||||
@@ -19,6 +19,7 @@
|
||||
* Author: Nikki VonHollen <vonhollen@google.com>
|
||||
*/
|
||||
|
||||
+#include "config.h"
|
||||
#include "glib.h"
|
||||
#include <polkit/polkit.h>
|
||||
#include <polkit/polkitprivate.h>
|
||||
@@ -145,11 +146,15 @@ struct ComparisonTestData comparison_test_data [] = {
|
||||
{"unix-group:root", "unix-group:jane", FALSE},
|
||||
{"unix-group:jane", "unix-group:jane", TRUE},
|
||||
|
||||
+#ifdef HAVE_SETNETGRENT
|
||||
{"unix-netgroup:foo", "unix-netgroup:foo", TRUE},
|
||||
{"unix-netgroup:foo", "unix-netgroup:bar", FALSE},
|
||||
+#endif
|
||||
|
||||
{"unix-user:root", "unix-group:root", FALSE},
|
||||
+#ifdef HAVE_SETNETGRENT
|
||||
{"unix-user:jane", "unix-netgroup:foo", FALSE},
|
||||
+#endif
|
||||
|
||||
{NULL},
|
||||
};
|
||||
@@ -181,11 +186,13 @@ main (int argc, char *argv[])
|
||||
g_test_add_data_func ("/PolkitIdentity/group_string_2", "unix-group:jane", test_string);
|
||||
g_test_add_data_func ("/PolkitIdentity/group_string_3", "unix-group:users", test_string);
|
||||
|
||||
+#ifdef HAVE_SETNETGRENT
|
||||
g_test_add_data_func ("/PolkitIdentity/netgroup_string", "unix-netgroup:foo", test_string);
|
||||
+ g_test_add_data_func ("/PolkitIdentity/netgroup_gvariant", "unix-netgroup:foo", test_gvariant);
|
||||
+#endif
|
||||
|
||||
g_test_add_data_func ("/PolkitIdentity/user_gvariant", "unix-user:root", test_gvariant);
|
||||
g_test_add_data_func ("/PolkitIdentity/group_gvariant", "unix-group:root", test_gvariant);
|
||||
- g_test_add_data_func ("/PolkitIdentity/netgroup_gvariant", "unix-netgroup:foo", test_gvariant);
|
||||
|
||||
add_comparison_tests ();
|
||||
|
||||
diff --git a/test/polkit/polkitunixnetgrouptest.c b/test/polkit/polkitunixnetgrouptest.c
|
||||
index 3701ba1..e3352eb 100644
|
||||
--- a/test/polkit/polkitunixnetgrouptest.c
|
||||
+++ b/test/polkit/polkitunixnetgrouptest.c
|
||||
@@ -19,6 +19,7 @@
|
||||
* Author: Nikki VonHollen <vonhollen@google.com>
|
||||
*/
|
||||
|
||||
+#include "config.h"
|
||||
#include "glib.h"
|
||||
#include <polkit/polkit.h>
|
||||
#include <string.h>
|
||||
@@ -69,7 +70,9 @@ int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
g_test_init (&argc, &argv, NULL);
|
||||
+#ifdef HAVE_SETNETGRENT
|
||||
g_test_add_func ("/PolkitUnixNetgroup/new", test_new);
|
||||
g_test_add_func ("/PolkitUnixNetgroup/set_name", test_set_name);
|
||||
+#endif
|
||||
return g_test_run ();
|
||||
}
|
||||
diff --git a/test/polkitbackend/test-polkitbackendjsauthority.c b/test/polkitbackend/test-polkitbackendjsauthority.c
|
||||
index 71aad23..fdd28f3 100644
|
||||
--- a/test/polkitbackend/test-polkitbackendjsauthority.c
|
||||
+++ b/test/polkitbackend/test-polkitbackendjsauthority.c
|
||||
@@ -137,12 +137,14 @@ test_get_admin_identities (void)
|
||||
"unix-group:users"
|
||||
}
|
||||
},
|
||||
+#ifdef HAVE_SETNETGRENT
|
||||
{
|
||||
"net.company.action3",
|
||||
{
|
||||
"unix-netgroup:foo"
|
||||
}
|
||||
},
|
||||
+#endif
|
||||
};
|
||||
guint n;
|
||||
|
||||
--
|
||||
2.25.1
|
||||
|
@ -1,45 +0,0 @@
|
||||
From 30c368a6b729bc8a0a9d0d023739c4fa07b0928b Mon Sep 17 00:00:00 2001
|
||||
From: Simon McVittie <smcv@debian.org>
|
||||
Date: Mon, 25 Oct 2021 20:21:27 +0100
|
||||
Subject: [PATCH] Don't pass positional parameters to i18n.merge_file
|
||||
|
||||
These were always ignored, and Meson 0.60.0 disallowed them.
|
||||
|
||||
Resolves: https://gitlab.freedesktop.org/polkit/polkit/-/issues/160
|
||||
Reference: https://github.com/mesonbuild/meson/pull/9445
|
||||
Signed-off-by: Simon McVittie <smcv@debian.org>
|
||||
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
|
||||
[Upstream status:
|
||||
https://gitlab.freedesktop.org/polkit/polkit/-/merge_requests/99]
|
||||
---
|
||||
actions/meson.build | 1 -
|
||||
src/examples/meson.build | 1 -
|
||||
2 files changed, 2 deletions(-)
|
||||
|
||||
diff --git a/actions/meson.build b/actions/meson.build
|
||||
index 2abaaf3..1e3f370 100644
|
||||
--- a/actions/meson.build
|
||||
+++ b/actions/meson.build
|
||||
@@ -1,7 +1,6 @@
|
||||
policy = 'org.freedesktop.policykit.policy'
|
||||
|
||||
i18n.merge_file(
|
||||
- policy,
|
||||
input: policy + '.in',
|
||||
output: '@BASENAME@',
|
||||
po_dir: po_dir,
|
||||
diff --git a/src/examples/meson.build b/src/examples/meson.build
|
||||
index c6305ab..8c18de5 100644
|
||||
--- a/src/examples/meson.build
|
||||
+++ b/src/examples/meson.build
|
||||
@@ -1,7 +1,6 @@
|
||||
policy = 'org.freedesktop.policykit.examples.pkexec.policy'
|
||||
|
||||
i18n.merge_file(
|
||||
- policy,
|
||||
input: policy + '.in',
|
||||
output: '@BASENAME@',
|
||||
po_dir: po_dir,
|
||||
--
|
||||
2.25.1
|
||||
|
@ -1,50 +0,0 @@
|
||||
From abbc04f6f3acfc2dfa34b1c07decaa658786e142 Mon Sep 17 00:00:00 2001
|
||||
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
Date: Sat, 2 Apr 2022 18:33:08 +0200
|
||||
Subject: [PATCH] fix build without C++
|
||||
|
||||
Fix the following build failure without C++ raised since
|
||||
https://gitlab.freedesktop.org/polkit/polkit/-/commit/957a015157fd359d9679540f664183e4b9492896:
|
||||
|
||||
The following exception(s) were encountered:
|
||||
Running "/home/autobuild/autobuild/instance-14/output-1/host/bin/or1k-buildroot-linux-musl-g++ --version" gave "[Errno 2] No such file or directory: '/home/autobuild/autobuild/instance-14/output-1/host/bin/or1k-buildroot-linux-musl-g++'"
|
||||
|
||||
Indeed, C++ is only required with mozjs engine
|
||||
|
||||
Fixes:
|
||||
- http://autobuild.buildroot.org/results/1d52c8100414aa384572b23006a13f9b806d2d5a
|
||||
|
||||
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
[Retrieved from:
|
||||
https://gitlab.freedesktop.org/polkit/polkit/-/commit/abbc04f6f3acfc2dfa34b1c07decaa658786e142]
|
||||
---
|
||||
meson.build | 2 +-
|
||||
src/polkitbackend/meson.build | 1 +
|
||||
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/meson.build b/meson.build
|
||||
index c6765fd..da60930 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -1,5 +1,5 @@
|
||||
project(
|
||||
- 'polkit', ['c', 'cpp'],
|
||||
+ 'polkit', ['c'],
|
||||
version: '0.120',
|
||||
license: 'LGPL2+',
|
||||
default_options: [
|
||||
diff --git a/src/polkitbackend/meson.build b/src/polkitbackend/meson.build
|
||||
index 266f280..7c5d443 100644
|
||||
--- a/src/polkitbackend/meson.build
|
||||
+++ b/src/polkitbackend/meson.build
|
||||
@@ -38,6 +38,7 @@ if js_engine == 'duktape'
|
||||
deps += libm_dep
|
||||
deps += thread_dep
|
||||
elif js_engine == 'mozjs'
|
||||
+ add_languages('cpp')
|
||||
sources += files('polkitbackendjsauthority.cpp')
|
||||
endif
|
||||
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Locally calculated after checking pgp signature
|
||||
sha256 243fa69d1e480510c504723487716cda7d6fb588360c7c8f7ec6ba4a3f6ae60e polkit-a2bf5c9c83b6ae46cbd5c779d3055bff81ded683.tar.gz
|
||||
sha256 9dc7ae341a797c994a5a36da21963f0c5c8e3e5a1780ccc2a5f52e7be01affaa polkit-121.tar.gz
|
||||
|
||||
# Locally calculated
|
||||
sha256 d2e2aa973e29c75e1b492e67ea7b7da9de2d501d49a934657971fd74f9a0b0a8 COPYING
|
||||
|
@ -4,16 +4,12 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
POLKIT_VERSION = a2bf5c9c83b6ae46cbd5c779d3055bff81ded683
|
||||
POLKIT_SITE = https://gitlab.freedesktop.org/polkit/polkit/-/archive/$(POLKIT_VERSION)
|
||||
POLKIT_VERSION = 121
|
||||
POLKIT_SITE = https://www.freedesktop.org/software/polkit/releases
|
||||
POLKIT_LICENSE = GPL-2.0
|
||||
POLKIT_LICENSE_FILES = COPYING
|
||||
POLKIT_CPE_ID_VENDOR = polkit_project
|
||||
POLKIT_INSTALL_STAGING = YES
|
||||
|
||||
# Fix was comitted in a2bf5c9c83b6ae46cbd5c779d3055bff81ded683
|
||||
POLKIT_IGNORE_CVES += CVE-2021-4034
|
||||
|
||||
POLKIT_DEPENDENCIES = \
|
||||
duktape libglib2 host-intltool expat $(TARGET_NLS_DEPENDENCIES)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user