diff options
author | Yoshiaki Tamura <tamura.yoshiaki@lab.ntt.co.jp> | 2010-06-21 10:41:36 +0900 |
---|---|---|
committer | Luiz Capitulino <lcapitulino@redhat.com> | 2010-07-01 14:27:13 -0300 |
commit | 410cbafebc7168a278a23c856b4f5ff276ef1c85 (patch) | |
tree | a2757a108b6f7490b4cb668d42e2d24607e3c26f | |
parent | bbafc7a8798bc9ed1380e75033544e0614d344c7 (diff) | |
download | hqemu-410cbafebc7168a278a23c856b4f5ff276ef1c85.zip hqemu-410cbafebc7168a278a23c856b4f5ff276ef1c85.tar.gz |
net: delete QemuOpts when net_client_init() fails.
This fixes the following scenario using QMP.
First, put a bogus argument "foo" to "type", which results in an error.
{"execute": "netdev_add", "arguments": { "type": "foo", "id": "netdev1" } }
Then, call it again with correct argument "user".
{"execute": "netdev_add", "arguments": { "type": "user", "id": "netdev1" } }
This results in "DuplicatedId" error.
Because the first command was invalid, it should be able to reuse the
same "id", and the second command should work.
Reported-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Yoshiaki Tamura <tamura.yoshiaki@lab.ntt.co.jp>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
-rw-r--r-- | net.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -1208,6 +1208,10 @@ int do_netdev_add(Monitor *mon, const QDict *qdict, QObject **ret_data) } res = net_client_init(mon, opts, 1); + if (res < 0) { + qemu_opts_del(opts); + } + return res; } |