libtt: Further coverity fixes
authorPeter Howkins <flibble@users.sf.net>
Fri, 20 Apr 2018 21:57:47 +0000 (22:57 +0100)
committerPeter Howkins <flibble@users.sf.net>
Fri, 20 Apr 2018 21:57:47 +0000 (22:57 +0100)
12 files changed:
cde/lib/tt/bin/ttdbserverd/dm_server.C
cde/lib/tt/bin/ttsession/mp_server.C
cde/lib/tt/lib/api/c/api_pattern.C
cde/lib/tt/lib/mp/mp_auth.C
cde/lib/tt/lib/mp/mp_stream_socket.C
cde/lib/tt/lib/tttk/tttk.C
cde/lib/tt/lib/util/tt_audit.C
cde/lib/tt/lib/util/tt_log.C
cde/lib/tt/lib/util/tt_trace.h
cde/lib/tt/mini_isam/isfcb.c
cde/lib/tt/mini_isam/isrepair.c
cde/lib/tt/slib/mp_rpc_server.C

index 84fb2323362355cc57c5dcb7cdf6c5710216f216..d45593ec8091e7a5f03109f5e97cd3d0c6c76bb1 100644 (file)
@@ -1561,7 +1561,10 @@ _tt_transaction_1(_Tt_transaction_args* args, SVCXPRT * /* transp */)
                        return _tt_transaction_error(fd);
                }
                /* Turn on close-on-exec */
-               fcntl(fd, F_SETFD, 1);
+               if(fcntl(fd, F_SETFD, 1) == -1) {
+                       res.iserrno = DM_WRITE_FAILED;
+                       return _tt_transaction_error(fd);
+               }
 
                /* reset to beginning of file */
                off_t offset;
index c0ea10c0c9af84de1a17d4c7b5103833468ed359..760c29b6fa2ecb95edd5ad672aad4d7235864e37 100644 (file)
@@ -251,12 +251,12 @@ int main(int argc, char **argv)
                                _tt_syslog( errstr, LOG_ERR, "%m" );
                                exit(1);
                        }
-                       cargv[i] = '\0';
+                       cargv[i] = NULL;
 
                        // if no program given then use $SHELL
                        if (! cargv[0]) {
                                cargv[0] = getenv("SHELL");
-                               cargv[1] = '\0';
+                               cargv[1] = NULL;
                        }
                        cmd = cargv[0];
                        background_mode = 0;
index 88d7be1582c4a4cc1c5e5dde351e4758e39751cc..a53c3d4812b2eaab525cc6e16f445e0de9a90552 100644 (file)
@@ -1540,7 +1540,11 @@ _tt_session_types_load(const char *filename)
        if (-1==(fd=open(filename, O_RDONLY))) {
                return TT_ERR_FILE;
        }
-       fcntl(fd, F_SETFD, 1);  /* Close on exec */
+       /* Close on exec */
+       if (-1==fcntl(fd, F_SETFD, 1)) {
+               close(fd);
+               return TT_ERR_FILE;
+       }
 
        if (-1==fstat(fd, &typefile_stat)) {
                close(fd);
index b44369d392278be60bcc3f36faa7da06855dc8a2..b847ba4f043944fd3f7a71114481cdf21f378395 100644 (file)
@@ -173,6 +173,7 @@ read_auth_entries(FILE *fp, _tt_AuthFileEntryList **headp)
            _tt_syslog(0, LOG_ERR,
                       "%s:  memory error.  New entry not written.\n",
                        funcname);
+           free(entry);
            return TT_ERR_NOMEM;
        }
 
index 8d08a0de94307f82793caa589d3e78809068b6d7..c0cda276f07d0dc62246211f4ce0b9cb23ddec2e 100644 (file)
@@ -88,6 +88,8 @@ _Tt_stream_socket()
        _sock = -1;
        _hostaddr.sin_port = 0;
        _hostaddr.sin_family = 0;
+        memset(&_hostaddr.sin_addr, 0, sizeof(struct in_addr));
+
 }
 
 _Tt_stream_socket::
@@ -557,7 +559,7 @@ recv(char *msg, int msglen)
 {
        int rval;
        
-       if (_msgsock == -1 && accept() == -1) {
+       if (_msgsock == -1 || accept() == -1) {
                return(-1);
        }
        
index 1f0c2b8fed22722ab9887a6c7f716c1b04b8aa34..970c9fcaac559bf1feb7337bc99bb8cf429c2bf5 100644 (file)
@@ -271,6 +271,7 @@ ttdt_session_join(
        if (join) {
                status = tt_session_join( sessid );
                if (status != TT_OK) {
+                       free(pats);
                        return (Tt_pattern *)tt_error_pointer( status );
                }
        }
index 426ba42eb322212938ef228a58f059417c71c151..a16c41fcd6976874c92f4ee471ff6c03d0d505cf 100644 (file)
@@ -533,6 +533,7 @@ entry(const char *argskey, _Tt_entry_pt func, ...)
                                        _tt_syslog(0, LOG_ERR,
                                                   "_Tt_audit::entry(): ARG_INTEGER: func==%s",
                                                   _tt_enumname(func));
+                                       va_end(ap);
                                        return TT_ERR_INTERNAL;
                                }
                        } break;
index 81c2d4c52563824356a1fbf050451ea8cfa8fec3..58a49380a22e803a6720f08fe3cc0a298b1bb37d 100644 (file)
@@ -76,7 +76,10 @@ _tt_log_error(int errno, int line, char *file, char *msg)
        if (fl == (FILE *)0) {
                return;
        }
-       fcntl(fileno(fl), F_SETFD, 1);  /* Close on exec */
+       /* Close on exec */
+       if(fcntl(fileno(fl), F_SETFD, 1) == -1) {
+               return;
+       }
 
        time(&clock);
        timestamp = _XCtime(&clock, ctime_buf);
index 2a049e95ba3e93b68e87db5f6bd1f1719c38c4ea..084cb4127eaccff207981acf06a96f65a6a3109e 100644 (file)
@@ -102,7 +102,7 @@ class _Tt_trace_stream;
 class _Tt_trace : public _Tt_allocated {
     public:
        // suppresses "used but not set" warnings
-                               _Tt_trace() {};
+                               _Tt_trace() : _funcname(TT_X_SESSION), _tracing(0) {};
        // Initializes tracing (if necessary)
        static int              init(
                                        int even_if_no_envariable = 0
index 8d58957ab52ee91b20a960b54dde881168d74ab1..cf810b4e90de4e76c4c7481382a2fcde4069276f 100644 (file)
@@ -649,6 +649,11 @@ _create_datfile(isfname)
        fd = open (namebuf, O_CREAT | O_EXCL | O_RDWR, 0666);
        if (fd > -1) {
                fcntl(fd, F_SETFD, 1);  /* Close on exec */
+               /* Close on exec */
+               if(fcntl(fd, F_SETFD, 1) == -1) {
+                       close(fd);
+                       return(-1);
+               }
        }
        return (fd);
 }
@@ -671,7 +676,11 @@ _create_indfile(isfname)
 
        fd = open (namebuf, O_CREAT | O_EXCL | O_RDWR, 0666);
        if (fd > -1) {
-               fcntl(fd, F_SETFD, 1);  /* Close on exec */
+               /* Close on exec */
+               if(fcntl(fd, F_SETFD, 1) == -1) {
+                       close(fd);
+                       return(-1);
+               }
        }
        return (fd);
 }
@@ -694,7 +703,11 @@ _create_varfile(isfname)
 
        fd = open (namebuf, O_CREAT | O_EXCL | O_RDWR, 0666);
        if (fd > -1) {
-               fcntl(fd, F_SETFD, 1);  /* Close on exec */
+               /* Close on exec */
+               if(fcntl(fd, F_SETFD, 1) == -1) {
+                       close(fd);
+                       return(-1);
+               }
        }
        return (fd);
 }
@@ -774,14 +787,22 @@ _open_datfile(isfname, rdonly)
 
     if ((ret = open (namebuf, O_RDWR)) != -1) {
        *rdonly = FALSE;
-       fcntl(ret, F_SETFD, 1);         /* Close on exec */
-       return (ret);
+        /* Close on exec */
+        if(fcntl(ret, F_SETFD, 1) == -1) {
+            close(ret);
+            ret = -1;
+        }
+        return (ret);
     }
 
     *rdonly = TRUE;
     ret = open (namebuf, O_RDONLY);
     if (ret > -1) {
-           fcntl(ret, F_SETFD, 1);     /* Close on exec */
+        /* Close on exec */
+        if(fcntl(ret, F_SETFD, 1) == -1) {
+            close(ret);
+            return(-1);
+        }
     }
     return (ret);
 }
@@ -805,7 +826,11 @@ _open_indfile(isfname, rdonly)
 
        fd = open (namebuf, (rdonly==TRUE)?O_RDONLY:O_RDWR);
        if (fd > -1) {
-           fcntl(fd, F_SETFD, 1);      /* Close on exec */
+               /* Close on exec */
+               if(fcntl(fd, F_SETFD, 1) == -1) {
+                       close(fd);
+                       return(-1);
+               }
        }
        return (fd);
 }
@@ -829,7 +854,11 @@ _open_varfile(isfname, rdonly)
 
        fd = open (namebuf, (rdonly==TRUE)?O_RDONLY:O_RDWR);
        if (fd > -1) {
-               fcntl(fd, F_SETFD, 1);  /* Close on exec */
+               /* Close on exec */
+               if(fcntl(fd, F_SETFD, 1) == -1) {
+                       close(fd);
+                       return(-1);
+               }
        }
        return (fd);
 }
@@ -882,7 +911,11 @@ _open2_indfile(fcb)
 
     fcb->indfd =  open(namebuf, openmode, buf.st_mode);
     if (fcb->indfd > -1) {
-           fcntl(fcb->indfd, F_SETFD, 1);      /* Close on exec */
+        /* Close on exec */
+        if(fcntl(fcb->indfd, F_SETFD, 1) == -1) {
+            close(fcb->indfd);
+            fcb->indfd = -1;
+        }
     }
 
     if(fcb->indfd == -1 && (openmode & O_CREAT)) {
index e1cc4ed90f402359a673e2306787629da0f574e7..531a4759043e2117df829e392749328e95d1fc9a 100644 (file)
@@ -112,21 +112,30 @@ isrepair(isfname, verbose)
   _makedat_isfname(namebuf);
   datfd = open(namebuf, O_RDONLY);
   if (datfd > -1) {
-         fcntl(datfd, F_SETFD, 1);
+    if(fcntl(datfd, F_SETFD, 1) == -1) {
+      close(datfd);
+      datfd = -1;
+    }
   }
 
   (void)strcpy(namebuf, isfname);
   _makeind_isfname(namebuf);
   indfd = open(namebuf, O_RDONLY);
   if (indfd > -1) {
-         fcntl(indfd, F_SETFD, 1);
+    if(fcntl(indfd, F_SETFD, 1) == -1) {
+      close(indfd);
+      indfd = -1;
+    }
   }
 
   (void)strcpy(namebuf, isfname);
   _makevar_isfname(namebuf);
   varfd = open(namebuf, O_RDONLY);
   if (varfd > -1) {
-         fcntl(varfd, F_SETFD, 1);
+    if(fcntl(varfd, F_SETFD, 1) == -1) {
+       close(varfd);
+       varfd = -1;         
+    }
   }
 
   (void)print("Reading control page from %s.rec file...\n",
index 4df567d448adc7838164b9d4ce29dd130b9e46f5..c134bc5e485bdabf8c2338880dd387517715d1e4 100644 (file)
@@ -391,7 +391,10 @@ gettransient(int proto, int vers, int *sockp)
         addr.sin_port = htons(0);
         addr.sin_family = AF_INET;
        len = sizeof(addr);
-       bind(s, (sockaddr *)&addr, len);
+       if(bind(s, (sockaddr *)&addr, len) == -1) {
+               _tt_syslog(0, LOG_ERR, "bind(): %m");
+               return(0);
+       }
 #if defined (_AIX) && (OSMAJORVERSION==4) && (OSMINORVERSION==2)
        if (getsockname(s, (sockaddr *)&addr, (size_t *)&len) < 0) {
 #else