summaryrefslogtreecommitdiff
path: root/community/ecryptfs-utils/symlinked_mtab.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/ecryptfs-utils/symlinked_mtab.patch')
-rw-r--r--community/ecryptfs-utils/symlinked_mtab.patch25
1 files changed, 25 insertions, 0 deletions
diff --git a/community/ecryptfs-utils/symlinked_mtab.patch b/community/ecryptfs-utils/symlinked_mtab.patch
new file mode 100644
index 000000000..2ba0aa8bf
--- /dev/null
+++ b/community/ecryptfs-utils/symlinked_mtab.patch
@@ -0,0 +1,25 @@
+--- ecryptfs-utils/src/ecryptfs-utils-96/src/libecryptfs/main.c.orig
++++ ecryptfs-utils/src/ecryptfs-utils-96/src/libecryptfs/main.c
+@@ -387,6 +387,8 @@
+ char *fullpath_source = NULL;
+ char *fullpath_target = NULL;
+ int rc;
++ char dummy;
++ int useMtab;
+
+ mountent.mnt_opts = NULL;
+ if (!source) {
+@@ -425,6 +427,13 @@
+ syslog(LOG_ERR, "Failed to perform eCryptfs mount: [%m]\n");
+ goto out;
+ }
++ /* Check if mtab is a symlink */
++ useMtab = (readlink("/etc/mtab", &dummy, 1) < 0);
++ if (!useMtab) {
++ /* No need updating mtab */
++ rc = 0;
++ goto out;
++ }
+ mtab_fd = setmntent("/etc/mtab", "a");
+ if (!mtab_fd) {
+ rc = -EACCES;