[ecryptfs-utils] opening for writing succeeds, writing fails -> reorder symlink check

Michal Hlavinka mhlavink at fedoraproject.org
Mon Jul 11 12:15:20 UTC 2011


commit f47a7164ee75aa609c507d3564a07bfb6ae2eac2
Author: Michal Hlavinka <mhlavink at redhat.com>
Date:   Mon Jul 11 14:14:14 2011 +0200

    opening for writing succeeds, writing fails -> reorder symlink check

 ecryptfs-utils-87-mtab.patch |   31 +++++++++++++++++++++----------
 1 files changed, 21 insertions(+), 10 deletions(-)
---
diff --git a/ecryptfs-utils-87-mtab.patch b/ecryptfs-utils-87-mtab.patch
index d918a33..01e8f2c 100644
--- a/ecryptfs-utils-87-mtab.patch
+++ b/ecryptfs-utils-87-mtab.patch
@@ -1,16 +1,27 @@
 diff -up ecryptfs-utils-87/src/libecryptfs/main.c.mtabfix ecryptfs-utils-87/src/libecryptfs/main.c
---- ecryptfs-utils-87/src/libecryptfs/main.c.mtabfix	2011-07-11 13:46:12.809240356 +0200
-+++ ecryptfs-utils-87/src/libecryptfs/main.c	2011-07-11 13:46:12.825240472 +0200
-@@ -427,9 +427,13 @@ int ecryptfs_mount(char *source, char *t
+--- ecryptfs-utils-87/src/libecryptfs/main.c.mtabfix	2011-03-09 14:30:32.000000000 +0100
++++ ecryptfs-utils-87/src/libecryptfs/main.c	2011-07-11 14:10:40.525812683 +0200
+@@ -382,6 +382,7 @@ out:
+ 
+ int ecryptfs_mount(char *source, char *target, unsigned long flags, char *opts)
+ {
++	char dummy;
+ 	FILE *mtab_fd = NULL;
+ 	struct mntent mountent;
+ 	char *fullpath_source = NULL;
+@@ -425,11 +426,14 @@ int ecryptfs_mount(char *source, char *t
+ 		syslog(LOG_ERR, "Failed to perform eCryptfs mount: [%m]\n");
+ 		goto out;
  	}
- 	mtab_fd = setmntent("/etc/mtab", "a");
- 	if (!mtab_fd) {
+-	mtab_fd = setmntent("/etc/mtab", "a");
+-	if (!mtab_fd) {
 -		rc = -EACCES;
 -		syslog(LOG_ERR, "Failed to update the mount table\n");
 -		goto out;
-+		/* it's possible that /etc/mtab is just a symlink to /proc/mounts */
-+		char dummy;
-+		if (readlink("/etc/mtab", &dummy, 1) < 0) {
++	/* it's possible that /etc/mtab is just a symlink to /proc/mounts */
++	if (readlink("/etc/mtab", &dummy, 1) < 0) {
++		mtab_fd = setmntent("/etc/mtab", "a");
++		if (!mtab_fd) {
 +			rc = -EACCES;
 +			syslog(LOG_ERR, "Failed to update the mount table\n");
 +			goto out;
@@ -28,8 +39,8 @@ diff -up ecryptfs-utils-87/src/libecryptfs/main.c.mtabfix ecryptfs-utils-87/src/
  		syslog(LOG_ERR, "Failed to write to the mount "
  		       "table\n");
 diff -up ecryptfs-utils-87/src/utils/mount.ecryptfs_private.c.mtabfix ecryptfs-utils-87/src/utils/mount.ecryptfs_private.c
---- ecryptfs-utils-87/src/utils/mount.ecryptfs_private.c.mtabfix	2011-07-11 13:45:54.927111621 +0200
-+++ ecryptfs-utils-87/src/utils/mount.ecryptfs_private.c	2011-07-11 13:45:54.946111757 +0200
+--- ecryptfs-utils-87/src/utils/mount.ecryptfs_private.c.mtabfix	2011-07-11 13:53:36.942438496 +0200
++++ ecryptfs-utils-87/src/utils/mount.ecryptfs_private.c	2011-07-11 13:53:36.954438583 +0200
 @@ -219,9 +219,18 @@ int check_ownerships(int uid, char *path
  
  


More information about the scm-commits mailing list