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, &lt, (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
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to