diff options
author | Karel Zak | 2016-04-14 14:26:54 +0200 |
---|---|---|
committer | Karel Zak | 2016-04-14 14:26:54 +0200 |
commit | e778642a9eb96975fcf3baa61dfa10add628af1a (patch) | |
tree | bcd1f5f3030d19b56755abcbf71a3420e36bedcc /libmount/src/context.c | |
parent | build-sys: add --enable-libuuid-force-uuidd (diff) | |
download | kernel-qcow2-util-linux-e778642a9eb96975fcf3baa61dfa10add628af1a.tar.gz kernel-qcow2-util-linux-e778642a9eb96975fcf3baa61dfa10add628af1a.tar.xz kernel-qcow2-util-linux-e778642a9eb96975fcf3baa61dfa10add628af1a.zip |
libmount: don't support /etc/mtab by default
The file mtab is evil and already unused by mainstream distributions.
Now libmount is able to detect mtab->/proc/mounts and use
/proc/self/mountinfo if necessary. This heuristic seems overkill in
many cases. It's also dangerous on systems where mountinfo is strongly
required (systemd based distros).
This patch #ifdefs mtab code and forces libmount to always use
/proc/self/mountinfo.
The new configure option --enable-libmount-support-mtab is necessary
to enable old behavior to support mtab.
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libmount/src/context.c')
-rw-r--r-- | libmount/src/context.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/libmount/src/context.c b/libmount/src/context.c index e26135fb0..d9bda4375 100644 --- a/libmount/src/context.c +++ b/libmount/src/context.c @@ -204,8 +204,10 @@ static int context_init_paths(struct libmnt_context *cxt, int writable) { assert(cxt); +#ifdef USE_LIBMOUNT_SUPPORT_MTAB if (!cxt->mtab_path) cxt->mtab_path = mnt_get_mtab_path(); +#endif if (!cxt->utab_path) cxt->utab_path = mnt_get_utab_path(); @@ -218,13 +220,12 @@ static int context_init_paths(struct libmnt_context *cxt, int writable) DBG(CXT, ul_debugobj(cxt, "checking for writable tab files")); -#ifdef USE_LIBMOUNT_FORCE_MOUNTINFO cxt->mtab_writable = 0; -#else - mnt_has_regular_mtab(&cxt->mtab_path, &cxt->mtab_writable); -#endif +#ifdef USE_LIBMOUNT_SUPPORT_MTAB + mnt_has_regular_mtab(&cxt->mtab_path, &cxt->mtab_writable); if (!cxt->mtab_writable) +#endif /* use /run/mount/utab if /etc/mtab is useless */ mnt_has_regular_utab(&cxt->utab_path, &cxt->utab_writable); @@ -1023,6 +1024,10 @@ int mnt_context_get_mtab(struct libmnt_context *cxt, struct libmnt_table **tb) cxt->table_fltrcb_data); mnt_table_set_cache(cxt->mtab, mnt_context_get_cache(cxt)); + + /* + * Note that mtab_path is NULL if mtab is useless or unsupported + */ if (cxt->utab) /* utab already parsed, don't parse it again */ rc = __mnt_table_parse_mtab(cxt->mtab, |