From 0d09853bd4ebc532e322a8b0be3680e216d6f198 Mon Sep 17 00:00:00 2001 From: Chantara Tith Date: Sat, 6 Aug 2016 17:41:33 +0700 Subject: [PATCH] Remove hardcoded 4096 payloadOffset. --- src/fs/luks.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/fs/luks.cpp b/src/fs/luks.cpp index f88c69b..c881f7a 100644 --- a/src/fs/luks.cpp +++ b/src/fs/luks.cpp @@ -601,8 +601,15 @@ qint64 luks::getKeySize(const QString& deviceNode) const */ qint64 luks::getPayloadOffset(const QString& deviceNode) const { - //4096 sectors and 512 bytes. - return 4096 * 512; + ExternalCommand cmd(QStringLiteral("cryptsetup"), + { QStringLiteral("luksDump"), deviceNode }); + if (cmd.run(-1) && cmd.exitCode() == 0) { + QRegularExpression re(QStringLiteral("Payload offset:\\s+(\\d+)")); + QRegularExpressionMatch rePayloadOffset = re.match(cmd.output()); + if (rePayloadOffset.hasMatch()) + return rePayloadOffset.captured(1).toLongLong() * 512; // assuming LUKS sector size is 512 + } + return -1; } bool luks::canEncryptType(FileSystem::Type type)