From: Matthias Bolte Date: Thu, 17 Mar 2011 16:51:33 +0000 (+0100) Subject: remote: Add missing virCondDestroy calls X-Git-Tag: CVE-2011-1486~54 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=55fb3866719c3e00d619e720b27d5727329459af;p=thirdparty%2Flibvirt.git remote: Add missing virCondDestroy calls The virCond of the remote_thread_call struct was leaked in some places. This results in leaking the underlying mutex. Which in turn leaks a handle on Windows. Reported by Aliaksandr Chabatar and Ihar Smertsin. --- diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 82e094bdbf..8aa88010e3 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -8609,6 +8609,7 @@ remoteStreamPacket(virStreamPtr st, xdr_destroy (&xdr); ret = remoteIO(st->conn, priv, 0, thiscall); + ignore_value(virCondDestroy(&thiscall->cond)); VIR_FREE(thiscall); if (ret < 0) return -1; @@ -8617,6 +8618,7 @@ remoteStreamPacket(virStreamPtr st, error: xdr_destroy (&xdr); + ignore_value(virCondDestroy(&thiscall->cond)); VIR_FREE(thiscall); return -1; } @@ -8746,6 +8748,7 @@ remoteStreamRecv(virStreamPtr st, } ret = remoteIO(st->conn, priv, 0, thiscall); + ignore_value(virCondDestroy(&thiscall->cond)); VIR_FREE(thiscall); if (ret < 0) goto cleanup; @@ -9719,6 +9722,7 @@ prepareCall(struct private_data *priv, error: xdr_destroy (&xdr); + ignore_value(virCondDestroy(&rv->cond)); VIR_FREE(rv); return NULL; } @@ -10818,6 +10822,7 @@ call (virConnectPtr conn, struct private_data *priv, } rv = remoteIO(conn, priv, flags, thiscall); + ignore_value(virCondDestroy(&thiscall->cond)); VIR_FREE(thiscall); return rv; }