40 lines
924 B
Diff
40 lines
924 B
Diff
ripped from Debian
|
|
|
|
--- utils/mount/fstab.c
|
|
+++ utils/mount/fstab.c
|
|
@@ -57,7 +57,7 @@ mtab_does_not_exist(void) {
|
|
return var_mtab_does_not_exist;
|
|
}
|
|
|
|
-static int
|
|
+int
|
|
mtab_is_a_symlink(void) {
|
|
get_mtab_info();
|
|
return var_mtab_is_a_symlink;
|
|
--- utils/mount/fstab.h
|
|
+++ utils/mount/fstab.h
|
|
@@ -7,6 +7,7 @@
|
|
#define _PATH_FSTAB "/etc/fstab"
|
|
#endif
|
|
|
|
+int mtab_is_a_symlink(void);
|
|
int mtab_is_writable(void);
|
|
int mtab_does_not_exist(void);
|
|
void reset_mtab_info(void);
|
|
--- utils/mount/mount.c
|
|
+++ utils/mount/mount.c
|
|
@@ -230,6 +230,13 @@ create_mtab (void) {
|
|
int flags;
|
|
mntFILE *mfp;
|
|
|
|
+ /* Avoid writing if the mtab is a symlink to /proc/mounts, since
|
|
+ that would create a file /proc/mounts in case the proc filesystem
|
|
+ is not mounted, and the fchmod below would also fail. */
|
|
+ if (mtab_is_a_symlink()) {
|
|
+ return EX_SUCCESS;
|
|
+ }
|
|
+
|
|
lock_mtab();
|
|
|
|
mfp = nfs_setmntent (MOUNTED, "a+");
|