[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 4/6] luks: Turn invalid assertion into check
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH v2 4/6] luks: Turn invalid assertion into check |
Date: |
Mon, 12 Mar 2018 16:02:16 +0100 |
The .bdrv_getlength implementation of the crypto block driver asserted
that the payload offset isn't after EOF. This is an invalid assertion to
make as the image file could be corrupted. Instead, check it and return
-EIO if the file is too small for the payload offset.
Zero length images are fine, so trigger -EIO only on offset > len, not
on offset >= len as the assertion did before.
Signed-off-by: Kevin Wolf <address@hidden>
---
block/crypto.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/block/crypto.c b/block/crypto.c
index a1139b6f09..16c371ec9c 100644
--- a/block/crypto.c
+++ b/block/crypto.c
@@ -518,7 +518,10 @@ static int64_t block_crypto_getlength(BlockDriverState *bs)
uint64_t offset = qcrypto_block_get_payload_offset(crypto->block);
assert(offset < INT64_MAX);
- assert(offset < len);
+
+ if (offset > len) {
+ return -EIO;
+ }
len -= offset;
--
2.13.6
- [Qemu-devel] [PATCH v2 0/6] luks: Implement .bdrv_co_create, Kevin Wolf, 2018/03/12
- [Qemu-devel] [PATCH v2 1/6] luks: Separate image file creation from formatting, Kevin Wolf, 2018/03/12
- [Qemu-devel] [PATCH v2 5/6] luks: Catch integer overflow for huge sizes, Kevin Wolf, 2018/03/12
- [Qemu-devel] [PATCH v2 2/6] luks: Create block_crypto_co_create_generic(), Kevin Wolf, 2018/03/12
- [Qemu-devel] [PATCH v2 3/6] luks: Support .bdrv_co_create, Kevin Wolf, 2018/03/12
- [Qemu-devel] [PATCH v2 4/6] luks: Turn invalid assertion into check,
Kevin Wolf <=
- [Qemu-devel] [PATCH v2 6/6] qemu-iotests: Test luks QMP image creation, Kevin Wolf, 2018/03/12
- Re: [Qemu-devel] [PATCH v2 0/6] luks: Implement .bdrv_co_create, Kevin Wolf, 2018/03/12
- Re: [Qemu-devel] [PATCH v2 0/6] luks: Implement .bdrv_co_create, no-reply, 2018/03/12