dm ioctl: prevent rename to empty name or uuid
authorAlasdair Kergon <agk@redhat.com>
Thu, 29 Aug 2013 15:37:45 +0000 (16:37 +0100)
committerMike Snitzer <snitzer@redhat.com>
Fri, 6 Sep 2013 00:46:06 +0000 (20:46 -0400)
A device-mapper device must always have a name consisting of a non-empty
string.  If the device also has a uuid, this similarly must not be an
empty string.

The DM_DEV_CREATE ioctl enforces these rules when the device is created,
but this patch is needed to enforce them when DM_DEV_RENAME is used to
change the name or uuid.

Reported-by: Zdenek Kabelac <zkabelac@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Acked-by: Mikulas Patocka <mpatocka@redhat.com>
drivers/md/dm-ioctl.c

index f1b758675ec77e2e2c0d16246e2ba772fff01476..5667cea55e719a94870ddc31a87372a4e1d20017 100644 (file)
@@ -877,7 +877,7 @@ static int dev_rename(struct dm_ioctl *param, size_t param_size)
        unsigned change_uuid = (param->flags & DM_UUID_FLAG) ? 1 : 0;
 
        if (new_data < param->data ||
-           invalid_str(new_data, (void *) param + param_size) ||
+           invalid_str(new_data, (void *) param + param_size) || !*new_data ||
            strlen(new_data) > (change_uuid ? DM_UUID_LEN - 1 : DM_NAME_LEN - 1)) {
                DMWARN("Invalid new mapped device name or uuid string supplied.");
                return -EINVAL;