[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL V2 03/20] net: validate that ids are well formed
From: |
Jason Wang |
Subject: |
[PULL V2 03/20] net: validate that ids are well formed |
Date: |
Mon, 15 Mar 2021 17:14:16 +0800 |
From: Paolo Bonzini <pbonzini@redhat.com>
When a network or network device is created from the command line or HMP,
QemuOpts ensures that the id passes the id_wellformed check. However,
QMP skips this:
$ qemu-system-x86_64 -qmp stdio -S -nic user,id=123/456
qemu-system-x86_64: -nic user,id=123/456: Parameter id expects an identifier
Identifiers consist of letters, digits, -, ., _, starting with a letter.
$ qemu-system-x86_64 -qmp stdio -S
{"execute":"qmp_capabilities"}
{"return": {}}
{"execute":"netdev_add", "arguments": {"type": "user", "id": "123/456"}}
{"return": {}}
After:
$ qemu-system-x86_64 -qmp stdio -S
{"execute":"qmp_capabilities"}
{"return": {}}
{"execute":"netdev_add", "arguments": {"type": "user", "id": "123/456"}}
{"error": {"class": "GenericError", "desc": "Parameter "id" expects an
identifier"}}
Validity checks should be performed always at the bottom of the call chain,
because QMP skips all the steps above. At the same time we know that every
call chain should go through either QMP or (for legacy) through QemuOpts.
Because the id for -net and -nic is automatically generated and not
well-formed by design, just add the check to QMP.
Cc: Jason Wang <jasowang@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
---
net/net.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/net/net.c b/net/net.c
index 16a87cc..77b35ea 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1134,6 +1134,11 @@ void netdev_add(QemuOpts *opts, Error **errp)
void qmp_netdev_add(Netdev *netdev, Error **errp)
{
+ if (!id_wellformed(netdev->id)) {
+ error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "id", "an identifier");
+ return;
+ }
+
net_client_init1(netdev, true, errp);
}
--
2.7.4
- [PULL V2 00/20] Net patches, Jason Wang, 2021/03/15
- [PULL V2 01/20] virtio-net: calculating proper msix vectors on init, Jason Wang, 2021/03/15
- [PULL V2 02/20] net: Fix build error when DEBUG_NET is on, Jason Wang, 2021/03/15
- [PULL V2 03/20] net: validate that ids are well formed,
Jason Wang <=
- [PULL V2 04/20] e1000: fail early for evil descriptor, Jason Wang, 2021/03/15
- [PULL V2 05/20] net: introduce qemu_receive_packet(), Jason Wang, 2021/03/15
- [PULL V2 06/20] e1000: switch to use qemu_receive_packet() for loopback, Jason Wang, 2021/03/15
- [PULL V2 07/20] dp8393x: switch to use qemu_receive_packet() for loopback packet, Jason Wang, 2021/03/15
- [PULL V2 08/20] msf2-mac: switch to use qemu_receive_packet() for loopback, Jason Wang, 2021/03/15
- [PULL V2 09/20] sungem: switch to use qemu_receive_packet() for loopback, Jason Wang, 2021/03/15
- [PULL V2 10/20] tx_pkt: switch to use qemu_receive_packet_iov() for loopback, Jason Wang, 2021/03/15
- [PULL V2 11/20] rtl8139: switch to use qemu_receive_packet() for loopback, Jason Wang, 2021/03/15
- [PULL V2 13/20] cadence_gem: switch to use qemu_receive_packet() for loopback, Jason Wang, 2021/03/15
- [PULL V2 12/20] pcnet: switch to use qemu_receive_packet() for loopback, Jason Wang, 2021/03/15