From 94838b4df06c4f5a47c4cb51d5949d8e7b4684e7 Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Sun, 16 Jul 2017 09:53:49 +0200 Subject: [PATCH] lvmcmdline: validate size as double Since we are reading size as (double) we can get way bigger number then just plain int64. So to make this check actually more valid and usable do a maxsize compare in 'double'. --- WHATS_NEW | 1 + tools/lvmcmdline.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/WHATS_NEW b/WHATS_NEW index 477d4ea92..48ec6793b 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.173 - ================================= + Improve --size args validation and report more detailed error message. Initialize debugging mutex before any debug message in clvmd. Log error instad of warn when noticing connection problem with lvmetad. Fix memory leak in lvmetad when working with duplicates. diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c index 700593cc3..d3523be17 100644 --- a/tools/lvmcmdline.c +++ b/tools/lvmcmdline.c @@ -617,7 +617,8 @@ static int _size_arg(struct cmd_context *cmd __attribute__((unused)), } else v *= factor; - if ((uint64_t) v >= (UINT64_MAX >> SECTOR_SHIFT)) { + /* Compare (double) */ + if (v >= (double) (UINT64_MAX >> SECTOR_SHIFT)) { log_error("Size is too big (>=16EiB)."); return 0; }