qvm-block: fix checking attached status of disk image files

Libvirt do not show actual block device (loop*) choosen for the device -
only original (file) path. But file path is available in device
description. Please note that VM can provide any description (withing
allowed limits), effectively breaking this check again (hidding the
attachment status). But even without this bug it could do that - by
hidding the whole device from QubesDB.

Fixes QubesOS/qubes-issues#2453
Este commit está contenido en:
Marek Marczykowski-Górecki 2016-11-23 03:25:03 +01:00
padre 68a116e8a3
commit ba4dec5383
No se encontró ninguna clave conocida en la base de datos para esta firma
ID de clave GPG: 063938BA42CFA724
Se han modificado 2 ficheros con 4 adiciones y 1 borrados

Ver fichero

@ -372,7 +372,9 @@ def block_check_attached(qvmc, device):
"VM '%s'" % (source.get('type'),
vm.name)
continue
if backend_name == device['vm'] and path == device['device']:
if backend_name == device['vm'] and (path == device['device']
or not path.startswith('/dev/') and path == device[
'desc']):
return {
"frontend": disk.find('target').get('dev'),
"vm": vm}

Ver fichero

@ -87,6 +87,7 @@ def main():
if options.do_file_attach:
dev = {}
(dev['vm'], dev['device']) = args[1].split(":")
dev['desc'] = dev['device']
dev['mode'] = 'w'
else:
dev_list = block_list(qvm_collection)