Changeset: ce2abd8801fc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ce2abd8801fc
Modified Files:
        monetdb5/mal/mal_embedded.c
        monetdb5/mal/mal_prelude.c
        monetdb5/mal/mal_profiler.c
        monetdb5/modules/atoms/blob.c
        monetdb5/modules/atoms/uuid.c
        monetdb5/modules/kernel/batmmath.c
        monetdb5/modules/mal/mal_mapi.c
        monetdb5/optimizer/opt_bincopyfrom.c
        monetdb5/optimizer/opt_for.c
        monetdb5/optimizer/opt_remoteQueries.c
        tools/monetdbe/monetdbe.c
Branch: Jan2022
Log Message:

Coverity inspired fixes.


diffs (truncated from 438 to 300 lines):

diff --git a/monetdb5/mal/mal_embedded.c b/monetdb5/mal/mal_embedded.c
--- a/monetdb5/mal/mal_embedded.c
+++ b/monetdb5/mal/mal_embedded.c
@@ -67,6 +67,7 @@ malEmbeddedBoot(int workerlimit, int mem
                                        GDKgetenv("monet_vault_key"), 
strerror(errno));
                        }
                        len = fread(secret, 1, sizeof(secret), secretf);
+                       fclose(secretf);
                        secret[len] = '\0';
                        len = strlen(secret); /* secret can contain null-bytes 
*/
                        if (len == 0) {
@@ -76,7 +77,6 @@ malEmbeddedBoot(int workerlimit, int mem
                                        "#warning: your vault key is too short "
                                        "(%zu), enlarge your vault key!\n", 
len);
                        }
-                       fclose(secretf);
                }
                if ((msg = AUTHunlockVault(secretp)) != MAL_SUCCEED) {
                        /* don't show this as a crash */
diff --git a/monetdb5/mal/mal_prelude.c b/monetdb5/mal/mal_prelude.c
--- a/monetdb5/mal/mal_prelude.c
+++ b/monetdb5/mal/mal_prelude.c
@@ -225,11 +225,13 @@ addFunctions(mel_func *fcn){
                if ( s == NULL)
                        throw(LOADER, "addFunctions", "Can not create symbol 
for %s.%s missing", fcn->mod, fcn->fcn);
                mb = s->def;
-               if( mb == NULL)
+               if( mb == NULL) {
+                       freeSymbol(s);
                        throw(LOADER, "addFunctions", "Can not create program 
block for %s.%s missing", fcn->mod, fcn->fcn);
+               }
 
                if (fcn->cname && fcn->cname[0])
-                       strcpy(mb->binding, fcn->cname);
+                       strcpy_len(mb->binding, fcn->cname, 
sizeof(mb->binding));
                /* keep the comment around, setting the static avoid freeing 
the string accidentally , saving on duplicate documentation in the code. */
                mb->statichelp = mb->help = fcn->comment;
 
@@ -240,7 +242,7 @@ addFunctions(mel_func *fcn){
                sig->fcn = (MALfcn)fcn->imp;
                if( fcn->unsafe)
                        mb->unsafeProp = 1;
-               
+
                /* add the return variables */
                if(fcn->retc == 0){
                        int idx = newTmpVariable(mb, TYPE_void);
@@ -340,7 +342,7 @@ melFunction(bool command, const char *mo
        mb = s->def;
        (void)comment;
        if (fname)
-               strcpy(mb->binding, fname);
+               strcpy_len(mb->binding, fname, sizeof(mb->binding));
        if (mb == NULL) {
                freeSymbol(s);
                return MEL_ERR;
diff --git a/monetdb5/mal/mal_profiler.c b/monetdb5/mal/mal_profiler.c
--- a/monetdb5/mal/mal_profiler.c
+++ b/monetdb5/mal/mal_profiler.c
@@ -112,6 +112,7 @@ static inline void
 logdel(struct logbuf *logbuf)
 {
        free(logbuf->logbuffer);
+       logbuf->logbuffer = NULL;
 }
 
 static bool logadd(struct logbuf *logbuf,
@@ -669,7 +670,7 @@ openProfilerStream(Client cntxt)
        // Ignore the JSON rendering mode, use compiled time version
 
        /* show all in progress instructions for stethoscope startup */
-       /* wait a short time for instructions to finish updating there thread 
admin
+       /* wait a short time for instructions to finish updating their thread 
admin
         * and then follow the locking scheme */
 
        MT_sleep_ms(200);
diff --git a/monetdb5/modules/atoms/blob.c b/monetdb5/modules/atoms/blob.c
--- a/monetdb5/modules/atoms/blob.c
+++ b/monetdb5/modules/atoms/blob.c
@@ -247,17 +247,14 @@ BLOBnitems_bulk(Client cntxt, MalBlkPtr 
        }
        bat_iterator_end(&bi);
 
-bailout:
-       if (bn && !msg) {
-               BATsetcount(bn, q);
-               bn->tnil = nils;
-               bn->tnonil = !nils;
-               bn->tkey = BATcount(bn) <= 1;
-               bn->tsorted = BATcount(bn) <= 1;
-               bn->trevsorted = BATcount(bn) <= 1;
-               BBPkeepref(*res = bn->batCacheid);
-       } else if (bn)
-               BBPreclaim(bn);
+       BATsetcount(bn, q);
+       bn->tnil = nils;
+       bn->tnonil = !nils;
+       bn->tkey = BATcount(bn) <= 1;
+       bn->tsorted = BATcount(bn) <= 1;
+       bn->trevsorted = BATcount(bn) <= 1;
+       BBPkeepref(*res = bn->batCacheid);
+  bailout:
        if (b)
                BBPunfix(b->batCacheid);
        if (bs)
diff --git a/monetdb5/modules/atoms/uuid.c b/monetdb5/modules/atoms/uuid.c
--- a/monetdb5/modules/atoms/uuid.c
+++ b/monetdb5/modules/atoms/uuid.c
@@ -121,8 +121,7 @@ UUIDgenerateUuidInt_bulk(Client cntxt, M
        if (isaBatType(getArgType(mb, pci, 1))) {
                bat *bid = getArgReference_bat(stk, pci, 1);
                if (!(b = BBPquickdesc(*bid))) {
-                       msg = createException(MAL, "uuid.generateuuidint_bulk", 
SQLSTATE(HY002) RUNTIME_OBJECT_MISSING);
-                       goto bailout;
+                       throw(MAL, "uuid.generateuuidint_bulk", SQLSTATE(HY002) 
RUNTIME_OBJECT_MISSING);
                }
                n = BATcount(b);
        } else {
@@ -130,8 +129,7 @@ UUIDgenerateUuidInt_bulk(Client cntxt, M
        }
 
        if ((bn = COLnew(b ? b->hseqbase : 0, TYPE_uuid, n, TRANSIENT)) == 
NULL) {
-               msg = createException(MAL, "uuid.generateuuidint_bulk", 
SQLSTATE(HY013) MAL_MALLOC_FAIL);
-               goto bailout;
+               throw(MAL, "uuid.generateuuidint_bulk", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
        }
        bnt = Tloc(bn, 0);
        for (BUN i = 0 ; i < n ; i++)
@@ -142,12 +140,7 @@ UUIDgenerateUuidInt_bulk(Client cntxt, M
        bn->tsorted = n <= 1;
        bn->trevsorted = n <= 1;
        bn->tkey = n <= 1;
-
-bailout:
-       if (msg && bn)
-               BBPreclaim(bn);
-       else if (bn)
-               BBPkeepref(*ret = bn->batCacheid);
+       BBPkeepref(*ret = bn->batCacheid);
        return msg;
 }
 
diff --git a/monetdb5/modules/kernel/batmmath.c 
b/monetdb5/modules/kernel/batmmath.c
--- a/monetdb5/modules/kernel/batmmath.c
+++ b/monetdb5/modules/kernel/batmmath.c
@@ -383,7 +383,6 @@ CMDscience_bat_randintarg(Client cntxt, 
        BAT *bn = NULL, *b = NULL, *bs = NULL;
        BUN q = 0;
        int *restrict vals;
-       str msg = MAL_SUCCEED;
        struct canditer ci = {0};
        bat *res = getArgReference_bat(stk, pci, 0);
 
@@ -391,12 +390,10 @@ CMDscience_bat_randintarg(Client cntxt, 
        if (isaBatType(getArgType(mb, pci, 1))) {
                bat *bid = getArgReference_bat(stk, pci, 1), *sid = pci->argc 
== 3 ? getArgReference_bat(stk, pci, 2) : NULL;
                if (!(b = BBPquickdesc(*bid))) {
-                       msg = createException(MAL, "batmmath.rand", 
SQLSTATE(HY002) RUNTIME_OBJECT_MISSING);
-                       goto bailout;
+                       throw(MAL, "batmmath.rand", SQLSTATE(HY002) 
RUNTIME_OBJECT_MISSING);
                }
                if (sid && !is_bat_nil(*sid) && !(bs = BATdescriptor(*sid))) {
-                       msg = createException(MAL, "batmmath.rand", 
SQLSTATE(HY002) RUNTIME_OBJECT_MISSING);
-                       goto bailout;
+                       throw(MAL, "batmmath.rand", SQLSTATE(HY002) 
RUNTIME_OBJECT_MISSING);
                }
                q = canditer_init(&ci, b, bs);
                if (bs)
@@ -406,8 +403,7 @@ CMDscience_bat_randintarg(Client cntxt, 
        }
 
        if (!(bn = COLnew(ci.hseq, TYPE_int, q, TRANSIENT))) {
-               msg = createException(MAL, "batmmath.rand", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
-               goto bailout;
+               throw(MAL, "batmmath.rand", SQLSTATE(HY013) MAL_MALLOC_FAIL);
        }
 
        vals = Tloc(bn, 0);
@@ -421,18 +417,14 @@ CMDscience_bat_randintarg(Client cntxt, 
        MT_lock_unset(&mmath_rse_lock);
 #endif
 
-bailout:
-       if (bn && !msg) {
-               BATsetcount(bn, q);
-               bn->tnil = false;
-               bn->tnonil = true;
-               bn->tkey = BATcount(bn) <= 1;
-               bn->tsorted = BATcount(bn) <= 1;
-               bn->trevsorted = BATcount(bn) <= 1;
-               BBPkeepref(*res = bn->batCacheid);
-       } else if (bn)
-               BBPreclaim(bn);
-       return msg;
+       BATsetcount(bn, q);
+       bn->tnil = false;
+       bn->tnonil = true;
+       bn->tkey = BATcount(bn) <= 1;
+       bn->tsorted = BATcount(bn) <= 1;
+       bn->trevsorted = BATcount(bn) <= 1;
+       BBPkeepref(*res = bn->batCacheid);
+       return MAL_SUCCEED;
 }
 
 scienceImpl(acos)
diff --git a/monetdb5/modules/mal/mal_mapi.c b/monetdb5/modules/mal/mal_mapi.c
--- a/monetdb5/modules/mal/mal_mapi.c
+++ b/monetdb5/modules/mal/mal_mapi.c
@@ -1051,6 +1051,9 @@ SERVERconnectAll(Client cntxt, int *key,
 
        mid = mapi_connect(*host, *port, *username, *password, *lang, NULL);
 
+       if (mid == NULL)
+               throw(IO, "mapi.connect", MAL_MALLOC_FAIL);
+
        if (mapi_error(mid)) {
                const char *err = mapi_error_str(mid);
                str ex;
diff --git a/monetdb5/optimizer/opt_bincopyfrom.c 
b/monetdb5/optimizer/opt_bincopyfrom.c
--- a/monetdb5/optimizer/opt_bincopyfrom.c
+++ b/monetdb5/optimizer/opt_bincopyfrom.c
@@ -43,7 +43,7 @@ OPTbincopyfromImplementation(Client cntx
        old_mb_stmt = mb->stmt;
        old_ssize = mb->ssize;
        old_stop = mb->stop;
-       if (newMalBlkStmt(mb, mb->stop + getInstrPtr(mb, found_at)->argc) < 0) 
+       if (newMalBlkStmt(mb, mb->stop + getInstrPtr(mb, found_at)->argc) < 0)
                throw(MAL, "optimizer.bincopyfrom", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
 
        for (size_t i = 0; i < old_stop; i++) {
@@ -174,7 +174,7 @@ extract_column(MalBlkPtr mb, InstrPtr ol
                        InstrPtr p = newFcnCall(mb, sqlRef, importColumnRef);
                        setReturnArgument(p, old->argv[idx]);
                        int new_count_var = newTmpVariable(mb, TYPE_oid);
-                       pushReturn(mb, p, new_count_var);
+                       p = pushReturn(mb, p, new_count_var);
                        p = pushStr(mb, p, method);
                        p = pushBit(mb, p, byteswap);
                        p = pushStr(mb, p, path);
diff --git a/monetdb5/optimizer/opt_for.c b/monetdb5/optimizer/opt_for.c
--- a/monetdb5/optimizer/opt_for.c
+++ b/monetdb5/optimizer/opt_for.c
@@ -129,8 +129,8 @@ OPTforImplementation(Client cntxt, MalBl
                                                InstrPtr q = 
newInstructionArgs(mb, calcRef, minusRef, 3);
                                                int tpe = getVarType(mb, 
getArg(p,3));
                                                getArg(q, 0) = 
newTmpVariable(mb, tpe);
-                                               addArgument(mb, q, getArg(p, 
3));
-                                               addArgument(mb, q, 
varforvalue[k]);
+                                               q = addArgument(mb, q, 
getArg(p, 3));
+                                               q = addArgument(mb, q, 
varforvalue[k]);
                                                pushInstruction(mb,q);
 
                                                InstrPtr r;
@@ -140,7 +140,7 @@ OPTforImplementation(Client cntxt, MalBl
                                                else
                                                        r = 
newInstructionArgs(mb, calcRef, putName("sht"), 2);
                                                getArg(r, 0) = 
newTmpVariable(mb, tpe);
-                                               addArgument(mb, r, getArg(q, 
0));
+                                               r = addArgument(mb, r, 
getArg(q, 0));
                                                pushInstruction(mb,r);
 
                                                q = copyInstruction(p);
@@ -153,15 +153,15 @@ OPTforImplementation(Client cntxt, MalBl
                                                InstrPtr r = 
newInstructionArgs(mb, dictRef, selectRef, 10);
 
                                                getArg(r, 0) = getArg(p, 0);
-                                               addArgument(mb, r, 
varisdict[k]);
-                                               addArgument(mb, r, getArg(p, 
2)); /* cand */
-                                               addArgument(mb, r, 
vardictvalue[k]);
-                                               addArgument(mb, r, getArg(p, 
3)); /* l */
-                                               addArgument(mb, r, getArg(p, 
4)); /* h */
-                                               addArgument(mb, r, getArg(p, 
5)); /* li */
-                                               addArgument(mb, r, getArg(p, 
6)); /* hi */
-                                               addArgument(mb, r, getArg(p, 
7)); /* anti */
-                                               addArgument(mb, r, getArg(p, 
8)); /* unknown */
+                                               r = addArgument(mb, r, 
varisdict[k]);
+                                               r = addArgument(mb, r, 
getArg(p, 2)); /* cand */
+                                               r = addArgument(mb, r, 
vardictvalue[k]);
+                                               r = addArgument(mb, r, 
getArg(p, 3)); /* l */
+                                               r = addArgument(mb, r, 
getArg(p, 4)); /* h */
+                                               r = addArgument(mb, r, 
getArg(p, 5)); /* li */
+                                               r = addArgument(mb, r, 
getArg(p, 6)); /* hi */
+                                               r = addArgument(mb, r, 
getArg(p, 7)); /* anti */
+                                               r = addArgument(mb, r, 
getArg(p, 8)); /* unknown */
                                                pushInstruction(mb,r);
                                        } else {
                                                /* pos = select(col, cand, l, 
h, ...) with col = dict.decompress(o,u)
@@ -179,14 +179,14 @@ OPTforImplementation(Client cntxt, MalBl
                                                int tpe = getVarType(mb, 
varisdict[k]);
                                                InstrPtr s = 
newInstructionArgs(mb, dictRef, putName("convert"), 3);
                                                getArg(s, 0) = 
newTmpVariable(mb, tpe);
-                                               addArgument(mb, s, getArg(r, 
0));
+                                               s = addArgument(mb, s, 
getArg(r, 0));
                                                pushInstruction(mb,s);
 
                                                InstrPtr t = 
newInstructionArgs(mb, algebraRef, intersectRef, 9);
                                                getArg(t, 0) = getArg(p, 0);
-                                               addArgument(mb, t, 
varisdict[k]);
-                                               addArgument(mb, t, getArg(s, 
0));
-                                               addArgument(mb, t, cand);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to