summaryrefslogtreecommitdiffstats
path: root/libmount/src/context.c
diff options
context:
space:
mode:
authorKarel Zak2016-04-14 14:26:54 +0200
committerKarel Zak2016-04-14 14:26:54 +0200
commite778642a9eb96975fcf3baa61dfa10add628af1a (patch)
treebcd1f5f3030d19b56755abcbf71a3420e36bedcc /libmount/src/context.c
parentbuild-sys: add --enable-libuuid-force-uuidd (diff)
downloadkernel-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.c13
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,