[spice-gtk 1/2] sasl: Fix memory leaks in spice_channel_perform_auth_sasl()

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

 



While looking at the SASL code, I noticed some memory leaks.
---
 gtk/spice-channel.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/gtk/spice-channel.c b/gtk/spice-channel.c
index 08418f7..9b2697e 100644
--- a/gtk/spice-channel.c
+++ b/gtk/spice-channel.c
@@ -1387,7 +1387,9 @@ static gboolean spice_channel_perform_auth_sasl(SpiceChannel *channel)
                           SASL_SUCCESS_DATA,
                           &saslconn);
     g_free(localAddr);
+    localAddr = NULL;
     g_free(remoteAddr);
+    remoteAddr = NULL;
 
     if (err != SASL_OK) {
         g_critical("Failed to create SASL client context: %d (%s)",
@@ -1436,8 +1438,6 @@ static gboolean spice_channel_perform_auth_sasl(SpiceChannel *channel)
     spice_channel_read(channel, mechlist, len);
     mechlist[len] = '\0';
     if (c->has_error) {
-        g_free(mechlist);
-        mechlist = NULL;
         goto error;
     }
 
@@ -1450,11 +1450,11 @@ restart:
                             &clientout,
                             &clientoutlen,
                             &mechname);
+    g_free(mechlist);
+    mechlist = NULL;
     if (err != SASL_OK && err != SASL_CONTINUE && err != SASL_INTERACT) {
         g_critical("Failed to start SASL negotiation: %d (%s)",
                    err, sasl_errdetail(saslconn));
-        g_free(mechlist);
-        mechlist = NULL;
         goto error;
     }
 
@@ -1640,6 +1640,10 @@ complete:
     return ret;
 
 error:
+    g_free(localAddr);
+    g_free(remoteAddr);
+    g_free(mechlist);
+    g_free(serverin);
     g_clear_object(&addr);
     if (saslconn)
         sasl_dispose(&saslconn);
-- 
1.8.3.1

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]