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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list