From 7ff137233a0079773bec8d3c0eb2334121192e13 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Tue, 26 Apr 2016 11:50:44 +0200 Subject: [PATCH] Disallow partition delete operation if the FS is cryptOpen. --- src/ops/deleteoperation.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/ops/deleteoperation.cpp b/src/ops/deleteoperation.cpp index 6f4fe34..8b8f996 100644 --- a/src/ops/deleteoperation.cpp +++ b/src/ops/deleteoperation.cpp @@ -21,6 +21,7 @@ #include "core/partition.h" #include "core/device.h" #include "core/partitiontable.h" +#include "fs/luks.h" #include "jobs/deletepartitionjob.h" #include "jobs/deletefilesystemjob.h" @@ -123,5 +124,16 @@ bool DeleteOperation::canDelete(const Partition* p) if (p->roles().has(PartitionRole::Extended)) return p->children().size() == 1 && p->children()[0]->roles().has(PartitionRole::Unallocated); + if (p->roles().has(PartitionRole::Luks)) + { + const FileSystem& fsRef = p->fileSystem(); + const FS::luks* luksFs = dynamic_cast(&fsRef); + if (!luksFs) + return false; + + if (luksFs->isCryptOpen() || luksFs->isMounted()) + return false; + } + return true; }