[PATCH 2/2] virnetsocket: Use g_auto* more

Michal Privoznik mprivozn at redhat.com
Fri Oct 15 12:32:08 UTC 2021


There are few functions in virnetsocket.c where an object/memory
is freed by explicit call. Use g_autoptr()/g_autofree/VIR_AUTOCLOSE
to do that automatically.

Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
---
 src/rpc/virnetsocket.c | 57 +++++++++++++++---------------------------
 1 file changed, 20 insertions(+), 37 deletions(-)

diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
index 50c0c4ecc8..bf931e5f59 100644
--- a/src/rpc/virnetsocket.c
+++ b/src/rpc/virnetsocket.c
@@ -124,10 +124,9 @@ VIR_ONCE_GLOBAL_INIT(virNetSocket);
 #ifndef WIN32
 static int virNetSocketForkDaemon(const char *binary)
 {
-    int ret;
-    virCommand *cmd = virCommandNewArgList(binary,
-                                             "--timeout=120",
-                                             NULL);
+    g_autoptr(virCommand) cmd = virCommandNewArgList(binary,
+                                                     "--timeout=120",
+                                                     NULL);
 
     virCommandAddEnvPassCommon(cmd);
     virCommandAddEnvPass(cmd, "XDG_CACHE_HOME");
@@ -135,9 +134,7 @@ static int virNetSocketForkDaemon(const char *binary)
     virCommandAddEnvPass(cmd, "XDG_RUNTIME_DIR");
     virCommandClearCaps(cmd);
     virCommandDaemonize(cmd);
-    ret = virCommandRun(cmd, NULL);
-    virCommandFree(cmd);
-    return ret;
+    return virCommandRun(cmd, NULL);
 }
 #endif
 
@@ -234,7 +231,7 @@ virNetSocketNew(virSocketAddr *localAddr,
                 pid_t pid,
                 bool unlinkUNIX)
 {
-    virNetSocket *sock;
+    g_autoptr(virNetSocket) sock = NULL;
     int no_slow_start = 1;
 
     if (virNetSocketInitialize() < 0)
@@ -300,11 +297,10 @@ virNetSocketNew(virSocketAddr *localAddr,
           sock, fd, errfd, (long long)pid,
           NULLSTR(sock->localAddrStrSASL), NULLSTR(sock->remoteAddrStrSASL));
 
-    return sock;
+    return g_steal_pointer(&sock);
 
  error:
     sock->fd = sock->errfd = -1; /* Caller owns fd/errfd on failure */
-    virObjectUnref(sock);
     return NULL;
 }
 
@@ -667,13 +663,13 @@ int virNetSocketNewConnectUNIX(const char *path,
                                const char *spawnDaemonPath,
                                virNetSocket **retsock)
 {
-    char *lockpath = NULL;
-    int lockfd = -1;
+    g_autofree char *lockpath = NULL;
+    VIR_AUTOCLOSE lockfd = -1;
     int fd = -1;
     int retries = 500;
     virSocketAddr localAddr;
     virSocketAddr remoteAddr;
-    char *rundir = NULL;
+    g_autofree char *rundir = NULL;
     int ret = -1;
     bool daemonLaunched = false;
 
@@ -762,10 +758,7 @@ int virNetSocketNewConnectUNIX(const char *path,
  cleanup:
     if (lockfd != -1) {
         unlink(lockpath);
-        VIR_FORCE_CLOSE(lockfd);
     }
-    VIR_FREE(lockpath);
-    VIR_FREE(rundir);
 
     if (ret < 0 && fd != -1)
         closesocket(fd);
@@ -898,7 +891,7 @@ virNetSocketNewConnectLibSSH2(const char *host,
                               virURI *uri,
                               virNetSocket **retsock)
 {
-    virNetSocket *sock = NULL;
+    g_autoptr(virNetSocket) sock = NULL;
     virNetSSHSession *sess = NULL;
     unsigned int verify;
     int ret = -1;
@@ -985,12 +978,11 @@ virNetSocketNewConnectLibSSH2(const char *host,
         goto error;
 
     sock->sshSession = sess;
-    *retsock = sock;
+    *retsock = g_steal_pointer(&sock);
 
     return 0;
 
  error:
-    virObjectUnref(sock);
     virObjectUnref(sess);
     return ret;
 }
@@ -1030,7 +1022,7 @@ virNetSocketNewConnectLibssh(const char *host,
                              virURI *uri,
                              virNetSocket **retsock)
 {
-    virNetSocket *sock = NULL;
+    g_autoptr(virNetSocket) sock = NULL;
     virNetLibsshSession *sess = NULL;
     unsigned int verify;
     int ret = -1;
@@ -1118,12 +1110,11 @@ virNetSocketNewConnectLibssh(const char *host,
      * trying to close an invalid FD).
      */
     sock->ownsFd = false;
-    *retsock = sock;
+    *retsock = g_steal_pointer(&sock);
 
     return 0;
 
  error:
-    virObjectUnref(sock);
     virObjectUnref(sess);
     return ret;
 }
@@ -1238,7 +1229,7 @@ virNetSocket *virNetSocketNewPostExecRestart(virJSONValue *object)
 
 virJSONValue *virNetSocketPreExecRestart(virNetSocket *sock)
 {
-    virJSONValue *object = NULL;
+    g_autoptr(virJSONValue) object = NULL;
 
     virObjectLock(sock);
 
@@ -1287,11 +1278,10 @@ virJSONValue *virNetSocketPreExecRestart(virNetSocket *sock)
     }
 
     virObjectUnlock(sock);
-    return object;
+    return g_steal_pointer(&object);
 
  error:
     virObjectUnlock(sock);
-    virJSONValueFree(object);
     return NULL;
 }
 
@@ -1740,7 +1730,7 @@ bool virNetSocketHasPendingData(virNetSocket *sock G_GNUC_UNUSED)
 
 static ssize_t virNetSocketReadWire(virNetSocket *sock, char *buf, size_t len)
 {
-    char *errout = NULL;
+    g_autofree char *errout = NULL;
     ssize_t ret;
 
 #if WITH_SSH2
@@ -1804,7 +1794,6 @@ static ssize_t virNetSocketReadWire(virNetSocket *sock, char *buf, size_t len)
         }
     }
 
-    VIR_FREE(errout);
     return ret;
 }
 
@@ -1859,22 +1848,18 @@ static ssize_t virNetSocketReadSASL(virNetSocket *sock, char *buf, size_t len)
     /* Need to read some more data off the wire */
     if (sock->saslDecoded == NULL) {
         ssize_t encodedLen = virNetSASLSessionGetMaxBufSize(sock->saslSession);
-        char *encoded;
-        encoded = g_new0(char, encodedLen);
+        g_autofree char *encoded = g_new0(char, encodedLen);
+
         encodedLen = virNetSocketReadWire(sock, encoded, encodedLen);
 
-        if (encodedLen <= 0) {
-            VIR_FREE(encoded);
+        if (encodedLen <= 0)
             return encodedLen;
-        }
 
         if (virNetSASLSessionDecode(sock->saslSession,
                                     encoded, encodedLen,
                                     &sock->saslDecoded, &sock->saslDecodedLength) < 0) {
-            VIR_FREE(encoded);
             return -1;
         }
-        VIR_FREE(encoded);
 
         sock->saslDecodedOffset = 0;
     }
@@ -2136,7 +2121,7 @@ static void virNetSocketEventHandle(int watch G_GNUC_UNUSED,
 
 static void virNetSocketEventFree(void *opaque)
 {
-    virNetSocket *sock = opaque;
+    g_autoptr(virNetSocket) sock = opaque;
     virFreeCallback ff;
     void *eopaque;
 
@@ -2149,8 +2134,6 @@ static void virNetSocketEventFree(void *opaque)
 
     if (ff)
         ff(eopaque);
-
-    virObjectUnref(sock);
 }
 
 int virNetSocketAddIOCallback(virNetSocket *sock,
-- 
2.32.0




More information about the libvir-list mailing list