[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20230530203116.2008-5-demi@invisiblethingslab.com>
Date: Tue, 30 May 2023 16:31:04 -0400
From: Demi Marie Obenour <demi@...isiblethingslab.com>
To: Jens Axboe <axboe@...nel.dk>,
Roger Pau Monné <roger.pau@...rix.com>,
Alasdair Kergon <agk@...hat.com>,
Mike Snitzer <snitzer@...nel.org>, dm-devel@...hat.com
Cc: Demi Marie Obenour <demi@...isiblethingslab.com>,
Marek Marczykowski-Górecki
<marmarek@...isiblethingslab.com>, linux-block@...r.kernel.org,
linux-kernel@...r.kernel.org, xen-devel@...ts.xenproject.org
Subject: [PATCH v2 04/16] device-mapper: Better error message for too-short target spec
Previously the error was "unable to find target", which is not helpful.
Signed-off-by: Demi Marie Obenour <demi@...isiblethingslab.com>
---
drivers/md/dm-ioctl.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c
index a1d5fe64e1d0d9d3dcb06924249b89fe661944ab..9f505abba3dc22bffc6acb335c0bf29fec288fd5 100644
--- a/drivers/md/dm-ioctl.c
+++ b/drivers/md/dm-ioctl.c
@@ -1423,9 +1423,6 @@ static int next_target(struct dm_target_spec *last, uint32_t next, void *end,
*spec = (struct dm_target_spec *) ((unsigned char *) last + next);
*target_params = (char *) (*spec + 1);
- if (*spec < (last + 1))
- return -EINVAL;
-
return invalid_str(*target_params, end);
}
@@ -1451,6 +1448,11 @@ static int populate_table(struct dm_table *table,
}
for (i = 0; i < param->target_count; i++) {
+ if (next < sizeof(*spec)) {
+ DMERR("%s: next target spec (offset %u) overlaps 'struct dm_target_spec'",
+ __func__, next);
+ return -EINVAL;
+ }
r = next_target(spec, next, end, &spec, &target_params);
if (r) {
--
Sincerely,
Demi Marie Obenour (she/her/hers)
Invisible Things Lab
Powered by blists - more mailing lists