Changeset: c85befcc8fc8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c85befcc8fc8
Modified Files:
        tools/merovingian/client/monetdb.c
        tools/merovingian/daemon/client.c
        tools/merovingian/daemon/connections.c
        tools/merovingian/daemon/controlrunner.c
        tools/merovingian/daemon/forkmserver.c
        tools/merovingian/daemon/multiplex-funnel.c
        tools/merovingian/daemon/proxy.c
        tools/merovingian/utils/control.c
Branch: Nov2019
Log Message:

Coverity fixes.


diffs (200 lines):

diff --git a/tools/merovingian/client/monetdb.c 
b/tools/merovingian/client/monetdb.c
--- a/tools/merovingian/client/monetdb.c
+++ b/tools/merovingian/client/monetdb.c
@@ -583,10 +583,10 @@ simple_argv_cmd(char *cmd, sabdb *dbs, c
                        if (premsg != NULL && !monetdb_quiet)
                                printf("FAILED\n");
                        fprintf(stderr, "%s: %s\n", cmd, out);
-                       free(out);
 
                        state |= 1;
                }
+               free(out);
 
                hadwork = 1;
        }
diff --git a/tools/merovingian/daemon/client.c 
b/tools/merovingian/daemon/client.c
--- a/tools/merovingian/daemon/client.c
+++ b/tools/merovingian/daemon/client.c
@@ -577,12 +577,14 @@ acceptConnections(int sock, int usock)
                        iov.iov_base = buf;
                        iov.iov_len = 1;
 
-                       msgh.msg_name = 0;
-                       msgh.msg_namelen = 0;
-                       msgh.msg_iov = &iov;
-                       msgh.msg_iovlen = 1;
-                       msgh.msg_control = ccmsg;
-                       msgh.msg_controllen = sizeof(ccmsg);
+                       msgh = (struct msghdr) {
+                               .msg_name = 0,
+                               .msg_namelen = 0,
+                               .msg_iov = &iov,
+                               .msg_iovlen = 1,
+                               .msg_control = ccmsg,
+                               .msg_controllen = sizeof(ccmsg),
+                       };
 
                        rv = recvmsg(msgsock, &msgh, 0);
                        if (rv == -1) {
diff --git a/tools/merovingian/daemon/connections.c 
b/tools/merovingian/daemon/connections.c
--- a/tools/merovingian/daemon/connections.c
+++ b/tools/merovingian/daemon/connections.c
@@ -68,13 +68,11 @@ openConnectionTCP(int *ret, bool bind_ip
 
                        if (bind(sock, rp->ai_addr, rp->ai_addrlen) != -1)
                                break; /* working */
+                       closesocket(sock);
                }
                if (rp == NULL) {
                        int e = errno;
-                       if (result)
-                               freeaddrinfo(result);
-                       if (sock != -1)
-                               closesocket(sock);
+                       freeaddrinfo(result);
                        if (result) { /* results found, tried socket, 
setsockopt and bind calls */
                                errno = e;
                                return newErr("binding to stream socket port 
%hu failed: %s", port, strerror(errno));
@@ -84,6 +82,7 @@ openConnectionTCP(int *ret, bool bind_ip
                }
                server = rp->ai_addr;
                length = rp->ai_addrlen;
+               freeaddrinfo(result);
        } else {
                sock = socket(bind_ipv6 ? AF_INET6 : AF_INET, SOCK_STREAM
 #ifdef SOCK_CLOEXEC
diff --git a/tools/merovingian/daemon/controlrunner.c 
b/tools/merovingian/daemon/controlrunner.c
--- a/tools/merovingian/daemon/controlrunner.c
+++ b/tools/merovingian/daemon/controlrunner.c
@@ -367,6 +367,8 @@ static void ctl_handle_client(
                                                         * may have encountered.
                                                         */
                                                        
shutdown_profiler(dbname, &stats);
+                                                       if (stats != NULL)
+                                                               
msab_freeStatus(&stats);
                                                        terminateProcess(pid, 
dbname, type, 1);
                                                        Mfprintf(_mero_ctlout, 
"%s: stopped "
                                                                        
"database '%s'\n", origin, q);
@@ -670,6 +672,8 @@ static void ctl_handle_client(
                                                         origin, log_path);
                                }
                                msab_freeStatus(&stats);
+                               if (log_path)
+                                       free(log_path);
                        }  else if (strncmp(p, "profilerstop", 
strlen("profilerstop")) == 0) {
                                char *e = shutdown_profiler(q, &stats);
                                if (e != NULL) {
@@ -1057,9 +1061,11 @@ controlRunner(void *d)
 #endif
                if (retval == 0) {
                        /* nothing interesting has happened */
+                       free(p);
                        continue;
                }
                if (retval == -1) {
+                       free(p);
                        continue;
                }
 
@@ -1068,11 +1074,13 @@ controlRunner(void *d)
                        continue;
 #else
                if (!FD_ISSET(usock, &fds)) {
+                       free(p);
                        continue;
                }
 #endif
 
                if ((msgsock = accept4(usock, (SOCKPTR) 0, (socklen_t *) 0, 
SOCK_CLOEXEC)) == -1) {
+                       free(p);
                        if (_mero_keep_listening == 0)
                                break;
                        if (errno != EINTR) {
@@ -1086,9 +1094,10 @@ controlRunner(void *d)
 #endif
 
                *p = msgsock;
-               if (pthread_create(&tid, NULL, handle_client, p) != 0)
+               if (pthread_create(&tid, NULL, handle_client, p) != 0) {
                        closesocket(msgsock);
-               else
+                       free(p);
+               } else
                        pthread_detach(tid);
        } while (_mero_keep_listening);
        shutdown(usock, SHUT_RDWR);
diff --git a/tools/merovingian/daemon/forkmserver.c 
b/tools/merovingian/daemon/forkmserver.c
--- a/tools/merovingian/daemon/forkmserver.c
+++ b/tools/merovingian/daemon/forkmserver.c
@@ -872,6 +872,7 @@ fork_profiler(char *dbname, sabdb **stat
        struct stat path_info;
        int error_code;
 
+       *log_path = NULL;
        error = msab_getStatus(stats, dbname);
        if (error != NULL) {
                return error;
@@ -1227,6 +1228,7 @@ shutdown_profiler(char *dbname, sabdb **
 
   cleanup:
        freeConfFile(ckv);
+       free(ckv);
        free(pidfilename);
        return error;
 }
diff --git a/tools/merovingian/daemon/multiplex-funnel.c 
b/tools/merovingian/daemon/multiplex-funnel.c
--- a/tools/merovingian/daemon/multiplex-funnel.c
+++ b/tools/merovingian/daemon/multiplex-funnel.c
@@ -94,11 +94,12 @@ MFconnectionManager(void *d)
                        break;
                }
                /* coverity[string_null_argument] */
-               if (read(mfpipe[0], &msg, sizeof(msg)) < 0) {
+               if ((i = (int) read(mfpipe[0], &msg, sizeof(msg))) < 0) {
                        Mfprintf(stderr, "failed reading from notification 
pipe: %s\n",
                                        strerror(errno));
                        break;
                }
+               assert(i == (int) sizeof(msg));
                /* we just received a POINTER to a string! */
 
                /* intended behaviour:
diff --git a/tools/merovingian/daemon/proxy.c b/tools/merovingian/daemon/proxy.c
--- a/tools/merovingian/daemon/proxy.c
+++ b/tools/merovingian/daemon/proxy.c
@@ -107,9 +107,11 @@ startProxy(int psock, stream *cfdin, str
                                        if ((t = strchr(port, '/')) != NULL)
                                                *t = '\0';
                                } else {
+                                       free(conn);
                                        return(newErr("can't find a port in 
redirect: %s", url));
                                }
                        } else {
+                               free(conn);
                                return(newErr("invalid IPv6 address in 
redirect: %s", url));
                        }
                } else if ((port = strchr(conn, ':')) != NULL) { /* drop 
anything off after the hostname */
diff --git a/tools/merovingian/utils/control.c 
b/tools/merovingian/utils/control.c
--- a/tools/merovingian/utils/control.c
+++ b/tools/merovingian/utils/control.c
@@ -111,6 +111,7 @@ char* control_send(
                                         strerror(errno)
 #endif
                        );
+                       closesocket(sock);
                        return(strdup(sbuf));
                }
 #if !defined(SOCK_CLOEXEC) && defined(HAVE_FCNTL)
@@ -143,9 +144,8 @@ char* control_send(
                        fdin = block_stream(socket_rstream(sock, "client in"));
                        fdout = block_stream(socket_wstream(sock, "client 
out"));
                } else {
-                       if (len > 2 &&
-                                       (strstr(rbuf + 2, ":BIG:") != NULL ||
-                                        strstr(rbuf + 2, ":LIT:") != NULL))
+                       if (strstr(rbuf + 2, ":BIG:") != NULL ||
+                               strstr(rbuf + 2, ":LIT:") != NULL)
                        {
                                snprintf(sbuf, sizeof(sbuf), "cannot connect: "
                                                "server looks like a mapi 
server, "
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to