Changeset: f0b29a97df1b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/f0b29a97df1b
Modified Files:
        gdk/gdk_bbp.c
        gdk/gdk_logger.c
        gdk/gdk_select.c
        gdk/gdk_string.c
        monetdb5/mal/mal_interpreter.c
        tools/merovingian/daemon/argvcmds.c
Branch: Jul2021
Log Message:

Fixing some problems found by Coverity.


diffs (112 lines):

diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1729,6 +1729,7 @@ BBPdir_last(int n, char *buf, size_t buf
        }
        if (fclose(nbbpf) == EOF) {
                GDKsyserror("Closing BBP.dir file failed\n");
+               nbbpf = NULL;   /* can't close again */
                goto bailout;
        }
 
@@ -2586,7 +2587,8 @@ decref(bat i, bool logical, bool release
                        if (b->tvheap)
                                b->tvheap->dirty = true;
                }
-               farmid = b->theap->farmid;
+               if (b->theap)
+                       farmid = b->theap->farmid;
                MT_lock_unset(&b->theaplock);
        }
 
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -985,13 +985,14 @@ logger_create_types_file(logger *lg, con
                     && fsync(fileno(fp)) < 0
 #endif
            )) {
+               GDKsyserror("flushing log file %s failed", filename);
+               fclose(fp);
                MT_remove(filename);
-               GDKerror("flushing log file %s failed", filename);
                return GDK_FAIL;
        }
        if (fclose(fp) < 0) {
+               GDKsyserror("closing log file %s failed", filename);
                MT_remove(filename);
-               GDKerror("closing log file %s failed", filename);
                return GDK_FAIL;
        }
        return GDK_SUCCEED;
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -1893,8 +1893,11 @@ BATselect(BAT *b, BAT *s, const void *tl
        estimate = MIN(estimate, maximum);
 
        bn = COLnew(0, TYPE_oid, estimate, TRANSIENT);
-       if (bn == NULL)
+       if (bn == NULL) {
+               if (havehash)
+                       MT_rwlock_rdunlock(&b->thashlock);
                return NULL;
+       }
 
        BATiter bi = bat_iterator(b);
        if (wanthash) {
diff --git a/gdk/gdk_string.c b/gdk/gdk_string.c
--- a/gdk/gdk_string.c
+++ b/gdk/gdk_string.c
@@ -778,6 +778,13 @@ concat_strings(BAT **bnp, ValPtr pt, BAT
        assert((bnp == NULL) != (pt == NULL));
        /* if pt not NULL, only a single group allowed */
        assert(pt == NULL || ngrp == 1);
+
+       bi = bat_iterator(b);
+       if (sep)
+               bis = bat_iterator(sep);
+       else
+               separator_length = strlen(separator);
+
        if (bnp) {
                if ((bn = COLnew(min, TYPE_str, ngrp, TRANSIENT)) == NULL) {
                        rres = GDK_FAIL;
@@ -786,12 +793,6 @@ concat_strings(BAT **bnp, ValPtr pt, BAT
                *bnp = bn;
        }
 
-       bi = bat_iterator(b);
-       if (sep)
-               bis = bat_iterator(sep);
-       else
-               separator_length = strlen(separator);
-
        if (ngrp == 1) {
                size_t offset = 0, single_length = 0;
                bool empty = true;
diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -834,7 +834,8 @@ str runMALsequence(Client cntxt, MalBlkP
                                lhs = &backup[i];
                                if (BATatoms[lhs->vtype].atomUnfix &&
                                        
(*BATatoms[lhs->vtype].atomUnfix)(VALget(lhs)) != GDK_SUCCEED) {
-                                       ret = createException(MAL, 
"mal.propertyCheck", GDK_EXCEPTION);
+                                       if (ret == MAL_SUCCEED)
+                                               ret = createException(MAL, 
"mal.propertyCheck", GDK_EXCEPTION);
                                }
                                if (ATOMextern(lhs->vtype) &&
                                        lhs->val.pval &&
diff --git a/tools/merovingian/daemon/argvcmds.c 
b/tools/merovingian/daemon/argvcmds.c
--- a/tools/merovingian/daemon/argvcmds.c
+++ b/tools/merovingian/daemon/argvcmds.c
@@ -393,7 +393,7 @@ command_set(confkeyval *ckv, int argc, c
                                if (strcmp(p + 1, MONETDB5_PASSWDHASH) != 0) {
                                        fprintf(stderr, "set: passphrase hash 
'%s' incompatible, "
                                                        "expected '%s'\n",
-                                                       h, MONETDB5_PASSWDHASH);
+                                                       p + 1, 
MONETDB5_PASSWDHASH);
                                        return(1);
                                }
                                *q = '}';
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to