summaryrefslogtreecommitdiff
path: root/libmount/src
diff options
context:
space:
mode:
Diffstat (limited to 'libmount/src')
-rw-r--r--libmount/src/context_mount.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/libmount/src/context_mount.c b/libmount/src/context_mount.c
index fdb459c3..c665a057 100644
--- a/libmount/src/context_mount.c
+++ b/libmount/src/context_mount.c
@@ -58,12 +58,10 @@ static int fix_optstr(struct libmnt_context *cxt)
* but exception is command line for /sbin/mount.<type> helpers. Let's
* save the original user=<name> to call the helpers with unchanged
* "user" setting.
- *
- * Don't check for MNT_MS_USER in cxt->user_mountflags, the flag maybe
- * removed by evaluate_permissions().
*/
- if (!mnt_optstr_get_option(fs->user_optstr, "user", &val, &valsz)) {
- if (val) {
+ if (cxt->user_mountflags & MNT_MS_USER) {
+ if (!mnt_optstr_get_option(fs->user_optstr,
+ "user", &val, &valsz) && val) {
cxt->orig_user = strndup(val, valsz);
if (!cxt->orig_user) {
rc = -ENOMEM;
@@ -157,7 +155,7 @@ static int fix_optstr(struct libmnt_context *cxt)
goto done;
}
- if (!rc && cxt->user_mountflags & MNT_MS_USER)
+ if (!rc && cxt->restricted && (cxt->user_mountflags & MNT_MS_USER))
rc = mnt_optstr_fix_user(&fs->user_optstr);
/* refresh merged optstr */
@@ -256,8 +254,6 @@ static int evaluate_permissions(struct libmnt_context *cxt)
*/
cxt->user_mountflags &= ~MNT_MS_OWNER;
cxt->user_mountflags &= ~MNT_MS_GROUP;
- cxt->user_mountflags &= ~MNT_MS_USER;
- cxt->user_mountflags &= ~MNT_MS_USERS;
} else {
/*
* user mount