summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzhanghailiang <zhang.zhanghailiang@huawei.com>2014-11-14 10:18:08 +0800
committerPaolo Bonzini <pbonzini@redhat.com>2014-11-14 12:15:40 +0100
commit5bbebf622897a59db5da4c468e737bfec4d71280 (patch)
tree0743c0f2b1e7f71c9bae829cfcd4c7d1de49e195
parentc52e67924fbdadfa00668248f5c075542943c54c (diff)
downloadqemu-5bbebf622897a59db5da4c468e737bfec4d71280.tar.gz
qemu-5bbebf622897a59db5da4c468e737bfec4d71280.tar.bz2
qemu-5bbebf622897a59db5da4c468e737bfec4d71280.zip
libcacard: fix resource leak
In function connect_to_qemu(), getaddrinfo() will allocate memory that is stored into server, it should be freed by using freeaddrinfo() before connect_to_qemu() return. Cc: qemu-stable@nongnu.org Reviewed-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--libcacard/vscclient.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/libcacard/vscclient.c b/libcacard/vscclient.c
index 80111df00c..fa6041de99 100644
--- a/libcacard/vscclient.c
+++ b/libcacard/vscclient.c
@@ -597,7 +597,7 @@ connect_to_qemu(
const char *port
) {
struct addrinfo hints;
- struct addrinfo *server;
+ struct addrinfo *server = NULL;
int ret, sock;
sock = socket(AF_INET, SOCK_STREAM, 0);
@@ -629,9 +629,14 @@ connect_to_qemu(
if (verbose) {
printf("Connected (sizeof Header=%zd)!\n", sizeof(VSCMsgHeader));
}
+
+ freeaddrinfo(server);
return sock;
cleanup_socket:
+ if (server) {
+ freeaddrinfo(server);
+ }
closesocket(sock);
return -1;
}