Fix check for read-only fs in mtab update
authorMiklos Szeredi <miklos@szeredi.hu>
Mon, 8 Nov 2010 14:35:35 +0000 (15:35 +0100)
committerMiklos Szeredi <mszeredi@suse.cz>
Mon, 8 Nov 2010 14:35:35 +0000 (15:35 +0100)
ChangeLog
lib/mount_util.c

index 4df581e834f7b25187483c09098b563fd9355f98..7b202dd5665005a050837d23867c2ce96ca6787e 100644 (file)
--- 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>
index 9926fe8fd501bdfa8101abfad1cf6ee0601345c7..dbf92197271dff5f3160c87c1bbe9ed23501582d 100644 (file)
@@ -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;
        }