]> git.proxmox.com Git - mirror_qemu.git/commitdiff
libcacard/vscclient: fix leakage of socket on error paths
authorAlon Levy <alevy@redhat.com>
Tue, 4 Jun 2013 20:23:37 +0000 (16:23 -0400)
committerMichael Tokarev <mjt@tls.msk.ru>
Wed, 12 Jun 2013 12:04:43 +0000 (16:04 +0400)
Spotted by Coverity.

Signed-off-by: Alon Levy <alevy@redhat.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
libcacard/vscclient.c

index ac2364723658a2d7f0efa5acc9173641e10c3207..5180d2945a9219ebf0b8de67c58dacc16107857a 100644 (file)
@@ -618,18 +618,22 @@ connect_to_qemu(
     if (ret != 0) {
         /* Error */
         fprintf(stderr, "getaddrinfo failed\n");
-        return -1;
+        goto cleanup_socket;
     }
 
     if (connect(sock, server->ai_addr, server->ai_addrlen) < 0) {
         /* Error */
         fprintf(stderr, "Could not connect\n");
-        return -1;
+        goto cleanup_socket;
     }
     if (verbose) {
         printf("Connected (sizeof Header=%zd)!\n", sizeof(VSCMsgHeader));
     }
     return sock;
+
+cleanup_socket:
+    closesocket(sock);
+    return -1;
 }
 
 int
@@ -759,5 +763,6 @@ main(
     g_io_channel_unref(channel_socket);
     g_byte_array_unref(socket_to_send);
 
+    closesocket(sock);
     return 0;
 }