mirror of https://github.com/xemu-project/xemu.git
net/socket: Don't treat odd socket type as SOCK_STREAM
In net_socket_fd_init(), the 'default' case is odd: it warns, then continues as if the socket type was SOCK_STREAM. The comment explains "this could be a eg. a pty", but that makes no sense. If @fd really was a pty, getsockopt() would fail with ENOTSOCK. If @fd was a socket, but neither SOCK_DGRAM nor SOCK_STREAM. It should not be treated as if it was SOCK_STREAM. Turn this case into an Error. If there is a genuine reason to support something like SOCK_RAW, it should be explicitly handled. Cc: jasowang@redhat.com Cc: armbru@redhat.com Cc: berrange@redhat.com Cc: armbru@redhat.com Cc: eblake@redhat.com Suggested-by: Markus Armbruster <armbru@redhat.com> Suggested-by: Daniel P. Berrange <berrange@redhat.com> Signed-off-by: Mao Zhongyi <maozy.fnst@cn.fujitsu.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
b38576cd02
commit
e1b24b649a
|
@ -448,9 +448,9 @@ static NetSocketState *net_socket_fd_init(NetClientState *peer,
|
||||||
case SOCK_STREAM:
|
case SOCK_STREAM:
|
||||||
return net_socket_fd_init_stream(peer, model, name, fd, is_connected);
|
return net_socket_fd_init_stream(peer, model, name, fd, is_connected);
|
||||||
default:
|
default:
|
||||||
/* who knows ... this could be a eg. a pty, do warn and continue as stream */
|
error_report("socket type=%d for fd=%d must be either"
|
||||||
fprintf(stderr, "qemu: warning: socket type=%d for fd=%d is not SOCK_DGRAM or SOCK_STREAM\n", so_type, fd);
|
" SOCK_DGRAM or SOCK_STREAM", so_type, fd);
|
||||||
return net_socket_fd_init_stream(peer, model, name, fd, is_connected);
|
closesocket(fd);
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue