[PATCH] admin: fix leak of typed parameters on error

Daniel P. Berrangé posted 1 patch 1 year, 3 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20230110104103.2399983-1-berrange@redhat.com
src/admin/admin_remote.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
[PATCH] admin: fix leak of typed parameters on error
Posted by Daniel P. Berrangé 1 year, 3 months ago
A few admin client methods had the xdr_free call the wrong
side of the cleanup label, so typed parameters would not
be freed on error.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 src/admin/admin_remote.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/admin/admin_remote.c b/src/admin/admin_remote.c
index 012488bff3..f99b93eef6 100644
--- a/src/admin/admin_remote.c
+++ b/src/admin/admin_remote.c
@@ -269,9 +269,9 @@ remoteAdminServerGetThreadPoolParameters(virAdmServerPtr srv,
         goto cleanup;
 
     rv = 0;
-    xdr_free((xdrproc_t)xdr_admin_server_get_threadpool_parameters_ret, (char *) &ret);
 
  cleanup:
+    xdr_free((xdrproc_t)xdr_admin_server_get_threadpool_parameters_ret, (char *) &ret);
     virObjectUnlock(priv);
     return rv;
 }
@@ -342,9 +342,9 @@ remoteAdminClientGetInfo(virAdmClientPtr client,
         goto cleanup;
 
     rv = 0;
-    xdr_free((xdrproc_t)xdr_admin_client_get_info_ret, (char *) &ret);
 
  cleanup:
+    xdr_free((xdrproc_t)xdr_admin_client_get_info_ret, (char *) &ret);
     virObjectUnlock(priv);
     return rv;
 }
@@ -380,10 +380,10 @@ remoteAdminServerGetClientLimits(virAdmServerPtr srv,
         goto cleanup;
 
     rv = 0;
-    xdr_free((xdrproc_t) xdr_admin_server_get_client_limits_ret,
-             (char *) &ret);
 
  cleanup:
+    xdr_free((xdrproc_t) xdr_admin_server_get_client_limits_ret,
+             (char *) &ret);
     virObjectUnlock(priv);
     return rv;
 }
-- 
2.38.1

Re: [PATCH] admin: fix leak of typed parameters on error
Posted by Martin Kletzander 1 year, 3 months ago
On Tue, Jan 10, 2023 at 05:41:03AM -0500, Daniel P. Berrangé wrote:
>A few admin client methods had the xdr_free call the wrong
>side of the cleanup label, so typed parameters would not
>be freed on error.
>
>Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

Reviewed-by: Martin Kletzander <mkletzan@redhat.com>

and SFF

>---
> src/admin/admin_remote.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
>diff --git a/src/admin/admin_remote.c b/src/admin/admin_remote.c
>index 012488bff3..f99b93eef6 100644
>--- a/src/admin/admin_remote.c
>+++ b/src/admin/admin_remote.c
>@@ -269,9 +269,9 @@ remoteAdminServerGetThreadPoolParameters(virAdmServerPtr srv,
>         goto cleanup;
>
>     rv = 0;
>-    xdr_free((xdrproc_t)xdr_admin_server_get_threadpool_parameters_ret, (char *) &ret);
>
>  cleanup:
>+    xdr_free((xdrproc_t)xdr_admin_server_get_threadpool_parameters_ret, (char *) &ret);
>     virObjectUnlock(priv);
>     return rv;
> }
>@@ -342,9 +342,9 @@ remoteAdminClientGetInfo(virAdmClientPtr client,
>         goto cleanup;
>
>     rv = 0;
>-    xdr_free((xdrproc_t)xdr_admin_client_get_info_ret, (char *) &ret);
>
>  cleanup:
>+    xdr_free((xdrproc_t)xdr_admin_client_get_info_ret, (char *) &ret);
>     virObjectUnlock(priv);
>     return rv;
> }
>@@ -380,10 +380,10 @@ remoteAdminServerGetClientLimits(virAdmServerPtr srv,
>         goto cleanup;
>
>     rv = 0;
>-    xdr_free((xdrproc_t) xdr_admin_server_get_client_limits_ret,
>-             (char *) &ret);
>
>  cleanup:
>+    xdr_free((xdrproc_t) xdr_admin_server_get_client_limits_ret,
>+             (char *) &ret);
>     virObjectUnlock(priv);
>     return rv;
> }
>-- 
>2.38.1
>