From b0c09061e9fefbe0799a8bc6e9ddb925d69050d1 Mon Sep 17 00:00:00 2001 From: Thomas Schoebel-Theuer Date: Thu, 25 Apr 2013 22:32:37 +0200 Subject: [PATCH] marsadm: allow only multiples of 4k as size arguments --- userspace/marsadm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/userspace/marsadm b/userspace/marsadm index 5cdb97ed..502270c0 100755 --- a/userspace/marsadm +++ b/userspace/marsadm @@ -385,13 +385,12 @@ sub check_splitbrain { } sub get_size { - my $arg = shift; - if (!$arg =~ m/^[0-9.]+[kmgtp]?$/i) { + my $arg = shift || ""; + if (!($arg =~ m/^([0-9]+(?:\.[0-9]*)?)([kmgtp]?)$/i)) { ldie "size argument '$arg' must be a number, optionally followed by suffix k or m or g or t or p\n"; } - my $mod = $arg; - $arg =~ s/[^0-9]+$//; - $mod =~ s/^[0-9]+//; + my $mod = $2 || ""; + $arg = $1; $_ = $mod; SWITCH: { /k/i and $arg *= 1024, last SWITCH; @@ -400,6 +399,7 @@ sub get_size { /t/i and $arg *= 1024 * 1024 * 1024 * 1024, last SWITCH; /p/i and $arg *= 1024 * 1024 * 1024 * 1024 * 1024, last SWITCH; } + ldie "size '$arg' is not a multiple of 4k\n" if ($arg % 4096) != 0; return $arg; }