qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: Bug in net/socket.c: info_str is overwritten


From: Luiz Capitulino
Subject: [Qemu-devel] Re: Bug in net/socket.c: info_str is overwritten
Date: Fri, 7 May 2010 22:09:02 -0300

On Thu, 6 May 2010 10:42:10 -0300
Miguel Di Ciurcio Filho <address@hidden> wrote:

> Hi there,
> 
> I'm working on the conversion of the 'info network' command do QMP,
> and I think I've found some problems.
> 
> Running qemu like this: qemu -net socket,listen=:3333
> 
> In net/socket.c, the function net_socket_listen_init() [1] is called
> and a listening socket is created. There is nothing registering this,
> so when using 'info network' as is, no information about this
> listening socket is shown.

 Right, not sure how important this info is but I'd expect it to
be shown.

> When a connection is accepted, the handler net_socket_accept() calls
> net_socket_fd_init(). If the socket is
> UDP/multicast net_socket_fd_init() calls net_socket_fd_init_dgram, if
> the socket is TCP it calls net_socket_fd_init_dgram_stream. [2]
> 
> In both cases the info_str string is written inside
> net_socket_fd_init_(stream|dgram) [3], and after that, it is
> overwritten on a subsequent
> snprintf() in net_socket_accept() [4].

 Yes, those snprintf() in net_socket_fd_init_{stream,dgram} seems dead
code to me.

 Another problem is that info_str is not cleaned when the connection
is closed, which makes 'info network' keep saying that the connection is there.

> net_socket_fd_init_(stream|dgram) always puts into the info_str the fd
> number, and this information is overwritten latter. So, is the fd
> number
> relevant to be transmitted over QMP? Right now this information is
> being lost, IMHO.

 Only client writers can answer, I guess. But it's not a problem if we
don't include it now, as it's easy to extend the output later if needed.

> 
> Same thing happens when qemu is run as a client:
> net_socket_connect_init() calls net_socket_fd_init_(dgram|stream) and
> latter overwrites info_str.
> 
> [1] http://git.qemu.org/qemu.git/tree/net/socket.c#n375
> [2] http://git.qemu.org/qemu.git/tree/net/socket.c#n336
> [3] http://git.qemu.org/qemu.git/tree/net/socket.c#n310
> [4] http://git.qemu.org/qemu.git/tree/net/socket.c#n369
> 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]