aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Miklos Szeredi <miklos@szeredi.hu>2010-11-08 15:35:35 +0100
committerGravatar Miklos Szeredi <mszeredi@suse.cz>2010-11-08 15:35:35 +0100
commitbd99f9cf24e16643752b02fb4fa7b48f2124ab4e (patch)
tree174a352d5aec35a4c99da33449180012319a35b8
parent41bc6c9372f42476af83f314ce2f2de86da643e5 (diff)
Fix check for read-only fs in mtab update
-rw-r--r--ChangeLog6
-rw-r--r--lib/mount_util.c13
2 files changed, 17 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 4df581e..7b202dd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,10 @@
+2010-11-08 Miklos Szeredi <miklos@szeredi.hu>
+
+ * Fix check for read-only fs in mtab update
+
2010-10-14 Miklos Szeredi <miklos@szeredi.hu>
- Use LTLIBICONV when linking libfuse. This fixes building against
+ * Use LTLIBICONV when linking libfuse. This fixes building against
uclibc + libiconv. Patch by Natanael Copa
2010-10-05 Miklos Szeredi <miklos@szeredi.hu>
diff --git a/lib/mount_util.c b/lib/mount_util.c
index 9926fe8..dbf9219 100644
--- a/lib/mount_util.c
+++ b/lib/mount_util.c
@@ -50,11 +50,22 @@ static int mtab_needs_update(const char *mnt)
if (errno == ENOENT)
return 0;
} else {
+ uid_t ruid;
+ int err;
+
if (S_ISLNK(stbuf.st_mode))
return 0;
+ ruid = getuid();
+ if (ruid != 0)
+ setreuid(0, -1);
+
res = access(_PATH_MOUNTED, W_OK);
- if (res == -1 && errno == EROFS)
+ err = (res == -1) ? errno : 0;
+ if (ruid != 0)
+ setreuid(ruid, -1);
+
+ if (err == EROFS)
return 0;
}