|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
--- util-linux-2.13-pre6/mount/fstab.c.twiceloop 2006-01-03 18:35:05.000000000 +0100
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+++ util-linux-2.13-pre6/mount/fstab.c 2006-01-03 18:37:44.000000000 +0100
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
@@ -254,6 +254,27 @@
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
return (ct == 1);
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
}
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+/*
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ * Given the loop file LOOPFILE, and the mount point DIR, check that
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ * same file is already mounted on same directory
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ *
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ * Don't forget there's
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ * /path/loopfile /path/dir loop=/dev/loop0
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ * in mtab for loop devices.
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ */
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+int
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+is_mounted_same_loopfile(const char *loopfile, const char *dir) {
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ struct mntentchn *mc, *mc0;
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ int ct = 0;
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ mc0 = mtab_head();
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ for (mc = mc0->prev; mc && mc != mc0; mc = mc->prev)
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ if (streq(mc->m.mnt_fsname, loopfile) &&
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ streq(mc->m.mnt_dir, dir))
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ ct++;
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ return (ct == 1);
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+}
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
/* Given the name FILE, try to find the option "loop=FILE" in mtab. */
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
struct mntentchn *
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
getmntoptfile (const char *file) {
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
--- util-linux-2.13-pre6/mount/mount.c.twiceloop 2006-01-03 18:35:06.000000000 +0100
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+++ util-linux-2.13-pre6/mount/mount.c 2006-01-03 18:37:44.000000000 +0100
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
@@ -671,7 +671,7 @@
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
static int
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
loop_check(const char **spec, const char **type, int *flags,
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
- int *loop, const char **loopdev, const char **loopfile) {
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ int *loop, const char **loopdev, const char **loopfile, const char *dir) {
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
int looptype;
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
unsigned long long offset;
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
@@ -709,6 +709,11 @@
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
} else {
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
int loopro = (*flags & MS_RDONLY);
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ if (is_mounted_same_loopfile(*loopfile, dir)) {
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ error(_("mount: %s already mounted on %s"), *loopfile, dir);
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ return EX_FAIL;
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
if (!*loopdev || !**loopdev)
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
*loopdev = find_unused_loop_device();
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
if (!*loopdev)
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
@@ -856,7 +861,7 @@
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
* stale assignments of files to loop devices. Nasty when used for
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
* encryption.
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
*/
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
- res = loop_check(&spec, &types, &flags, &loop, &loopdev, &loopfile);
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
+ res = loop_check(&spec, &types, &flags, &loop, &loopdev, &loopfile, node);
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
if (res)
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
goto out;
|
|
![](https://seccdn.libravatar.org/avatar/0223a372e3c0d9a0bbf0437e6da2c6ed7b009e40d9f2fa1b07daea854a404e15?s=16&d=retro) |
632f494 |
}
|