Browse Source

storage/lvm: fix reporting lvm command error

Escape '%' in error message, as required by Admin API.

Fixes QubesOS/qubes-issues#3809
Marek Marczykowski-Górecki 6 years ago
parent
commit
2aa14623bf
1 changed files with 2 additions and 0 deletions
  1. 2 0
      qubes/storage/lvm.py

+ 2 - 0
qubes/storage/lvm.py

@@ -574,6 +574,7 @@ def qubes_lvm(cmd, log=logging.getLogger('qubes.storage.lvm')):
     p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
         close_fds=True, env=environ)
     out, err = p.communicate()
+    err = err.decode()
     return_code = p.returncode
     if out:
         log.debug(out)
@@ -581,6 +582,7 @@ def qubes_lvm(cmd, log=logging.getLogger('qubes.storage.lvm')):
         log.warning(err)
     elif return_code != 0:
         assert err, "Command exited unsuccessful, but printed nothing to stderr"
+        err = err.replace('%', '%%')
         raise qubes.storage.StoragePoolException(err)
     return True