aboutsummaryrefslogtreecommitdiff
path: root/crypto
diff options
context:
space:
mode:
authorDaniel P. Berrangé <berrange@redhat.com>2022-05-10 14:27:33 +0100
committerDaniel P. Berrangé <berrange@redhat.com>2022-10-27 12:55:27 +0100
commitf1195961f36b19ce9008dabf11ee8362803bcd92 (patch)
tree6111a083fda6ed1a8395dc6eaf481412ad2a701f /crypto
parentc1d8634c207defb547a57515729233e47f65718f (diff)
downloadqemu-f1195961f36b19ce9008dabf11ee8362803bcd92.zip
qemu-f1195961f36b19ce9008dabf11ee8362803bcd92.tar.gz
qemu-f1195961f36b19ce9008dabf11ee8362803bcd92.tar.bz2
crypto: enforce that LUKS stripes is always a fixed value
Although the LUKS stripes are encoded in the keyslot header and so potentially configurable, in pratice the cryptsetup impl mandates this has the fixed value 4000. To avoid incompatibility apply the same enforcement in QEMU too. This also caps the memory usage for key material when QEMU tries to open a LUKS volume. Reviewed-by: Richard W.M. Jones <rjones@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/block-luks.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/crypto/block-luks.c b/crypto/block-luks.c
index 27d1b34..81744e2 100644
--- a/crypto/block-luks.c
+++ b/crypto/block-luks.c
@@ -582,8 +582,9 @@ qcrypto_block_luks_check_header(const QCryptoBlockLUKS *luks, Error **errp)
header_sectors,
slot1->stripes);
- if (slot1->stripes == 0) {
- error_setg(errp, "Keyslot %zu is corrupted (stripes == 0)", i);
+ if (slot1->stripes != QCRYPTO_BLOCK_LUKS_STRIPES) {
+ error_setg(errp, "Keyslot %zu is corrupted (stripes %d != %d)",
+ i, slot1->stripes, QCRYPTO_BLOCK_LUKS_STRIPES);
return -1;
}