From 4e5a14774abb710de5941b940c7601ad84c76dd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Sat, 5 Jan 2019 05:27:32 +0100 Subject: [PATCH] storage/lvm: fix listing volume revisions when VM name include volume name some-vm-root is a valid VM name, and in that case it's volume can be named some-vm-root-private. Do not let it confuse revision listing, check for unexpected '-' in volume revision number. The proper solution would be to use different separator, that is not allowed in VM names. But that would require migration code that is undesired in the middle of stable release life cycle. Fixes QubesOS/qubes-issues#4680 --- qubes/storage/lvm.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/qubes/storage/lvm.py b/qubes/storage/lvm.py index 47324621..b9eb4ef9 100644 --- a/qubes/storage/lvm.py +++ b/qubes/storage/lvm.py @@ -327,6 +327,9 @@ class ThinVolume(qubes.storage.Volume): if not revision_vid.endswith('-back'): continue revision_vid = revision_vid[len(name_prefix):] + if revision_vid.count('-') > 1: + # VM+volume name is a prefix of another VM, see #4680 + continue # get revision without suffix seconds = int(revision_vid.split('-')[0]) iso_date = qubes.storage.isodate(seconds).split('.', 1)[0]