Skip to content

Commit a5086b6

Browse files
committed
q-dev: filter out not allowed arguments during attach
1 parent 3454222 commit a5086b6

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

qubesadmin/tools/qvm_device.py

+18-1
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,15 @@
2727
import argparse
2828
import os
2929
import sys
30+
from typing import Protocol
3031

3132
import qubesadmin
3233
import qubesadmin.exc
3334
import qubesadmin.tools
3435
import qubesadmin.device_protocol
3536
from qubesadmin.device_protocol import (Port, DeviceInfo, UnknownDevice,
3637
DeviceAssignment, VirtualDevice,
37-
DeviceInterface)
38+
DeviceInterface, ProtocolError)
3839
from qubesadmin.devices import DEVICE_DENY_LIST
3940

4041

@@ -178,7 +179,23 @@ def attach_device(args):
178179
options['read-only'] = 'yes'
179180
parse_ro_option_as_read_only(options)
180181
assignment.options = options
182+
181183
try:
184+
try:
185+
dev = assignment.device
186+
except ProtocolError as exc:
187+
raise qubesadmin.exc.QubesException(str(exc))
188+
189+
if not assignment.matches(dev):
190+
raise qubesadmin.exc.QubesException(
191+
"Unrecognized identity, skipping attachment of device "
192+
f"from the port {assignment}")
193+
194+
if isinstance(dev, UnknownDevice):
195+
raise qubesadmin.exc.QubesException(
196+
f"{device.devclass} device not recognized "
197+
f"at {device.port_id} port.")
198+
182199
vm.devices[args.devclass].attach(assignment)
183200
except qubesadmin.exc.QubesException as exc:
184201
# backward compatibility

0 commit comments

Comments
 (0)