]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - utils/mount/mount_libmount.c
Imported upstream 1.2.6
[nfs-utils.git] / utils / mount / mount_libmount.c
index 6dd64846470efc9bb3acc55dc0f4a0b598243ae1..e8f17a9c5910fcb2494d59639e760017b82da2a2 100644 (file)
@@ -15,8 +15,8 @@
  *
  * You should have received a copy of the GNU General Public
  * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 021110-1307, USA.
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 0211-1301 USA
  *
  */
 
@@ -61,10 +61,19 @@ int nomtab;
  * managed by libmount at all. We have to use "mount attributes" that are
  * private for mount.<type> helpers.
  */
-static void store_mount_options(struct libmnt_fs *fs, const char *opts)
+static void store_mount_options(struct libmnt_fs *fs, const char *nfs_opts)
 {
-       mnt_fs_set_fs_options(fs, opts);        /* for mtab */
-       mnt_fs_set_attributes(fs, opts);        /* for non-mtab systems */
+       char *o = NULL;
+
+       mnt_fs_set_attributes(fs, nfs_opts);    /* for non-mtab systems */
+
+       /* for mtab create a new options list */
+       mnt_optstr_append_option(&o, mnt_fs_get_vfs_options(fs), NULL);
+       mnt_optstr_append_option(&o, nfs_opts, NULL);
+       mnt_optstr_append_option(&o, mnt_fs_get_user_options(fs), NULL);
+
+       mnt_fs_set_options(fs, o);
+       free(o);
 }
 
 /*
@@ -337,6 +346,21 @@ static int mount_main(struct libmnt_context *cxt, int argc, char **argv)
 
        if (chk_mountpoint(mount_point))
                goto err;
+
+       /*
+        * The libmount strictly uses only options from fstab if running in
+        * restricted mode (suid, non-root user). This is done in
+        * mnt_context_prepare_mount() by default.
+        *
+        * We have to read fstab before nfsmount.conf, otherwise the options
+        * from nfsmount.conf will be ignored (overwrited).
+        */
+       rc = mnt_context_apply_fstab(cxt);
+       if (rc) {
+               nfs_error(_("%s: failed to apply fstab options\n"), progname);
+               goto err;
+       }
+
        /*
         * Concatenate mount options from the configuration file
         */