From 3dc5e03c549e9d374e0b606870b18305b009f83c Mon Sep 17 00:00:00 2001 From: petervo Date: Wed, 30 Aug 2017 15:23:52 -0700 Subject: [PATCH 21/23] ws: Only set certificate group if current we have one This is necessary to be able to build Cockpit in an nspawn-enabled mock (which RHEL 7.4 now enables by default). Otherwise the unit tests fail with Message: couldn't lookup group: mockbuild: Success ERROR:src/ws/test-remotectlcertificate.c:127:test_combine_good: assertion failed (test->ret == 0): (1 == 0) as that group doesn't seem to exist in mock's nspawn. Cherry-picked from b186e4c233ac (PR #7594) --- src/ws/remotectl-certificate.c | 2 +- src/ws/test-remotectlcertificate.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/ws/remotectl-certificate.c b/src/ws/remotectl-certificate.c index 8fc71d7..3abb2ae 100644 --- a/src/ws/remotectl-certificate.c +++ b/src/ws/remotectl-certificate.c @@ -115,7 +115,7 @@ set_cert_attributes (const gchar *path, g_message ("couldn't set certificate permissions: %s: %s", path, g_strerror (errno)); goto out; } - if (chown (path, pwd->pw_uid, gr ? gr->gr_gid : 0) < 0) + if (chown (path, pwd->pw_uid, gr ? gr->gr_gid : -1) < 0) { g_message ("couldn't set certificate ownership: %s: %s", path, g_strerror (errno)); goto out; diff --git a/src/ws/test-remotectlcertificate.c b/src/ws/test-remotectlcertificate.c index c9c9d3e..36c7c1f 100644 --- a/src/ws/test-remotectlcertificate.c +++ b/src/ws/test-remotectlcertificate.c @@ -29,6 +29,7 @@ #include #include #include +#include const gchar *config_dir = BUILDDIR "/test-configdir"; @@ -81,6 +82,7 @@ setup (TestCase *tc, const TestFixture *fix = data; const gchar *old_val = g_getenv ("XDG_CONFIG_DIRS"); gint i; + struct group *gr = NULL; g_setenv ("XDG_CONFIG_DIRS", config_dir, TRUE); tc->cert_dir = g_build_filename (config_dir, "cockpit", "ws-certs.d", NULL); @@ -91,8 +93,13 @@ setup (TestCase *tc, g_ptr_array_add (ptr, "certificate"); g_ptr_array_add (ptr, "--user"); g_ptr_array_add (ptr, (gchar *) g_get_user_name ()); - g_ptr_array_add (ptr, "--group"); - g_ptr_array_add (ptr, (gchar *) g_get_user_name ()); + + gr = getgrnam (g_get_user_name ()); + if (gr != NULL) + { + g_ptr_array_add (ptr, "--group"); + g_ptr_array_add (ptr, (gchar *) g_get_user_name ()); + } for (i = 0; fix->files[i] != NULL; i++) g_ptr_array_add (ptr, (gchar *) fix->files[i]); -- 2.13.5