qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Jason Wang <jasowang@redhat.com>, peter.maydell@linaro.org
Cc: qemu-devel@nongnu.org
Subject: Re: [PULL 03/16] net: validate that ids are well formed
Date: Fri, 12 Mar 2021 15:23:16 +0100	[thread overview]
Message-ID: <201e2590-49a7-f05c-c579-73e2fed20917@redhat.com> (raw)
In-Reply-To: <c001654b-9802-7221-17e6-033bb10b89ff@redhat.com>

On 12/03/21 14:26, Jason Wang wrote:
> 
> On 2021/3/12 4:44 下午, Paolo Bonzini wrote:
>> On 12/03/21 07:16, Jason Wang wrote:
>>> 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.  Do this for the network 
>>> subsystem.
>>>
>>> Cc: Jason Wang <jasowang@redhat.com>
>>> Reviewed-by: Eric Blake <eblake@redhat.com>
>>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>>> Signed-off-by: Jason Wang <jasowang@redhat.com>
>>> ---
>>>   net/net.c | 12 ++++++++++++
>>>   1 file changed, 12 insertions(+)
>>>
>>> diff --git a/net/net.c b/net/net.c
>>> index 9c784da..d36729f 100644
>>> --- a/net/net.c
>>> +++ b/net/net.c
>>> @@ -44,6 +44,7 @@
>>>   #include "qemu/cutils.h"
>>>   #include "qemu/config-file.h"
>>>   #include "qemu/ctype.h"
>>> +#include "qemu/id.h"
>>>   #include "qemu/iov.h"
>>>   #include "qemu/qemu-print.h"
>>>   #include "qemu/main-loop.h"
>>> @@ -1011,6 +1012,17 @@ static int net_client_init1(const Netdev 
>>> *netdev, bool is_netdev, Error **errp)
>>>           }
>>>       }
>>>   +    /*
>>> +     * The id for -net has already been checked by QemuOpts and
>>> +     * could be automatically generated, in which case it is not
>>> +     * well-formed by design.  HMP and QMP only call us with
>>> +     * is_netdev == true.
>>> +     */
>>> +    if (is_netdev && !id_wellformed(netdev->id)) {
>>> +        error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "id", "an 
>>> identifier");
>>> +        return -1;
>>> +    }
>>> +
>>>       nc = qemu_find_netdev(netdev->id);
>>>       if (nc) {
>>>           error_setg(errp, "Duplicate ID '%s'", netdev->id);
>>>
>>
>> Sorry, I sent v2 yesterday.  This patch passed the tests at the time 
>> it was submitted, but now fails (because it does not work with -nic).
> 
> I don't see that. But I add a fixup in the pull request:
> 
> https://lists.gnu.org/archive/html/qemu-devel/2021-03/msg04237.html
> 
> If it doesn't make sense, I will drop this and send a new pull request 
> next week.

Hmm no, it didn't reach the list.  Let me resend.

Paolo



  reply	other threads:[~2021-03-12 14:26 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-12  6:16 [PULL 00/16] Net patches Jason Wang
2021-03-12  6:16 ` [PULL 01/16] virtio-net: calculating proper msix vectors on init Jason Wang
2021-03-12  6:16 ` [PULL 02/16] net: Fix build error when DEBUG_NET is on Jason Wang
2021-03-12  6:16 ` [PULL 03/16] net: validate that ids are well formed Jason Wang
2021-03-12  8:44   ` Paolo Bonzini
2021-03-12 13:26     ` Jason Wang
2021-03-12 14:23       ` Paolo Bonzini [this message]
2021-03-12  6:16 ` [PULL 04/16] net: unbreak well-form id check for "-nic" Jason Wang
2021-03-12  6:16 ` [PULL 05/16] e1000: fail early for evil descriptor Jason Wang
2021-03-12  6:16 ` [PULL 06/16] net: introduce qemu_receive_packet() Jason Wang
2021-03-12  6:16 ` [PULL 07/16] e1000: switch to use qemu_receive_packet() for loopback Jason Wang
2021-03-12  6:16 ` [PULL 08/16] dp8393x: switch to use qemu_receive_packet() for loopback packet Jason Wang
2021-03-12  6:16 ` [PULL 09/16] msf2-mac: switch to use qemu_receive_packet() for loopback Jason Wang
2021-03-12  6:16 ` [PULL 10/16] sungem: " Jason Wang
2021-03-12  6:16 ` [PULL 11/16] tx_pkt: switch to use qemu_receive_packet_iov() " Jason Wang
2021-03-12  6:16 ` [PULL 12/16] rtl8139: switch to use qemu_receive_packet() " Jason Wang
2021-03-12  6:16 ` [PULL 13/16] pcnet: " Jason Wang
2021-03-12  6:16 ` [PULL 14/16] cadence_gem: " Jason Wang
2021-03-12  6:16 ` [PULL 15/16] lan9118: " Jason Wang
2021-03-12  6:16 ` [PULL 16/16] pvrdma: wean code off pvrdma_ring.h kernel header Jason Wang
2021-03-14 11:37 ` [PULL 00/16] Net patches Peter Maydell
2021-03-15  3:35   ` Jason Wang
2021-03-15  5:39   ` Thomas Huth
2021-03-15  8:07     ` Jason Wang
2021-03-15  9:52       ` Philippe Mathieu-Daudé

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201e2590-49a7-f05c-c579-73e2fed20917@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).