Changeset: 2dcb8eedebc6 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2dcb8eedebc6
Modified Files:
gdk/gdk_imprints.c
gdk/gdk_storage.c
monetdb5/mal/mal_box.c
monetdb5/mal/mal_function.c
monetdb5/mal/mal_readline.c
monetdb5/mal/mal_recycle.c
monetdb5/modules/atoms/inet.c
monetdb5/modules/mal/bbp.c
monetdb5/modules/mal/mal_io.c
monetdb5/modules/mal/remote.c
Branch: Jan2014
Log Message:
Fixed some, mostly fairly minor, problems found by Coverity.
diffs (284 lines):
diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c
--- a/gdk/gdk_imprints.c
+++ b/gdk/gdk_imprints.c
@@ -856,6 +856,8 @@ IMPSprint(BAT *b) {
imprints = b->T->imprints;
d = (cchdc_t *) imprints->dict->base;
s = (char *) malloc(sizeof(char)*(imprints->bits+1));
+ if (s == NULL)
+ return;
#define IMPSPRNTMASK(T,B) \
do { \
@@ -881,5 +883,6 @@ do {
\
}
}
}
+ free(s);
}
#endif
diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -979,6 +979,7 @@ BATmultiprintf(stream *s, int argc, BAT
ret = BATprintcols(s, argc + printhead, bats + !printhead);
for (i = 0; i <= argc; i++)
BBPunfix(bats[i]->batCacheid);
+ GDKfree(bats);
return ret;
bailout:
@@ -986,5 +987,6 @@ BATmultiprintf(stream *s, int argc, BAT
if (bats[i])
BBPunfix(bats[i]->batCacheid);
}
+ GDKfree(bats);
return GDK_FAIL;
}
diff --git a/monetdb5/mal/mal_box.c b/monetdb5/mal/mal_box.c
--- a/monetdb5/mal/mal_box.c
+++ b/monetdb5/mal/mal_box.c
@@ -276,6 +276,13 @@ newBox(str name)
obj->val = newGlobalStack(MAXVARS);
if ( obj->val == NULL || obj->sym == NULL){
showException(GDKout, MAL,"box.new",
MAL_MALLOC_FAIL);
+ if (obj->name)
+ GDKfree(obj->name);
+ if (obj->sym)
+ freeMalBlk(obj->sym);
+ if (obj->val)
+ GDKfree(obj->val);
+ GDKfree(obj);
return NULL;
}
MT_lock_init(&obj->lock,"M5_box_lock");
@@ -745,6 +752,7 @@ loadBox(str name)
{
char boxfile[PATHLENGTH];
size_t i = 0;
+ str msg;
snprintf(boxfile, PATHLENGTH, "%s%cbox", GDKgetenv("gdk_dbpath"),
DIR_SEP);
mkdir(boxfile,0755); /* ignore errors */
@@ -756,8 +764,16 @@ loadBox(str name)
if (access(boxfile, R_OK) == 0) {
Client child= MCforkClient(mal_clients);
if( child != mal_clients){
- defaultScenario(child);
- evalFile(child, boxfile, 0);
+ msg = defaultScenario(child);
+ if (msg) {
+ GDKfree(msg);
+ return;
+ }
+ msg = evalFile(child, boxfile, 0);
+ if (msg) {
+ GDKfree(msg);
+ return;
+ }
MCcloseClient(child);
#ifdef DEBUG_MAL_BOX
mnstr_printf(GDKout, "loadBox:loaded the file %s\n",
boxfile);
diff --git a/monetdb5/mal/mal_function.c b/monetdb5/mal/mal_function.c
--- a/monetdb5/mal/mal_function.c
+++ b/monetdb5/mal/mal_function.c
@@ -689,11 +689,14 @@ setLifespan(MalBlkPtr mb)
int *blk;
Lifespan span= newLifespan(mb);
+ if (span == NULL)
+ return NULL;
prop = PropertyIndex("transparent");
blk= (int *) GDKzalloc(sizeof(int)*mb->vtop);
if( blk == NULL){
GDKerror("setLifeSpan" MAL_MALLOC_FAIL);
+ GDKfree(span);
return NULL;
}
diff --git a/monetdb5/mal/mal_readline.c b/monetdb5/mal/mal_readline.c
--- a/monetdb5/mal/mal_readline.c
+++ b/monetdb5/mal/mal_readline.c
@@ -486,6 +486,7 @@ readConsole(Client cntxt)
cntxt->fdin->buf= realloc(cntxt->fdin->buf, len+1);
if( cntxt->fdin->buf == NULL) {
GDKerror("readConsole" MAL_MALLOC_FAIL);
+ free(buf);
goto bailout;
}
cntxt->fdin->size = len;
diff --git a/monetdb5/mal/mal_recycle.c b/monetdb5/mal/mal_recycle.c
--- a/monetdb5/mal/mal_recycle.c
+++ b/monetdb5/mal/mal_recycle.c
@@ -346,6 +346,8 @@ newpass:
leaves = (int *)GDKzalloc(sizeof(int)*ltop);
if( leaves == NULL){
GDKerror("RECYCLEcleanCache" MAL_MALLOC_FAIL);
+ GDKfree(lmask);
+ GDKfree(used);
return;
}
l = 0;
diff --git a/monetdb5/modules/atoms/inet.c b/monetdb5/modules/atoms/inet.c
--- a/monetdb5/modules/atoms/inet.c
+++ b/monetdb5/modules/atoms/inet.c
@@ -173,7 +173,7 @@ INETtoString(str *retval, int *len, inet
if (*len < 19) {
if (*retval != NULL)
GDKfree(*retval);
- *retval = GDKmalloc(sizeof(str) * (*len = 19));
+ *retval = GDKmalloc(sizeof(char) * (*len = 19));
}
if (in_isnil(value)) {
*len = snprintf(*retval, *len, "(nil)");
diff --git a/monetdb5/modules/mal/bbp.c b/monetdb5/modules/mal/bbp.c
--- a/monetdb5/modules/mal/bbp.c
+++ b/monetdb5/modules/mal/bbp.c
@@ -655,7 +655,8 @@ CMDbbpdestroyBAT(Client cntxt, MalBlkPtr
(void) cntxt;
bid = (int *) getArgReference(stk, pci, 1);
immediate = (bit *) getArgReference(stk, pci, 2);
- msg = CMDbbpreleaseBAT(cntxt,mb, stk, pci);
+ if ((msg = CMDbbpreleaseBAT(cntxt,mb, stk, pci)) != MAL_SUCCEED)
+ return msg;
if( *immediate)
msg = BKCdestroyImmediate(&ret, bid);
else
diff --git a/monetdb5/modules/mal/mal_io.c b/monetdb5/modules/mal/mal_io.c
--- a/monetdb5/modules/mal/mal_io.c
+++ b/monetdb5/modules/mal/mal_io.c
@@ -144,25 +144,28 @@ str
IOprint_val(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p)
{
int i;
+ str msg;
(void) cntxt;
if (p->argc == 2)
- IOprintBoth(cntxt, mb, stk, p, 1, "[ ", " ]\n", 0);
+ msg = IOprintBoth(cntxt, mb, stk, p, 1, "[ ", " ]\n", 0);
else {
- IOprintBoth(cntxt, mb, stk, p, 1, "[ ", 0, 1);
+ msg = IOprintBoth(cntxt, mb, stk, p, 1, "[ ", 0, 1);
+ if (msg)
+ return msg;
for (i = 2; i < p->argc - 1; i++)
- IOprintBoth(cntxt,mb, stk, p, i, ", ", 0, 1);
- IOprintBoth(cntxt,mb, stk, p, i, ", ", "]\n", 1);
+ if ((msg = IOprintBoth(cntxt,mb, stk, p, i, ", ", 0,
1)) != NULL)
+ return msg;
+ msg = IOprintBoth(cntxt,mb, stk, p, i, ", ", "]\n", 1);
}
- return MAL_SUCCEED;
+ return msg;
}
str
IOprint_tables(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p)
{
- IOtableAll(cntxt->fdout, cntxt, mb, stk, p, 1, 0, FALSE, TRUE);
- return MAL_SUCCEED;
+ return IOtableAll(cntxt->fdout, cntxt, mb, stk, p, 1, 0, FALSE, TRUE);
}
str
@@ -744,28 +747,33 @@ IOimport(int *ret, int *bid, str *fnme)
if ((fn = fileno(fp)) <= 0) {
BBPunfix(b->batCacheid);
fclose(fp);
+ GDKfree(buf);
throw(MAL, "io.import", OPERATION_FAILED " fileno()");
}
if (fstat(fn, &st) != 0) {
BBPunfix(b->batCacheid);
fclose(fp);
+ GDKfree(buf);
throw(MAL, "io.imports", OPERATION_FAILED "fstat()");
}
(void) fclose(fp);
if (st.st_size <= 0) {
BBPunfix(b->batCacheid);
- throw(MAL, "io.imports", OPERATION_FAILED "Empty file
or fstat broken");
+ GDKfree(buf);
+ throw(MAL, "io.imports", OPERATION_FAILED "Empty file");
}
#if SIZEOF_SIZE_T == SIZEOF_INT
if (st.st_size > ~ (size_t) 0) {
BBPunfix(b->batCacheid);
+ GDKfree(buf);
throw(MAL, "io.imports", OPERATION_FAILED "File too
large");
}
#endif
base = cur = (char *) MT_mmap(*fnme, MMAP_SEQUENTIAL, (size_t)
st.st_size);
if (cur == NULL) {
BBPunfix(b->batCacheid);
+ GDKfree(buf);
throw(MAL, "io.mport", OPERATION_FAILED "MT_mmap()");
}
end = cur + st.st_size;
@@ -823,12 +831,16 @@ IOimport(int *ret, int *bid, str *fnme)
if (*p == 0) {
BBPunfix(b->batCacheid);
snprintf(msg,sizeof(msg),"error in input %s",buf);
+ GDKfree(buf);
+ MT_munmap(base, end - base);
throw(MAL, "io.import", "%s", msg);
}
n = hconvert(p, &lh, (ptr*)&h);
if (n <= 0) {
BBPunfix(b->batCacheid);
snprintf(msg,sizeof(msg),"error in input %s",buf);
+ GDKfree(buf);
+ MT_munmap(base, end - base);
throw(MAL, "io.import", "%s", msg);
}
p += n;
@@ -841,17 +853,23 @@ IOimport(int *ret, int *bid, str *fnme)
if (*p == 0) {
BBPunfix(b->batCacheid);
snprintf(msg,sizeof(msg),"error in input %s",buf);
+ GDKfree(buf);
+ MT_munmap(base, end - base);
throw(MAL, "io.import", "%s", msg);
}
n = tconvert(p, <, (ptr*)&t);
if (n <= 0) {
BBPunfix(b->batCacheid);
snprintf(msg,sizeof(msg),"error in input %s",buf);
+ GDKfree(buf);
+ MT_munmap(base, end - base);
throw(MAL, "io.import", "%s", msg);
}
p += n;
if (BUNins(b, h, t, FALSE) == NULL) {
BBPunfix(b->batCacheid);
+ GDKfree(buf);
+ MT_munmap(base, end - base);
throw(MAL, "io.import", "insert failed");
}
diff --git a/monetdb5/modules/mal/remote.c b/monetdb5/modules/mal/remote.c
--- a/monetdb5/modules/mal/remote.c
+++ b/monetdb5/modules/mal/remote.c
@@ -158,6 +158,7 @@ str RMTconnectScen(
char *s;
Mapi m;
MapiHdl hdl;
+ str msg;
/* just make sure the return isn't garbage */
*ret = 0;
@@ -213,7 +214,9 @@ str RMTconnectScen(
c->next = conns;
conns = c;
- RMTquery(&hdl, "remote.connect", m, "remote.bintype();");
+ msg = RMTquery(&hdl, "remote.connect", m, "remote.bintype();");
+ if (msg)
+ return msg;
if (hdl != NULL && mapi_fetch_row(hdl)) {
char *val = mapi_fetch_field(hdl, 0);
c->type = (unsigned char)atoi(val);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list