summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--WHATS_NEW1
-rw-r--r--lib/metadata/metadata.c11
2 files changed, 12 insertions, 0 deletions
diff --git a/WHATS_NEW b/WHATS_NEW
index 34d567ffb..0a95f3d32 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.106 -
====================================
+ Extend internal validation of lv names size is less then 128 chars.
Fail in resume for lvrename will result in failing command.
Validate length of new LV name in lvrename to not exceed 127 characters.
Add explict error message when using lvdisplay -c -m.
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index 279043b51..798f3ab31 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -2336,6 +2336,8 @@ int vg_validate(struct volume_group *vg)
unsigned pv_count = 0;
unsigned num_snapshots = 0;
unsigned spare_count = 0;
+ size_t vg_name_len = strlen(vg->name);
+ size_t dev_name_len;
struct validate_hash vhash = { NULL };
if (vg->alloc == ALLOC_CLING_BY_TAGS) {
@@ -2417,6 +2419,15 @@ int vg_validate(struct volume_group *vg)
dm_list_iterate_items(lvl, &vg->lvs) {
lv_count++;
+ dev_name_len = strlen(lvl->lv->name) + vg_name_len + 3;
+ if (dev_name_len >= NAME_LEN) {
+ log_error(INTERNAL_ERROR "LV name \"%s/%s\" length %"
+ PRIsize_t " is not supported.",
+ vg->name, lvl->lv->name, dev_name_len);
+ r = 0;
+ }
+
+
if (lv_is_cow(lvl->lv))
num_snapshots++;