From: Miklos Szeredi Date: Thu, 10 Feb 2005 07:35:05 +0000 (+0000) Subject: fix X-Git-Tag: fuse_2_3_pre1~15 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=a71694156750f34959d65e2085794509a067df15;p=qemu-gpiodev%2Flibfuse.git fix --- diff --git a/ChangeLog b/ChangeLog index dff2600..b17a3b2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2005-02-10 Miklos Szeredi + + * fusermount: set umask, otherwise /etc/mtab will have + unpredictable permission. Spotted by Jindrich Kolorenc + + * fusermount: set owner and group of /etc/mtab to original values + on unmount + 2005-02-07 Miklos Szeredi * Cleaned up directory reading (temporary file is not used) diff --git a/util/fusermount.c b/util/fusermount.c index 4f9ed2f..1b79446 100644 --- a/util/fusermount.c +++ b/util/fusermount.c @@ -240,6 +240,7 @@ static int unmount_rename(const char *mnt, int quiet, int lazy, const char *mtab, const char *mtab_new) { int res; + struct stat sbuf; if (getuid() != 0) { res = drop_privs(); @@ -253,6 +254,9 @@ static int unmount_rename(const char *mnt, int quiet, int lazy, if (getuid() != 0) restore_privs(); + if (stat(mtab, &sbuf) == 0) + chown(mtab_new, sbuf.st_uid, sbuf.st_gid); + res = rename(mtab_new, mtab); if (res == -1) { fprintf(stderr, "%s: failed to rename %s to %s: %s\n", progname, @@ -1046,6 +1050,7 @@ int main(int argc, char *argv[]) if (getuid() != 0) restore_privs(); + umask(033); if (unmount) { if (geteuid() == 0) { int mtablock = lock_mtab();