From: Kaifeng Zhu Date: Tue, 22 Apr 2014 06:38:24 +0000 (+0100) Subject: net: Fix memory/handle leaks in net_socket_listen_init() X-Git-Tag: xen-4.6.1~12 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=6b2a35d239b2462ac1bea07b74f4c88ec20e233a;p=qemu-xen-traditional.git net: Fix memory/handle leaks in net_socket_listen_init() fd and s could be leaked in case bind/listen failed. Signed-off-by: Kaifeng Zhu Coverity-IDs: 1055923 1055924 Reviewed-by: Andrew Cooper --- diff --git a/net.c b/net.c index f3887a77..33460d86 100644 --- a/net.c +++ b/net.c @@ -1460,6 +1460,7 @@ static int net_socket_listen_init(VLANState *vlan, fd = socket(PF_INET, SOCK_STREAM, 0); if (fd < 0) { perror("socket"); + qemu_free(s); return -1; } socket_set_nonblock(fd); @@ -1471,11 +1472,15 @@ static int net_socket_listen_init(VLANState *vlan, ret = bind(fd, (struct sockaddr *)&saddr, sizeof(saddr)); if (ret < 0) { perror("bind"); + closesocket(fd); + qemu_free(s); return -1; } ret = listen(fd, 0); if (ret < 0) { perror("listen"); + closesocket(fd); + qemu_free(s); return -1; } s->vlan = vlan;