[Libguestfs] [libguestfs PATCH 1/2] daemon/selinux-relabel: generalize setfiles_has_m_option()

Laszlo Ersek lersek at redhat.com
Wed May 11 12:23:44 UTC 2022


Allow the caller to pass in the option to check for, and to store the
result in a (usually static) variable of their choice.

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1794518
Signed-off-by: Laszlo Ersek <lersek at redhat.com>
---
 daemon/selinux-relabel.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/daemon/selinux-relabel.c b/daemon/selinux-relabel.c
index 5679a29cf141..a34287fe27cb 100644
--- a/daemon/selinux-relabel.c
+++ b/daemon/selinux-relabel.c
@@ -38,17 +38,19 @@ optgroup_selinuxrelabel_available (void)
 }
 
 static int
-setfiles_has_m_option (void)
+setfiles_has_option (int *flag, char opt_char)
 {
-  static int flag = -1;
   CLEANUP_FREE char *err = NULL;
 
-  if (flag == -1) {
-    ignore_value (command (NULL, &err, "setfiles", "-m", NULL));
-    flag = err && strstr (err, /* "invalid option -- " */ "'m'") == NULL;
+  if (*flag == -1) {
+    char option[] = { '-', opt_char, '\0' };       /* "-X" */
+    char err_opt[] = { '\'', opt_char, '\'', '\0'}; /* "'X'" */
+
+    ignore_value (command (NULL, &err, "setfiles", option, NULL));
+    *flag = err && strstr (err, /* "invalid option -- " */ err_opt) == NULL;
   }
 
-  return flag;
+  return *flag;
 }
 
 /* Takes optional arguments, consult optargs_bitmask. */
@@ -56,6 +58,7 @@ int
 do_selinux_relabel (const char *specfile, const char *path,
                     int force)
 {
+  static int flag_m = -1;
   const char *argv[MAX_ARGS];
   CLEANUP_FREE char *s_dev = NULL, *s_proc = NULL, *s_selinux = NULL,
     *s_sys = NULL, *s_specfile = NULL, *s_path = NULL;
@@ -101,7 +104,7 @@ do_selinux_relabel (const char *specfile, const char *path,
    * setfiles puts all the mountpoints on the excludes list for no
    * useful reason (RHBZ#1433577).
    */
-  if (setfiles_has_m_option ())
+  if (setfiles_has_option (&flag_m, 'm'))
     ADD_ARG (argv, i, "-m");
 
   /* Relabelling in a chroot. */
-- 
2.19.1.3.g30247aa5d201




More information about the Libguestfs mailing list