diff options
author | Miklos Szeredi <miklos@szeredi.hu> | 2010-11-08 15:35:35 +0100 |
---|---|---|
committer | Miklos Szeredi <mszeredi@suse.cz> | 2010-11-08 15:35:35 +0100 |
commit | bd99f9cf24e16643752b02fb4fa7b48f2124ab4e (patch) | |
tree | 174a352d5aec35a4c99da33449180012319a35b8 | |
parent | 41bc6c9372f42476af83f314ce2f2de86da643e5 (diff) |
Fix check for read-only fs in mtab update
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | lib/mount_util.c | 13 |
2 files changed, 17 insertions, 2 deletions
@@ -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; } |