From 997b820e94468aeb3fb1a6fd38bc52e34af6f9e6 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Fri, 15 Jun 2001 18:33:43 +0000 Subject: [PATCH] ChangeLog, ismounted.c: ismounted.c (check_mntent_file): Use a test file in / to check to see if the root filesystem is mounted read-only. This protects against the case where /etc might not be on /, as well as the case where /etc/mtab doesn't exist. (Both are should-never happen scenarios, but you never know...) --- lib/ext2fs/ChangeLog | 8 ++++++++ lib/ext2fs/ismounted.c | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/ext2fs/ChangeLog b/lib/ext2fs/ChangeLog index 4e3fd935..db642c23 100644 --- a/lib/ext2fs/ChangeLog +++ b/lib/ext2fs/ChangeLog @@ -1,3 +1,11 @@ +2001-06-15 Theodore Tso + + * ismounted.c (check_mntent_file): Use a test file in / to check + to see if the root filesystem is mounted read-only. This + protects against the case where /etc might not be on /, as + well as the case where /etc/mtab doesn't exist. (Both are + should-never happen scenarios, but you never know...) + 2001-06-14 Theodore Tso * ismounted.c (ext2fs_check_if_mounted): Fix grammer in comment. diff --git a/lib/ext2fs/ismounted.c b/lib/ext2fs/ismounted.c index 6a2acd27..ac785c6b 100644 --- a/lib/ext2fs/ismounted.c +++ b/lib/ext2fs/ismounted.c @@ -92,13 +92,15 @@ static errcode_t check_mntent_file(const char *mtab_file, const char *file, */ if (!strcmp(mnt->mnt_dir, "/")) { is_root: +#define TEST_FILE "/.ismount-test-file" *mount_flags |= EXT2_MF_ISROOT; - fd = open(MOUNTED, O_RDWR); + fd = open(TEST_FILE, O_RDWR|O_CREAT); if (fd < 0) { if (errno == EROFS) *mount_flags |= EXT2_MF_READONLY; } else close(fd); + (void) unlink(TEST_FILE); } endmntent (f); return 0;