diff mbox

[v2] util: socket: Add missing localaddr and localport option for DGRAM socket

Message ID 4d325283e37f8f4ebf42b2e3ca41985f2e69e26c.1431682266.git.pkrempa@redhat.com
State New
Headers show

Commit Message

Peter Krempa May 15, 2015, 9:31 a.m. UTC
The 'socket_optslist' structure does not contain the 'localaddr' and
'localport' options that are parsed in case you are creating a
'connect' type UDP character device.

I've noticed it happening after commit f43e47dbf6de24db20ec9b588bb6cc762
made qemu abort() after seeing the invalid option.

A minimal reproducer for the case is:
$ qemu-system-x86_64 -chardev udp,id=charrng0,host=127.0.0.1,port=1234,localaddr=,localport=1234
qemu-system-x86_64: -chardev udp,id=charrng0,host=127.0.0.1,port=1234,localaddr=,localport=1234: Invalid parameter 'localaddr'
Aborted (core dumped)

Prior to the commit mentioned above the error would be printed but the
value for localaddr and localport was simply ignored. I did not go
trhough the code to find out when it was broken.

Add the two fields so that the options can again be parsed correctly and
qemu doesn't abort().

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1220252

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
---

Notes:
    Version 2:
    - improved commit message as suggested by Markus
    
Cc: Markus Armbruster <armbru@redhat.com>

 util/qemu-sockets.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Markus Armbruster May 15, 2015, 12:24 p.m. UTC | #1
Peter Krempa <pkrempa@redhat.com> writes:

> The 'socket_optslist' structure does not contain the 'localaddr' and
> 'localport' options that are parsed in case you are creating a
> 'connect' type UDP character device.
>
> I've noticed it happening after commit f43e47dbf6de24db20ec9b588bb6cc762
> made qemu abort() after seeing the invalid option.
>
> A minimal reproducer for the case is:
> $ qemu-system-x86_64 -chardev udp,id=charrng0,host=127.0.0.1,port=1234,localaddr=,localport=1234
> qemu-system-x86_64: -chardev udp,id=charrng0,host=127.0.0.1,port=1234,localaddr=,localport=1234: Invalid parameter 'localaddr'
> Aborted (core dumped)
>
> Prior to the commit mentioned above the error would be printed but the
> value for localaddr and localport was simply ignored. I did not go
> trhough the code to find out when it was broken.

s/trhough/through/

Perhaps this can be touched up on commit.

>
> Add the two fields so that the options can again be parsed correctly and
> qemu doesn't abort().
>
> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1220252
>
> Signed-off-by: Peter Krempa <pkrempa@redhat.com>
> Reviewed-by: Eric Blake <eblake@redhat.com>

File has no maintainer.  Adding qemu-trivial.

Reviewed-by: Markus Armbruster <armbru@redhat.com>
Michael Tokarev May 28, 2015, 11:25 a.m. UTC | #2
15.05.2015 15:24, Markus Armbruster wrote:
> Peter Krempa <pkrempa@redhat.com> writes:
> 
>> The 'socket_optslist' structure does not contain the 'localaddr' and
>> 'localport' options that are parsed in case you are creating a
>> 'connect' type UDP character device.
..

Applied to -trivial, with commit message fixup suggested by Markus.
Thanks!

/mjt
diff mbox

Patch

diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
index 87c9bc6..72066be 100644
--- a/util/qemu-sockets.c
+++ b/util/qemu-sockets.c
@@ -45,6 +45,12 @@  QemuOptsList socket_optslist = {
             .name = "port",
             .type = QEMU_OPT_STRING,
         },{
+            .name = "localaddr",
+            .type = QEMU_OPT_STRING,
+        },{
+            .name = "localport",
+            .type = QEMU_OPT_STRING,
+        },{
             .name = "to",
             .type = QEMU_OPT_NUMBER,
         },{