Whamcloud - gitweb
LU-7002 utils: SELinux context repeated in mount opts 19/18319/4
authorFrederic Saunier <frederic.saunier@atos.net>
Fri, 5 Feb 2016 10:11:36 +0000 (11:11 +0100)
committerOleg Drokin <oleg.drokin@intel.com>
Mon, 14 Mar 2016 02:41:52 +0000 (02:41 +0000)
SELinux context can only be specified once in mount options,
thus append_context_for_mount() should not apply once again
when called at mount time.

Signed-off-by: Frederic Saunier <frederic.saunier@atos.net>
Change-Id: I350b67ec42691b875aab085224185f2a7582d41d
Reviewed-on: http://review.whamcloud.com/18319
Tested-by: Jenkins
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Grégoire Pichon <gregoire.pichon@bull.net>
Reviewed-by: Sebastien Buisson <sbuisson@ddn.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/utils/mount_utils_ldiskfs.c

index 2937a1b..1ce4aa1 100644 (file)
@@ -93,8 +93,11 @@ extern char *progname;
 #define DUMMY_FILE_NAME_LEN             25
 #define EXT3_DIRENT_SIZE                DUMMY_FILE_NAME_LEN
 
 #define DUMMY_FILE_NAME_LEN             25
 #define EXT3_DIRENT_SIZE                DUMMY_FILE_NAME_LEN
 
+static void append_unique(char *buf, char *prefix, char *key, char *val,
+                         size_t maxbuflen);
+
 /*
 /*
- * Concatenate context of the temporary mount point iff selinux is enabled
+ * Concatenate context of the temporary mount point if selinux is enabled
  */
 #ifdef HAVE_SELINUX
 static void append_context_for_mount(char *mntpt, struct mkfs_opts *mop)
  */
 #ifdef HAVE_SELINUX
 static void append_context_for_mount(char *mntpt, struct mkfs_opts *mop)
@@ -109,8 +112,9 @@ static void append_context_for_mount(char *mntpt, struct mkfs_opts *mop)
        }
 
        if (fcontext != NULL) {
        }
 
        if (fcontext != NULL) {
-               strcat(mop->mo_ldd.ldd_mount_opts, ",context=");
-               strcat(mop->mo_ldd.ldd_mount_opts, fcontext);
+               append_unique(mop->mo_ldd.ldd_mount_opts,
+                             ",", "context", fcontext,
+                             sizeof(mop->mo_ldd.ldd_mount_opts));
                freecon(fcontext);
        }
 }
                freecon(fcontext);
        }
 }