summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Sobanski <roman.sobanski@intel.com>2018-08-10 14:20:35 +0200
committerJes Sorensen <jsorensen@fb.com>2018-09-27 10:27:25 -0400
commit9bd99a90e110bd39beaa539cb44a70ee3264a270 (patch)
tree61369d9cd2e8ee95ebf04173db90ac8890b1025c
parent29d7f182a5dd60d04365ef061021f403c5eb5402 (diff)
downloadmdadm-9bd99a90e110bd39beaa539cb44a70ee3264a270.tar.gz
imsm: Block volume creation with empty name
There is a possibility to create a RAID with empty name. Block it. Also remove trailing and leading whitespaces from given name. Signed-off-by: Roman Sobanski <roman.sobanski@intel.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
-rw-r--r--super-intel.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/super-intel.c b/super-intel.c
index f011a31..d3d256a 100644
--- a/super-intel.c
+++ b/super-intel.c
@@ -5285,10 +5285,22 @@ static int check_name(struct intel_super *super, char *name, int quiet)
{
struct imsm_super *mpb = super->anchor;
char *reason = NULL;
+ char *start = name;
+ size_t len = strlen(name);
int i;
- if (strlen(name) > MAX_RAID_SERIAL_LEN)
+ if (len > 0) {
+ while (isspace(start[len - 1]))
+ start[--len] = 0;
+ while (*start && isspace(*start))
+ ++start, --len;
+ memmove(name, start, len + 1);
+ }
+
+ if (len > MAX_RAID_SERIAL_LEN)
reason = "must be 16 characters or less";
+ else if (len == 0)
+ reason = "must be a non-empty string";
for (i = 0; i < mpb->num_raid_devs; i++) {
struct imsm_dev *dev = get_imsm_dev(super, i);