From 2c13ba9c4811639ea52dd4642a76652ca1f987d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Thu, 29 Mar 2018 20:36:09 +0200 Subject: [PATCH] storage/lvm: force default locale for lvm command cont. Few more places where lvm commands are called. Fixes QubesOS/qubes-issues#3753 --- qubes/storage/lvm.py | 4 +++- qubes/tests/storage_lvm.py | 10 ++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/qubes/storage/lvm.py b/qubes/storage/lvm.py index 3cece3320..aa7c3c125 100644 --- a/qubes/storage/lvm.py +++ b/qubes/storage/lvm.py @@ -170,8 +170,10 @@ def init_cache(log=logging.getLogger('qubes.storage.lvm')): '--units', 'b', '--separator', ';'] if os.getuid() != 0: cmd.insert(0, 'sudo') + environ = os.environ.copy() + environ['LC_ALL'] = 'C.utf8' p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, - close_fds=True) + close_fds=True, env=environ) out, err = p.communicate() return_code = p.returncode if return_code == 0 and err: diff --git a/qubes/tests/storage_lvm.py b/qubes/tests/storage_lvm.py index e8679aa72..f7082cad5 100644 --- a/qubes/tests/storage_lvm.py +++ b/qubes/tests/storage_lvm.py @@ -164,17 +164,23 @@ def test_003_read_write_volume(self): def test_004_size(self): with self.assertNotRaises(NotImplementedError): size = self.pool.size + environ = os.environ.copy() + environ['LC_ALL'] = 'C.utf8' pool_size = subprocess.check_output(['sudo', 'lvs', '--noheadings', '-o', 'lv_size', - '--units', 'b', self.pool.volume_group + '/' + self.pool.thin_pool]) + '--units', 'b', self.pool.volume_group + '/' + self.pool.thin_pool], + env=environ) self.assertEqual(size, int(pool_size.strip()[:-1])) def test_005_usage(self): with self.assertNotRaises(NotImplementedError): usage = self.pool.usage + environ = os.environ.copy() + environ['LC_ALL'] = 'C.utf8' pool_info = subprocess.check_output(['sudo', 'lvs', '--noheadings', '-o', 'lv_size,data_percent', - '--units', 'b', self.pool.volume_group + '/' + self.pool.thin_pool]) + '--units', 'b', self.pool.volume_group + '/' + self.pool.thin_pool], + env=environ) pool_size, pool_usage = pool_info.strip().split() pool_size = int(pool_size[:-1]) pool_usage = float(pool_usage)