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

Re: [libvirt] [PATCH] daemon: plug a memory leak



On 12/10/2010 07:29 PM, Eric Blake wrote:
* daemon/libvirtd.c (qemudFreeClient): Avoid a leak.
(qemudDispatchServer): Avoid null dereference.
---

I keep finding more of these.

  daemon/libvirtd.c |    5 +++--
  1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c
index 791b3dc..2914f2f 100644
--- a/daemon/libvirtd.c
+++ b/daemon/libvirtd.c
@@ -1410,7 +1410,7 @@ static int qemudDispatchServer(struct qemud_server *server, struct qemud_socket
          /* Client is running as root, so disable auth */
          if (uid == 0) {
              VIR_INFO(_("Turn off polkit auth for privileged client pid %d from %s"),
-                     pid, addrstr);
+                     pid, client->addrstr);
              client->auth = REMOTE_AUTH_NONE;
          }
      }
@@ -1451,7 +1451,7 @@ static int qemudDispatchServer(struct qemud_server *server, struct qemud_socket
          } else {
              PROBE(CLIENT_TLS_FAIL, "fd=%d", client->fd);
              VIR_ERROR(_("TLS handshake failed for client %s: %s"),
-                      addrstr, gnutls_strerror (ret));
+                      client->addrstr, gnutls_strerror (ret));
              goto error;
          }
      }
@@ -2283,6 +2283,7 @@ static void qemudFreeClient(struct qemud_client *client) {
      if (client->conn)
          virConnectClose(client->conn);
      virMutexDestroy(&client->lock);
+    VIR_FREE(client->addrstr);
      VIR_FREE(client);
  }


ACK.

Have you looked into some of the other stuff in the qemud_client struct? For example, nothing inside #ifdef HAVE_SASL gets freed during qemudFreeClient(). Quickly looking at the use of those items, it appears it might be possible to be freeing up the client struct when one of those is non-NULL, but I didn't read very carefully...


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