summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Brandes <florian.brandes@gmx.de>2017-07-21 12:35:24 (GMT)
committer Florian Brandes <florian.brandes@gmx.de>2017-07-23 08:28:06 (GMT)
commit8d2cb2d852575f49c195677d33de1f9e41a22412 (patch)
tree2803527096292ea857f3062e353d65331874f4f9
parent64daf70229af624abbdd3e89941c9a1886c53b08 (diff)
Double check after umounting bind directoriesrefs/pull/275/head
Checking if a tomb is still present in the output of mount after umounting binded directories. Addresses issue #265
-rwxr-xr-xtomb28
1 files changed, 24 insertions, 4 deletions
diff --git a/tomb b/tomb
index d204088..eb3f9e9 100755
--- a/tomb
+++ b/tomb
@@ -2662,10 +2662,30 @@ umount_tomb() {
}
}
done
-
- _verbose "Performing umount of ::1 mount point::" $tombmount
- _sudo umount ${tombmount}
- [[ $? = 0 ]] || { _failure "Tomb is busy, cannot umount!" }
+
+ # check if the tomb is actually still mounted. Background:
+ # When mounted on a binded directory in appears twice in 'list_tomb_binds'
+ # and will get umounted automatically through the above function
+ # causing an error and a remaining (decrypted!) loop device
+ # posing a security risk.
+ # See https://github.com/dyne/Tomb/issues/273
+
+ # checking for tombs
+ mount | grep -w "$tombmount" >/dev/null
+ mount_status=$?
+ # return value of 0 for grep means it found at least one entry
+ # return value of 1 means nothing was found, implying, the tomb
+ # mount was already umounted.
+ if [ $mount_status = 0 ]; then
+ # Tomb was not umounted through the above command
+ # Will do so now
+ _verbose "Performing umount of ::1 mount point::" $tombmount
+ _sudo umount ${tombmount}
+ [[ $? = 0 ]] || { _failure "Tomb is busy, cannot umount!" }
+ else
+ # Tomb was already umounted, will not do it again
+ _warning "Tomb was already umounted, possibly through a binded directory"
+ fi
# If we used a default mountpoint and is now empty, delete it
tombname_regex=${tombname//\[/}