[libgovirt] proxy: Fix leak of cert data in ovirt_proxy_fetch_certificate{, async}



commit 2cff0a9a3f1ce35e6af792224ed8c8a34ecbe473
Author: Christophe Fergeau <cfergeau redhat com>
Date:   Mon Jul 27 12:04:45 2015 +0200

    proxy: Fix leak of cert data in ovirt_proxy_fetch_certificate{,async}

 govirt/ovirt-proxy.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
---
diff --git a/govirt/ovirt-proxy.c b/govirt/ovirt-proxy.c
index fdd3955..350a1a2 100644
--- a/govirt/ovirt-proxy.c
+++ b/govirt/ovirt-proxy.c
@@ -607,8 +607,8 @@ static void set_display_ca_cert_from_data(OvirtProxy *proxy,
     if (proxy->priv->display_ca != NULL)
         g_byte_array_unref(proxy->priv->display_ca);
 
-    g_byte_array_append(proxy->priv->display_ca,
-                        (guint8 *)ca_cert_data, ca_cert_len);
+    proxy->priv->display_ca = g_byte_array_new_take((guint8 *)ca_cert_data,
+                                                    ca_cert_len);
 
     /* While the fetched CA certificate has historically been used both as the CA
      * certificate used during REST API communication and as the one to use for
@@ -648,6 +648,7 @@ gboolean ovirt_proxy_fetch_ca_certificate(OvirtProxy *proxy, GError **error)
         goto error;
 
     set_ca_cert_from_data(proxy, cert_data, cert_length);
+    /* takes ownership of cert_data */
     set_display_ca_cert_from_data(proxy, cert_data, cert_length);
 
 error:
@@ -679,6 +680,7 @@ static void ca_file_loaded_cb(GObject *source_object,
     proxy = g_async_result_get_source_object(G_ASYNC_RESULT(fetch_result));
 
     set_ca_cert_from_data(OVIRT_PROXY(proxy), cert_data, cert_length);
+    /* takes ownership of cert_data */
     set_display_ca_cert_from_data(OVIRT_PROXY(proxy),
                                   cert_data, cert_length);
     g_object_unref(proxy);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]